ML&DL

梯度下降:SGD vs Momentum vs NAG vs A

2019-05-01  本文已影响41人  cherryleechen

梯度下降优化基本公式:{\theta\leftarrow\theta-\eta\cdot\nabla_\theta{J(\theta)}}

一、三种梯度下降优化框架

这三种梯度下降优化框架的区别在于每次更新模型参数时使用不同的样本数。

(一)Batch Gradient Descent

批/全量梯度下降每次更新模型参数时使用全部的训练样本。
{\theta\leftarrow\theta-\eta\cdot\frac{1}{N}\sum_{i=1}^{N}\nabla_\theta{J({\theta};x_i,y_i)}}N为训练样本数

(二)Stochastic Gradient Descent

随机梯度下降每次更新参数时从训练样本中随机选择一个样本。
{\theta\leftarrow\theta-\eta\cdot\nabla_\theta{J({\theta};x_i,y_i)}}

图1.1 随机梯度下降的优化波动

关于优化波动,带来的好处是在有很多local minima的区域,优化波动可能会使得优化的方向从当前的local minima跳到另一个更好的local minima,甚至是global minima,最终收敛于一个较好的minima。由于波动,迭代次数增多,收敛速度下降,不过最终会和批梯度下降一样具有收敛性。

(三)Mini-batch Gradient Descent

小批量梯度下降每次更新模型参数时从训练样本中随机选择M个样本,M<NM常取32~256。
{\theta\leftarrow\theta-\eta\cdot\frac{1}{M}\sum_{i取M个不同值}\nabla_\theta{J({\theta};x_i,y_i)}}

一般,SGD指小批量梯度下降。SGD存在的问题:

二、梯度下降优化策略

以下,将{\frac{1}{m}\sum_{i取m个不同值}\nabla_\theta{J({\theta};x_i,y_i)}}记作{\nabla_\theta{J(\theta)}}

(一)Momentum

{m\leftarrow\gamma\cdot{m}+\eta\cdot\nabla_\theta{J(\theta)}}m为动量项
{\theta\leftarrow\theta-m}
其中,动量项超参数{\gamma}越大,之前梯度方向对当前方向的影响也越大。

(二)Nesterov Accelerated Gradient

NAG计算“超前梯度”更新动量项。
{m\leftarrow\gamma\cdot{m}+\eta\cdot\nabla_\theta{J(\theta-\gamma\cdot{m})}}
{\theta\leftarrow\theta-m}

图2.1 NAG

既然参数要沿着{\gamma\cdot{m}}方向更新(蓝线),不妨计算下未来位置{\theta-\gamma\cdot{m}}处的梯度(红线),再将动量项与其合并作为最终的更新项(绿线)。

可以在梯度下降的过程中自动调节\eta。大原则是\eta随更新次数的增大而减小,同时也要针对不同的参数设置不同的\eta。有很多这样的自动调节\eta的梯度下降方法,名称常以"Ada"开头。

(三)Adagrad

{s\leftarrow{s}+\nabla_\theta{J(\theta)}\odot\nabla_\theta{J(\theta)}}s为过去到当前时刻的参数梯度平方和
{\theta\leftarrow\theta-\frac{\eta}{\sqrt{s+\epsilon}}\cdot\nabla_\theta{J(\theta)}}\epsilon为平滑参数,常为1e-8
{\frac{1}{\sqrt{s+\epsilon}}}作为regularizer项,其分母部分使用1阶导数的函数计算近似了2阶导数的计算,没有增加额外的花费来估计2阶导数。训练前期,梯度较小,regularizer项较大,放大梯度;训练后期,梯度较大,regularizer项较小,约束梯度。

(四)Adadelta

