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.9 | 10 天 | 平滑适中,响应速度合理(常用默认值) |
| 0.98 | 50 天 | 非常平滑,但滞后明显(对变化反应慢) |
| 0.5 | 2 天 | 噪声大,但响应极快(易受异常值影响) |
四、直观理解:不同 $\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$ 是掌握现代优化器的关键第一步!
七、小结:关键要点
- 公式:$v_t = \beta v_{t-1} + (1 - \beta) \theta_t$
- $\beta$ 越大 → 越平滑,但滞后越严重;
- $\beta$ 越小 → 越敏感,但噪声越大;
- 有效记忆长度 ≈ $\frac{1}{1 - \beta}$;
- 计算高效:只需存储 $v_{t-1}$,无需保存历史所有 $\theta$;
- 广泛用于优化算法:Momentum、Adam 等都基于此思想。
✅ 学习建议
- 动手实现一个小例子(如用 Python 模拟气温数据 + 不同 $\beta$ 的 EWA);
- 思考:为什么不用简单滑动平均?→ 因为 EWA 内存效率高、计算快、可在线更新;
- 下一课将深入解释 偏差修正(Bias Correction) —— 解决初期 $v_t$ 偏低的问题(尤其当 $\beta$ 很大时)。
本文由作者按照 CC BY 4.0 进行授权