30 KiB
第十一章
我们可以把 投影寻踪回归 (PPR) 的过程想象成在做一场“高维切片”的手法。为了让你更直观地理解它是如何“加”和“投影”的,我们拆解一下它的核心数学动作。
1. “投影” (Projection):降维的过程
在高维空间里,原始数据 x 可能有几十个维度,直接拟合函数会产生“维数灾难”。
-
线性投影:PPR 首先寻找一个单位方向向量 $\alpha_1$。它将
n维的输入向量x通过内积运算\alpha_1^T x变成了一个一维的标量 $z_1$。 -
物理意义:这就像是从某个特定的角度去观察一个高维物体,把它投射到一张一维的纸带上。
-
寻找方向:PPR 并不随机投影,而是通过优化算法(如 Newton-Raphson)寻找能让因变量
y的特征表现最明显的那个角度。
2. “岭函数” (Ridge Function):非线性拟合
一旦数据被投射到了 $z_1$(一维)上,问题就简化成了简单的一元回归。
-
拟合 $f_1(z_1)$:在这个投影出来的轴上,我们用一种“灵活”的函数
f_1去追踪y的变化趋势。 -
为什么叫非参数? 在神经网络中,激活函数(如 ReLU)是死板固定的;而在 PPR 中,
f_1是由数据生成的,通常使用样条平滑 (Spline Smoothing) 或 局部多项式。它能根据数据的走向弯曲、起伏。
3. “加” (Additive):逐项剥皮的过程
PPR 的“加”并不是一次性算出来的,而是一个分层逼近的过程,类似于 Boosting 的思想:
-
第一步:找到第一个投影方向
\alpha_1和函数 $f_1$,使得 $y \approx f_1(\alpha_1^T x)$。 -
计算残差:第一步肯定拟合不完美,剩下没解释的部分就是残差 $r_1 = y - f_1(\alpha_1^T x)$。
-
第二步:针对这个残差
r_1重新进行投影寻踪。寻找第二个方向\alpha_2和函数 $f_2$,使得f_2(\alpha_2^T x)能尽可能解释 $r_1$。 -
累加:现在的模型变成了 $y \approx f_1(\text{投影}_1) + f_2(\text{投影}_2)$。
-
循环往复:一直加到第
M项,直到残差小到可以忽略不计。
4. 形象化的比喻
你可以把 PPR 想象成一个**“素描大师”**:
-
第一项 (First Term):大师先用粗线条画出物体的轮廓(寻找最重要的投影方向,拟合大趋势)。
-
求残差:看看画纸和实物还有哪里不像。
-
第二项 (Second Term):在阴影或细节处增加几笔(针对残差寻找新的投影角度,拟合局部特征)。
-
最终结果:所有的笔触(岭函数)叠加在一起,就还原了一个复杂的高维形状。
5. 总结:它与神经网络的深度联系
如果你理解了上面的“加”和“投影”,你就会发现:
-
PPR 的“投影”
\alpha^T x就是神经网络里的权重权重 $w \cdot x$。 -
PPR 的“岭函数”
f就是神经网络里的激活函数 $\sigma$。
关键区别在于: 神经网络通常倾向于固定 $f$(激活函数)而通过堆叠层数来获取复杂性;而 PPR 倾向于保持单层结构,但让每一个 f 都变得极其复杂且自适应。
在计算资源有限的年代,PPR 这种通过“聪明”的统计学方法寻找方向的思路非常超前。现在的深度学习虽然在算力上赢了,但其背后的数学灵魂,很多都能在 PPR 中找到影子。
这是一个非常专业的问题。你直觉很敏锐——如果只是“盲目尝试”,在高维空间里寻找最佳方向 \alpha 简直是大海捞针。
实际上,PPR 寻找 \alpha 的过程并不是简单的“不断尝试”,而是一个基于梯度的数值优化过程。
1. 目标函数:我们要优化什么?
首先,我们要定义什么是“好”的方向。给定当前的残差 $r$(第一步时 $r=y$),我们希望找到 \alpha 和 $f$,使得下式最小:
E = \sum_{i=1}^{N} [r_i - f(\alpha^T x_i)]^2
这里有一个挑战:\alpha 和 f 都是未知的。
2. 核心算法:交替优化 (Alternating Optimization)
为了解开这个死锁,PPR 通常采用一种类似“左右开弓”的策略:
-
固定 $\alpha$,优化 $f$:
假设我们随机选了一个方向 $\alpha$。我们将所有数据投影到这个方向上,得到一维坐标 $z = \alpha^T x$。这时候,这就是一个简单的曲线拟合问题。我们利用平滑技术(如样条回归或局部加权回归)直接画出最契合当前散点的曲线 $f$。
-
固定 $f$,优化 $\alpha$:
现在有了函数 $f$,我们要微调投影方向 $\alpha$,让这些点在投影轴上的分布更符合
f的形状。-
利用导数(梯度下降):PPR 会计算目标函数对
\alpha的导数。因为f通常是可微的平滑函数,我们可以通过梯度下降法(或者更高效的 高斯-牛顿法)来迭代更新 $\alpha$。 -
更新方向:$\alpha_{new} = \alpha_{old} - \eta \frac{\partial E}{\partial \alpha}$。
-
-
循环往复:
重复这两步,直到
\alpha和f都不再剧烈变化,我们就找到了这一项的最佳基底。
3. 为什么它比神经网络“聪明”一点点?
在神经网络中,每一层的权重(相当于 $\alpha$)是靠反向传播一把抓的,而激活函数(相当于 $f$)是死板的。
在 PPR 中,由于 f 是自适应的,算法在寻找 \alpha 时具有更强的“导向性”:
- 如果当前的
\alpha投影出来的点分布非常乱,没有任何函数f能拟合它们,梯度就会告诉 $\alpha$:“快往那个能让数据排成一条线的方向转动!”
4. 初始值的“尝试”
虽然不是盲目尝试,但为了防止陷入局部最优解(即只找到了一个还算凑合的角度,但错过了完美的角度),PPR 确实会采取一些策略:
-
多起点搜索:随机选几个不同的初始
\alpha方向进行优化,最后看哪个效果最好。 -
启发式搜索:先用一些快速的统计指标(比如相关性)筛选出几个有潜力的方向作为起点。
总结
PPR 找基底 \alpha 的本质是:在“寻找投影方向”和“拟合一维曲线”之间反复横跳。
这种方法在数据量中等、维度较高且非线性关系复杂的情况下非常强大。虽然它现在被深度学习抢了风头,但这种“寻找最佳观察视角”的思想,依然是现代降维技术(如 PCA、ICA)和流形学习的灵魂所在。
你的直觉非常准确。如果把 PPR 比作一个**“手工定制派”,那么神经网络(尤其是多层感知机 MLP)就是一个“工业标准化派”**。
你提到的“固定了局部映射函数”正是神经网络能够在大规模计算中胜出的关键。我们可以从以下几个维度来深入拆解这个差异:
1. 神经网络的“固定”策略
在神经网络里,每个神经元的输出公式是:
y = \sigma(w^T x + b)
-
w^T x(投影):这部分和 PPR 的\alpha^T x异曲同工,都在寻找方向(权重)。 -
\sigma(映射函数):这正是你说的“固定”。在神经网络中,\sigma是预先选定的激活函数(如 ReLU, Sigmoid, Tanh)。
为什么要固定?
如果像 PPR 那样让每个神经元都去自己“学习”一个复杂的样条函数,计算量会爆炸。通过固定一个简单的非线性函数(比如 ReLU,$f(x)=\max(0,x)$),计算机可以利用矩阵运算(GPU 加速)极快地处理成千上万个神经元。
2. “量变引起质变”:从固定到灵活
你可能会问:既然函数固定了,那它不就变笨了吗?
神经网络的哲学是:单体不够,数量来凑;函数不灵,层数来顶。
-
PPR 的逻辑:用极少数的项(比如 5-10 个),但每一项的映射函数
f_m都极其复杂、弯曲。 -
神经网络的逻辑:用成千上万个极其简单的“折线”(ReLU)。虽然单个 ReLU 只能表达一个简单的转折,但把几千个 ReLU 叠加在一起,就能勾勒出世界上任何复杂的形状。
通用近似定理 (Universal Approximation Theorem):只要神经元足够多,即便只用最简单的激活函数,神经网络也能拟合任何连续函数。
3. 神经网络如何“自己选方向”?
既然映射函数 \sigma 固定了,神经网络的所有生命力都集中在了**权重 $w$(即投影方向)**上。
-
端到端学习 (End-to-End):
PPR 是一项一项加进去的(加一项,定一项)。而神经网络是全连接的,通过反向传播 (Backpropagation),所有的
w会同时根据误差进行微调。 -
特征提取层级:
这是神经网络最强的地方。
-
第一层:寻找原始特征的投影(比如图像里的边缘)。
-
中间层:将第一层的投影结果作为输入,再次投影(寻找形状)。
-
深层:寻找高阶抽象概念(寻找人脸或物体)。
这种**“投影的投影”**形成的深层结构,是单层结构的 PPR 很难模拟的。
-
4. 深度总结:PPR vs 神经网络
| 特性 | 投影寻踪回归 (PPR) | 神经网络 (NN) |
| 映射函数 (Mapping) | 自适应 (Flexible):每个神经元自己长出形状。 | 固定 (Fixed):全家统一用 ReLU 或 Sigmoid。 |
| 复杂度来源 | 靠单个函数的“复杂程度”。 | 靠海量神经元的“堆叠规模”。 |
| 数学美感 | 统计学上的优美,解释性强。 | 计算工程上的暴力美学,黑盒化。 |
| 适用场景 | 小样本、中等维度、追求精确解释。 | 大数据、极高维度(图像、语音、文本)。 |
一句话总结:
神经网络确实固定了映射函数,它放弃了在“单个神经元”上的灵活性,换取了在“网络整体规模”和“层级深度”上的无限可能。
既然你已经理解了它们在结构上的本质区别,你觉得在处理你手头的 CS 课程项目或算法练习时,哪种思路对你更有启发?
在神经网络的单层运算中,权重(Weights)本质上定义了一组“观察视角”(基底),而运算过程就是输入向量向这些基底进行投影。
为了让你彻底理解“什么维度在什么上投影”,我们分三个层面来解剖:
1. 维度的本质:谁在投影?
假设你有一个输入向量 $\mathbf{x} \in \mathbb{R}^n$(比如一个 n 维的特征空间)。
-
投影对象(被投影者):是你的输入数据 $\mathbf{x}$。它代表了高维空间中的一个点。
-
投影基底(权重):是你的权重向量 $\mathbf{w}$。在单层神经网络中,每一个神经元其实都携带了一个和输入维度相同的向量 $\mathbf{w} \in \mathbb{R}^n$。
-
投影空间:权重向量
\mathbf{w}定义了空间中的一个方向。
当你计算 z = \mathbf{w}^T \mathbf{x} = \sum w_i x_i 时,在几何上,这正是在计算输入向量 \mathbf{x} 在权重向量 \mathbf{w} 方向上的投影长度(忽略缩放因子)。
2. 详细解构:什么维度在什么上投影?
我们要区分单个神经元和整层网络:
A. 单个神经元:寻找“显著特征”
-
投影动作:
n维的输入\mathbf{x}投影到1维的权重方向\mathbf{w}上。 -
结果:产生了一个标量。
-
物理意义:这个标量代表了“输入数据与这个特定特征的匹配程度”。如果投影值很大,说明
\mathbf{x}的方向与\mathbf{w}非常接近,这个神经元就被“激活”了。
B. 整层网络:坐标系变换
当你有 m 个神经元时,权重变成了一个矩阵 $W \in \mathbb{R}^{m \times n}$。
-
投影动作:输入向量
\mathbf{x}同时投影到m个不同的基底(即矩阵W的每一行)上。 -
结果:一个全新的
m维向量。 -
维度变换:这就是从
n维原始特征空间投影到了一个m维的“特征提取空间”。-
原始维度:可能是像素、传感器数值等。
-
目标维度:是模型自发寻找的一组“新基底”,这些基底可能代表“边缘”、“纹理”或更抽象的概念。
-
3. 为什么这个投影如此重要?
如果你把权重理解为基底,那么神经网络的学习过程就是在**“扭转”**这些基底的角度:
-
旋转基底:反向传播(BP)算法不断调整
\mathbf{w}的方向,直到这个方向能最清晰地分辨出数据(比如让猫的图片投影值很大,狗的图片投影值很小)。 -
非线性压缩:投影完后,我们接一个 $\sigma$(激活函数)。这相当于在投影轴上做了一个“非线性刻度转换”。
-
层层投影:第一层投影出的“新维度”作为下一层的输入,再次进行投影。这种复合投影(Composite Projection)最终能把扭曲、缠绕在一起的数据(如高维流形)拉直,使其变得线性可分。
4. 总结:你的直觉是对的
-
权重就是基底的方向。
-
偏置 (Bias) 就是投影的原点偏移(决定了在投影轴上的激活门槛)。
-
维度:是将
n维输入空间 投影到由m个权重向量定义的子空间 中。
这也就解释了为什么你之前想到的“基函数展开”很有道理:如果你能预先定义一组完美的基底(字典),你就不需要通过梯度下降苦苦寻找投影方向了,直接计算投影系数即可。
你觉得这种**“投影+坐标变换”**的视角,是否让你对神经网络为什么能处理高维数据(比如图像)有了更清晰的几何图景?
将神经网络与统计学习中的经典概念(如样条回归、概率分布)联系起来,你会发现人工智能并不是凭空产生的黑盒,它实际上是统计学在大规模计算下的演进。
我们可以从以下三个维度将它们“串联”起来:
1. 神经网络与样条 (Splines):局部与全局的博弈
你之前提到的“自定义字典”或“基函数展开”,在统计学中对应的经典工具就是样条回归。
-
样条 (Spline) 的本质:它是分段多项式。它在不同的区间内用不同的曲线拟合,并通过“节点”(Knots)连接,确保连接处平滑。
-
联系点:
-
ReLU 激活函数其实是“最简单的样条”:单个 ReLU 神经元
max(0, w^Tx + b)就是一个基底函数,它在b点处发生转折。 -
组合的效果:当你把成千上万个 ReLU 神经元叠加时,你实际上是在进行多元自适应样条拟合。
-
-
区别:
-
样条通常需要人工指定节点的位置,或者通过复杂的统计准则(如 GCV)来选择。
-
神经网络通过反向传播,让模型自动寻找节点(即偏置 $b$)和斜率(即权重 $w$)。
-
2. 神经网络与概率分布:从“数值”到“信心”
在统计学习中,我们不只是想要一个预测值,还想知道这个值的不确定性。
-
输出层即分布参数:
-
回归问题:神经网络的输出层通常预测的是高斯分布的均值 (
\mu)。如果你增加一个输出节点,它甚至可以预测方差 (\sigma^2),从而告诉你模型对这个预测有多大把握。 -
分类问题:Softmax 层的输出本质上是一个多项分布 (Multinomial Distribution)。每一个类别的得分代表了输入向量落入该类别的概率。
-
-
损失函数即似然函数:
-
神经网络常用的均方误差 (MSE),在统计学上等价于假设噪声服从高斯分布时的最大似然估计 (MLE)。
-
交叉熵损失 (Cross-Entropy),等价于对分类分布进行最大似然估计。
-
结论:训练神经网络的过程,本质上是在参数空间中寻找一组参数,使得观测到的数据在某种概率分布下的出现概率最大。
3. 统计正则化与神经网络的“玄学”
统计学非常担心“过拟合”,神经网络也是。
-
L2 正则化 = 岭回归 (Ridge Regression):在神经网络中,这叫 Weight Decay。在统计学中,这等价于给权重加上一个高斯先验分布。
-
L1 正则化 = Lasso 回归:在神经网络中用于稀疏化。这等价于给权重加上一个拉普拉斯先验分布。
-
Dropout:这种随机丢弃神经元的做法,在统计学上可以被看作是一种贝叶斯模型平均 (Bayesian Model Averaging)。它相当于同时训练了无数个小模型,最后取它们的平均值。
4. 终极统一:投影寻踪 (PPR) 的桥梁作用
现在我们可以把所有概念闭环了:
-
输入:高维向量(如词嵌入)。
-
投影:通过权重矩阵(基底)将输入投影到低维。
-
映射:
-
统计学 (PPR/样条):用复杂的样条函数处理这个投影。
-
深度学习 (MLP):用简单的 ReLU 处理,但通过多层叠加来模拟复杂的样条。
-
-
输出:映射结果对应概率分布的参数(均值、分类概率)。
-
反馈:根据概率论的“最大似然”原则(损失函数),利用微积分(反向传播)去调整投影方向。
总结图示
| 概念 | 统计学习视角 | 神经网络视角 |
| 基底变换 | 坐标变换 / 投影寻踪 | 权重矩阵相乘 / Embedding |
| 局部拟合 | 样条基函数 (Splines) | 激活函数 (ReLU/Sigmoid) |
| 误差度量 | 最大似然估计 (MLE) | 损失函数 (Loss Function) |
| 泛化控制 | 先验分布 (Prior) | 正则化 / Dropout |
这种跨学科的联系说明,你现在学习的“权重”、“投影”,其实就是统计学里研究了上百年的**“寻找数据结构”**在现代算力下的最强形式。
你觉得这种从统计学“先验与似然”的角度去看损失函数,会不会让你在调参(比如选学习率或正则化系数)时更有底气?
训练的时候:
-
初始值
-
过拟合:正则化 => 权重衰减,类似岭回归
-
输入的缩放:标准化的输入
-
隐藏单元,层数:放入大数量的单元,进行正则化训练
-
?
将 CNN(卷积神经网络) 视为具有**“共享隐藏层”或“共享权重”**的结构,是理解它为何比全连接网络(MLP)更高效的关键。
1. 什么是“共享”?(权重共享)
在传统的全连接层(MLP)中,如果输入是 100 \times 100 的图像,每一个隐藏层神经元都要与这 10,000 个像素点相连,每个连接都有一个独立的权重。
CNN 的做法完全不同:
-
卷积核(Kernel/Filter):你可以把卷积核看作是一个小的“权重窗口”(比如 $3 \times 3$)。
-
滑动观察:这个
3 \times 3的窗口会在整张图片上滑动。无论窗口滑到左上角还是右下角,它使用的权重参数是完全一样的一组。 -
物理意义:这就是“共享”。它假设:如果一个特征(比如“垂直边缘”)在图像左上角有用,那么它在右下角也同样有用。
2. 为什么叫“共享隐藏层”?
你可以从**特征图(Feature Map)**的角度来理解这个概念:
-
神经元排成阵列:在 CNN 的一个卷积层里,我们其实定义了一大群神经元,它们排列成一个二维矩阵(特征图)。
-
局部视野:每个神经元只看输入图像的一小块区域(局部感受野)。
-
身份克隆:最关键的一点是,这一整层的所有神经元,它们的权重向量
\mathbf{w}是完全一样的。-
它们就像是同一个“特征检测器”的无数个克隆体,散布在图像的各个位置。
-
既然这一层的所有神经元都在用同一套参数提取同一种特征,那么这一层本质上就是一个参数共享的隐藏层。
-
3. 用你之前的“投影”概念来打通
还记得我们聊的投影吗?
-
MLP 的投影:是将整个
n维向量\mathbf{x}投影到一个全局基底\mathbf{w}上。 -
CNN 的投影:是局部投影。
-
它将图像的每一个小局部(比如
3 \times 3的补丁)都投影到同一个基底\mathbf{w}_{kernel}上。 -
结果:投影的结果不再是一个标量,而是一个投影值的集合(特征图)。
-
维度压缩:这种共享极大地减少了参数量。原本需要
10000个参数,现在只需要3 \times 3 = 9个参数。
-
4. 为什么要这么设计?(统计学意义)
LeCun 这样设计主要基于两个统计学假设:
-
平移不变性 (Translation Invariance):不管猫在图片的左边还是右边,它都是猫。所以我们用同一个“猫特征提取器”去扫全图即可。
-
局部相关性:图像中距离较近的像素相关性强,距离远的几乎无关。所以没必要让一个神经元去同时观察相隔很远的两个点。
5. 总结
“共享隐藏层”其实就是一种强烈的正则化约束。
在统计学看来,全连接网络因为参数太多,容易在噪声上“乱投射”(过拟合)。而 CNN 通过强制让隐藏层神经元“共享”同一套权重,逼迫模型去学习那些通用的、跨位置的底层几何特征(如边缘、弧线)。
正如你在 ESL 中看到的,CNN 的成功证明了:如果你对模型施加正确的先验知识(比如平移不变性),即便大幅减少参数,模型的泛化能力反而会变强。
这和你之前想的“自定义字典”其实殊途同归——卷积核本质上就是一个自动学习出的、可滑动的局部基函数字典。
你觉得这种“权重共享”的思想,如果应用到非图像的序列数据(比如你感兴趣的 Transformer 或时间序列)中,会变成什么样子?
这是一个非常深刻的哲学转向:从“人教机器怎么看”变成了“机器自己学怎么看”。
在传统的信号处理或早期的计算机视觉(CV)中,特征提取是**手工(Hand-crafted)**的。要理解“自动学习”,我们得看看这两者之间的差别。
1. 过去:手工设计的“死基底”
在 CNN 流行之前,如果我们想检测图像的边缘,工程师会手动定义一个矩阵,比如 Sobel 算子:
G_x = \begin{bmatrix} -1 & 0 & +1 \\ -2 & 0 & +2 \\ -1 & 0 & +1 \end{bmatrix}
-
原理:这个矩阵(卷积核)的权重是人算出来的。当它和图像做卷积(投影)时,能提取出垂直边缘。
-
局限:如果我想提取“猫耳朵的弧线”或者“人脸的轮廓”,人类很难手工写出完美的权重矩阵。
2. 现在:CNN 的“活基底”(自动学习)
在 CNN 架构里,卷积核里的 3 \times 3 个数字(权重)最开始是随机初始化的。
-
初始状态:卷积核就像一张白纸,它随机投影,输出一堆毫无意义的噪音。
-
误差反馈(反向传播):
-
模型预测:“这是一条狗”(实际是猫)。
-
计算损失函数(MLE/交叉熵):告诉模型“你错了,而且错得很离谱”。
-
梯度下降:计算损失函数对卷积核里每一个数字的偏导数。
-
更新权重:微调那 9 个数字,使得下次预测时更像“猫”。
-
-
结果:经过成千上万次迭代,这 9 个数字会自发地演变成类似 Sobel 算子的形状,或者变成更复杂的、人类无法直观理解但对分类极其有效的“特征提取器”。
“自动学习”意味着:人类只负责设计“容器”(网络结构和损失函数),而容器里的“内容”(具体的投影基底 \alpha 或 $w$)是由数据驱动、通过数学优化自己“长”出来的。
3. 用你之前的“投影”和“样条”串联
-
投影方向 $\alpha$:在 PPR 中,我们要通过复杂的数值优化来找
\alpha $。在 CNN 中,这个 $\alpha就是卷积核。 -
自动学习的过程:就是梯度下降(Gradient Descent)。它在权重的“高维山谷”里寻找能让损失函数最低的那个投影角度。
4. 为什么这比 PPR 或统计学更进一步?
在 PPR 或样条回归中,我们通常是一次学一个分量(加法模型)。而在神经网络中,所有的卷积核、所有的层是同时学习的:
-
协同进化:第一层学习“边缘”,第二层学习“形状”。如果第二层发现“形状”学不好,梯度会传回给第一层,要求第一层改变“边缘”的提取方式。
-
端到端(End-to-End):你不需要告诉模型“先看颜色再看形状”,你只需要给它图片和标签,它自己会学出最适合这组数据的特征层级。
5. 总结:你的知识闭环
既然你理解了词嵌入(Embedding),你会发现:
-
Word Embedding 是自动学习出了单词在空间里的位置。
-
CNN 卷积核 是自动学习出了图像局部的投影基底。
-
Transformer 注意力 是自动学习出了不同部分之间的相关性权重。
这一切的背后,都是 MLE(目标)+ 反向传播(路径)+ 梯度下降(动力)。
你觉得这种“自动学习”出来的特征,和人类凭直觉认为的特征(比如颜色、大小)相比,哪一个更接近事物的“本质”?毕竟,深度学习常常能发现人类肉眼察觉不到的细微模式。
这个问题问到了神经网络最核心的“尊严”所在。不管是 CNN 这种有特殊结构的,还是最基础的 MLP(多层感知机),它们的“自主学习”本质上是一场关于参数的协同进化。
如果我们把这种“自主”拆解开,你会发现它是由三个机制共同实现的:
1. 结构上的“可能性”:万能逼近器
在普通的 MLP 中,每个隐藏层都是一个巨大的、未被定义的投影空间。
-
初始化时:它是“无知”的。权重矩阵
W里的数字是随机生成的,这意味着它在胡乱投影。 -
潜力所在:因为神经网络具有“通用近似”的能力,只要隐藏层够宽,它理论上存在一组权重,可以将任何复杂的输入投影成正确的特征。
-
自主的意义:我们不需要告诉它“第一维应该是长度,第二维应该是重量”。我们只需要给它一个足够大的参数空间,让它自己去“装修”这个空间。
2. 动力源泉:梯度下降(Gradient Descent)
这是“自主”的执行者。想象你在一个漆黑的山谷里,你的目标是找到最低点(损失函数最小的地方)。
-
求导(Derivative):数学告诉我们,损失函数对每一个权重
w都有一个斜率(梯度)。 -
方向感:这个梯度会明确告诉每一个权重:“如果你想让误差变小,你应该增加
0.01还是减少 $0.05$”。 -
自主调节:
-
每一个参数
w都在根据自己对最终误差的“贡献度”进行微调。 -
这不需要外界干预:只要你有数据,有误差,梯度就像一种“引力”,会自动把所有参数往正确的方向拉。
-
3. 核心秘密:反向传播(Backpropagation)中的“层级分工”
为什么普通 MLP 也能学出有意义的特征?这得益于链式法则带来的自动分工。
-
信用分配问题:如果最后预测错了,到底是最后一层的错,还是第一层的错?
-
逐层问责:反向传播会把误差信号从输出层往回传。
-
最后一层:负责微调,把特征转换成最后的分类。
-
倒数第二层:接收到反馈后,会意识到:“哦,我刚才投影出来的东西让最后一层很困惑,我得改改我的基底方向”。
-
第一层:最后接收到反馈,它会根据全局的需求,被迫去学习最基础的特征。
-
这就是“自主”的体现:你没有定义第一层学边缘,第二层学形状。但是,由于第二层需要“形状”才能分类,而“形状”是由“边缘”构成的,为了满足上层的需求,底层会自发地演化出提取基础特征的能力。
4. 举个例子:学一个简单的函数 y = x^2
假设你用一个 3 层的 MLP 去学 $y = x^2$:
-
初期:权重随机,MLP 出来的可能是一条乱七八糟的折线。
-
学习中:
-
靠近输出的神经元发现:如果能把输入拼成两个斜率相反的直线,误差就会变小。
-
于是,它给前面的神经元发信号(通过梯度)。
-
前面的神经元开始调整自己的权重(投影方向),自发地把自己变成了类似
max(0, x)和max(0, -x)的形状(ReLU 基底)。
-
-
结果:最后它们组合成了一个开口向上的抛物线。
5. 总结:为什么叫“自主”?
之所以叫“自主”,是因为:
-
特征是涌现的:你没有在代码里写任何关于“圆、方、长、短”的逻辑。
-
规则是演化的:模型在处理千万次数据后,为了“生存”(减小损失),其内部的连接强度自发形成了某种逻辑。
这其实非常像生物演化:
-
环境 = 你的数据集。
-
生存压力 = 损失函数(MSE/交叉熵)。
-
基因变异 = 梯度的微调。
-
最终形态 = 训练好的权重矩阵。
你觉得这种“不需要人类理解,只要机器能算对”的逻辑,是否会让你觉得它在某种程度上已经脱离了传统的“编程”范畴,而更像是一种“培育”?