论文 An overview of gradient descent optimization algorithms 的个人总结。
基于梯度下降的优化方法中,最朴素的 SGD 优化器采用的优化策略如下:
其他优化方法均基于对学习率
1. Momentum
Keywords:momentum, 全局学习率
如下图图 a 所示,当一个维度比另一个维度下降地明显更加急促时(经常是局部最优点),朴素 SGD 容易存在收敛极慢的问题。
momentum(动量)的引入可以直观地较好处理这个问题,其在计算当前时刻的更新向量
2. Nesterov accelerated gradient
Keywords:momentum, 全局学习率,前瞻性预估
在momentum基础上,Nesterov accelerating 提供了一种颇有前瞻性的参数更新预估。
我们知道,动量将
3. Adagrad
Kerwords: 不同参数自适应学习率,总体学习率不断衰减
Adagrad 为每个参数提供自适应的学习率,它可以为频率低的参数每次提供更大更新、为频率高的参数每次提供更小更新。正因为此,它十分适用于处理稀疏数据。
用
则 SGD 对每个参数的更新为:
Adagrad对每个参数有自适应的学习率,其参数更新过程为:
Adagrad的最大优势是初始学习率(一般为0.01)设定后不用管,其可以为不同参数自适应地调整学习率。但同时,随着训练进行
Adadelta针对性地解决了Adagrad学习率过度衰减的问题。
4. Adadelta
Keywords: 自适应学习率,解决Adagrad学习率衰减过小的问题
Adadelta解决了Adagrad过度激进地衰减学习率的问题,不同于累加过去所有梯度的平方,它限制了累加的过去的梯度到一个固定窗口宽度
为进一步简化存储
因此参数更新向量为:
其分母为均方根(root mean squared, RMS),因此也常写作:
本方法的作者进一步提出了更新单元不匹配的问题,时刻
有:
由于时刻
可以看出,Adadelta事实上不需要设定初始学习率。
5. RMSprop
RMSprot 和 Adadelta 都是为了解决Adagrad的学习率消失问题而提出的。有趣的是,二者被独立提出,却殊途共归。RMSprop的参数更新过程为:
6. Adam
Adaptive Moment Estimation(Adam)是另一个为每个参数动态调整学习率的方法。正如其名,它同时估计了梯度的 first moment(mean,
由于
为解决这一问题,moment estimation 做了 bias-correct:
参数更新过程为:
Finally,how to choose optimizer?
稀疏数据则选择自适应学习率的算法;而且,只需设定初始学习率而不用再调整即很可能实现最好效果。
Adagrad, Adadelta, RMSprop, Adam可以视为一类算法。RMSprop 与 Adadelta本质相同,都是为了解决Adagrad的学习率消失问题。Adam 可视为添加了 bias-correction 和 momentum的 RMSprop。事实上,Adadelta, RMSprop, Adam在相似场景下表现也很相似。bias-correction 帮助 Adam 在优化后期略优于 RMSprop,因为此时梯度已经很稀疏。
目前来看,无脑用 Adam 似乎已经是最佳选择。