原文:https://www.cnblogs.com/GeekDanny/p/9655597.html
基础知识:
机器学习几乎所有的算法都要利用损失函数 lossfunction 来检验算法模型的优劣,同时利用损失函数来提升算法模型.
这个提升的过程就叫做优化(Optimizer)
下面这个内容主要就是介绍可以用来优化损失函数的常用方法
常用的优化方法(Optimizer):
-
1.SGD&BGD&Mini-BGD:
SGD(stochastic gradient descent):随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来update参数.假设loss function为L(w),下同.
)Pros:收敛的速度快;可以实现在线更新;能够跳出局部最优
Cons:很容易陷入到局部最优,困在马鞍点.
BGD(batch gradient descent):批量梯度下降,算法在读取整个数据集后累加来计算损失函数的的梯度
)这个优化方法用的也是比较多的,计算效率高而且收敛稳定,是现在深度学习的主流方法.
上面的方法都存在一个问题,就是update更新的方向完全依赖于计算出来的梯度.很容易陷入局部最优的马鞍点.能不能改变其走向,又保证原来的梯度方向.就像向量变换一样,我们模拟物理中物体流动的动量概念(惯性).引入Momentum的概念.
-
2.Momentum
在更新方向的时候保留之前的方向,增加稳定性而且还有摆脱局部最优的能力
η 可视为空气阻力,若球的方向发生变化,则动量会衰减。- 3.Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.
以前的算法中,每一个参数都使用相同的学习率j - 3.Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.
- 4.RMSprop:(root mean square propagation)也是一种自适应学习率方法.不同之处在于,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值.可以缓解Adagrad算法学习率下降较快的问题.
)
5.Adam:(adaptive moment estimation)是对RMSProp优化器的更新.利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.
优点:每一次迭代学习率都有一个明确的范围,使得参数变化很平稳.计 Adam是实际学习中最常用的算法优化方法在实际中的直观体验
损失曲面的轮廓和不同优化算法的时间演化。 注意基于动量的方法的“过冲”行为,这使得优化看起来像一个滚下山的球
优化环境中鞍点的可视化,其中沿不同维度的曲率具有不同的符号(一维向上弯曲,另一维向下)。 请注意,SGD很难打破对称性并陷入困境。 相反,诸如RMSprop之类的算法将在鞍座方向上看到非常低的梯度。 由于RMSprop更新中的分母术语,这将提高此方向的有效学习率,从而帮助RMSProp继续进行.
参考文献:
基础知识:
机器学习几乎所有的算法都要利用损失函数 lossfunction 来检验算法模型的优劣,同时利用损失函数来提升算法模型.
这个提升的过程就叫做优化(Optimizer)
下面这个内容主要就是介绍可以用来优化损失函数的常用方法
常用的优化方法(Optimizer):
-
1.SGD&BGD&Mini-BGD:
SGD(stochastic gradient descent):随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来update参数.假设loss function为L(w),下同.
)Pros:收敛的速度快;可以实现在线更新;能够跳出局部最优
Cons:很容易陷入到局部最优,困在马鞍点.
BGD(batch gradient descent):批量梯度下降,算法在读取整个数据集后累加来计算损失函数的的梯度
)这个优化方法用的也是比较多的,计算效率高而且收敛稳定,是现在深度学习的主流方法.
上面的方法都存在一个问题,就是update更新的方向完全依赖于计算出来的梯度.很容易陷入局部最优的马鞍点.能不能改变其走向,又保证原来的梯度方向.就像向量变换一样,我们模拟物理中物体流动的动量概念(惯性).引入Momentum的概念.
-
2.Momentum
在更新方向的时候保留之前的方向,增加稳定性而且还有摆脱局部最优的能力
η 可视为空气阻力,若球的方向发生变化,则动量会衰减。- 3.Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.
以前的算法中,每一个参数都使用相同的学习率j - 3.Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.
- 4.RMSprop:(root mean square propagation)也是一种自适应学习率方法.不同之处在于,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值.可以缓解Adagrad算法学习率下降较快的问题.
)
5.Adam:(adaptive moment estimation)是对RMSProp优化器的更新.利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.
优点:每一次迭代学习率都有一个明确的范围,使得参数变化很平稳.计 Adam是实际学习中最常用的算法优化方法在实际中的直观体验
损失曲面的轮廓和不同优化算法的时间演化。 注意基于动量的方法的“过冲”行为,这使得优化看起来像一个滚下山的球
优化环境中鞍点的可视化,其中沿不同维度的曲率具有不同的符号(一维向上弯曲,另一维向下)。 请注意,SGD很难打破对称性并陷入困境。 相反,诸如RMSprop之类的算法将在鞍座方向上看到非常低的梯度。 由于RMSprop更新中的分母术语,这将提高此方向的有效学习率,从而帮助RMSProp继续进行.
参考文献:
-
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习常见的优化方法(Optimizer)总结:Adam,SGD,Momentum,AdaGard等 - Python技术站