Part 1: 信息、编码与优化
优化过程本质上是在寻找一个模型分布 Q,使其以“最小的编码代价”来描述真实数据分布 P。
1. 信息的度量:为什么是 log?
我们首先需要来衡量“信息量”。香农给出了一组公设决定了这把尺子的唯一性。
-
直觉:
- 必然事件(太阳升起)发生,信息量为 0。
- 极小概率事件(中彩票)发生,信息量巨大。
- 两个独立事件同时发生的信息量,应该等于它们各自信息量之和(可加性)。
-
公设导出定义:
设事件 x 发生的概率为 p(x),其信息量 I(p) 必须满足:
- I(p)≥0 (非负性)
- I(1)=0 (必然性)
- I(p1p2)=I(p1)+I(p2) (独立事件可加性)
- I(p) 是连续单调递减函数。
唯一满足上述条件的函数形式就是对数:
I(x)=−logbp(x)
(通常取 b=2 单位为比特,或 b=e 单位为奈特)
-
最佳编码长度
这不仅是“惊讶度”,更是描述该事件所需的最小比特数。如果一个事件发生概率是 1/2,我们需要 1 bit;如果是 1/8,我们需要 3 bits。
2. 两个分布的距离:KL 散度
在优化中,我们有两个分布:
- 真实分布 P(x)(上帝视角):这是客观存在的真理。
- 模型分布 Q(x;θ)(我们的神经网络):这是我们试图去拟合真理的假设。
当我们用 Q 去模拟 P 时,我们一定会付出额外的代价。
-
场景模拟:
- 真实数据来自于 P,所以事件 x 出现的频率遵循 P(x)。
- 但是,我们在设计编码本(Encoder)时,是根据我们的模型 Q(x) 设计的。也就是说,对于事件 x,我们分配的编码长度是 −logQ(x)。
-
平均编码长度(交叉熵):
H(P,Q)=Ex∼P[−logQ(x)]=−∑xP(x)logQ(x)
这是我们实际付出的平均比特数。
-
理想编码长度(熵):
如果我们要用 P 自己的编码本(上帝视角),代价是最低的:
H(P)=Ex∼P[−logP(x)]=−∑xP(x)logP(x)
-
额外的浪费 :
KL 散度正好就是**“实际代价”减去“理想代价”**:
DKL(P∣∣Q)=H(P,Q)−H(P)=∑xP(x)logQ(x)P(x)
-
几何意义:
KL 散度衡量了当我们误把 Q 当作 P 时,损失了多少信息。
在参数更新前后(θt vs θt+1),KL 散度衡量了模型分布变化了多少。这比参数欧氏距离 ∣∣θt+1−θt∣∣2 更能反映模型行为的变化.
3. 为什么是交叉熵?
在训练神经网络时,为什么 Loss Function 几乎总是交叉熵?
L=−∑P(x)logQ(x)
结合上面的推导,我们可以给出三个维度的解释:
A. 信息论视角:最小化编码长度
DKL(P∣∣Q)=交叉熵H(P,Q)−数据熵H(P)
- 我们的目标是让 Q 尽可能接近 P,即最小化 DKL(P∣∣Q)。
- 注意 H(P) 仅仅取决于真实数据(训练集),对于优化器来说,它是常数(Constant)。
- 结论: 最小化 KL 散度 ⟺ 最小化交叉熵。
(注:这就是为什么我们不需要算 KL 的后半部分,只要算前半部分就行。)
B. 统计学视角:最大似然估计
假设我们有数据集 D={x1,x2,…,xN} 采样自 P。
我们要最大化模型生成这些数据的概率:
maxθ∏i=1NQ(xi;θ)
取对数变加法(Log-Likelihood):
maxθ∑i=1NlogQ(xi;θ)
等价于最小化负对数似然(NLL):
minθ−N1∑i=1NlogQ(xi;θ)
结论: 当样本量 N→∞ 时,NLL 就是交叉熵(的蒙特卡洛近似)。所以交叉熵本质上就是 MLE。
C. 几何视角:投影
在分布流形上,寻找最优的 Q 其实是一个I-Projection 的过程。
Q∗=argminQ∈QDKL(P∣∣Q)
交叉熵引导我们将模型分布投影到离真实数据分布最近的流形点上。
4. 总结:Part 1
在进入具体的 SGD、Adam 之前,我们建立了优化的世界观:
- 参数 θ 只是载体,我们真正优化的是它背后的概率分布 Qθ。
- 优化的本质:是在信息空间中,寻找一种编码方式 Q,使得它对真实世界 P 的描述最省流。
- 度量标准:不是参数走了多远,而是信息损失了多少。
Part 2: 统计流形
在 Part 1 中,我们确立了优化问题的核心目标:最小化真实分布 P 与模型分布 Pθ 之间的信息差异(即 KL 散度)。
在这一部分,我们将深入探讨参数空间与分布空间的几何结构差异。我们将证明,参数空间并非平坦的欧氏空间,而是一个弯曲的黎曼流形。通过对 KL 散度的二阶展开,我们将导出该流形的度量张量——Fisher 信息矩阵。
1. 统计流形
考虑一组由参数 θ∈Rd 决定的概率密度函数族 S:
S={p(x;θ)∣θ∈Θ⊆Rd}
其中 x 是随机变量,θ 是 d 维参数向量。
我们将 S 视为一个几何对象,称为统计流形。
- 每一个点 p(x;θ) 代表一个概率分布。
- 参数 θ=[θ1,…,θd]T 是这个流形上的局部坐标系。
在欧氏空间中,参数的变化量 ∣∣Δθ∣∣2 衡量了两点间的距离。但在统计流形上,参数的微小变化并不等同于分布的本质变化。为了衡量分布的变化,我们需要定义流形上的距离。由 Part 1 可知,KL 散度是衡量分布差异的自然度量。
2. 黎曼度规的导出
为了在流形上进行微积分运算,我们需要找到局部的度量张量。这就要求我们分析当参数 θ 发生微小位移 δ 时的局部行为。
设当前参数为 θ,偏移后的参数为 θ+δ,其中 δ→0。我们关注两者之间的 KL 散度:
DKL(Pθ∣∣Pθ+δ)=Ex∼Pθ[logp(x;θ)−logp(x;θ+δ)]
2.1 对数似然的泰勒展开
首先,我们将项 logp(x;θ+δ) 在 θ 处进行二阶泰勒展开:
logp(x;θ+δ)≈logp(x;θ)+∇θlogp(x;θ)Tδ+21δT∇θ2logp(x;θ)δ
将此展开式代入 KL 散度的定义式中:
DKL(Pθ∣∣Pθ+δ)≈Ex∼Pθ[logp(x;θ)−(logp(x;θ)+∇θlogp(x;θ)Tδ+21δT∇θ2logp(x;θ)δ)]=Ex∼Pθ[−∇θlogp(x;θ)Tδ−21δT∇θ2logp(x;θ)δ]
利用期望的线性性质,将其拆分为一阶项和二阶项:
DKL≈一阶项−Ex∼Pθ[∇θlogp(x;θ)]Tδ二阶项−21δTEx∼Pθ[∇θ2logp(x;θ)]δ
2.2 一阶项的消去
我们来考察一阶项中的期望 Ex∼Pθ[∇θlogp(x;θ)]。
利用对数导数技巧(Log-derivative trick):∇logp=p∇p,我们有:
Ex∼Pθ[∇θlogp(x;θ)]=∫p(x;θ)∇θlogp(x;θ)dx=∫p(x;θ)p(x;θ)∇θp(x;θ)dx=∫∇θp(x;θ)dx=∇θ∫p(x;θ)dx(假设满足积分与求导交换的正则性条件)
由于概率密度函数的积分为 1(∫p(x;θ)dx=1),常数的导数为 0,因此:
∇θ(1)=0
结论: KL 散度展开式的一阶项恒为 0。这也符合距离度量的性质(在 Pθ 处距离取极小值 0,故一阶导数为 0)。
2.3 二阶项与 Fisher 信息矩阵
现在 KL 散度的近似式简化为仅剩二阶项:
DKL(Pθ∣∣Pθ+δ)≈−21δTEx∼Pθ[∇θ2logp(x;θ)]δ
我们需要处理海森矩阵的期望 E[∇2logp]。利用等式 ∇2logp=p∇2p−(p∇p)(p∇p)T,两边求期望:
E[∇2logp]=∫p(p∇2p−(∇logp)(∇logp)T)dx==∇2∫pdx=0∫∇2pdx−∫p(∇logp)(∇logp)Tdx=−E[(∇θlogp(x;θ))(∇θlogp(x;θ))T]
定义 Fisher 信息矩阵 为 Score Function 的协方差矩阵:
F(θ)≜Ex∼Pθ[∇θlogp(x;θ)∇θlogp(x;θ)T]
代回 KL 散度展开式,负号抵消,得到最终的局部距离公式:
DKL(Pθ∣∣Pθ+δ)≈21δTF(θ)δ
2.4 度规
在黎曼几何中,流形上微元距离的平方 ds2 由度量张量 G 定义:ds2=∑ijgijdθidθj。
对比上式,我们可以确认:Fisher 信息矩阵 F(θ) 正是统计流形上的黎曼度量张量 G(θ)。
这表明,在统计流形上,衡量参数变化大小的正确方式不是欧氏距离 ∣∣δ∣∣2=δTIδ,而是马氏距离形式的 δTFδ。
3. 从 SGD 到 自然梯度
优化问题的目标是最小化损失函数 L(θ)。我们希望在每一步更新中,Loss 下降得越多越好。这可以形式化为最速下降问题。
3.1 欧氏空间的最速下降
若假设参数空间是平坦的欧氏空间,我们将步长限制在固定半径 ϵ 内:
δmins.t.L(θ+δ)∣∣δ∣∣2≤ϵ
对 L 进行一阶泰勒展开:L(θ+δ)≈L(θ)+∇LTδ。
构建拉格朗日函数:
LEuclid=∇LTδ+λ(δTIδ−ϵ)
对 δ 求导并令为 0:
∇L+2λδ=0⟹δ=−2λ1∇L
这就导出了我们熟悉的 标准梯度下降 (SGD):
θt+1=θt−η∇L(θt)
几何上,这是沿着等高线的法线方向移动。
3.2 统计流形的最速下降
若我们要在这个弯曲的统计流形上进行最速下降,限制条件应由流形的内蕴距离给出。即我们希望在改变分布程度固定的前提下,最大化 Loss 的下降:
δmins.t.L(θ+δ)≈L(θ)+∇LTδDKL(Pθ∣∣Pθ+δ)≤ϵ
利用我们在 2.3 节导出的二次型近似,约束条件变为:
21δTFδ≤ϵ
构建拉格朗日函数:
LNatural=∇LTδ+λ(21δTFδ−ϵ)
对 δ 求导:
∂δ∂LNatural=∇L+λFδ=0
解出最优更新方向 δ:
Fδ=−λ1∇L⟹δ=−λ1F−1∇L
我们将标量系数 1/λ 吸收进学习率 η 中,得到 自然梯度下降 的更新公式:
θt+1=θt−ηF−1∇L(θt)
3.3 逆变与协变
从微分几何的角度来看:
- 损失函数的梯度 ∇L 是一个 余切向量,也就是一个 1-form(协变),其分量随坐标变换而逆变。
- 参数更新量 δ 是一个 切向量(逆变)。
- 在黎曼流形上,切空间与余切空间不是自然同构的。我们需要通过度量张量(及其逆)来建立映射:
- ♯ 算子:将余切向量映射为切向量。
- 在局部坐标下,这对应于左乘度规的逆矩阵 G−1(即 F−1)。
因此,自然梯度 ∇~L=F−1∇L 才是流形上真正的梯度方向,它指向了黎曼流形上函数下降最快的方向。它试图沿着流形的 测地线 前进,从而消除了参数化方式带来的畸变。
Part 3: 自适应优化 —— 寻找低成本的二阶近似
在 Part 2 中,我们推导出了自然梯度下降:
θt+1=θt−ηF−1∇L
以及类似的牛顿法:
θt+1=θt−ηH−1∇L
然而,在深度学习中,这两个方法都有一个致命的缺陷:计算复杂度。
如果参数量 d=107,那么矩阵 F 或 H 的大小为 107×107。存储它需要数百 TB 的显存,计算其逆矩阵 O(d3) 更是天方夜谭。我们无法随身携带这样一个巨大的度规矩阵。
因此,现代优化器的核心哲学是:用一阶梯度的历史信息,去构造一个对角化的二阶矩阵近似。
1. 一般化的牛顿法
为了不局限于交叉熵损失,我们先从最通用的函数最小化角度审视二阶优化。
设损失函数为 L(θ),我们在当前点 θt 处进行二阶泰勒展开(假设 L 是二阶可微的):
L(θt+δ)≈L(θt)+∇L(θt)Tδ+21δTH(θt)δ
其中:
- ∇L∈Rd 是梯度向量。
- H=∇2L∈Rd×d 是黑塞矩阵,描述了 Loss 曲面的局部曲率。
1.1 牛顿更新
我们的目标是找到一个步长 δ,使得近似后的 Loss 最小。这是一个关于 δ 的二次型求极值问题。
对 δ 求导并令其为 0:
∇δ(L(θt)+∇LTδ+21δTHδ)=∇L+Hδ=0
解得最优步长:
δ=−H−1∇L
这便是标准的牛顿法。
1.2 牛顿法与自然梯度的关系
- 牛顿法使用的是 Hessian (H):它衡量的是 Loss 曲面 的几何弯曲程度。
- 自然梯度使用的是 Fisher Matrix (F):它衡量的是 概率分布流形 的弯曲程度。
联系:
当损失函数为负对数似然,即 L(θ)=−E[logp(x∣θ)] 时,可以证明海森矩阵的期望渐近等于 Fisher 信息矩阵:
Ex∼Pdata[∇2L]≈F
因此,在深度学习常见的分类任务中,牛顿法与自然梯度法在期望意义上是等价的。它们都试图通过“除以曲率”来拉伸或压缩梯度,使得在平坦方向步子大一点,陡峭方向步子小一点。
自适应优化
在 Part 2 中,我们得到了自然梯度 d=−F−1∇L。
为了工程落地,现代优化器做出了两个核心的数学假设与近似。我们需要通过推导来看看,这每一步近似到底是在优化什么。
1. 对角化近似:经验 Fisher 矩阵
首先,我们解决矩阵 F 太大的问题。
假设 1: 参数之间相互独立,即 F 是对角矩阵。
假设 2: 用单次采样的梯度的外积来近似 Fisher 矩阵的期望。
Fisher 矩阵定义为 Score Function 的协方差:
F=Ex∼Pθ[∇logp(x)∇logp(x)T]
如果我们取对角线元素 Fii,并用当前的梯度 gt 进行单点估计:
F^ii≈gt,i2
如果是 Adam/RMSProp,我们会用指数移动平均(EMA)来获得更稳定的估计(即二阶动量 vt):
vt,i≈E[gt,i2]≈Fii
停!这里有一个巨大的陷阱。
如果我们直接照搬牛顿法/自然梯度 θ←θ−F−1g,那么更新公式应该是:
Δθi∝−vigi=−gi2gi=−gi1
这非常荒谬! 如果梯度很小,步长反而变成无穷大?这显然不是 Adam 的做法(Adam 是除以 v)。
这说明:Adam 并不是简单的“对角化自然梯度”。它背后的优化目标变了。
2. 为什么是根号?
要推导出 vg,我们需要引入**缩放不变性 ** 或者 **信赖域 ** 的约束。
路径 A:维度分析
假设我们将 Loss 函数放大 k 倍:L~=kL。
- 理想的优化器,其参数更新轨迹 θt+1−θt 应该不随 k 的变化而变化。
-
梯度下降 (SGD):
Δθ∝g.
如果 L→kL,则 g→kg。步长变大 k 倍。
结论:SGD 不具有缩放不变性。
-
牛顿法 :
Δθ∝H−1g.
g→kg,海森矩阵 H→kH。
Δθ→(kH)−1(kg)=k−1kH−1g=H−1g.
结论:牛顿法具有缩放不变性。 (这是二阶方法的优点)
-
Adam (g/v):
v 是梯度平方的期望,所以 v→k2v。
Δθ∝vg→k2vkg=kvkg=vg
结论:Adam 具有缩放不变性。
洞察: Adam 的分母 v 其实是在做一个归一化。它消除了梯度幅值的影响,只保留了梯度的符号和信噪比。这就是为什么 Adam 有时被称为 “Sign Gradient Descent” 的平滑版。
路径 B:最优信赖域
我们换一个更数学的优化目标。我们不限制步长的欧氏距离(SGD),也不限制步长的 KL 散度(Natural Gradient),我们要限制的是“标准化后的步长”。
我们希望在每一步 t,找到一个更新量 δ,最大化 Loss 的下降,但是要满足一个几何约束:步长在各个维度上的分量,应该根据该维度的不确定性进行加权。
优化问题:
minδ∇LTδ
s.t.∣∣δ∣∣D2≤ϵ2
这里的 ∣∣⋅∣∣D 是一个加权的范数:
∣∣δ∣∣D2=∑i=1dαi2δi2
其中 αi 是第 i 个维度的**特征尺度 **。
- 如果第 i 维梯度波动很大(gi2 大),说明这里很陡峭/不稳定,我们应该谨慎,特征尺度 αi 应该小?还是大?
- 在 AdaGrad (Duchi et al., 2011) 的原始论文证明中,为了最小化 Regret Bound(遗憾界),最优的加权矩阵 D 的对角元应该是梯度平方和的根号。
让我们用拉格朗日乘子法解这个几何约束问题:
-
拉格朗日函数:
L(δ,λ)=∑igiδi+λ(∑iαi2δi2−ϵ2)
-
对 δi 求导并令为 0:
gi+2λαi2δi=0
δi=−2λαi2gi
-
确定最优的特征尺度 αi:
AdaGrad/RMSProp 的核心洞见在于:我们应该用过去梯度的均方根 (RMS) 来定义这个特征尺度 αi。
αi2≈E[gi2]=vi
(注意:这里 α 对应的是 scaling factor,在 AdaGrad 的遗憾界推导中,最优的 Preconditioner G=diag(∑g2),这直接导致了分母是根号)。
如果我们取 αi2∝vi (这里稍微有点绕,让我们回到最直接的 RMSProp 定义):
我们定义度量矩阵 M=diag(vi)。
我们希望步长 δ 在度量 M 下是单位长度:
δTMδ≤ϵ
(这就相当于我们在一个被 v 拉伸过的空间里走 SGD)。
等一下,让我们回到最本质的 AdaGrad 结论。Duchi 证明了,要最小化在线凸优化的 Regret:
R(T)=∑t=1Tft(θt)−minθ∑t=1Tft(θ)
最优的对角预处理矩阵 G 具有形式:
Gii=∑t=1Tgt,i2
因此更新规则变成了:
θt+1=θt−∑g2ηgt
这就是根号的数学来源:它是 Regret Minimization 问题的解析解。
3. Adam 的完整形态:动量 + RMS 缩放
现在我们把拼图拼起来。Adam 其实是做两件事的组合:
-
分子 mt (First Moment):
这不是简单的梯度 gt,而是梯度的 EMA。
mt←β1mt−1+(1−β1)gt
物理意义: 这是一个低通滤波器。它过滤掉了高频的震荡噪声,提取了梯度的主要下降方向。
-
分母 vt (Second Moment Root):
这是梯度的均方根 (RMS)。
vt←β2vt−1+(1−β2)gt2
物理意义: 这是一个自适应的信噪比度量。
Step Sizei≈η⋅E[gi2]E[gi]
- 如果某维度梯度一直很大且稳定(m 大,v 大),步长接近 η。
- 如果某维度梯度很小(m 小,v 小),步长也接近 η。
- 关键点: Adam 试图把所有维度的更新步长归一化到同一个量级(大约是 η)。它不在乎地形是陡峭还是平坦,它只在乎方向是否确定。
4. 总结:Adam 到底近似了什么?
我们在可以这样总结 Adam :
Adam 不是 直接近似牛顿法(H−1g)。
Adam 是 近似了 符号梯度下降,并引入了 Trust Region 的概念。
它通过 D=diag(vt) 这个度规矩阵,将原始的参数空间变换成了一个**超立方体 **。在这个变换后的空间里,所有参数维度的梯度幅度都是 1(或者说信噪比一致)。然后,它在这个“标准化”的空间里,沿着平滑后的一阶动量方向 mt 前进。
这就是为什么 Adam 对学习率 η 不敏感,且收敛极快的原因——因为它消除了参数空间的**尺度差异 **。