LLM WIKI · 课程精读

LEARNING UNIT · 09

训练动态与 Adam

从指数移动平均、初期动量修正和二阶矩归一化理解 Adam 的训练行为。

已整理章节
4 节
单元来源
3 条视频
总时长
09:42
状态
已发布
学习位置
9 / 20
01

主题讲解 · 03:30

Adam 的 Beta 为什么对应 19 与 1999 的 EMA Span

学习目标

  • 能写出指数移动平均的递推式与展开式。
  • 能解释 β\beta 越接近 11 时曲线为何更平滑。
  • 能从金融 EMA 的 span 参数推出 β=0.9\beta=0.9 对应 1919
  • 能解释 β=0.999\beta=0.999 为什么对应 span 19991999
  • 能把一维价格 EMA 推广到梯度向量的一阶矩与二阶原始矩。
  • 能区分 EMA span、硬窗口长度、半衰期与 bias correction。

前置与衔接

Adam 不直接使用当前梯度完成全部更新。

它同时维护两条逐坐标的指数移动平均:

  • 梯度的一阶矩 mtm_t
  • 逐元素平方梯度的二阶原始矩 vtv_t

视频借用交易价格的 EMA 均线,让这两个随时间更新的向量更容易想象。

这里的“19 日”和“1999 日”是金融 EMA 的 span 参数化,不表示 Adam 保存一个固定长度窗口,也不表示真的存在“交易日”。

核心讲解

1. 从一维价格到高维梯度

交易价格 ptp_t 是随时间变化的标量。

梯度

gt=θLtg_t=\nabla_\theta\mathcal L_t

是随训练步变化的高维向量。

二者都可以沿时间轴做指数移动平均。

图 1

视频以一维价格 EMA 类比高维梯度的一阶与二阶指数移动平均,并在同一张图上标出两个时间尺度。

原视频 · 00:00 ↗

类比只发生在递推结构上:

标量观测序列向量观测序列.\text{标量观测序列} \longleftrightarrow \text{向量观测序列}.

它不是把优化问题变成金融预测。

2. EMA 的递推式

对任意观测序列 xtx_t,定义

st=βst1+(1β)xt,0β<1.s_t =\beta s_{t-1}+(1-\beta)x_t, \qquad 0\le\beta<1.

上一时刻平滑值的权重是 β\beta,当前观测的权重是 1β1-\beta

两者之和为

β+(1β)=1.\beta+(1-\beta)=1.
图 2

EMA_t=beta EMA_{t-1}+(1-beta)x_t 用上一时刻平滑值与当前观测递推,两个系数之和为 1。

原视频 · 01:00 ↗

这是一种递推计算:无需在每一步重新读取全部历史。

3. 展开后为什么叫“指数”移动平均

继续代入 st1s_{t-1}

st=(1β)xt+β(1β)xt1+β2st2.s_t =(1-\beta)x_t +\beta(1-\beta)x_{t-1} +\beta^2s_{t-2}.

反复展开并暂时忽略初值项:

st(1β)k=0βkxtk.s_t \approx (1-\beta) \sum_{k=0}^{\infty} \beta^k x_{t-k}.

距离当前 kk 步的观测权重为

wk=(1β)βk.w_k=(1-\beta)\beta^k.

它随 kk 指数衰减,因此叫 exponential moving average。

4. β\beta 控制响应速度

β\beta 较小,当前观测的权重 1β1-\beta 较大。

EMA 会快速追随新变化,但也更容易保留短期噪声。

β\beta 接近 11,当前观测权重很小,历史衰减很慢。

EMA 曲线响应更迟缓、更平滑。

图 3

beta 越接近 1,历史权重衰减越慢,EMA 对新观测的响应越迟缓、曲线越平滑。

原视频 · 01:20 ↗

“细粒度”与“粗粒度”是视频的直觉说法:

  • 较小 β\beta 看见更快的局部变化;
  • 较大 β\beta 描述更慢的长期尺度。

5. 金融 EMA 的 span 参数

金融软件常把平滑因子写为

α=2N+1,\alpha=\frac{2}{N+1},

其中 NN 称为 span。

而视频与 Adam 的写法使用

α=1β.\alpha=1-\beta.

令两者相等:

1β=2N+1.1-\beta=\frac{2}{N+1}.

解出

N=21β1=1+β1β.N =\frac{2}{1-\beta}-1 =\frac{1+\beta}{1-\beta}.

这就是标题中 span 与 β\beta 的换算式。

6. 为什么 0.90.9 对应 1919

代入

β=0.9:\beta=0.9:
N=1+0.910.9=1.90.1=19.N =\frac{1+0.9}{1-0.9} =\frac{1.9}{0.1} =19.
图 4

按常用 EMA span 参数 alpha=2/(N+1),Adam 的 beta1=0.9 即 alpha=0.1,对应 N=19。

原视频 · 00:20 ↗

因此 Adam 常用的一阶矩衰减率

β1=0.9\beta_1=0.9

可类比为 span 1919 的 EMA。

7. 为什么 0.9990.999 对应 19991999

同理,

N=1+0.99910.999=1.9990.001=1999.N =\frac{1+0.999}{1-0.999} =\frac{1.999}{0.001} =1999.

所以常用二阶矩衰减率

β2=0.999\beta_2=0.999

可类比为 span 19991999

这解释了为什么 vtv_t 的时间尺度比 mtm_t 慢得多。

8. span 不是硬窗口

span 1919 不等于“只看最近 1919 步”。

EMA 对更早观测仍赋予非零权重,只是权重按 βk\beta^k 衰减。

不同的“记忆长度”定义还会给出不同数字。

例如编者补充的特征尺度

