参考原文
前言
通常我们所说的学习率变换册率是针对参数更新时梯度前面的系数而言的,而非全局学习率(也可以根据相关算法来调节),我们所要调节的学习率由全局学习率而来,是参数更新的重要系数。
- AdaGrad
输入参数:全局学习率、初始化参数、小常量(避免分母为0,例如)
算法过程:
来源
总结:- 优点
- 随着迭代次数的增大r越来越大,r位于分母上,所以一般来说AdaGrad算法开始时是激励收敛,后期就是惩罚收敛,速度会越来越慢。
- AdaGrad符合训练初期参数离最优比较远(适合大的学习率),训练后期参数离最优较近(适合小的学习率)的客观规律
- 针对不同的参数AdaGrad给出不一样的学习速率
- 缺点
对于深度学习模型而言,从一开始就累积梯度平方会导致有效学习率过早和过量减小。AdaGrade在凸优化问题中表现不错,但不是全部的优化问题。
- 优点
- RMSProp
需要参数:全局学习率、衰减因子、初始化参数、小常量
来源
总结:
RMSProp是AdaGrad的一次改进(主要是红框内)相比AdaGrad它在非凸情况下效果更好 - Adam
需要参数:步长(默认:0.001)、动量指数下降率、,它们的范围是[0, 1)、小常数、初始化参数。
算法步骤:
来源
总结:
Adam本质上为带动量的RMSProp,上图中,红框里面就是momentum项,蓝框里面就是RMSProp项- Adam的动量和梯度累积项都经过了梯度校正、这使得每次的迭代学习率都在一个固定的范围,使参数平稳
- 结合了AdaGrad善于处理稀疏梯度和RMSProp善于处理非平稳目标的优点。
- 为不同的参数计算不同的自适应学习率
- 适用于大多数的非凸优化问题、适用于大数据集和高维空间