Adam优化器及其变种的原理

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

1、SGD的原理

SGD(随机梯度下降法)是基于最速梯度下降法的原理,假设我们存在损失函数L(\theta ),其中\theta是要学习参数,定义如下的优化路径\theta^{k+1}=\theta^{k}+t^k\Delta(\theta^{k}),\ k=0,1,2,... ...,使得损失函数L(\theta )值最小。这是一个不断更新迭代参数\theta的过程,其中k表示其中某一更新步,t^k表示更新步长(即学习率),\Delta(\theta^{k})表示更新方向。

假设存在最优参数\theta^*,当前参数为最优参数附近的\theta^k,我们选择合适的参数更新步长,使得\theta^{k+1}=\theta^{k}+t^k\Delta(\theta^{k})逼迫最优参数。我们对目标损失函数L(\theta )进行泰勒展开:

L(\theta^*) = L(\theta^k+v)\approx L(\theta^k) + \nabla L(\theta^k) v 

 因为\theta^*是最优参数,所以:

L(\theta^*) < L(\theta^k) \rightarrow \nabla L(\theta^k) v< 0

最速下降法是指在规范化v的基础上,找到一个合适的值使得方向导数\nabla L(\theta^k) v最小,或者说让L(\theta^k)近可能逼近最优值L(\theta^*),假设是L2范式\left \| v \right \|\leq 1时,当v = -\nabla L(\theta^k)时,方向导数最小。因此最速下降法的更新路径可以表示为:

\theta^{k+1}=\theta^{k} - t^k\nabla L(\theta^k),\ k=0,1,2,... ...

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

2、SGD with Momentum 动量SGD的原理

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

m_k = \beta m_{k-1} + (1-\beta )g_k

 \theta^{k+1}=\theta^{k} - t^k m_k,\ k=0,1,2,... ...

3、Adam的原理

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

m_k = \beta_1 m_{k-1} + (1-\beta_1 )g_k

v_k = \beta_2 v_{k-1} + (1-\beta_2 )g_k^2

\theta^{k+1}=\theta^{k} - t^k m_k / \sqrt{v_k},\ k=0,1,2,... ...

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

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

4、AdamW的原理

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

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

L(\theta ) = L(\theta ) + \frac{1}{2}\left \| \theta \right \|^2

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

\hat{m_k} = \beta m_{k-1} + (1-\beta )(g_k + \theta^k) = m_k + (1-\beta )\theta^k

\theta^{k+1}=\theta^{k} - t^k \hat{m_k} = \beta \theta^{k} - t^k m_k,\ k=0,1,2,... ...

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

\theta^{k+1}=\theta^{k} - t^k (m_k / \sqrt{v_k} + \omega \theta^{k}),\ k=0,1,2,... ...

\omega =\omega_{norm}\sqrt{\frac{b}{BT}}

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

5、AdamWR的原理

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

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

t^k = t^i_{min} + 0.5(t^i_{max} - t^i_{min})(1 + cos(\pi T_{cur}/T_i))

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

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

 

 

