指数移动平均(Exponential Moving Average, EMA)

指数移动平均(EMA)是一种加权平均方法,用于计算一组时间序列数据平滑平均值。它在计算平均值时,对近期数据赋予更高的权重,而对较早的数据赋予较低的权重。相对于简单平均值,EMA 更敏感于最新的数据变化。

假设我们有一个时间序列数据 x 1 , x 2 , … , x t x_1, x_2, \dots, x_t x1,x2,,xt,其指数移动平均(EMA)可以递归地计算为: E M A t = α ⋅ x t + ( 1 − α ) ⋅ E M A t − 1 , EMA_t = \alpha \cdot x_t + (1 - \alpha) \cdot EMA_{t-1}, EMAt=αxt+(1α)EMAt1, 其中, E M A t EMA_t EMAt 为时间 t t t 的指数移动平均值, x t x_t xt​ 是时间 t t t 的实际数据值, E M A t − 1 EMA_{t-1} EMAt1​ 是时间 t − 1 t-1 t1 的指数移动平均值。 α \alpha α 是平滑因子超参数,通常 α ∈ ( 0 , 1 ) \alpha \in (0, 1) α(0,1),来控制新数据与历史数据的权重分配, α \alpha α 越大,EMA 对近期数据变化越敏感, α \alpha α 越小,EMA 趋于更加平滑,更依赖历史数据。常用公式计算 α \alpha α α = 2 N + 1 \alpha = \frac{2}{N + 1} α=N+12​ 其中, N N N 是用户定义的时间窗口大小(即考虑多少个数据点)。

EMA 的递归公式可以展开为: E M A t = α ⋅ x t + α ⋅ ( 1 − α ) ⋅ x t − 1 + α ⋅ ( 1 − α ) 2 ⋅ x t − 2 + … , EMA_t = \alpha \cdot x_t + \alpha \cdot (1 - \alpha) \cdot x_{t-1} + \alpha \cdot (1 - \alpha)^2 \cdot x_{t-2} + \dots, EMAt=αxt+α(1α)xt1+α(1α)2xt2+, 从公式可以看出,最近的数据 x t x_t xt​ 权重最高,为 α \alpha α,较早的数据权重按指数递减(如 α ( 1 − α ) \alpha (1 - \alpha) α(1α))。

EMA 在深度学习中有广泛的应用,以下是几个主要场景:

  1. 权重更新
    在对比学习方法,如MoCo中,动量编码器的参数通过 EMA 更新: θ k = m ⋅ θ k + ( 1 − m ) ⋅ θ q , ​ \theta_k = m \cdot \theta_k + (1 - m) \cdot \theta_q,​ θk=mθk+(1m)θq, 其中, θ k \theta_k θk​ 是动量编码器的参数, θ q \theta_q θq​是主编码器的参数, m m m 是动量因子(通常 m = 0.999 m = 0.999 m=0.999)。通过 EMA 平滑动量编码器的参数更新,保证其特征表示的稳定性,避免频繁变化导致训练不稳定。

  2. 模型参数的移动平均
    在训练过程中,EMA 用于对模型权重进行平滑,计算每次更新后的 历史平均权重 θ t E M A = α ⋅ θ t + ( 1 − α ) ⋅ θ t − 1 E M A ​ , \theta^{EMA}_t = \alpha \cdot \theta_t + (1 - \alpha) \cdot \theta^{EMA}_{t-1}​, θtEMA=αθt+(1α)θt1EMA, 训练结束后,可以直接使用 EMA 权重进行推理(而不是最新的权重),以提升模型的泛化能力。YOLO 等目标检测模型中使用 EMA 提升检测性能。

  3. 学习率的动态调整
    EMA 可以用于平滑地计算梯度变化,从而动态调整优化器的学习率(如 Adam 优化器中的二阶动量估计)。

相较于简单移动平均,EMA 对最新数据更敏感,对最新数据的权重更高,可以更快地反映数据的趋势变化。而且,EMA的递归计算效率高,只需要最新的数据点和之前的 EMA 值,不需要存储整个时间窗口的数据。

此外,EMA 能够有效地减少时间序列中的噪声,突出长期趋势,同时对短期波动不敏感。常用于金融市场的股票价格趋势分析,以及动态系统的控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值