通过移动平均理解动量法

移动平均法

  移动平均法,它的思想是根据时间序列资料,逐项递推,依次计算包含一定项数的平均值,用以反应长期趋势,即用一组最近的实际数据值来预测未来的值的一种方法。
  简单移动平均各个元素的权重相等,计算公式如下:
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}

加权移动平均

  通过赋予不同时间线上的点以不同的权重,来刻画其影响当前时刻值的影响力。计算公式如下:
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}}

指数加权移动平均

演化

  • 算数平均(权重相等) \to 加权平均(权重不等) \to 移动平均(大约取最近的N次数据计算)
  • EMA指数加权移动平均:以指数递减的形式加权的平均移动。各数值的加权影响力随时间呈指数式递减,时间越靠近当前,权重影响力越大。相较于传统的平均法来说,优势在于不需要保存过去所有的数值,且计算量显著减少。
    其公式为: V t = β V t 1 + ( 1 β ) θ t {V_t} = \beta {V_{t - 1}} + \left( {1 - \beta } \right){\theta _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}}
    V 99 = 0.9 V 98 + 0.1 θ 99 {V_{99}} = 0.9{V_{98}} + 0.1{\theta _{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}
      可以看出,对于求 V 100 {V_{100}} 的值,可以看作是对 θ 1 {\theta _{1}} θ 99 {\theta _{99}} 的加权平均,这里权值是随着指数项在不断衰减。
       我们认为,上述操作实际上是平均了10天的结果,因为到0.1*0.9^10的时候,其值已经非常小了,后续的可以近似为0.
       这里,平均的天数可以通过下式计算出来:
    n = 1 1 β n = \frac{1}{{1 - \beta }}
    更一般的,我们将指数移动加权平均公式展开得:
    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}
       从上述公式可以看到,θ的权重以指数形式等比例的在衰减,且越靠近当前时间,权重越大。
    我们令 n = 1 1 β n = \frac{1}{{1 - \beta }} ,变换一下形式,有, ( 1 1 n ) n = β 1 1 β {\left( {1 - \frac{1}{n}} \right)^n} = {\beta ^{\frac{1}{{1 - \beta }}}} 。又因为: 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
       所以,当n趋于无穷时,此时β是趋于1的,因为上面的变换形式,此时有 β 1 1 β {\beta ^{\frac{1}{{1 - \beta }}}} = e 1 {e^{ - 1}}
    在优化算法中,常取β=0.9,这时 β n = β 1 1 β {\beta ^n}={\beta ^{\frac{1}{{1 - \beta }}}} \approx 0.36,也就是说,当过了 n = 1 1 β n = \frac{1}{{1 - \beta }} 后,曲线的高度下降到了原来的大概三分之一处,且时间步越往前推,权重越小,值越小,所以每次只考虑最近的 n = 1 1 β n = \frac{1}{{1 - \beta }} 天的数据来计算当前时刻的平均值,这也是移动平均的由来。

我们对指数部分求和可以知道,
1 + β + β 2 + β k = 1 β k 1 β 1 + \beta + {\beta ^2} + {\beta ^k} = \frac{{1 - {\beta ^k}}}{{1 - \beta }} ,当k趋于无穷, β k {\beta ^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}
现在我们对动量法的速度变量做变形,

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实际上是对序列{ ( η t 1 β g t ) \left( {\frac{\eta_t }{{1 - \beta }}{{\bf{g}}_{\bf{t}}}} \right) }做了指数移动加权平均。
换句话说,动量法在每个时间步的自变量更新量近似于将最近的时间步 n = 1 1 β n = \frac{1}{{1 - \beta }} 的(学习率乘以梯度)做了指数加权移动平均后再除以(1-β)。所以说,在动量法中,自变量在各个方向上的移动幅度不仅取决于当前梯度,还取决于过去时刻的各个梯度在各个方向上是否一致。
这里放上博客中的一张图:深度学习优化函数详解(4)-- momentum 动量法
在这里插入图片描述
上面博客解释动量法特别形象,可以参考。
参考:吴恩达深度学习
动手学深度学习,李沐

发布了61 篇原创文章 · 获赞 17 · 访问量 2998

猜你喜欢

转载自blog.csdn.net/qq_35027690/article/details/103393450