首页 > 其他 > 详细

【深度学习】关于Adam

时间:2019-08-20 01:12:10      阅读:145      评论:0      收藏:0      [点我收藏+]
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_31866177/article/details/88601294

从SGD(SGD指mini-batch gradient descent)和Adam两个方面说起。

更详细的可以看:深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)(醍醐灌顶!)

SGD

SGD就是每一次迭代计算mini-batch的梯度,然后对参数进行更新,是最常见的优化方法了。即:

技术分享图片

其中,技术分享图片是学习率,技术分享图片是梯度 SGD完全依赖于当前batch的梯度,所以技术分享图片可理解为允许当前batch的梯度多大程度影响参数更新。

缺点:(正因为有这些缺点才让这么多大神发展出了后续的各种算法)

  • 选择合适的learning rate比较困难 - 对所有的参数更新使用同样的learning rate。对于稀疏数据或者特征,有时我们可能想更新快一些对于不经常出现的特征,对于常出现的特征更新慢一些,这时候SGD就不太能满足要求了
  • SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点【原来写的是“容易困于鞍点”,经查阅论文发现,其实在合适的初始化和step size的情况下,鞍点的影响并没这么大。感谢@冰橙的指正】
  • 参数取值震荡严重。(我自己添加的)

Adam 

Adam(Adaptive Moment Estimation)本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。公式如下:

技术分享图片

特点:

  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 对内存需求较小
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化 - 适用于大数据集和高维空间

 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam

优化算法的一般框架:

技术分享图片

后续复习的时候,存在了一个疑问,上述方法说对解决稀疏数据十分有效,那么哪里体现出了对稀疏数据有效呢?

参数更新越频繁,二阶动量越大,学习率就越小。

技术分享图片

 

这篇也不错,之后复习看:

Adam和学习率衰减(learning rate decay)

【深度学习】关于Adam

原文:https://www.cnblogs.com/mfryf/p/11380695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!