一、EMA 简介

1、演化

  • 算术平均(权重相等)—>加权平均(权重不等)—>移动平均(大约是只取最近的 N 次数据进行计算)—> 批量归一化(BN)及各种优化算法的基础
  • EMA:是以指数式递减加权的移动平均,各数值的加权影响力随时间呈指数式递减,时间越靠近当前时刻的数据加权影响力越大

2、公式及理解

这里写图片描述

  • vt=βvt1+(1β)θt v t = β v t − 1 + ( 1 − β ) θ t <script type="math/tex" id="MathJax-Element-3">v_t = \beta v_{t-1} + (1 - \beta)\theta_{t}</script>,公式中 θt θ t <script type="math/tex" id="MathJax-Element-4">\theta_{t}</script> 为 t 时刻的实际温度;系数 β β <script type="math/tex" id="MathJax-Element-5">\beta</script> 表示加权下降的快慢,值越小权重下降的越快; vt v t <script type="math/tex" id="MathJax-Element-6">v_t</script> 为 t 时刻 EMA 的值。
  • v0=0 v 0 = 0 <script type="math/tex" id="MathJax-Element-7">v_0 = 0 </script> 时,可得: vt=(1β)(θt+βθt1+β2θt2+...+βt1θ1) v t = ( 1 − β ) ( θ t + β θ t − 1 + β 2 θ t − 2 + . . . + β t − 1 θ 1 ) <script type="math/tex" id="MathJax-Element-8">v_t = (1-\beta) (\theta_{t}+\beta\theta_{t-1}+\beta^{2}\theta_{t-2}+ ... +\beta^{t-1}\theta_{1})</script>,从公式中可以看到:每天温度( θ θ <script type="math/tex" id="MathJax-Element-9">\theta</script>)的权重系数以指数等比形式缩小,时间越靠近当前时刻的数据加权影响力越大。
  • 在优化算法中,我们一般取 β>=0.9 β >= 0.9 <script type="math/tex" id="MathJax-Element-10">\beta >= 0.9</script>,而 1+β+β2+...+βt1=1βt1β 1 + β + β 2 + . . . + β t − 1 = 1 − β t 1 − β <script type="math/tex" id="MathJax-Element-11">1 + \beta + \beta^{2} + ... + \beta^{t-1} = \frac{1-\beta^{t}}{1-\beta}</script>,所以当 t 足够大时 βt0 β t ≈ 0 <script type="math/tex" id="MathJax-Element-12">\beta^{t} \approx 0</script>,此时便是严格意义上的指数加权移动平均。
    这里写图片描述
  • 在优化算法中,我们一般取 β>=0.9 β >= 0.9 <script type="math/tex" id="MathJax-Element-13">\beta >= 0.9</script>,此时有 β11β1e0.36 β 1 1 − β ≈ 1 e ≈ 0.36 <script type="math/tex" id="MathJax-Element-14">\beta^{\frac{1}{1-\beta}} \approx \frac{1}{e} \approx 0.36</script>,也就是说 N=11β N = 1 1 − β <script type="math/tex" id="MathJax-Element-15">N = \frac{1}{1-\beta}</script> 天后,曲线的高度下降到了约原来的 13 1 3 <script type="math/tex" id="MathJax-Element-16">\frac{1}{3}</script>,由于时间越往前推移 θ θ <script type="math/tex" id="MathJax-Element-17">\theta</script> 权重越来越小,所以相当于说:我们每次只考虑最近(latest) N=11β N = 1 1 − β <script type="math/tex" id="MathJax-Element-18">N = \frac{1}{1-\beta}</script> 天的数据来计算当前时刻的 EMA,这也就是移动平均的来源。

二、EMA 偏差修正

这里写图片描述

  • β=0.98 β = 0.98 <script type="math/tex" id="MathJax-Element-19">\beta = 0.98</script> 时,理想状况下,我们应该能得到绿色曲线,然而现实我们得到的却是紫色曲线,它的起点比真实的要低很多,不能很好的估计起始位置的温度,此问题称为:冷启动问题,这是由于 v0=0 v 0 = 0 <script type="math/tex" id="MathJax-Element-20">v_0 = 0 </script> 造成的。
  • 解决方案:将所有时刻的 EMA 除以 1βt 1 − β t <script type="math/tex" id="MathJax-Element-21">1 - \beta^{t}</script> 后作为修正后的 EMA。当 t 很小时,这种做法可以在起始阶段的估计更加准确;当 t 很大时,偏差修正几乎没有作用,所以对原来的式子几乎没有影响。注意:我们一般取 β>=0.9 β >= 0.9 <script type="math/tex" id="MathJax-Element-22">\beta >= 0.9</script>,计算 t 时刻偏修正后的 EMA 时,用的还是 t1 t − 1 <script type="math/tex" id="MathJax-Element-23">t-1</script> 时刻修正前的EMA。

三、EMA 的优点及其应用理解

1、EMA 的优点

  • 它占用极少内存:计算指数加权平均数只占用单行数字的存储和内存,然后把最新数据代入公式,不断覆盖就可以了
  • 移动平均线能较好的反应时间序列的变化趋势,权重的大小不同起到的作用也是不同,时间比较久远的变量值的影响力相对较低,时间比较近的变量值的影响力相对较高

2、EMA 在 Momentum 优化算法中应用的理解

  • 假设每次梯度的值都是 g g <script type="math/tex" id="MathJax-Element-28">g</script>、 γ = 0.95 <script type="math/tex" id="MathJax-Element-29">\gamma = 0.95</script> ,此时参数更新幅度会加速下降,当 n 达到 150 左右,此时达到了速度上限,之后将匀速下降(可参考一中的公式理解)。
  • 假如,在某个时间段内一些参数的梯度方向与之前的不一致时,那么真实的参数更新幅度会变小;相反,若在某个时间段内的参数的梯度方向都一致,那么其真实的参数更新幅度会变大,起到加速收敛的作用。在迭代后期,由于随机噪声问题,经常会在收敛值附近震荡,动量法会起到减速作用,增加稳定性
    这里写图片描述

四、参考资料

1、Coursera:Exponentially-Weighted-Moving-Averages
2、Gluon:优化算法中关于 EMA 的讲解
3、优化算法之指数移动加权平均

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