Adam优化器及其变种的原理

这篇具有很好参考价值的文章主要介绍了Adam优化器及其变种的原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文将从SGD开始介绍Adam优化器的原理以及其变种的提出背景。

1、SGD的原理

SGD(随机梯度下降法)是基于最速梯度下降法的原理,假设我们存在损失函数,其中是要学习参数,定义如下的优化路径Adam优化器及其变种的原理,使得损失函数值最小。这是一个不断更新迭代参数的过程,其中表示其中某一更新步,表示更新步长(即学习率),表示更新方向。

假设存在最优参数,当前参数为最优参数附近的,我们选择合适的参数更新步长,使得Adam优化器及其变种的原理逼迫最优参数。我们对目标损失函数进行泰勒展开:

Adam优化器及其变种的原理 

 因为是最优参数,所以:

最速下降法是指在规范化的基础上,找到一个合适的值使得方向导数最小,或者说让近可能逼近最优值,假设是L2范式时,当时,方向导数最小。因此最速下降法的更新路径可以表示为:

Adam优化器及其变种的原理

 其中表示更新步长,因为上述泰勒展开式包含要求是在参数附近进行更新,因此需要控制更新的步长,其在SGD中称之为学习率。

2、SGD with Momentum 动量SGD的原理

因为在SGD中方向梯度可能会因为某些点偏差会造成参数学习的振荡,因此通过动量来添加平滑参数:

Adam优化器及其变种的原理

 Adam优化器及其变种的原理

3、Adam的原理

动量SGD解决了由于梯度在某些点偏差会带来学习的振荡,但同时学习率设置也会影响学习,当梯度较小时,学习率设置过小,会减缓训练速度,而当梯度较大,学习率如果设置过大,会造成训练的振荡,因为Adam在动量SGD基础上增加了自适应调整学习率(即更新步长)。

Adam优化器及其变种的原理

Adam优化器及其变种的原理

Adam优化器及其变种的原理

Adam在动量SGD的基础上增加了二阶动量,通过其来自适应控制步长,当梯度较小时,整体的学习率就会增加,反之会缩小,因此在一般情况下,Adam相较于SGD,其收敛速度要更快。

同时为了避免某些点梯度偏差带来学习率的振荡,因此通过引入动量特性(由于梯度二次情况下,一般)。

4、AdamW的原理

但是Adam存在另外的问题,当loss函数中存在L2正则项时,采用Adam优化并不会有效,主要原因是Adam的学习率是变化的,而且当梯度变大时,其学习率会变小,因此会使梯度较大的权重参数同梯度较小的权重参数相差更大,这同L2正则是相违背的。我们通过公式来说明这个过程:

假设目标损失函数添加了L2正则项后,如下表示为:

Adam优化器及其变种的原理

如果通过动量SGD作为优化器,此时参数的更新可以写为如下式,同时可以看出L2正则项同weight decay也是等价的。

Adam优化器及其变种的原理

Adam优化器及其变种的原理

但是当Adam应用时,weight decay系数当梯度较大时其值较小,使得Adam对于L2正则项的优化并不好。因此AdamW主要是在Adam中增加了weight decay项,来帮助优化L2正则项:

Adam优化器及其变种的原理

上式中的为weight decay的系数,其中b表示batch size,B表示epoch中训练的batch数,T表示总共的epoch数,可以看出weight decay系数同整个训练轮数有关系。

5、AdamWR的原理

AdamWR主要是添加了热重启warm restart功能,其解决的问题是避免模型训练陷入局部最优,因为学习率和梯度会一直收敛,当达成局部最优点时,很难或者要很长时间才能跳出来,因此AdamWR主要是通过周期性增大学习率,从而提升模型的探索空间。

这个周期性调整学习率的函数称为cosine annealing,可以表示为:

Adam优化器及其变种的原理

Adam优化器及其变种的原理

AdamWR将整个训练过程分为多个热重启过程,上式中的i表示为第i个热重启过程,表示在该阶段中最小的学习率,表示当前热重启轮中总共需要训练epoch数,表示当前已经训练的epoch数。

通过AdamWR的模型的探索空间更大,下图评估了在不同初始学习率和L2正则项权重值的情况下,AdamWR所能找到的优点空间更大。

Adam优化器及其变种的原理

 文章来源地址https://www.toymoban.com/news/detail-439735.html

 