τ11β\tau\approx\frac{1}{1-\beta}

β=0.9\beta=0.9 时约为 1010,而不是 1919

半衰期则是

h=ln(1/2)lnβ.h=\frac{\ln(1/2)}{\ln\beta}.

这些指标回答不同问题,不能和金融 span 混用。

9. Adam 的一阶矩

Adam 的一阶矩递推为

mt=β1mt1+(1β1)gt.m_t =\beta_1m_{t-1} +(1-\beta_1)g_t.

它是梯度向量的 EMA。

梯度各坐标可以为正或负,所以 mtm_t 也能跨越零点并改变方向。

10. Adam 的二阶原始矩

二阶递推为

vt=β2vt1+(1β2)(gtgt).v_t =\beta_2v_{t-1} +(1-\beta_2)(g_t\odot g_t).

\odot 表示逐元素乘法。

每个分量都满足

(gt,i)20,(g_{t,i})^2\ge0,

所以 vtv_t 的坐标非负。

这里的 vtv_t 是平方梯度的 EMA,即二阶原始矩估计,不是减去均值平方后的统计方差。

11. 向量为什么也能画“均线”

向量加法和标量乘法逐坐标定义。

因此

mt=β1mt1+(1β1)gtm_t =\beta_1m_{t-1} +(1-\beta_1)g_t

仍是与 gtg_t 相同 shape 的向量。

图 5

梯度是高维向量,但 EMA 的加法与标量乘法逐元素成立,因此每个时刻仍得到一个同 shape 的动量向量。

原视频 · 02:00 ↗

若把每一步向量端点画在低维示意图上,就能看到较快的一阶矩轨迹与较慢的二阶尺度轨迹。

这只是可视化投影,不表示真实参数空间只有二维。

12. 两条时间尺度放在一起

常用默认值下:

β1=0.9N1=19,\beta_1=0.9 \quad\Longleftrightarrow\quad N_1=19,
β2=0.999N2=1999.\beta_2=0.999 \quad\Longleftrightarrow\quad N_2=1999.
图 6

beta1=0.9 的一阶矩对应 span 19,beta2=0.999 的二阶原始矩对应 span 1999;后者变化更慢。

原视频 · 03:00 ↗

mtm_t 更快追随梯度方向变化,vtv_t 更慢估计各坐标的平方尺度。

这两条 EMA 随后共同构成 Adam 的归一化更新。

13. 本视频省略的 bias correction

画面右上角明确写有“忽略偏差修正”。

因为

m0=v0=0,m_0=v_0=0,

训练初期的 EMA 会被零初值拉低。

标准 Adam 还会计算

m^t=mt1β1t,v^t=vt1β2t.\widehat m_t=\frac{m_t}{1-\beta_1^t}, \qquad \widehat v_t=\frac{v_t}{1-\beta_2^t}.

下一课将从等比数列解释这两个分母。

跟练与练习

跟练:换算 span

β=0.98,\beta=0.98,

N=1+0.9810.98=99.N =\frac{1+0.98}{1-0.98} =99.

因此它对应 span 9999,但仍拥有无限长的指数尾部。

编者练习

某 EMA 使用 span N=39N=39。求对应的 β\beta,并说明它比 β=0.9\beta=0.9 响应更快还是更慢。

查看参考答案


β=12N+1,\beta=1-\frac{2}{N+1},
得到
β=1240=0.95.\beta=1-\frac{2}{40}=0.95.
0.95>0.90.95>0.9,历史衰减更慢,因此响应更慢、曲线更平滑。

常见误区

  • 误区:span 1919 是固定保存最近 1919 步。EMA 对更早历史仍有指数衰减权重。
  • 误区:vtv_t 是梯度方差。它是逐元素平方梯度的二阶原始矩 EMA。
  • 误区:向量不能求 EMA。标量乘法与向量加法逐元素成立。
  • 误区:更大的 β\beta 更新更快。它给当前观测更小权重,响应反而更慢。
  • 误区:视频中的递推已经是完整 Adam。标准实现还包含 bias correction、学习率与 ϵ\epsilon
  • 误区:19、1999 是唯一的有效窗口定义。它们特指金融 EMA 的 span 参数。

本课小结

EMA 用 st=βst1+(1β)xts_t=\beta s_{t-1}+(1-\beta)x_t 递推,并对历史赋予指数衰减权重。

在金融 span 参数 α=2/(N+1)\alpha=2/(N+1) 下,N=(1+β)/(1β)N=(1+\beta)/(1-\beta),所以 0.90.90.9990.999 分别对应 191919991999

Adam 把这两种时间尺度用于梯度的一阶矩与平方梯度的二阶原始矩;它们不是硬窗口,训练初期还需下一课解释的偏差修正。

02

主题讲解 · 03:35

从等比数列推出 Adam 的动量偏差修正

学习目标

  • 能指出 Adam 动量在训练初期产生偏差的直接原因。
  • 能从零初始化的 EMA 递推式推出 (1βt)C(1-\beta^t)C
  • 能解释为什么除以 1βt1-\beta^t 可以修正常数输入下的缩放。
  • 能把同一推导分别应用到一阶矩 mtm_t 与二阶原始矩 vtv_t
  • 能说明 bias correction 为什么在前几步尤其显著。
  • 能区分“常数输入下精确恢复 CC”与一般非平稳梯度下的归一化加权平均。

前置与衔接

上一课把 Adam 的两个状态量看成梯度序列的 EMA:

mt=β1mt1+(1β1)gt,m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,
vt=β2vt1+(1β2)(gtgt).v_t=\beta_2v_{t-1}+(1-\beta_2)(g_t\odot g_t).

