前言
单单通过特征缩放提高梯度下降的收敛速度并不够,有时候还需要改进梯度下降算法。例如动量梯度下降 (Grandient descent with Momentum)、RMSprop 算法和 Adam 优化算法 (Adam optimization algorithm)。
动量梯度下降法
在大数据时代,使用批量梯度下降会非常耗时,而小批量梯度下降每次只使用小批量的数据,在梯度下降过程中并不是每次迭代都向着整体最优化的方向。动量梯度下降法 (Gradient descent with Momentum) 则可以帮助梯度下降尽可能保持向着整体最优化的方向,可以加速算法的收敛,动量梯度下降法使用指数加权平均,在计算当前梯度的同时也使用了之前迭代过程的梯度。
指数加权平均
指数加权平均(Exponential weighted average,简称 EXWA 或者 EWA)也叫指数移动平均(Exponential moving average,简称 EXMA 或者 EMA),是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。
因此可以简单地认为
偏差修正
由于默认
动量梯度下降
动量梯度下降的基本想法就是计算梯度的指数加权平均数,并利用该梯度更新权重。在每次迭代中,参数的更新公式如下所示:
使用动量梯度下降法,由于每次都尽量朝着整体最优化的方向更新参数,所以算法的速度回比较快。
RMSprop
RMSprop (root mean square prop) 算法,也可以加速梯度下降。如上图 without momentum 中,
其中
Adam 优化算法
Adam (Adaptive Moment Estimation) 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起:
偏差修正:
权值更新:
学习率衰减
随时间慢慢减少学习率也可以加快学习算法,我们将之称为学习率衰减。因为在学习初期,模型可以承受较大的步伐,当开始收敛的时候,则需要逐渐减小步伐,否则容易错过最优值。
使用小批量梯度下降进行训练,每遍历一次训练集称为一个 epoch
(一代),学习率可以随着 epoch 的变大而减小:
局部最优问题
在深度学习研究早期,人们总是担心优化算法会被困在一些局部最优点处。而事实上,在神经网络中上图所示的局部最优点出现的可能性很小,梯度为 0 时,通常是鞍点,因为代价函数梯度为 0 时,那么在每个方向 (权值) 上,它可能是凸函数,也可能是凹函数。在一个
参考文献
- 吴恩达. DeepLearning.
- Momentum methods