1. 先从吴恩达老师开始,了解指数加权(移动)平均的相关内容;
  2. 还是吴恩达老师,了解动量梯度下降
  3. 接下来是吴恩达与李宏毅老师,了解lr自动调整,以及Adam优化算法
  • 指数加权(移动)平均

    摘自吴恩达深度学习课程

    Vt=βVt1+(1β)θtV_t = \beta V_{t-1} + (1-\beta)\theta_t

    这里β=0.9\beta = 0.9VtV_t相当于计算平均11β\frac{1}{1-\beta}即10天内的平均温度。

    β\beta是给过去的权重,(1β)(1-\beta)是给当前的权重。

    将上述公式展开,可看到其指数加权平均的过程。

    Vt=0.1θ100+0.10.9θ99+0.10.92θ98+0.10.93θ97+0.10.94θ96+V_{t}= 0.1\ast \theta _{100}+ 0.1\ast 0.9\ast \theta _{99}+ 0.1\ast 0.9^{2}\theta _{98}+ 0.1\ast 0.9^{3}\theta _{97}+ 0.1\ast 0.9^{4}\theta _{96}+ \dots

    • 偏差修正(Bias correction in exponentially weighted average)

      为减小初始偏差(详见吴恩达老师课程),可使用Vt1βt\frac{V_t}{1-\beta^t}来进行预估。

      随着tt的增大,Vt1βt\frac{V_t}{1-\beta^t}会慢慢变回VtV_t

      摘自吴恩达深度学习课程

      图中紫线为β=0.98\beta = 0.98,未使用偏差估计;

      图中绿线为β=0.98\beta = 0.98,使用偏差估计;

      图中红线为β=0.9\beta = 0.9,使用偏差估计

  • 动量梯度下降法(Gradient descent with momentum)

    相较于普通的梯度下降法,动量梯度下降法速度更快。

    其基本思想是,计算梯度的指数加权平均。

    摘自吴恩达深度学习课程

    图中紫线,使用了过大的学习率,偏离了函数范围,可能导致无法收敛;

    图中蓝线,学习率适中,但上下的摆动还是会减慢梯度下降的速度。

    我们希望,纵轴上学习慢一点(不想要这些摆动),横轴学习快一点。为此我们使用动量梯度下降法

    • 在第tt次迭代,计算梯度dw,dbd_w,d_b

    • 计算Vdw=βVdw+(1β)dwV_{dw} = \beta V_{dw} + (1-\beta)d_wVdb=βVdb+(1β)dbV_{db} = \beta V_{db} + (1-\beta)d_b

      (类似上面的指数加权(移动)平均;β\beta一般取值0.9;一般忽略偏差修正)

    • 最后在更新参数的时候,使用VdwV_{dw}VdbV_{db},而不是dwd_wdbd_b。(α\alpha为lr学习率)

      • w=wαVdww = w - \alpha V_{dw}
      • b=bαVdbb = b - \alpha V_{db}

    这样操作,纵轴方向,平均过程中正负数相互抵消,因此摆动平均值接近于零。横轴方向,所有微分都指向横轴同方向,因此学习的速度会更快。

    图中红线为理想的动量梯度下降法的效果。

  • lr自动调整

    不同参数,使用不同lr

    摘自李宏毅2021机器学习

    该图中,横轴方向坡度小,需要较大lr;纵轴方向坡度大,需要较小lr。

    θit+1\theta_i^{t+1}t+1t+1时刻第ii个参数的值

    gitg_i^t:梯度

    η\eta:初始学习率

    ησit\frac{\eta}{\sigma_i^t}:每个参数实际的lr

    • Root Mean Square方法(used in Adagrad)

      摘自李宏毅2021机器学习

      通过这样处理,坡度gg越大,σ\sigma就越大,ησ\frac{\eta}{\sigma}就越小,即lr越小;坡度gg越小,σ\sigma就越小,ησ\frac{\eta}{\sigma}就越大,即lr越大。

    • RMSProp方法

      支持手动调整当前梯度的影响大小。

      摘自李宏毅2021机器学习

    • lr Scheduling(lr decay)

      使lr随时间(训练过程)不断变化。即η\eta变为ηt\eta^t

      θit+1θitηtσitgit\theta_i^{t+1} \leftarrow \theta_i^t - \frac{\eta^t}{\sigma_i^t}g_i^t

      原理与代码实现,详见另一篇总结:lr_scheduler

  • Adam优化算法

    原理:RMSProp + Momentum

    β1\beta_1参数,用于Momentum,一般取0.9

    β2\beta_2参数,用于RMSProp ,一般取0.999

    (Adam算法也需要lr decay,即lr应随着训练过程不断变化)

    概念介绍与代码实现

    摘自李宏毅2021机器学习

参考:

吴恩达深度学习

李宏毅2021机器学习

Adam算法介绍