如果无限久以前就开始观察一个平稳序列,EMA 权重之和可视为 11

但实际训练从第 11 步才开始,并且 Adam 通常取

m0=0,v0=0.m_0=0, \qquad v_0=0.

有限步历史与零初值共同造成了训练初期的缩放偏差。

图 1

教学图把价格、价格平方、两条 EMA 分别映射到梯度、逐元素平方梯度、一阶矩 m_t 与二阶原始矩 v_t。

原视频 · 00:00 ↗

核心讲解

1. 先分析一个统一的 EMA

先不区分 mtm_tvtv_t,统一写成

st=βst1+(1β)xt,s0=0.s_t=\beta s_{t-1}+(1-\beta)x_t, \qquad s_0=0.

之后只需代入:

  • xt=gtx_t=g_tβ=β1\beta=\beta_1,得到一阶矩;
  • xt=gtgtx_t=g_t\odot g_tβ=β2\beta=\beta_2,得到二阶原始矩。

整个推导逐坐标成立,因此标量结果可以直接推广到向量。

2. 为什么用常数输入 CC

x1=x2==xt=C.x_1=x_2=\cdots=x_t=C.

常数输入让我们能精确看出零初始化造成的缩放。

若 EMA 一开始就在稳态,输出应是 CC;若从零开始,输出会逐步靠近 CC

图 2

Adam 将动量初始化为 0;若真实输入从第一步起就是常数 C,EMA 递推会从 0 而不是稳态 C 起步。

原视频 · 01:20 ↗

这只是解析示例。

真实梯度一般不恒定,因此后面不能把“修正后等于 CC”机械外推到任意训练序列。

3. 第一步为什么偏小

s0=0s_0=0x1=Cx_1=C 代入:

s1=β0+(1β)C=(1β)C.s_1 =\beta\cdot0+(1-\beta)C =(1-\beta)C.

β=0.9\beta=0.9,则

s1=0.1C.s_1=0.1C.
图 3

beta=0.9 时,第一步未修正 EMA 只有 (1-beta)C=0.1C,明显低于常数输入 C。

原视频 · 01:40 ↗

它不是因为当前样本真的只有 0.1C0.1C,而是因为剩余权重 0.90.9 乘到了人为设置的零初值上。

4. 展开前几步

第二步为

s2=βs1+(1β)C=β(1β)C+(1β)C=(1β)(1+β)C.\begin{aligned} s_2 &=\beta s_1+(1-\beta)C\\ &=\beta(1-\beta)C+(1-\beta)C\\ &=(1-\beta)(1+\beta)C. \end{aligned}

第三步为

s3=βs2+(1β)C=(1β)(1+β+β2)C.\begin{aligned} s_3 &=\beta s_2+(1-\beta)C\\ &=(1-\beta)(1+\beta+\beta^2)C. \end{aligned}

所以第 tt 步满足

st=(1β)(1+β++βt1)C.s_t =(1-\beta) \left(1+\beta+\cdots+\beta^{t-1}\right)C.
图 4

连续展开递推后,t 步 EMA 是 (1-beta)C 乘以 1+beta+...+beta^(t-1) 的等比和。

原视频 · 02:00 ↗

5. 用等比数列得到闭式解

有限等比和为

1+β++βt1=1βt1β.1+\beta+\cdots+\beta^{t-1} =\frac{1-\beta^t}{1-\beta}.

代回递推展开式:

st=(1β)1βt1βC=(1βt)C.\begin{aligned} s_t &=(1-\beta) \frac{1-\beta^t}{1-\beta}C\\ &=(1-\beta^t)C. \end{aligned}

这表明未修正 EMA 相对 CC 少了一个乘法因子

1βt.1-\beta^t.

6. 偏差修正从哪里来

定义修正后的量

s^t=st1βt.\widehat s_t =\frac{s_t}{1-\beta^t}.

在常数输入示例中:

s^t=(1βt)C1βt=C.\widehat s_t =\frac{(1-\beta^t)C}{1-\beta^t} =C.
图 5

常数输入下未修正 EMA=(1-beta^t)C,因此除以 1-beta^t 可去掉由零初始化引入的缩放。

原视频 · 02:40 ↗

因此分母不是经验凑出的常数,而是有限等比权重之和。

7. 一般序列下修正了什么

当输入不是常数时,展开得到

st=(1β)k=1tβtkxk.s_t =(1-\beta) \sum_{k=1}^{t}\beta^{t-k}x_k.

修正后

s^t=k=1t(1β)βtk1βtxk.\widehat s_t =\sum_{k=1}^{t} \frac{(1-\beta)\beta^{t-k}}{1-\beta^t}x_k.

各项权重之和为

k=1t(1β)βtk1βt=1.\sum_{k=1}^{t} \frac{(1-\beta)\beta^{t-k}}{1-\beta^t} =1.

所以一般情况下,bias correction 得到的是已有观测的归一化指数加权平均。

它不会让变化中的梯度“恢复为某个固定真值 CC”。

8. 应用到 Adam 的两条动量

标准 Adam 分别修正一阶矩与二阶原始矩:

m^t=mt1β1t,\widehat m_t =\frac{m_t}{1-\beta_1^t},
v^t=vt1β2t.\widehat v_t =\frac{v_t}{1-\beta_2^t}.

两个分母不能混用,因为 mtm_tvtv_t 使用不同的衰减率。

常见默认值是

β1=0.9,β2=0.999.\beta_1=0.9, \qquad \beta_2=0.999.

9. 为什么训练初期最明显

0<β<10<\beta<1 时,随着 tt 增大:

βt0,\beta^t\to0,

因此

1βt1.1-\beta^t\to1.
图 6

