在 AdamW 优化器中 β 和“记忆力”的关系

在 Adam 优化器(以及所有指数移动平均 EMA 算法)中,$\beta$ 的值直接决定了“记忆力”的长度。

$\beta$ 越大,记忆力越长;$\beta$ 越小,记忆力越短,越容易“遗忘”过去,只关注眼前的梯度。

我们可以用直观的“半衰期”和“有效记忆窗口”两个概念来把这种关系具体化:

1. 半衰期:多久遗忘一半

在指数移动平均中,历史信息按 $\beta$ 的比例衰减。我们可以算一下,经过多少步,旧信息的权重会衰减到原来的一半(也就是 $\beta^t = 0.5$):

  • 对于一阶动量 $m$($\beta_1 = 0.9$):半衰期 $t \approx 0.693 / 0.1 \approx \mathbf{6.9}$ 步。也就是说,大约 7 步之前的梯度,其权重就减半了。它主要反映最近十来步的梯度趋势。
  • 对于二阶动量 $v$($\beta_2 = 0.999$):半衰期 $t \approx 0.693 / 0.001 \approx \mathbf{693}$ 步。这意味着,大约 700 步之前的梯度平方,其权重才减半。它的记忆极其漫长。

2. 有效记忆窗口:实际上记住了多少步

虽然数学上历史信息永远不会完全归零,但从工程角度看,当权重衰减到原来的 $1/e$(约 36.8%)时,就可以认为它离开“有效记忆窗口”了:

  • 一阶动量 $m$($\beta_1 = 0.9$):有效记忆大约是 10 步。
  • 二阶动量 $v$($\beta_2 = 0.999$):有效记忆大约是 1000 步。

这里的 10 和 1000 是“单步权重掉到 $1/e$”的口径。它不是唯一口径,但足够用来比较两个 β 的量级差别。

3. 更新公式里的直接体现

从最基础的更新公式也能直接看出:

  • 保留率($\beta$):$\beta$ 有多大,上一个时刻的 $m_{t-1}$ 就保留了多少。
  • 更新率($1-\beta$):当前梯度 $g_t$ 分到的权重是 $1-\beta$。$\beta_2 = 0.999$ 意味着每一次只允许 $0.1\%$ 的新信息进入,这自然导致了极长的记忆平滑效应。

4. 把 EMA 递推式展开

4.1 逐层往回代

从最基础的一条递推出发,先不带下标:

把 $m_{t-1}$ 用同一条式子写开,再代回去:

再代一层:

括号里那一串是等比数列,越老的梯度指数越小。代到第 $k$ 层,形式固定下来:

取 $k = t$,一直代到初值:

初始化时 $m_0 = 0$,最后一项消失:

这里的 $i$ 是“往回数第几步”。$i=0$ 对应当前梯度,$i=1$ 对应上一步,依此类推。

4.2 权重是几何级数

展开式最直接的含义:EMA 就是一次加权平均,第 $i$ 步之前的梯度拿到的权重是

权重随 $i$ 按公比 $\beta$ 等比衰减。下面把两个常用 $\beta$ 的权重列出来对比:

往回步数 $i$ $\beta=0.9$ 的权重 相对 $i=0$ $\beta=0.999$ 的权重 相对 $i=0$
0 $1.0\times10^{-1}$ 100% $1.0\times10^{-3}$ 100%
1 $9.0\times10^{-2}$ 90% $9.99\times10^{-4}$ 99.9%
10 $3.49\times10^{-2}$ 34.9% $9.90\times10^{-4}$ 99.0%
100 $2.66\times10^{-6}$ 0.0027% $9.05\times10^{-4}$ 90.5%
693 $\approx0$ $\approx0$ $5.00\times10^{-4}$ 50.0%
1000 $\approx0$ $\approx0$ $3.68\times10^{-4}$ 36.8%

两种 $\beta$ 的差别一眼就能看出。$\beta=0.9$ 时,一百步之前的梯度相对权重只剩 0.0027%,实际上等于被扔掉了;$\beta=0.999$ 时,一千步之前的梯度还剩 36.8% 的权重,仍然在起作用。

顺带把半衰期的来源也落实一下。相邻两步的权重比是常数:

要让它等于 $1/2$,就得到 $\beta^k = 0.5$,也就是前面那个 $t = \ln 0.5 / \ln\beta$。半衰期不是什么额外定义,它就是等比数列的性质。

4.3 权重和为什么是 $1-\beta^t$

把展开式里的系数加起来:

等比数列求和用的是 $\sum_{i=0}^{t-1}\beta^i = (1-\beta^t)/(1-\beta)$,这里 $\beta \ne 1$,没问题。

$t \to \infty$ 时 $\beta^t \to 0$,权重和收敛到 1,是个合格的加权平均。但在有限步,权重和只有 $1-\beta^t$,缺的正好是 $\beta^t$,这部分就是零初始化残留在 $m_0$ 上没被冲掉的部分。展开式里那个 $\beta^t m_0$ 项说的就是同一件事。

这也解释了偏差修正在干什么。把展开式两边除以 $1-\beta^t$:

原来的权重是 $w_i = (1-\beta)\beta^i$,现在每一项都除以了 $1-\beta^t$,加起来正好是 1。所以 Adam 里的 $\hat m_t = m_t/(1-\beta_1^t)$ 本质上就是把权重重新归一化,把零初始化带来的系统性偏小补回去。

5. 为什么 $\ln(\beta)$ 可以被近似看作 $-(1-\beta)$

这主要基于泰勒展开(Taylor Expansion),并且针对 Adam 优化器中 $\beta$ 接近 1 的特定场景。

我们可以分两步来理解:

5.1 推导过程:泰勒展开

我们先看对数函数 $\ln(x)$ 在 $x=1$ 处的泰勒展开式:

现在,把 $x$ 替换成 $\beta$:

在 Adam 优化器中,$\beta$ 通常取 $0.9$ 或 $0.999$,这意味着 $\beta$ 非常接近 1。当 $\beta \to 1$ 时,$(1-\beta)$ 是一个很小的数(比如 $0.1$ 或 $0.001$)。

在这个前提下,高阶项可以忽略不计:

  • $(1-\beta)^2$ 是 $(1-\beta)$ 的平方,极小(例如 $0.001^2 = 0.000001$)。
  • 因此,后面的项衰减得非常快,整个式子主要被第一项主导。

所以,我们得到了一阶近似:

举个实际数字的例子:

  • 当 $\beta = 0.9$ 时,$\ln(0.9) \approx -0.10536$,而 $-(1-0.9) = -0.1$,误差约 $5\%$。
  • 当 $\beta = 0.999$ 时,$\ln(0.999) \approx -0.0010005$,而 $-(1-0.999) = -0.001$,误差微乎其微(仅 $0.05\%$)。

5.2 结合到“半衰期”公式中

回过头来看我们之前用的半衰期公式:我们要解的是 $\beta^t = 0.5$(即经过 $t$ 步后,历史信息衰减到一半)。

两边取自然对数($\ln$):

因为 $\ln(0.5) \approx -0.693$,且我们刚才证明了 $\ln(\beta) \approx -(1-\beta)$,代入进去:

同理,如果我们不找“一半”,而是找“衰减到原来的 $1/e$(约 36.8%)”所需的时间,即 $\beta^t = 1/e$:

这就是为什么在计算 EMA 的有效记忆窗口时,会出现 $1/(1-\beta)$ 这个极其简洁实用的式子。它的背后,正是对数函数的一阶泰勒近似。