{s\leftarrow\gamma\cdot{s}+(1-\gamma)\cdot\nabla_\theta{J(\theta)}\odot\nabla_\theta{J(\theta)}}s为过去到当前时刻的参数梯度值平方的加权平均
{\Delta\theta=\frac{\sqrt{r}}{\sqrt{s+\epsilon}}\cdot\nabla_\theta{J(\theta)}}
{\theta\leftarrow\theta-\Delta\theta}
{r\leftarrow\gamma\cdot{r}+(1-\gamma)\cdot\Delta\theta\odot\Delta\theta}r为过去到前一时刻的参数更新值平方的加权平均
Adadelta作者用2个反复近似的式子来说明一阶方法比起二阶方法到底差在哪里。
一阶方法如SGD中:{\Delta\theta\propto{g}\propto\frac{\delta{J}}{\delta\theta}\propto\frac{1}{\theta}}
二阶方法如牛顿法中:{\Delta\theta\propto{H^{-1}}\cdot{g}\propto\frac{\frac{\delta{J}}{\delta\theta}}{\frac{\delta^2{J}}{\delta\theta^2}}\propto\frac{\frac{1}{\theta}}{\frac{1}{\theta}\cdot\frac{1}{\theta}}\propto\theta}
注:用矩阵对角线近似逆矩阵:{\Delta\theta=H^{-1}\cdot{g}=\frac{1}{|diag(H)|+\epsilon}};对\theta的一阶导数取log正比于\frac{1}{\theta}
一阶方法与参数成逆相关,二阶方法与参数成正相关。
基于一阶梯度近似代替二阶梯度的思想,有{\Delta\theta\approx\frac{\frac{\delta{J}}{\delta\theta}}{\frac{\delta^2{J}}{\delta\theta^2}}\approx\frac{1}{\frac{\delta^2{J}}{\delta\theta^2}}\cdot{g}\approx\frac{\Delta\theta}{\frac{\delta{J}}{\delta\theta}}\cdot{g}\approx\frac{RMS[\Delta\theta]_{t-1}}{RMS[g]_t}\cdot{g}},RMS指Root Mean Square。

(五)RMSprop

是Adadelta的特例,无rs
{s\leftarrow\gamma\cdot{s}+(1-\gamma)\cdot\nabla_\theta{J(\theta)}\odot\nabla_\theta{J(\theta)}}
{\theta\leftarrow\theta-\frac{\eta}{\sqrt{s+\epsilon}}\cdot\nabla_\theta{J(\theta)}}

(六)Adam

{m\leftarrow\beta_1\cdot{m}+(1-\beta_1)\cdot\nabla_{\theta}J(\theta)}m为梯度的加权平均,一阶矩变量,有偏
{s\leftarrow\beta_2\cdot{s}+(1-\beta_2)\cdot\nabla_\theta{J(\theta)}\odot\nabla_\theta{J(\theta)}}s为梯度平方的加权平均,二阶矩变量,有偏,梯度的加权有偏方差
ms均初始化为{\vec{0}},Adam作者发现它们会倾向于为{\vec{0}},特别是在\beta_1\beta_2趋于1时。
为了改进这个问题,对ms进行偏差修正,近似于期望的无偏估计。
{m\leftarrow\frac{m}{1-\beta_1}}
{s\leftarrow\frac{s}{1-\beta_2}}
{\theta\leftarrow\theta-\frac{\eta}{\sqrt{s+\epsilon}}\cdot{m}}
经过偏置校正后,每一次迭代的学习率都有个确定的范围,使得参数比较平稳。

三、梯度下降策略的选择

图3.1 梯度下降策略的选择1

Adagrad、Adadelta、RMSprop在loss surface上能够立刻转移到正确的移动方向上达到快速的收敛,而Momentum、NAG会导致偏离,相较于Momentum,NAG能够在偏移之后更加迅速地修正其路线。

图3.2 梯度下降策略的选择2

在saddle point处,SGD、Momentum、NAG一直在鞍点梯度为0的方向上振荡,Adagrad、Adadelta、RMSprop能够很快地向梯度不为0的方向上转移。
如果数据特征是稀疏的,最好使用自适应的梯度优化策略。
实验中,SGD常能够收敛到更好的minima,但是相对于其他的GD,可能花费的时间更长,并且依赖于初始值以及学习速率退火策略,并且容易陷入local minima以及鞍点。

四、一些建议

(一)调整学习速率

\eta恰好,可以走到局部最小值点;\eta太小,走得太慢,也可以走到局部最小值点;\eta太大,很可能走不到局部最小值点,卡在某处上;\eta太太大,很可能走出去。

图4.1 学习速率的选择

(二)特征缩放

w1变化,y变化小,w1对loss影响小;w2变化,y变化大,w2对loss影响大。

图4.2 不同尺度的特征的影响

一般来说,椭圆形中不同方向的\eta需求不一样,需要使用如"Ada"的自适应梯度下降方法;圆形中更新次数较少。因为无论椭圆形还是圆形,更新时都是沿着等高线的法线方向,而圆形直接向着圆心走。

图4.3 椭圆形 vs 圆形

通过将特征归一化,使得特征各个维度上的均值为0、方差为1来实现特征缩放.

图4.4 特征归一化
上一篇 下一篇

猜你喜欢

热点阅读