0<beta<1 时,训练初期 1-beta^t 显著小于 1;随 t 增大 beta^t 衰减,修正因子逐渐趋近 1。

原视频 · 03:00 ↗

第一步的除数尤其小:

1β1=0.1,1-\beta_1=0.1,
1β2=0.001.1-\beta_2=0.001.

对应的修正倍数分别是 101010001000

随后倍数逐渐接近 11,但标准 Adam 仍按定义持续计算修正量。

10. 初值改变时公式也会改变

s0s_0 不是零,递推展开包含额外项

βts0.\beta^t s_0.

此时

st=βts0+(1β)k=1tβtkxk.s_t =\beta^t s_0 +(1-\beta) \sum_{k=1}^{t}\beta^{t-k}x_k.

常见的 1βt1-\beta^t 修正针对 Adam 的零初始化约定。

不能在改变初始化后仍不加分析地照搬同一解释。

跟练与练习

跟练:计算第二步

β=0.9\beta=0.9x1=x2=Cx_1=x_2=C

未修正量为

s2=(10.92)C=0.19C.s_2=(1-0.9^2)C=0.19C.

修正后

s^2=0.19C10.92=C.\widehat s_2 =\frac{0.19C}{1-0.9^2} =C.
编者练习

β=0.5\beta=0.5s0=0s_0=0,前三个输入依次为 x1=2x_1=2x2=4x_2=4x3=8x_3=8。求 s3s_3s^3\widehat s_3,并判断 s^3\widehat s_3 是否应等于 88

查看参考答案

递推得到
s1=1,s_1=1,
s2=0.5×1+0.5×4=2.5,s_2=0.5\times1+0.5\times4=2.5,
s3=0.5×2.5+0.5×8=5.25.s_3=0.5\times2.5+0.5\times8=5.25.
修正因子为
10.53=0.875,1-0.5^3=0.875,
所以
s^3=5.250.875=6.\widehat s_3=\frac{5.25}{0.875}=6.
s^3\widehat s_3 不等于最新输入 88;它是已有输入的归一化指数加权平均。只有常数输入示例中才会精确恢复同一个 CC

常见误区

  • 误区:EMA 偏差来自梯度估计本身不准。这里讨论的是零初始化与有限历史造成的确定性缩放。
  • 误区:除以 1βt1-\beta^t 是经验技巧。它直接来自有限等比和。
  • 误区:修正后对任意梯度序列都等于某个常数 CC。这一结论只属于常数输入示例。
  • 误区:mtm_tvtv_t 共用一个修正分母。它们分别使用 β1\beta_1β2\beta_2
  • 误区:后期修正因子接近 11,所以公式可以从 Adam 定义中删去。接近不等于恒等;标准实现仍保留它。
  • 误区:任意初始化都对应同一个修正公式。非零初值还会带来 βts0\beta^t s_0 项。

本课小结

Adam 通常把动量初始化为零,导致有限步 EMA 的权重和只有 1βt1-\beta^t

对常数输入 CC,未修正 EMA 精确等于 (1βt)C(1-\beta^t)C;除以该因子即可消除零初值造成的缩放。

对一般非平稳梯度,bias correction 的意义是把已有指数权重重新归一化到和为 11,而不是恢复一个并不存在的恒定梯度。

一阶矩与二阶原始矩必须分别使用 1β1t1-\beta_1^t1β2t1-\beta_2^t;修正影响在训练初期最显著。

03

主题讲解 · 02:37

Adam 如何保留稳定方向并抑制振荡方向

学习目标

  • 能从 Adam 的一阶矩与二阶原始矩解释逐坐标缩放。
  • 能推出稳定梯度坐标的归一化结果为 sign(C)\operatorname{sign}(C)
  • 能说明为什么负的稳定梯度对应 1-1 而不是 +1+1
  • 能解释正负振荡时 mtm_tvtv_t 的不同表现。
  • 能把逐坐标结论连接到狭长损失山谷中的优化轨迹。
  • 能识别该直觉对 bias correction、ϵ\epsilon、有限时间和随机梯度所作的简化。

前置与衔接

Adam 为每个参数坐标维护两条 EMA:

mt=β1mt1+(1β1)gt,m_t =\beta_1m_{t-1} +(1-\beta_1)g_t,
vt=β2vt1+(1β2)(gtgt).v_t =\beta_2v_{t-1} +(1-\beta_2)(g_t\odot g_t).

经过零初始化偏差修正后:

m^t=mt1β1t,v^t=vt1β2t.\widehat m_t =\frac{m_t}{1-\beta_1^t}, \qquad \widehat v_t =\frac{v_t}{1-\beta_2^t}.

标准更新为

θt=θt1ηm^tv^t+ϵ.\theta_t =\theta_{t-1} -\eta \frac{\widehat m_t} {\sqrt{\widehat v_t}+\epsilon}.

视频为突出核心直觉,主要分析单个坐标上的

mv\frac{m}{\sqrt v}

并省略帽子、ϵ\epsilon 与有限步过渡过程。

图 1

视频把单个梯度坐标分成方向稳定与正负振荡两种极端情形,比较 m/sqrt(v) 的结果。

原视频 · 00:00 ↗

核心讲解

1. 为什么可以逐坐标分析

对参数坐标 ii,Adam 的状态更新为

mt,i=β1mt1,i+(1β1)gt,i,m_{t,i} =\beta_1m_{t-1,i} +(1-\beta_1)g_{t,i},
vt,i=β2vt1,i+(1β2)gt,i2.v_{t,i} =\beta_2v_{t-1,i} +(1-\beta_2)g_{t,i}^2.

平方、开方与除法都逐元素执行。