tostq
关注 关注
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化器】(五) Adam原理 & pytorch代码解析
Lizhi_Tech的博客
07-18 1万+
在之前的文章了,我们学习了SGD,以及在其基础上加了一阶动量的SGD Momentum,还有在其基础上加了二阶动量的AdaGrad、AdaDelta、RMSProp。那么自然而然就会想到把一阶动量和二阶动量结合起来,这样就形成了我们常用的优化器Adam
adamw和adam 优化器相关讲解.docx
09-16
adamw和adam 优化器相关讲解
Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结
最新发布
qq_44665283的博客
04-23 2158
Pytorch常用的函数(八)常见优化器SGD,Adagrad,RMSprop,Adam,AdamW总结
Adam 优化器
m0_50534425的博客
05-23 3万+
深度学习中的神经网络优化。它结合了RMSProp和Momentum两种优化算法的思想,并且对参数的更新进行了归一化处理,使得每个参数的更新都有一个相似的量级,从而提高训练效果。具体来说,Adam优化器定义了两个指数加权平均值:第一个指数加权平均值是梯度的指数加权平均值,第二个指数加权平均值是梯度的平方的指数加权平均值。1.自适应调整学习率:Adam 优化器可以根据历史梯度信息来自适应地调节学习率,使得在训练初期使用较大的学习率,能够快速收敛,在训练后期使用较小的学习率,能够更加准确地找到损失函数的最小值。
Adam优化器(通俗理解)
热门推荐
BeiErGeLaiDe的博客
07-29 7万+
Adam,名字来自:Adaptive Moment Estimation,自适应矩估计。是2014年提出的一种万金油式的优化器,使用起来非常方便,梯度下降速度快,但是容易在最优值附近震荡。竞赛中性能会略逊于SGD,毕竟最简单的才是最有效的。但是超强的易用性使得Adam被广泛使用。...
深度学习优化算法大全系列6:Adam
bitcarmanlee的博客
01-14 1万+
1.Adam是啥 前面铺垫了这么多,终于铺垫到Adam了。作为最常用的优化器之一,很多同学可能都听说过Adam的名字,但是Adam是什么意思可能并不清楚。Adam其实包括两部分:Ada+M。其中,Ada就是我们前面提到的Adaptive,而M是我们一直在讲的Momentum。 结合我们前面提到的内容,SGD中的一阶动量计算方式: mt=β1mt−1+(1−β1)gtm_t = \beta_1 m_{t-1} + (1-\beta_1)g_tmt​=β1​mt−1​+(1−β1​)gt​ 而在AdaDelta
Adam优化器算法详解及代码实现
1+1=王的博客
03-17 1万+
在随机(小批量)梯度下降法中,如果每次选取样本数量比较小,损失会呈现振荡的方式下降.也就是说,随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性。一种有效地缓解梯度估计随机性的方式是通过使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向,从而提高优化速度。在标准的梯度下降法中,每个参数在每次迭代时都使用相同的学习率,但是学习率如果过大就不会收敛,如果过小则收敛速度太慢。其中, 𝛼 是初始的学习率,𝜖 是为了保持数值稳定性而设置的非常小的常数。
TDOA的凸优化.zip
12-18
深度学习中,常用的凸优化方法有梯度下降法、随机梯度下降法(SGD)及其变种,如动量SGD、Adam等。这些算法的核心思想是沿着损失函数梯度的反方向更新模型参数,以逐步减小损失。 标签"凸优化"表明内容可能涉及凸...
BPN.rar_bpn_最优化
09-24
9. **激活函数**:选择合适的激活函数对模型性能有很大影响,如sigmoid和tanh用于连续输出,ReLU及其变种对于解决梯度消失问题更为有效。 10. **模型评估与调优**:通过交叉验证、学习曲线分析等方式评估模型性能,...
哈工大深圳现代优化方法课件
06-02
8. **机器学习中的优化**:在深度学习等领域,优化算法如随机梯度下降(SGD)及其变种(如Adam、RMSprop)起着关键作用。这部分内容会讨论这些优化技术在训练神经网络中的应用。 9. **全局优化与局部优化**:课程会...
凸优化的算法
12-13
凸优化是一种在数学和计算机科学领域中用于求解最优化问题的重要方法,特别是在机器学习、统计学和信号处理等IT领域有着广泛的应用。...掌握凸优化的原理和方法,能够帮助我们在处理各种优化问题时更加得心应手。
吴恩达,神经网络优化课后作业总结版
12-21
主要涉及的技术包括正则化、Dropout、动量梯度下降以及Adam优化器。 1. **正则化**: 正则化是一种防止过拟合的策略,通过在损失函数中加入惩罚项来限制模型的复杂度。在神经网络中,L1和L2正则化是最常见的两种...
pytorch学习笔记——优化器Adam
weixin_44598554的博客
11-03 2752
深度学习中,优化器是非常重要的一部分。它用于调整模型的参数,以此来最小化损失函数。PyTorch是一个广泛使用的深度学习框架,提供了许多优化器供我们选择。其中Adam是我们最常用的优化器之一。Adam,名字来自:(Adaptive Moment Estimation)自适应矩估计,是2014年提出的一种万金油式的优化器,使用起来非常方便,梯度下降速度快,但是容易在最优值附近震荡。竞赛中性能会略逊于SGD,但往往最简单的才是最有效的,超强的易用性使得Adam被广泛使用。
Adam优化器
cocapop的博客
03-29 5069
简单来说,Adam是带动量的梯度下降算法和RMSProp算法的结合。对梯度的一阶矩估计(First Moment Estimation,即梯度的均值)和二阶矩估计(Second Moment Estimation,即梯度的未中心化的方差)进行综合考虑,计算出更新步长。均方根传播(RMSProp)也维护每个参数的学习速率,根据最近的权重梯度的平均值(例如变化的速度)来调整。自适应梯度算法(AdaGrad)维护一个参数的学习速率,可以提高在稀疏梯度问题上的性能(例如,自然语言和计算机视觉问题)。
优化器】(六) AdamW原理 & pytorch代码解析
Lizhi_Tech的博客
07-19 1万+
在之前的文章里,我们介绍了集成一阶动量和二阶动量的优化器Adam。AdamW其实是在Adam的基础上加入了weight decay正则化,但是我们上一篇文章里也看到了Adam的代码中已经有正则化,那么两者有什么区别呢?其实AdamW和Adam唯一的区别,就是weight decay的加入方式。在Adam当中,weight decay是直接加入到梯度当中
Adam优化器(理论、公式、代码)
m0_48923489的博客
03-20 9870
Adam(Adaptive Moment Estimation)是一种广泛使用的深度学习优化算法,由 Diederik P. Kingma 和 Jimmy Ba 在 2014 年提出。它结合了动量法(Momentum)和 RMSProp 的思想,旨在通过计算梯度的一阶矩估计和二阶矩估计来调整每个参数的学习率,从而实现更高效的网络训练。
Pytorch深度学习-----优化器详解(SGD、Adam、RMSprop)
LGL
08-08 2643
在PyTorch中,优化器(Optimizer)是用于`更新神经网络参数的工具`。它`根据计算得到的损失函数的梯度来调整模型的参数`,以`最小化损失函数并改善模型的性能`。 即优化器是一种特定的`机器学习算法`,通常用于在训练深度学习模型时`调整权重和偏差`。是用于`更新神经网络参数`以最小化某个损失函数的方法。
深度学习_深度学习基础知识_Adam优化器详解
关注大家关注我
08-02 2万+
Adam优化器详解(全网最详细)
深度学习之图像处理方向与pytorch的基础知识汇总
qq_30979017的博客
03-11 1288
点开链接以后别忘了回来点个赞 o -_-! 1、GAN中用到的损失函数BCELoss 这篇文章讲的特清楚: Pytorch详解BCELoss和BCEWithLogitsLoss 2、图像质量评价指标PSNR,MSE,SSIM: 先讲PSNR和MSE: PSNR 与MSE (由于基于差剖面的简单计算不符合人类视觉系统(Human Vis...
adam优化器原理250字
05-30
Adam优化器是一种常用的基于梯度下降的优化算法,该算法可以自适应地调整学习率,从而加速深度学习模型的训练过程。其主要原理可以概括为以下三个步骤: 1.计算梯度:在每次迭代中,计算当前参数的梯度,以确定参数的变化方向。 2.计算一阶矩估计:对参数的梯度求指数加权移动平均值,得到梯度的一阶矩估计,即梯度的平均值。该步骤可以减少梯度方差对参数更新的影响。 3.计算二阶矩估计:对参数的梯度的平方求指数加权移动平均值,得到梯度的二阶矩估计,即梯度的方差。该步骤可以控制参数更新的大小,以避免步长过大或过小的问题。 通过计算一阶矩估计和二阶矩估计,Adam优化器可以自适应地调整学习率,从而在训练过程中更加高效地更新参数。此外,Adam优化器还采用了偏差修正的方法,以消除训练初期梯度估计的偏差,进一步提高了优化效果。 总之,Adam优化器是一种有效的优化算法,其原理主要涉及计算梯度、计算一阶矩估计、计算二阶矩估计以及偏差修正等步骤。通过自适应地调整学习率,Adam优化器可以加速深度学习模型的训练过程,并提高训练效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • (LaTex)CTex的初次使用心得及入门教程 202786
  • 编写C语言版本的卷积神经网络CNN之一:前言与Minst数据集 66601
  • 【深度剖析HMM(附Python代码)】1.前言及隐马尔科夫链HMM的背景 56494
  • 编写C语言版本的卷积神经网络CNN之二:CNN网络的总体结构 26586
  • (多核DSP快速入门)5.SYS/BIOS的使用实例分析 24698

分类专栏

  • 强化学习 2篇
  • 算法 1篇
  • 拍卖机制 1篇
  • C++研发面试笔记 22篇
  • 多核DSP快速入门 10篇
  • 机器学习算法笔记 7篇
  • 用Python学习Caffe 9篇
  • 特征提取 18篇
  • 论文编写
  • 网站收藏 1篇
  • 目标跟踪 1篇
  • 机器学习 32篇
  • 图像分类 2篇
  • 多核DSP 9篇
  • 深度学习 21篇
  • LeetCode 5篇
  • C++ 23篇

最新评论

  • 编写C语言版本的卷积神经网络CNN之三:CNN的误差反向传播过程

    yansuo30: 写的很好!《编写C语言版本的卷积神经网络CNN》四篇都看了,很有帮助,谢谢!

  • FAST角点检测方法详解

    weixin_57438236: 机器学习那一块讲的很混乱

  • (多核DSP快速入门)8、利用MessageQ模块的多核灰度转换程序

    金牌港c在线蒸饭: 在创建sloverCoreQueueId变量时,使用的是指针,导致下面有几个messageQ函数传入的参数有类型不匹配的情况

  • 优化问题的拉格朗日Lagrange对偶法原理

    tostq: 嗯嗯,是的,辛苦指正

  • 优化问题的拉格朗日Lagrange对偶法原理

    tostq: 嗯嗯,是的,辛苦指正

最新文章

  • 基于强化学习预算约束出价:Budget Constrained Bidding by Model-free ReinforcementLearning in Display Advertising
  • AlphaFold的原理及解读
  • Alphago Zero的原理及实现:Mastering the game of Go without human knowledge
2023年32篇
2022年1篇
2020年1篇
2017年21篇
2016年46篇
2015年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码南联网页制作坑梓企业网站建设大鹏外贸网站建设龙华阿里店铺托管大运模板推广南联如何制作网站观澜网站制作龙岗设计公司网站罗湖关键词排名包年推广南澳网站改版永湖标王广州网站建设布吉如何制作网站广州优化东莞模板制作永湖网站优化按天计费南联关键词按天收费布吉营销型网站建设爱联网站排名优化大鹏网站推广系统惠州建设网站宝安百度关键词包年推广平湖关键词排名包年推广惠州如何制作网站沙井网站改版塘坑网站建设设计大鹏企业网站建设光明百度竞价包年推广双龙网站优化福永网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化