深度模型的优化
==》 参考文章:梯度下降的可视化解释
1. 梯度下降求解的优化器
-
动量(momentum)
动量借助了物理思想,在物理学上定义为质量乘以速度。想象一下在碗里滚动一个球,不会在底部停止,受惯性影响。使用动量的随机梯度下降(SGD)也就是加了一个速度项的超参数,这个参数乘上次的移动量,影响着本次的移动量改变。 v ← α v − ϵ ∇ θ ( 1 m ∑ i = 1 m L ( f ( x ( i ) ; θ ) , y ( i ) ) ) θ ← θ + v \begin{array}{l} v \leftarrow \alpha v-\epsilon \nabla_{\theta}\left(\frac{1}{m} \sum_{i=1}^{m} L\left(f\left(x^{(i)} ; \theta\right), y^{(i)}\right)\right) \\ \theta \leftarrow \theta+v \end{array} v←αv−ϵ∇θ(m1∑i=1mL(f(x(i);θ),y(i)))θ←θ+v- 动量移动得更快
- 动量有机会逃脱局部极小值
- 代价是引入了另一个超参数
-
AdaGrad(Adaptive Gradient)
AdaGrad 不是像动量一样跟踪梯度之和,而是跟踪梯度平方之和,并使用这种方法在不同的方向上调整梯度- 在参数空间中更为平缓的倾斜方向会取得更大的进步
- 梯度的平方和只会增加,会导致有效学习率过早和过量的减小
-
RMSProp(Root Mean Square Propagation)
RMSProp 算法修改AdaGrad,改变梯度积累为指数加权的移动平均,也可以理解为添加衰减因子来控制梯度积累的大小,保证学习率在一个可控范围。 -
Adam(Adaptive Moment Estimation)
Adam 同时兼顾了动量和 RMSProp 的优点,也就是动量直接并入了梯度一阶矩(指数加权)的估计。