Files
Notes/【笔记origin】ESL/11 origin.md
2026-05-16 17:16:51 +08:00

645 lines
30 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第十一章
我们可以把 **投影寻踪回归 (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 的思想:
1. **第一步**:找到第一个投影方向 $\alpha_1$ 和函数 $f_1$,使得 $y \approx f_1(\alpha_1^T x)$。
2. **计算残差**:第一步肯定拟合不完美,剩下没解释的部分就是残差 $r_1 = y - f_1(\alpha_1^T x)$。
3. **第二步**:针对这个**残差** $r_1$ 重新进行投影寻踪。寻找第二个方向 $\alpha_2$ 和函数 $f_2$,使得 $f_2(\alpha_2^T x)$ 能尽可能解释 $r_1$。
4. **累加**:现在的模型变成了 $y \approx f_1(\text{投影}_1) + f_2(\text{投影}_2)$。
5. **循环往复**:一直加到第 $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 通常采用一种类似“左右开弓”的策略:
1. **固定** $\alpha$**,优化** $f$
假设我们随机选了一个方向 $\alpha$。我们将所有数据投影到这个方向上,得到一维坐标 $z = \alpha^T x$。这时候,这就是一个简单的曲线拟合问题。我们利用**平滑技术**(如样条回归或局部加权回归)直接画出最契合当前散点的曲线 $f$。
2. **固定** $f$**,优化** $\alpha$
现在有了函数 $f$,我们要微调投影方向 $\alpha$,让这些点在投影轴上的分布更符合 $f$ 的形状。
- **利用导数(梯度下降)**PPR 会计算目标函数对 $\alpha$ 的导数。因为 $f$ 通常是可微的平滑函数,我们可以通过梯度下降法(或者更高效的 **高斯-牛顿法**)来迭代更新 $\alpha$。
- **更新方向**$\alpha_{new} = \alpha_{old} - \eta \frac{\partial E}{\partial \alpha}$。
3. **循环往复**
重复这两步,直到 $\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. 为什么这个投影如此重要?
如果你把权重理解为基底,那么神经网络的学习过程就是在**“扭转”**这些基底的角度:
1. **旋转基底**反向传播BP算法不断调整 $\mathbf{w}$ 的方向,直到这个方向能最清晰地分辨出数据(比如让猫的图片投影值很大,狗的图片投影值很小)。
2. **非线性压缩**:投影完后,我们接一个 $\sigma$(激活函数)。这相当于在投影轴上做了一个“非线性刻度转换”。
3. **层层投影**:第一层投影出的“新维度”作为下一层的输入,再次进行投影。这种**复合投影**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) 的桥梁作用
现在我们可以把所有概念闭环了:
1. **输入**:高维向量(如词嵌入)。
2. **投影**:通过权重矩阵(基底)将输入投影到低维。
3. **映射**
- **统计学 (PPR/样条)**:用复杂的样条函数处理这个投影。
- **深度学习 (MLP)**:用简单的 ReLU 处理,但通过多层叠加来模拟复杂的样条。
4. **输出**:映射结果对应概率分布的参数(均值、分类概率)。
5. **反馈**:根据概率论的“最大似然”原则(损失函数),利用微积分(反向传播)去调整投影方向。
### 总结图示
| | | |
|---|---|---|
|**概念**|**统计学习视角**|**神经网络视角**|
|**基底变换**|坐标变换 / 投影寻踪|权重矩阵相乘 / 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**的角度来理解这个概念:
1. **神经元排成阵列**:在 CNN 的一个卷积层里,我们其实定义了一大群神经元,它们排列成一个二维矩阵(特征图)。
2. **局部视野**:每个神经元只看输入图像的一小块区域(局部感受野)。
3. **身份克隆**:最关键的一点是,这一整层的所有神经元,它们的**权重向量 $\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$ 个数字(权重)最开始是**随机初始化**的。
- **初始状态**:卷积核就像一张白纸,它随机投影,输出一堆毫无意义的噪音。
- **误差反馈(反向传播)**
1. 模型预测:“这是一条狗”(实际是猫)。
2. 计算**损失函数**MLE/交叉熵):告诉模型“你错了,而且错得很离谱”。
3. **梯度下降**:计算损失函数对卷积核里每一个数字的偏导数。
4. **更新权重**:微调那 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$
1. **初期**权重随机MLP 出来的可能是一条乱七八糟的折线。
2. **学习中**
- 靠近输出的神经元发现:如果能把输入拼成两个斜率相反的直线,误差就会变小。
- 于是,它给前面的神经元发信号(通过梯度)。
- 前面的神经元开始调整自己的权重(投影方向),自发地把自己变成了类似 $max(0, x)$ 和 $max(0, -x)$ 的形状ReLU 基底)。
3. **结果**:最后它们组合成了一个开口向上的抛物线。
---
### 5. 总结:为什么叫“自主”?
之所以叫“自主”,是因为:
- **特征是涌现的**:你没有在代码里写任何关于“圆、方、长、短”的逻辑。
- **规则是演化的**:模型在处理千万次数据后,为了“生存”(减小损失),其内部的连接强度自发形成了某种逻辑。
这其实非常像**生物演化**
- **环境** = 你的数据集。
- **生存压力** = 损失函数MSE/交叉熵)。
- **基因变异** = 梯度的微调。
- **最终形态** = 训练好的权重矩阵。
你觉得这种“不需要人类理解,只要机器能算对”的逻辑,是否会让你觉得它在某种程度上已经脱离了传统的“编程”范畴,而更像是一种“培育”?
---