通过移动平均理解动量法
阅读原文时间:2021年04月26日阅读:1

移动平均法

  移动平均法,它的思想是根据时间序列资料,逐项递推,依次计算包含一定项数的平均值,用以反应长期趋势,即用一组最近的实际数据值来预测未来的值的一种方法。
  简单移动平均各个元素的权重相等,计算公式如下:
F t = A t − 1 + A t − 2 + ⋯ A t − n n {F_t} = \frac{{{A_{{\rm{t}} - 1}} + {A_{{\rm{t}} - 2}} + \cdots {A_{{\rm{t}} - n}}}}{n} Ft​=nAt−1​+At−2​+⋯At−n​​

加权移动平均

  通过赋予不同时间线上的点以不同的权重,来刻画其影响当前时刻值的影响力。计算公式如下:
F t = w 1 A t − 1 + w n A t − 2 + ⋯ w n A t − n {F_t} = {w_1}{A_{{\rm{t}} - 1}} + {w_n}{A_{{\rm{t}} - 2}} + \cdots {w_n}{A_{{\rm{t}} - n}} Ft​=w1​At−1​+wn​At−2​+⋯wn​At−n​

指数加权移动平均

演化

  • 算数平均(权重相等) → \to →加权平均(权重不等) → \to →移动平均(大约取最近的N次数据计算)
  • EMA指数加权移动平均:以指数递减的形式加权的平均移动。各数值的加权影响力随时间呈指数式递减,时间越靠近当前,权重影响力越大。相较于传统的平均法来说,优势在于不需要保存过去所有的数值,且计算量显著减少。
    其公式为: V t = β V t − 1 + ( 1 − β ) θ t {V_t} = \beta {V_{t - 1}} + \left( {1 - \beta } \right){\theta _t} Vt​=βVt−1​+(1−β)θt​
    其含义为,给定超参数β,当前时间步的变量Vt是上一步时间变量V{t-1}和当前时间步另一变量的线形组合。
    使用β=0.9,来展开上式,假设V0=0:
    V 100 = 0.9 V 99 + 0.1 θ 100 {V_{100}} = 0.9{V_{99}} + 0.1{\theta _{100}} V100​=0.9V99​+0.1θ100​
    V 99 = 0.9 V 98 + 0.1 θ 99 {V_{99}} = 0.9{V_{98}} + 0.1{\theta _{99}} V99​=0.9V98​+0.1θ99​
    ⋯ \cdots ⋯
    V 100 = 0.1 θ 99 + 0.1 ∗ 0.9 θ 99 + 0.1 ∗ 0.9 ∗ 0.9 θ 98 + 0.1 ∗ 0. 9 99 θ 1 {V_{100}} = 0.1{\theta _{99}} + 0.1*0.9{\theta _{99}} + 0.1*0.9*0.9{\theta _{98}} + 0.1*{0.9^{99}}{\theta _1} V100​=0.1θ99​+0.1∗0.9θ99​+0.1∗0.9∗0.9θ98​+0.1∗0.999θ1​
      可以看出,对于求 V 100 {V_{100}} V100​的值,可以看作是对 θ 1 {\theta _{1}} θ1​至 θ 99 {\theta _{99}} θ99​的加权平均,这里权值是随着指数项在不断衰减。
       我们认为,上述操作实际上是平均了10天的结果,因为到0.1*0.9^10的时候,其值已经非常小了,后续的可以近似为0.
       这里,平均的天数可以通过下式计算出来:
    n = 1 1 − β n = \frac{1}{{1 - \beta }} n=1−β1​
    更一般的,我们将指数移动加权平均公式展开得:
    V t = β V t − 1 + ( 1 − β ) θ t = ( 1 − β ) θ t + ( 1 − β ) β θ t − 1 + β 2 V t − 2 = ( 1 − β ) θ t + ( 1 − β ) β θ t − 1 + ( 1 − β ) β 2 θ t − 2 + β 3 V t − 3 = ( 1 − β ) ( θ t + β θ t − 1 + β 2 θ t − 2 + ⋯ + β k θ t − k ) + β k + 1 V t − ( k + 1 ) \begin{array}{l} {V_t} = \beta {V_{t - 1}} + \left( {1 - \beta } \right){\theta _t}\\ {\rm{ = }}\left( {1 - \beta } \right){\theta _t} + \left( {1 - \beta } \right)\beta {\theta _{t - 1}} + {\beta ^2}{V_{t - 2}}\\ {\rm{ = }}\left( {1 - \beta } \right){\theta _t} + \left( {1 - \beta } \right)\beta {\theta _{t - 1}} + \left( {1 - \beta } \right){\beta ^2}{\theta _{t - 2}} + {\beta ^3}{V_{t - 3}}\\ {\rm{ = }}\left( {1 - \beta } \right)\left( {{\theta _t} + \beta {\theta _{t - 1}} + {\beta ^2}{\theta _{t - 2}} + \cdots + {\beta ^k}{\theta _{t - k}}} \right) + {\beta ^{k + 1}}{V_{t - (k + 1)}} \end{array} Vt​=βVt−1​+(1−β)θt​=(1−β)θt​+(1−β)βθt−1​+β2Vt−2​=(1−β)θt​+(1−β)βθt−1​+(1−β)β2θt−2​+β3Vt−3​=(1−β)(θt​+βθt−1​+β2θt−2​+⋯+βkθt−k​)+βk+1Vt−(k+1)​​
       从上述公式可以看到,θ的权重以指数形式等比例的在衰减,且越靠近当前时间,权重越大。
    我们令 n = 1 1 − β n = \frac{1}{{1 - \beta }} n=1−β1​,变换一下形式,有, ( 1 − 1 n ) n = β 1 1 − β {\left( {1 - \frac{1}{n}} \right)^n} = {\beta ^{\frac{1}{{1 - \beta }}}} (1−n1​)n=β1−β1​。又因为: lim ⁡ n → ∞ ( 1 − 1 n ) n = e − 1 ≈ 0.3679 {\lim _{n \to \infty }}{\left( {1 - \frac{1}{n}} \right)^n} = {e^{ - 1}} \approx 0.3679 limn→∞​(1−n1​)n=e−1≈0.3679,
       所以,当n趋于无穷时,此时β是趋于1的,因为上面的变换形式,此时有 β 1 1 − β {\beta ^{\frac{1}{{1 - \beta }}}} β1−β1​= e − 1 {e^{ - 1}} e−1
    在优化算法中,常取β=0.9,这时 β n = β 1 1 − β ≈ {\beta ^n}={\beta ^{\frac{1}{{1 - \beta }}}} \approx βn=β1−β1​≈ 0.36,也就是说,当过了 n = 1 1 − β n = \frac{1}{{1 - \beta }} n=1−β1​后,曲线的高度下降到了原来的大概三分之一处,且时间步越往前推,权重越小,值越小,所以每次只考虑最近的 n = 1 1 − β n = \frac{1}{{1 - \beta }} n=1−β1​天的数据来计算当前时刻的平均值,这也是移动平均的由来。

