Momentum的改进思想是针对SGD算法波动大、收敛速度慢问题,简单来说就是防止波动,取前几次波动的均值作为新的参数值。Momentum利用了梯度的指数加权平均数,引入了一个新的超参数$\beta$(一般取0.9),具体更新公式如下:
$$V_{dW}=\beta V_{dW}+(1-\beta)dW$$
$$V_{db}=\beta V_{db}+(1-\beta)db$$
$$W:=W-\alpha V_{dW}$$
$$b:=b-\alpha V_{db}$$
改进后的Momentum优化路线示意图如下:
Momentum背后的物理含义可以简单的这样理解:
当我们将一个小球从山上滚下来时,没有阻力的话,它的动量会越来越大,但是如果遇到了阻力,速度就会变小。 加入这一项,可以使得梯度方向不变的维度上速度变快,梯度方向有所改变的维度上的更新速度变慢,这样就可以加快收敛并减小震荡。
3. RMSpropRMSprop是Geoff Hinton提出的一种自适应学习率方法,全称为Root Mean Square Prop,它的基本思想和Momentum类似,同样引入了额外的超参数$\beta$(一般取值0.999),其更新公式如下:
$$S_{dW}=\beta S_{dW}+(1-\beta)dW^2$$
$$S_{db}=\beta S_{db}+(1-\beta)db^2$$
$$W:=W-\alpha \frac{dW}{\sqrt{S_{dW}}}$$
$$b:=b-\alpha \frac{db}{\sqrt{S_{db}}}$$
针对上述更新公式,为了防止$W$和$b$更新过程中分母项为0,一般在应用中加上特别小的一个实数$\epsilon$(一般取值为$10^{-8}$):
$$W:=W-\alpha \frac{dW}{\sqrt{S_{dW}+\epsilon}}$$
$$b:=b-\alpha \frac{db}{\sqrt{S_{db}+\epsilon}}$$
RMSprop示意图如下:
具体关于RMSprop更详细的讲解可以参考这篇博文《机器学习中使用的神经网络第六讲笔记》
4. Adam
研究者们其实提出了很多的优化算法,可以解决一些特定的优化问题,但是很难扩展到多种神经网络。而Momentum,RMSprop是很长时间来最经得住考研的优化算法,适合用于不同的深度学习结构。所以有人就有想法,何不将这俩的方法结合到一起呢?Adam算法,全称Adaptive Moment Estimation,就随即问世了。由于Adam是Momentum+RMSprop,所以需要引入两个超参数,我们表示为$\beta_1=0.9$,$\beta_2=0.999$。
$$V_{dW}=\beta_1 V_{dW}+(1-\beta_1)dW$$
$$V_{db}=\beta_1 V_{db}+(1-\beta_1)db$$
$$S_{dW}=\beta_2 S_{dW}+(1-\beta_2)dW^2$$
$$S_{db}=\beta_2 S_{db}+(1-\beta_2)db^2$$
$$V_{dW}^{corrected}=\frac{V_{dW}}{1-\beta_{1}^t}$$
$$V_{db}^{corrected}=\frac{V_{db}}{1-\beta_{2}^t}$$
$$S_{dW}^{corrected}=\frac{S_{dW}}{1-\beta_{1}^t}$$
$$S_{db}^{corrected}=\frac{S_{db}}{1-\beta_{2}^t}$$
$$W:=W-\alpha \frac{V_{dW}}{\sqrt{S_{dW}^{corrected}}}$$
$$b:=b-\alpha \frac{V_{db}}{\sqrt{S_{db}^{corrected}}}$$
因为Adam结合上述两种优化算法的优点于一身,所以现在经常用的是Adam优化算法。
5. 各Optimizers优化效果除了上述三种常用的改进算法,还有例如Adagrad等Optimizer,这里就不一一介绍了,感兴趣的可以去了解下各算法改进的motivation。
下面两个图分别展示了几种算法在鞍点和等高线上的表现: