0%

New Optimizers for Deep Learning

New Optimizer for Deep Learning

  • 参数更新 $\theta_t = \theta_{t-1} - \eta_{t-1}$

SGD

存在问题:

  1. 选择恰当的初始学习率困难

  2. 所有参数使用相同的学习率

  3. 容易陷入局部极值(导数值为0的局部点)

SGD with Momentum(SGDM)

引入一阶动量

不仅依赖于当前梯度,还依赖于过去的移动(惯性)。坡度陡,惯性大,下降多;坡度缓,惯性小,下降慢

某些时候可以解决陷入局部最小值的情况

Adagrad

分母:陡峭走慢,平缓走快

问题:分母越来越大,最终会导致学习率太小而无法有效更新

RMSProp

主要解决的是Adagrad中,分母太大导致无法有效更新的问题

但依然无法彻底解决

Adam = SGDM + RMSProp

$\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t}+\epsilon}\hat{m}_t$ ($\epsilon=10^{-8}$ ,避免刚开始分母为0)

$\hat{m}_t=\frac{m_t}{1-\beta_1^t}$ ($\beta_1=0.9$)(均值的无偏估计。de-biasing:确保t较小的时候,一阶动量不会因为系数小于1而太小)

$\hat{v}_t=\frac{v_t}{1-\beta_2^t}$ ($\beta_2=0.999$)(方差的无偏估计)

问题:

$\underset{t\rightarrow\infty}{\lim}\frac{\hat{m}_t}{\sqrt{\hat{v}_t}}=1$

这会导致训练很久后,的movement$\rightarrow\eta$​ ,并且不能提供有效的方向信息;而当真正有效的gradient出现时,又会因为前面大量的无效gradient而只产生微不足道的影响

一次更新最多移动的距离不超过$\sqrt{\frac{1}{1-\beta_2}}\eta$

Adam Warm-up