0%

优化算法

前言

单单通过特征缩放提高梯度下降的收敛速度并不够,有时候还需要改进梯度下降算法。例如动量梯度下降 (Grandient descent with Momentum)、RMSprop 算法和 Adam 优化算法 (Adam optimization algorithm)。

动量梯度下降法

在大数据时代,使用批量梯度下降会非常耗时,而小批量梯度下降每次只使用小批量的数据,在梯度下降过程中并不是每次迭代都向着整体最优化的方向。动量梯度下降法 (Gradient descent with Momentum) 则可以帮助梯度下降尽可能保持向着整体最优化的方向,可以加速算法的收敛,动量梯度下降法使用指数加权平均,在计算当前梯度的同时也使用了之前迭代过程的梯度。

指数加权平均

指数加权平均(Exponential weighted average,简称 EXWA 或者 EWA)也叫指数移动平均(Exponential moving average,简称 EXMA 或者 EMA),是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。其中表示指数加权平均值 (),表示当前数据,为参数,其取值范围为。例如,有:越旧的数据权值越小,如何给一个直观的感觉呢?当权值小于就可以说只关注了前个数据,因为更旧的数据权值只有不到,得

因此可以简单地认为是前个数据的指数加权平均 (并不是严格的数学证明)。越大表示当前数据所占的权值越小,即求出来的平均值对当前数据越不敏感,则曲线越平坦。

偏差修正

由于默认,所以对一开始的数据计算移动平均数作为估计就不太准确。可以用作为估计值,当随着增加,接近于 0。

动量梯度下降

动量梯度下降的基本想法就是计算梯度的指数加权平均数,并利用该梯度更新权重。在每次迭代中,参数的更新公式如下所示:

使用动量梯度下降法,由于每次都尽量朝着整体最优化的方向更新参数,所以算法的速度回比较快。

RMSprop

RMSprop (root mean square prop) 算法,也可以加速梯度下降。如上图 without momentum 中,方向上的梯度要大于方向上的梯度 (因为方向上一步跨得比较大,),RMSprop 算法通过让学习率除以一个衰减系数 (历史梯度平方和的平方根),使得每个参数的学习率不同。在参数空间更为平缓的方向 (衰减系数较小),获得更大的步伐,从而加快训练速度。

其中是为了避免分母为 0。

Adam 优化算法

Adam (Adaptive Moment Estimation) 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起:

偏差修正:

权值更新:Adam 算法结合了 Momentum 和 RMSprop 梯度下降法,是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。其中超参数学习率很重要,也经常需要调试;常用的缺省值为 0.9;Adam 论文作者推荐使用 0.999 作为超参数的默认值;建议为。但是在使用 Adam 的时候,人们往往使用缺省值即可。

学习率衰减

随时间慢慢减少学习率也可以加快学习算法,我们将之称为学习率衰减。因为在学习初期,模型可以承受较大的步伐,当开始收敛的时候,则需要逐渐减小步伐,否则容易错过最优值。

使用小批量梯度下降进行训练,每遍历一次训练集称为一个 epoch (一代),学习率可以随着 epoch 的变大而减小:'_' allowed only in math mode\alpha=\frac{1}{1+\text{decay_rate}*\text{epoch_num}}\alpha_0其中 decay_rate 是衰减率 (需要调整的超参数),epoch_num 是代数,是出事学习率。除了这个公式,还可以用其他的公式使学习率递减或者通过手动的方式调整学习率:'_' allowed only in math mode\alpha=0.95^\text{epoch_num}\alpha_0

'_' allowed only in math mode\alpha=\frac{k}{\sqrt{\text{epoch_num}}}\alpha_0

局部最优问题

在深度学习研究早期,人们总是担心优化算法会被困在一些局部最优点处。而事实上,在神经网络中上图所示的局部最优点出现的可能性很小,梯度为 0 时,通常是鞍点,因为代价函数梯度为 0 时,那么在每个方向 (权值) 上,它可能是凸函数,也可能是凹函数。在一个维的高维空间中,如果想要得到局部最优,那么个方向上都需要一样,发生这种情况的概率是。而大部分情况却是一部分方向是凸函数,一部分方向是凹函数,即鞍点。但问题是在鞍点处,会有平稳段,即曲面很平坦,下降速度慢,而 Adam 算法正好可以加快速度,尽早走出平稳段。

参考文献

  1. 吴恩达. DeepLearning.
  2. Momentum methods
疏影横斜水清浅,暗香浮动月黄昏