文章

17 指数加权平均(Exponentially Weighted Averages)

17 指数加权平均(Exponentially Weighted Averages)

目的:为后续学习更高效的优化算法(如 Momentum、Adam)打下基础。
别名:在统计学中也称为 指数加权滑动平均(Exponentially Weighted Moving Average, EWMA)


一、问题背景:从伦敦气温数据说起

  • 假设我们有一年(365 天)伦敦每日气温数据 $\theta_1, \theta_2, \dots, \theta_{365}$(单位:华氏或摄氏)。
  • 原始数据噪声较大,波动剧烈。
  • 我们希望得到一个 平滑的趋势线,反映“近期平均温度”,即 局部移动平均

二、指数加权平均的定义与递推公式

  我们不使用传统的滑动窗口平均(如过去 10 天简单平均),而是采用 递归式指数加权平均

✅ 核心公式:

\[v_t = \beta \cdot v_{t-1} + (1 - \beta) \cdot \theta_t\]

  其中:

  • $v_t$:第 $t$ 天的指数加权平均值(初始值通常设为 $v_0 = 0$);
  • $\theta_t$:第 $t$ 天的实际观测值(如气温);
  • $\beta \in [0, 1)$:平滑参数(smoothing parameter) ,控制历史数据的权重。

🔔 注意:$(1 - \beta)$ 是当前观测值的权重,$\beta$ 是历史平均的权重。


三、$\beta$ 的物理意义:有效平均窗口长度

  虽然公式只显式依赖前一天的 $v_{t-1}$,但实际上它隐式地对过去所有数据加权平均,且权重呈指数衰减。

✅ 关键经验法则:

$v_t$ 大致相当于对 最近 $\frac{1}{1 - \beta}$ 的数据进行加权平均。

$\beta$有效窗口长度 $\approx \frac{1}{1 - \beta}$特点
0.910 天平滑适中,响应速度合理(常用默认值)
0.9850 天非常平滑,但滞后明显(对变化反应慢)
0.52 天噪声大,但响应极快(易受异常值影响)

四、直观理解:不同 $\beta$ 值的效果(以气温为例)

  • $\beta = 0.9$ (红色曲线)

    • 平滑性好,能捕捉季节趋势;
    • 对温度突变(如寒潮/热浪)有一定延迟,但不过度敏感。
  • $\beta = 0.98$ (绿色曲线)

    • 极其平滑,几乎看不到日波动;
    • 但夏季升温时,曲线明显“向右偏移”(滞后);
    • 因为当前数据仅占权重 $1 - 0.98 = 0.02$,历史占 98%。
  • $\beta = 0.5$ (黄色曲线)

    • 几乎紧贴原始数据;
    • 噪声大,但能立即反映温度变化;
    • 实际上只关注最近 1–2 天。

权衡(Trade-off)
平滑性(Smoothness) vs 响应速度(Responsiveness)


五、为什么叫“指数”加权?

  展开递推式可得:

\[\begin{aligned} v_t &= (1 - \beta)\theta_t + \beta(1 - \beta)\theta_{t-1} + \beta^2(1 - \beta)\theta_{t-2} + \cdots \\ &= \sum_{k=0}^{t-1} (1 - \beta) \beta^k \theta_{t-k} \end{aligned}\]
  • 权重随时间指数衰减:越早的数据,权重越小(乘以 $\beta^k$);
  • 所有权重之和趋近于 1(当 $t \to \infty$)。

六、在深度学习中的应用

  指数加权平均是以下优化算法的核心组件:

算法使用方式
Momentum对梯度 $g_t$ 做指数加权平均,得到“速度” $v_t$,用于更新参数
RMSProp对梯度平方 $g_t^2$ 做指数加权平均,用于自适应学习率
Adam同时对梯度和梯度平方做指数加权平均(结合 Momentum + RMSProp)

💡 因此,理解 $v_t = \beta v_{t-1} + (1 - \beta) \theta_t$ 是掌握现代优化器的关键第一步!


七、小结:关键要点

  1. 公式:$v_t = \beta v_{t-1} + (1 - \beta) \theta_t$
  2. $\beta$ 越大 → 越平滑,但滞后越严重;
  3. $\beta$ 越小 → 越敏感,但噪声越大;
  4. 有效记忆长度 ≈ $\frac{1}{1 - \beta}$;
  5. 计算高效:只需存储 $v_{t-1}$,无需保存历史所有 $\theta$;
  6. 广泛用于优化算法:Momentum、Adam 等都基于此思想。

✅ 学习建议

  • 动手实现一个小例子(如用 Python 模拟气温数据 + 不同 $\beta$ 的 EWA);
  • 思考:为什么不用简单滑动平均?→ 因为 EWA 内存效率高、计算快、可在线更新
  • 下一课将深入解释 偏差修正(Bias Correction) —— 解决初期 $v_t$ 偏低的问题(尤其当 $\beta$ 很大时)。
本文由作者按照 CC BY 4.0 进行授权