自适应学习率的优化算法(from goodfellow deep learning)

文章取自goodfellow deep learning书,位置如下:

II Deep Networks: Modern Practices
8 Optimization for Training Deep Models
—– 8.5 Algorithms with Adaptive Learning Rates

前言

研究表明,学习率是非常重要的一个超参数,甚至能左右模型的好坏,但是,学习率也是非常难确定取值的,因为它不是靠学习而来,而是往往由人的经验来设置它。所以考虑是否可以有优化算法,自适应的调节学习率的大小。
PS:
此学习率非彼学习率。此时会有一个全局的学习率,当然也可以根据相算法来调节这个全局学习率。此处所指的自适应学习率是值得参数更新的梯度前的系数,由全局学习率而来,从而对参数进行更新。即θ ← θ − aĝ 中的a。对仅仅使用SGD的模型个而言,a即全局学习率。

AdaGrad

算法过程:
这里写图片描述
需要:全局学习率,初始化的参数,保证分母非零的很小的数
文中有这样一句话:

The parameters with the largest partial derivative of the loss have a correspondingly rapid decrease in their learning rate, while parameters with small partial derivatives have a relatively small decrease in their learning rate.

我的理解:这句话的意思是,当相应的梯度g很大的时候,那么学习率(非全局学习率,在此处为图片算法中由上往下第一个红色框内的公式)将下降非常多;而当梯度g小的时候那么学习率将下降较小。
由第一个红色框(由上往下)可知,r 为g*g(点乘)的累加,且在分母处,所以整个学习率是不断的下降的,但下降的速度有快有慢(也可说下降的有多有少)。当此时梯度g特别大的时候,那么学习率小的特别多,与梯度相乘成为增量会变得很小,即一次性更新的少;而当g小的时候,会使增量变大。
缺点:
- r梯度累加,最后会很大,结果导致g –> 0,训练提前结束。
- 对于凸优化的问题有较好的结果,但是并不是对所有的深度学习模型都有较好的效果。

RMSProp

算法过程:
这里写图片描述
RMSProp最主要的改进在红色框内的公式,并额外添加了一个衰退因子,学习率也是随着训练不断下降的。

  • RMSProp优化算法是AdaGrad的一次改进,相比AdaGrad而言,RMSProp在非凸条件下更好。
  • AdaGrad模型会累加之前所有的梯度,而RMSProp会丢弃之前的一部分值,从而能很快的收敛。
  • 经验证明,有效且实用。

Adam

算法过程:
这里写图片描述

本质上为带动量的RMSProp。
红色框为Momentum项,而蓝色框为RMSProp项。
(from http://blog.csdn.net/muyu709287760/article/details/62531509
- Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳。
- 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
- 为不同的参数计算不同的自适应学习率
- 也适用于大多非凸优化问题——适用于大数据集和高维空间。

猜你喜欢

转载自blog.csdn.net/m0_37477175/article/details/79390757