
在 AdamW 优化器中 β 和“记忆力”的关系
在 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)$ 这个极其简洁实用的式子。它的背后,正是对数函数的一阶泰勒近似。