我们对指数部分求和可以知道,
1 + β + β 2 + β k = 1 − β k 1 − β 1 + \beta + {\beta ^2} + {\beta ^k} = \frac{{1 - {\beta ^k}}}{{1 - \beta }} 1+β+β2+βk=1−β1−βk​,当k趋于无穷, β k {\beta ^k} βk为0,这就是严格意义上的指数加权移动平均。

动量法

  下面通过指数移动加权平均理解动量法:
  动量法更新公式:
v t = β v t − 1 + η g t x t = x t − 1 − v t \begin{array}{l} {{\bf{v}}_t} = \beta {{\bf{v}}_{t - 1}} + \eta {{\bf{g}}_{\bf{t}}}\\ {{\bf{x}}_t} = {{\bf{x}}_{t - 1}} - {{\bf{v}}_t} \end{array} vt​=βvt−1​+ηgt​xt​=xt−1​−vt​​
现在我们对动量法的速度变量做变形,

v t ← β v t − 1 + ( 1 − β ) ( η t 1 − β g t ) {{\bf{v}}_t} \leftarrow \beta {{\bf{v}}_{t - 1}} + \left( {1 - \beta } \right)\left( {\frac{\eta_t }{{1 - \beta }}{{\bf{g}}_{\bf{t}}}} \right) vt​←βvt−1​+(1−β)(1−βηt​​gt​)
   由指数加权移动平均的形式可知,速度变量Vt实际上是对序列{ ( η t 1 − β g t ) \left( {\frac{\eta_t }{{1 - \beta }}{{\bf{g}}_{\bf{t}}}} \right) (1−βηt​​gt​)}做了指数移动加权平均。
换句话说,动量法在每个时间步的自变量更新量近似于将最近的时间步 n = 1 1 − β n = \frac{1}{{1 - \beta }} n=1−β1​的(学习率乘以梯度)做了指数加权移动平均后再除以(1-β)。所以说,在动量法中,自变量在各个方向上的移动幅度不仅取决于当前梯度,还取决于过去时刻的各个梯度在各个方向上是否一致。
这里放上博客中的一张图:深度学习优化函数详解(4)-- momentum 动量法

上面博客解释动量法特别形象,可以参考。
参考:吴恩达深度学习
动手学深度学习,李沐

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章