通过移动平均理解动量法

移动平均法

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

加权移动平均

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

指数加权移动平均

演化

  • 算数平均(权重相等) → \to 加权平均(权重不等) → \to 移动平均(大约取最近的N次数据计算)
  • EMA指数加权移动平均:以指数递减的形式加权的平均移动。各数值的加权影响力随时间呈指数式递减,时间越靠近当前,权重影响力越大。相较于传统的平均法来说,优势在于不需要保存过去所有的数值,且计算量显著减少。
    其公式为: V t = β V t − 1 + ( 1 − β ) θ t {V_t} = \beta {V_{t - 1}} + \left( {1 - \beta } \right){\theta _t} Vt=βVt1+(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.10.9θ99+0.10.90.9θ98+0.10.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=βVt1+(1β)θt=(1β)θt+(1β)βθt1+β2Vt2=(1β)θt+(1β)βθt1+(1β)β2θt2+β3Vt3=(1β)(θt+βθt1+β2θt2++βkθtk)+β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 }}}} (1n1)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(1n1)n=e10.3679
       所以,当n趋于无穷时,此时β是趋于1的,因为上面的变换形式,此时有 β 1 1 − β {\beta ^{\frac{1}{{1 - \beta }}}} β1β1= e − 1 {e^{ - 1}} e1
    在优化算法中,常取β=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=βvt1+ηgtxt=xt1vt
现在我们对动量法的速度变量做变形,

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

通信仿真爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值