到了这里,关于Adam优化器及其变种的原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)

    鲸鱼优化算法(whale optimization algorithm,WOA)是由Mirjalili和Lewis[1]于2016年提出的一种新型群体智能优化搜索方法,它源于对自然界中座头鲸群体狩猎行为的模拟,该算法整个过程包含搜索觅食、收缩包围和螺旋更新位置三个阶段。 鲸鱼优化算法的三个种群更新机制相互独立,因此其

    2024年02月04日
    浏览(44)
  • Adam优化器算法详解及代码实现

    在介绍Adam算法之前,先谈谈Adam中两个关键的算法: 学习率调整(RMSprop 算法) 与 梯度估计修正 。 学习率是神经网络优化时的重要超参数。在标准的梯度下降法中,每个参数在每次迭代时都使用相同的学习率,但是学习率如果过大就不会收敛,如果过小则收敛速度太慢。

    2024年02月02日
    浏览(42)
  • SGD,Adam,AdamW,LAMB优化器

    一. SGD,Adam,AdamW,LAMB优化器 优化器是用来更新和计算影响模型训练和模型输出的网络参数,使其逼近或达到最优值,从而最小化(或最大化)损失函数。 1. SGD 随机梯度下降是最简单的优化器,它采用了简单的梯度下降法, 只更新每一步的梯度,但是它的收敛速度会受到学习

    2023年04月16日
    浏览(39)
  • Adam原理

    Adam Adam(Adaptive Moment Estimation)是一种自适应的优化算法,用于训练神经网络等机器学习模型。Adam算法是一种基于梯度下降的优化算法,结合了动量方法和自适应学习率的优点,并对学习率进行自适应调整。Adam算法的优点是收敛速度快,不需要手动调整学习率,兼顾了稳定性

    2024年02月06日
    浏览(37)
  • 深度学习优化入门:Momentum、RMSProp 和 Adam

    目录 深度学习优化入门:Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam   本文,我们讨论一个困扰神经网络训练的问题,病态曲率。 虽然局部极小值和鞍点会阻碍我们的训练,但病态曲率会减慢训练的速度,以至于从事机器学习的人可能会认为搜索已经收敛到一

    2024年02月11日
    浏览(33)
  • 优化器SGD、Adam和AdamW的区别和联系

    优化器是用来更新和计算影响模型训练和模型输出的网络参数,使其逼近或达到最优值,从而最小化(或最大化)损失函数。 随机梯度下降 是最简单的优化器,它采用了简单的梯度下降法,只更新每一步的梯度,但是它的收敛速度会受到学习率的影响。 优点: 简单性,在优化

    2023年04月09日
    浏览(33)
  • 利用Adam优化算法进行语音识别任务:提升模型准确率

    作者:禅与计算机程序设计艺术 语音识别是人工智能领域中的一个重要应用,近年来随着深度学习算法的快速发展,语音识别技术也取得了长足的进步。在语音识别任务中,训练模型需要大量的数据和计算资源,而且模型的准确性也是至关重要的。因此,如何提高模型的准确

    2024年02月09日
    浏览(49)
  • 神经网络基础-神经网络补充概念-49-adam优化算法

    Adam(Adaptive Moment Estimation)是一种优化算法,结合了动量梯度下降法和RMSProp的优点,用于在训练神经网络等深度学习模型时自适应地调整学习率。Adam算法在深度学习中广泛应用,通常能够加速收敛并提高模型性能。 Adam算法综合了动量(momentum)和均方梯度的移动平均(RMS

    2024年02月12日
    浏览(31)
  • 改善神经网络——优化算法(mini-batch、动量梯度下降法、Adam优化算法)

    优化算法可以使神经网络运行的更快,机器学习的应用是一个高度依赖经验的过程,伴随着大量迭代的过程,你需要训练诸多模型,才能找到合适的那一个,所以,优化算法能够帮助你快速训练模型。 其中一个难点在于,深度学习没有在大数据领域发挥最大的效果,我们可以

    2024年02月12日
    浏览(47)
  • SDG,ADAM,LookAhead,Lion等优化器的对比介绍

    本文将介绍了最先进的深度学习优化方法,帮助神经网络训练得更快,表现得更好。有很多个不同形式的优化器,这里我们只找最基础、最常用、最有效和最新的来介绍。 首先,让我们定义优化。当我们训练我们的模型以使其表现更好时,首先使用损失函数,训练时损失的减

    2023年04月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包