因此可以先研究一个标量梯度坐标,再把结论并回整个参数向量。

这不表示各参数对损失函数彼此独立:梯度 gtg_t 仍由整个网络与当前 batch 共同决定。

2. 情形一:梯度长期稳定为 CC

假设某个坐标在足够长时间里近似满足

gt,iC.g_{t,i}\approx C.

在理想稳态下,一阶矩的 EMA 接近

mt,iC,m_{t,i}\approx C,

而二阶原始矩接近

vt,iC2.v_{t,i}\approx C^2.
图 2

若某坐标长期稳定在常数 C,理想稳态下 m 趋近 C,v 趋近 C^2。

原视频 · 00:40 ↗

这里的“趋近”依赖输入持续稳定以及 EMA 已经过了初始过渡期。

3. 稳定分量保留的是符号

若先忽略 ϵ\epsilon,归一化量为

mvCC2.\frac{m}{\sqrt v} \approx \frac{C}{\sqrt{C^2}}.

因为

C2=C,\sqrt{C^2}=|C|,

所以

CC2=CC=sign(C),C0.\frac{C}{\sqrt{C^2}} =\frac{C}{|C|} =\operatorname{sign}(C), \qquad C\ne0.
图 3

忽略 epsilon 时,C/sqrt(C^2)=C/|C|=sign(C):C>0 得 +1,C<0 得 -1。

原视频 · 01:00 ↗

因此:

C>0CC=+1,C>0 \Longrightarrow \frac{C}{|C|}=+1,
C<0CC=1.C<0 \Longrightarrow \frac{C}{|C|}=-1.

原始 ASR 文本把负 CC 的结果识别成了“正一”,但画面公式与字幕在这里明确是“负一”。

课程稿以画面和数学恒等式为准。

4. 加回 ϵ\epsilon 后并不严格等于正负一

标准 Adam 实际使用

CC+ϵ.\frac{C}{|C|+\epsilon}.

只有在

Cϵ|C|\gg\epsilon

时,它才近似为 sign(C)\operatorname{sign}(C)

C|C|ϵ\epsilon 同量级甚至更小时,幅值会小于 11

ϵ\epsilon 还避免了 C=0C=0 时除以零。

5. 情形二:梯度在正负之间振荡

再考虑某个坐标频繁出现大小相近、符号相反的梯度,例如

+C,C,+C,C,+C,-C,+C,-C,\ldots

一阶矩对带符号梯度求 EMA,正负项会互相抵消:

mt,i0.m_{t,i}\approx0.

二阶原始矩处理的是平方:

(+C)2=(C)2=C2.(+C)^2=(-C)^2=C^2.

因此

vt,iC2>0.v_{t,i}\approx C^2>0.
图 4

梯度正负交替时,一阶矩会相互抵消,而平方梯度非负,使二阶原始矩维持正值。

原视频 · 01:20 ↗

6. 振荡分量为何受到抑制

mt,i0,vt,i>0,m_{t,i}\approx0, \qquad v_{t,i}>0,

mt,ivt,i0.\frac{m_{t,i}}{\sqrt{v_{t,i}}} \approx0.
图 5

当 m 趋近 0 而 sqrt(v) 保持正时,m/sqrt(v) 趋近 0,振荡坐标的有效更新被抑制。

原视频 · 01:40 ↗

关键不是二阶矩也变成零,而是:

  • 分子保留符号,因正负交替而抵消;
  • 分母来自平方,不会发生符号抵消。

于是这一坐标的有效更新相对减小。

7. “趋近零”需要什么条件

若序列严格交替、β1\beta_1 有限,mtm_t 在稳态下也可能形成小幅周期振荡,而不是每一步精确等于零。

若正负两侧大小不对称,EMA 还会保留非零均值。

因此更准确的表述是:

方向反复翻转且长期均值较小的分量,其一阶矩会被显著抵消;相较稳定分量,Adam 会抑制它的归一化更新。

视频中的“归零”是帮助理解的理想极限。

8. 狭长山谷中的直觉

在狭长损失山谷中,可把局部梯度粗略分成两个方向:

  • 横跨山谷的陡峭方向;
  • 沿着山谷通往低损失区域的方向。

横向方向通常较陡,迭代可能越过谷底,使梯度符号来回翻转。

沿谷方向的梯度可能较小,但符号更一致。

图 6

在狭长损失山谷中,横向梯度频繁翻转而被抑制;沿谷方向虽小但符号稳定,归一化后仍保留推进趋势。

原视频 · 02:20 ↗

于是 Adam 的两条统计量产生如下效果:

横向振荡m 抵消, v 保持较大更新受抑制,\text{横向振荡} \Rightarrow m\text{ 抵消},\ v\text{ 保持较大} \Rightarrow \text{更新受抑制},
沿谷稳定m 保留方向, v 提供尺度持续推进.\text{沿谷稳定} \Rightarrow m\text{ 保留方向},\ v\text{ 提供尺度} \Rightarrow \text{持续推进}.

9. 不能把直觉扩大成绝对保证

Adam 不会自动识别一个全局几何意义上的“正确方向”。

它只根据每个坐标的近期一阶与二阶统计量调整更新。

参数坐标轴也未必与损失曲面的主曲率方向对齐,因此逐坐标预条件并不等价于完整 Hessian 逆矩阵。

该直觉解释了典型狭长山谷中的行为,但不是对任意非凸损失、任意噪声或任意超参数的收敛保证。

10. bias correction 在这幅图里扮演什么角色

训练初期应使用

m^t=mt1β1t,v^t=vt1β2t.\widehat m_t =\frac{m_t}{1-\beta_1^t}, \qquad \widehat v_t =\frac{v_t}{1-\beta_2^t}.

它们修正零初始化造成的有限权重和。

视频的稳定/振荡对照主要讨论已经形成统计趋势后的形状,因此省略帽子不改变核心符号直觉。

但在实现或精确数值计算中,不能因此删掉修正。

跟练与练习

跟练:稳定负梯度

设一个坐标长期满足

gt,i=3.g_{t,i}=-3.

理想稳态下

mi3,vi9.m_i\approx-3, \qquad v_i\approx9.

忽略 ϵ\epsilon

mivi33=1.\frac{m_i}{\sqrt{v_i}} \approx \frac{-3}{3} =-1.

参数更新前还有一个负号:

Δθi=η(1)=+η.\Delta\theta_i =-\eta(-1) =+\eta.

因此“归一化量的符号”和“参数实际移动方向”还要通过更新式中的负号区分。

编者练习

比较两个理想稳态坐标:A 的梯度一直为 +2+2;B 的梯度以 +2,2+2,-2 对称振荡。忽略 ϵ\epsilon,分别估计 mmvvm/vm/\sqrt v

查看参考答案

对 A:
mA2,vA4,m_A\approx2, \qquad v_A\approx4,
mAvA22=1.\frac{m_A}{\sqrt{v_A}} \approx \frac{2}{2}=1.
对 B,在对称且时间尺度足以平均正负变化的理想化条件下:
mB0,vB4,m_B\approx0, \qquad v_B\approx4,
mBvB0.\frac{m_B}{\sqrt{v_B}} \approx0.
因此二者原始梯度幅值相同,但方向一致性不同,Adam 会保留 A 的推进趋势并抑制 B 的振荡更新。有限 β1\beta_1 下,B 的一阶矩可能仍有小幅周期残差。

常见误区

  • 误区:C/C2C/\sqrt{C^2} 总是 +1+1。正确结果是 C/C=sign(C)C/|C|=\operatorname{sign}(C)
  • 误区:平方根满足 C2=C\sqrt{C^2}=C。对实数应为 C|C|
  • 误区:稳定分量在完整 Adam 中严格变成正负一。ϵ\epsilon、有限时间与随机波动都会影响幅值。
  • 误区:振荡时 vtv_t 也会正负抵消。平方梯度非负,抵消主要发生在一阶矩中。
  • 误区:任意交替序列的 mtm_t 每一步都精确为零。有限 EMA 可能保留周期残差或非零均值。
  • 误区:逐坐标分析意味着参数彼此独立。各坐标统计量逐元素更新,但梯度由整体模型耦合产生。
  • 误区:Adam 等价于使用完整二阶 Hessian。它是对角、基于梯度矩的自适应缩放,不是完整曲率求逆。

本课小结

Adam 的一阶矩保留带符号梯度的近期平均,二阶原始矩记录平方尺度。

稳定坐标满足 mCm\approx CvC2v\approx C^2,忽略 ϵ\epsilon 后归一化为 sign(C)\operatorname{sign}(C);正值对应 +1+1,负值对应 1-1

正负振荡坐标的一阶矩会相互抵消,而二阶原始矩保持为正,因此归一化更新受到抑制。

这一机制能解释狭长山谷中“减少横向来回摆动、保留沿谷推进”的常见直觉,但它依赖逐坐标近期统计,不是全局方向识别或普遍收敛保证。

04

单元综合

训练动态与 Adam:从记忆尺度到方向选择

单元能力目标

学完本单元,应能把 Adam 看成一条连续的计算链,而不是一组彼此孤立的公式:

gt{带符号梯度的 EMA mt,平方梯度的 EMA vt{m^t,v^tm^tv^t+ϵΔθt.g_t \longrightarrow \begin{cases} \text{带符号梯度的 EMA }m_t,\\ \text{平方梯度的 EMA }v_t \end{cases} \longrightarrow \begin{cases} \widehat m_t,\\ \widehat v_t \end{cases} \longrightarrow \frac{\widehat m_t}{\sqrt{\widehat v_t}+\epsilon} \longrightarrow \Delta\theta_t.

最终需要具备四项可检验能力:

  1. 给定 β\beta,判断 EMA 对新变化的响应速度与历史记忆尺度。
  2. 从零初始化出发,推出有限步 EMA 的权重和与 bias correction。
  3. 给定一段简单梯度序列,逐坐标计算 mtm_tvtv_t、修正量和参数更新方向。
  4. 区分严格公式、理想稳态直觉与实际训练中的有限时间行为。

本单元的核心问题不是“Adam 记住了多少个梯度”,而是:

概念连接

1. 两条 EMA 同时承担“记忆”与“分工”

Adam 从同一个梯度向量 gtg_t 构造两种观测序列:

xt(1)=gt,x_t^{(1)}=g_t,
xt(2)=gtgt.x_t^{(2)}=g_t\odot g_t.

再分别做指数移动平均:

mt=β1mt1+(1β1)gt,m_t =\beta_1m_{t-1} +(1-\beta_1)g_t,
vt=β2vt1+(1β2)(gtgt).v_t =\beta_2v_{t-1} +(1-\beta_2)(g_t\odot g_t).

这两条状态量使用同一种递推结构,却保留不同信息:

  • mtm_t 保留符号,回答“近期梯度倾向往哪边”;
  • vtv_t 消去符号,回答“近期梯度平方尺度有多大”。

因此 vtv_t 是二阶原始矩的 EMA,不是统计方差。

它没有减去均值平方,也不直接表示梯度围绕均值的离散程度。

2. β\beta 先决定历史如何衰减

统一写一个 EMA:

st=βst1+(1β)xt.s_t =\beta s_{t-1} +(1-\beta)x_t.

向过去展开后,距离当前 jj 步的观测权重为

wj=(1β)βj.w_j=(1-\beta)\beta^j.

β\beta 越接近 11,权重衰减越慢,状态量越平滑、响应越迟缓。

β\beta 越小,当前观测权重越大,状态量越快追随新变化。

金融 EMA 常用

α=2N+1\alpha=\frac{2}{N+1}

定义 span,并令

α=1β.\alpha=1-\beta.

于是

N=1+β1β.N=\frac{1+\beta}{1-\beta}.

常见的

β1=0.9,β2=0.999\beta_1=0.9, \qquad \beta_2=0.999

分别对应金融参数化中的 span 191919991999

这组数字说明两条状态的时间尺度差异:一阶矩通常更快跟随方向变化,二阶原始矩通常更慢积累尺度信息。

但 span 不是硬窗口。

EMA 不会在第 N+1N+1 步突然遗忘某个历史梯度;所有更早项仍有非零但指数衰减的权重。

3. 有限历史使权重和暂时小于一

若状态从

s0=0s_0=0

开始,第 tt 步展开式为

st=(1β)k=1tβtkxk.s_t =(1-\beta) \sum_{k=1}^{t} \beta^{t-k}x_k.

此时已有观测的权重和为

(1β)k=1tβtk=1βt.(1-\beta) \sum_{k=1}^{t} \beta^{t-k} =1-\beta^t.

训练初期,缺少的权重并没有分给真实观测,而是隐含地落在零初值上。

这就是 bias correction 要处理的有限历史效应。

定义

s^t=st1βt,\widehat s_t =\frac{s_t}{1-\beta^t},

就得到已有观测的归一化指数加权平均:

s^t=k=1t(1β)βtk1βtxk,\widehat s_t =\sum_{k=1}^{t} \frac{(1-\beta)\beta^{t-k}} {1-\beta^t}x_k,

且这些系数之和等于 11

对 Adam 分别代入两条状态:

m^t=mt1β1t,\widehat m_t =\frac{m_t}{1-\beta_1^t},
v^t=vt1β2t.\widehat v_t =\frac{v_t}{1-\beta_2^t}.

这一步没有改变新旧梯度的相对指数次序,而是去掉零初始化导致的整体缩小。

4. 常数输入是证明工具,不是训练假设

若所有输入均为常数 CC,则

st=(1βt)C,s_t=(1-\beta^t)C,

所以

s^t=C.\widehat s_t=C.

这个例子清楚展示了修正分母的来源。

但真实梯度通常随 batch、参数位置与训练阶段变化。

此时 s^t\widehat s_t 是一组历史观测的归一化加权平均,不会神奇地恢复某个固定“真实梯度 CC”。

5. 两条修正后的状态共同决定方向与尺度

标准 Adam 更新为

θt=θt1ηm^tv^t+ϵ.\theta_t =\theta_{t-1} -\eta \frac{\widehat m_t} {\sqrt{\widehat v_t}+\epsilon}.

对单个坐标 ii

Δθt,i=ηm^t,iv^t,i+ϵ.\Delta\theta_{t,i} =-\eta \frac{\widehat m_{t,i}} {\sqrt{\widehat v_{t,i}}+\epsilon}.

分子聚合带符号方向,分母提供非负尺度。

因此 Adam 不是单纯的“动量法加一个除法”,而是把两个时间滤波结果组合成逐坐标预条件更新。

6. 稳定分量为何能保留推进方向

若某坐标长期近似满足

gt,iC,g_{t,i}\approx C,

并已进入理想稳态,则

m^t,iC,v^t,iC2.\widehat m_{t,i}\approx C, \qquad \widehat v_{t,i}\approx C^2.

忽略 ϵ\epsilon 时:

m^t,iv^t,iCC=sign(C).\frac{\widehat m_{t,i}} {\sqrt{\widehat v_{t,i}}} \approx \frac{C}{|C|} =\operatorname{sign}(C).

这里保留的是符号,而不是把所有情况都变成 +1+1

C>0+1,C<01.C>0\Rightarrow+1, \qquad C<0\Rightarrow-1.

再乘更新式前的负号,参数沿负梯度方向移动。

7. 振荡分量为何相对受抑制

若另一坐标的梯度大小相近但正负频繁翻转,一阶矩中的带符号项会相互抵消:

m^t,i0.\widehat m_{t,i}\approx0.

平方梯度不发生符号抵消:

v^t,i>0.\widehat v_{t,i}>0.

于是

m^t,iv^t,i+ϵ0.\frac{\widehat m_{t,i}} {\sqrt{\widehat v_{t,i}}+\epsilon} \approx0.

在狭长损失山谷的典型直觉中:

  • 横跨山谷的方向较陡,梯度容易反复变号,因此更新受到抑制;
  • 沿山谷方向的梯度可能较小,但符号较一致,因此推进趋势得以保留。

这条解释把时间尺度、有限历史修正与方向选择连接成同一机制。

它仍只是逐坐标、有限历史统计下的直觉,不是完整 Hessian 求逆,也不是对任意损失面的全局收敛保证。

对比与决策

1. 四组最容易混淆的概念

概念回答的问题不能误解为
β\beta 与 EMA 衰减新旧观测如何沿时间加权当前一步的最终学习率
金融 EMA span对同一 β\beta 的一种参数化截断历史的硬窗口
bias correction如何归一化零初始化下的有限权重和消除随机梯度噪声
ϵ\epsilon如何保证数值稳定并影响极小尺度零初始化偏差修正

bias correction 和 ϵ\epsilon 出现在同一个更新公式附近,但解决的是两类问题:1/(1βt)1/(1-\beta^t) 处理有限历史权重和,分母中的 +ϵ+\epsilon 处理数值稳定性。

2. 一阶矩、二阶原始矩与统计方差

状态输入是否保留符号主要作用
mtm_tgtg_t聚合近期方向趋势
vtv_tgt2g_t^2聚合近期平方尺度
方差(gtμ)2(g_t-\mu)^2 的平均衡量围绕均值的离散程度

vtv_t 叫作“方差”会遮蔽稳定分量的关键关系:

gCvC2,g\approx C \Rightarrow v\approx C^2,

而不是零。

3. 稳态结论与有限步结论

情况可以使用的判断必须保留的边界
常数输入、零初始化、有限 ttst=(1βt)Cs_t=(1-\beta^t)C仅用于常数序列
一般输入、零初始化、有限 tt修正后权重和为 11输出不是最新值,也不必等于常数
稳定梯度、充分长时间比值近似 sign(C)\operatorname{sign}(C)ϵ\epsilon 与随机波动影响
正负对称振荡、充分平均一阶矩相互抵消有限 β1\beta_1 下可能有周期残差

看到题目或实际训练曲线时,应先判断当前讨论属于哪一行,再选择公式。

综合训练

编者练习

设一个二维参数在前两步观察到 g1=(2,2),g2=(2,2).g_1=(2,2), \qquad g_2=(2,-2).β1=β2=0.5,m0=v0=(0,0),\beta_1=\beta_2=0.5, \qquad m_0=v_0=(0,0), 并忽略 ϵ\epsilon。 完成以下任务:

  1. β=0.5\beta=0.5 换算成金融 EMA span。
  2. 计算 m2m_2v2v_2
  3. 完成第 22 步 bias correction,得到 m^2\widehat m_2v^2\widehat v_2
  4. 计算归一化方向 m^2/v^2\widehat m_2/\sqrt{\widehat v_2} 与参数增量 Δθ2\Delta\theta_2
  5. 解释两个坐标结果不同的原因,并说明为什么第二个坐标还没有精确归零。
查看参考答案


N=1+β1βN=\frac{1+\beta}{1-\beta}
得到
N=1+0.510.5=3.N=\frac{1+0.5}{1-0.5}=3.
这是金融 EMA 的 span 参数,不是只保留最近三步。
第一步:
m1=0.5(0,0)+0.5(2,2)=(1,1),m_1 =0.5(0,0)+0.5(2,2) =(1,1),
v1=0.5(0,0)+0.5(4,4)=(2,2).v_1 =0.5(0,0)+0.5(4,4) =(2,2).
第二步:
m2=0.5(1,1)+0.5(2,2)=(1.5,0.5),m_2 =0.5(1,1)+0.5(2,-2) =(1.5,-0.5),
v2=0.5(2,2)+0.5(4,4)=(3,3).v_2 =0.5(2,2)+0.5(4,4) =(3,3).
22 步的修正分母为
10.52=0.75.1-0.5^2=0.75.
因此
m^2=(1.5,0.5)0.75=(2,23),\widehat m_2 =\frac{(1.5,-0.5)}{0.75} =\left(2,-\frac{2}{3}\right),
v^2=(3,3)0.75=(4,4).\widehat v_2 =\frac{(3,3)}{0.75} =(4,4).
逐坐标开方:
v^2=(2,2).\sqrt{\widehat v_2}=(2,2).
所以归一化方向为
m^2v^2=(1,13).\frac{\widehat m_2} {\sqrt{\widehat v_2}} =\left(1,-\frac{1}{3}\right).
参数增量还要乘学习率并加负号:
Δθ2=η(1,13)=(η,η3).\Delta\theta_2 =-\eta \left(1,-\frac{1}{3}\right) =\left(-\eta,\frac{\eta}{3}\right).
第一个坐标连续两步都是 +2+2,方向稳定,因此归一化幅值为 11
第二个坐标从 +2+2 翻转到 2-2,一阶矩发生抵消,而二阶原始矩仍由两个 44 构成,所以其归一化幅值只有 1/31/3
它没有精确归零,是因为这里只观察了两步,EMA 仍保留第一步的非零权重;“振荡分量趋近零”描述的是充分平均、近似对称的理想趋势。
自检标准:
v2v_2 的两个坐标必须相同,因为平方后两条序列都是 4,44,4
m^2\widehat m_2 的第二个坐标必须为负,因为较新的 2-2 权重更高;
• 参数增量与归一化梯度方向相反,不能漏掉更新式前的负号。

进入下一单元前

  • 已能从 EMA 递推式写出任意有限步的指数权重,并说明 β\beta 如何控制响应速度。
  • 已能解释 span 只是参数化,不把 19 或 1999 当成硬窗口长度。
  • 已能从权重和 1βt1-\beta^t 推出 m^t\widehat m_tv^t\widehat v_t,并说明其零初始化前提。
  • 已能区分 vtv_t 的二阶原始矩含义与统计方差。
  • 已能对简单多维梯度序列逐坐标完成 Adam 更新,正确处理平方、开方、bias correction 与更新负号。
  • 已能把“稳定方向保留、振荡方向抑制”表述为带条件的有限历史直觉,不误写成严格恒等式或全局收敛保证。
  • 若仍会把 C2\sqrt{C^2} 写成 CC、把负稳定梯度归一为 +1+1,应先回到逐坐标符号分析。
  • 若仍会把 bias correction 与 ϵ\epsilon 混为一谈,应重新从有限等比权重和推导修正分母。

完成以上检查后,本单元关于 Adam 训练动态的公式、直觉与适用边界已经闭环,可以进入后续主题。