标签:约束 reg 其他 未来 global 变量 带来 rate 随机梯度
原文地址:https://www.jianshu.com/p/7a049ae73f56
梯度下降优化基本公式:\({\theta\leftarrow\theta-\eta\cdot\nabla_\theta{J(\theta)}}\)
这三种梯度下降优化框架的区别在于每次更新模型参数时使用不同的样本数。
批/全量梯度下降每次更新模型参数时使用全部的训练样本。
\({\theta\leftarrow\theta-\eta\cdot\frac{1}{N}\sum_{i=1}^{N}\nabla_\theta{J({\theta};x_i,y_i)}}\),\(N\)为训练样本数
随机梯度下降每次更新参数时从训练样本中随机选择一个样本。
\({\theta\leftarrow\theta-\eta\cdot\nabla_\theta{J({\theta};x_i,y_i)}}\)
关于优化波动,带来的好处是在有很多local minima的区域,优化波动可能会使得优化的方向从当前的local minima跳到另一个更好的local minima,甚至是global minima,最终收敛于一个较好的minima。由于波动,迭代次数增多,收敛速度下降,不过最终会和批梯度下降一样具有收敛性。
小批量梯度下降每次更新模型参数时从训练样本中随机选择\(M\)个样本,\(M<N\),\(M\)常取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)}}\)。
\({m\leftarrow\gamma\cdot{m}+\eta\cdot\nabla_\theta{J(\theta)}}\),\(m\)为动量项
\({\theta\leftarrow\theta-m}\)
其中,动量项超参数\({\gamma}\)越大,之前梯度方向对当前方向的影响也越大。
NAG计算“超前梯度”更新动量项。
\({m\leftarrow\gamma\cdot{m}+\eta\cdot\nabla_\theta{J(\theta-\gamma\cdot{m})}}\)
\({\theta\leftarrow\theta-m}\)
既然参数要沿着\({\gamma\cdot{m}}\)方向更新(蓝线),不妨计算下未来位置\({\theta-\gamma\cdot{m}}\)处的梯度(红线),再将动量项与其合并作为最终的更新项(绿线)。
\({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项,训练前期,梯度较小,regularizer项较大,放大梯度;训练后期,梯度较大,regularizer项较小,约束梯度。
\({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。
是Adadelta的特例,无\(r\)有\(s\)。
\({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)}}\)
\({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\)为梯度平方的加权平均,二阶矩变量,有偏,梯度的加权有偏方差
\(m\)和\(s\)均初始化为\({\vec{0}}\),Adam作者发现它们会倾向于为\({\vec{0}}\),特别是在\(\beta_1\)和\(\beta_2\)趋于1时。
为了改进这个问题,对\(m\)和\(s\)进行偏差修正,近似于期望的无偏估计。
\({m\leftarrow\frac{m}{1-\beta_1}}\)
\({s\leftarrow\frac{s}{1-\beta_2}}\)
\({\theta\leftarrow\theta-\frac{\eta}{\sqrt{s+\epsilon}}\cdot{m}}\)
经过偏置校正后,每一次迭代的学习率都有个确定的范围,使得参数比较平稳。
Adagrad、Adadelta、RMSprop在loss surface上能够立刻转移到正确的移动方向上达到快速的收敛,而Momentum、NAG会导致偏离,相较于Momentum,NAG能够在偏移之后更加迅速地修正其路线。
在saddle point处,SGD、Momentum、NAG一直在鞍点梯度为0的方向上振荡,Adagrad、Adadelta、RMSprop能够很快地向梯度不为0的方向上转移。
如果数据特征是稀疏的,最好使用自适应的梯度优化策略。
实验中,SGD常能够收敛到更好的minima,但是相对于其他的GD,可能花费的时间更长,并且依赖于初始值以及学习速率退火策略,并且容易陷入local minima以及鞍点。
SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam
标签:约束 reg 其他 未来 global 变量 带来 rate 随机梯度
原文地址:https://www.cnblogs.com/cherrychenlee/p/10805363.html