首页 > 其他分享 >优化器:从SGD到Adam到AdamW

优化器:从SGD到Adam到AdamW

时间:2024-09-29 15:35:39浏览次数:7  
标签:AdamW weight decay 梯度 beta Adam theta SGD

1. SGD

随机梯度下降(stochastic gradient descent,SGD)

输入数据为(x, y)组成的pair,模型参数是\(W\),随机选择一批样本组成一个batch,输入模型计算loss:\(L=f(X, Y;W)\),并求出梯度,更新参数时:
\(W=W-lr*\frac{\partial L}{\partial W}\)

这就是随机梯度下降。

2. Adam

本段参考视频:https://www.bilibili.com/video/BV1NZ421s75D 建议观看视频,更好的理解Adam算法。
我们从Adam论文中抽取一张图片来解释
image

一句话概括:用之前的每一步的梯度代替当前步的梯度。举个不那么准确的例子,假如当前是第5步,前5步的梯度分别是\(g_1, g_2, g_3, g_4, g_5\),那么更新参数时,我们不用\(g_5\),而是\(g=0.1g_1+0.15g_2+0.2g_3+0.25g_4+0.3g_5\)来作为第5步的梯度。当然,这个只是一个非常粗浅的比喻,实际上融合的方法不是这么简单的加权求和。

接下来详细来说明一下,首先说明算法中各个符号的定义
\(f(\theta)\): 给定参数\(\theta\)时的损失函数,\(m_0=0\):一阶矩的初始值,\(v_0=0\):二阶矩的初始值,\(t\): 当前的step,\(alpha\):学习率,\(\beta_1, \beta_2\):两个超参数,一般取值是(0.9, 0.99)。算法主要集中在while ... end while这个循环中,一步一步说明一下:

  • \(t=t+1\):有手就能理解
  • \(g_t\leftarrow\nabla_\theta f_t(\theta_{t-1})\):用前一步的参数计算损失函数并求梯度
  • \(m_t\leftarrow\beta_1 \cdot m_{t-1}+(1-\beta_1)\cdot g_t\):使用之前的指数加权平均值和当前步的梯度计算当前步的指数加权平均值,得到一阶的估计量\(m_t\),我们希望\(m_t \approx g_t\),但是实际上这个数值并不能约等于,差别比较大,所以后面会校正一下,就会比较准确
  • \(v_t\leftarrow\beta_2 \cdot v_{t-1}+(1-\beta_2)\cdot g_t^2\):同上,计算梯度的平方的指数加权平均估计值,后面也会校正一下
  • \(\hat {m_t} \leftarrow m_t/(1-\beta_1^t)\):校正一下\(m_t\),当t比较小时这个估计值\(m_t\)和实际值\(g_t\)差异比较大,校正后就差异很小了,也就是这里可以真正认为\(\hat{m_t}\approx g_t\)
  • \(\hat {v_t} \leftarrow v_t/(1-\beta_2^t)\):校正一下\(v_t\),当t比较小时这个估计值\(v_t\)和实际值\(g_t^2\)差异比较大,校正后就差异很小了
  • \(\theta_t\leftarrow\theta_{t-1}-\alpha\cdot\hat{m_t}/(\sqrt{\hat{v_t}}+\epsilon)\):更新参数,但是梯度是用一阶估计 / 二阶估计的算数平方根

好,至此,adam介绍结束。

3. AdamW

本段参考博客:https://www.fast.ai/posts/2018-07-02-adam-weight-decay.html
英语不好的人建议阅读原博客,正好练习一下你的英语。
AdamW = Adam + Weight decay
这么简单为什么还能是一篇论文呢?原因是,大家通常都会把\(L_2\)正则化和weight decay混为一谈,实现\(L_2\)正则化时并不会真的去在损失函数上加一项,而是计算完梯度后给梯度加上weight decay。Adam刚出时,大家实现的Adam with weight decay也是计算完梯度后对梯度进行weight decay,也就是:

\(g_t\leftarrow\nabla_\theta f_t(\theta_{t-1})+\color{red}{\lambda *\theta_{t-1}}\)

AdamW认为,这是\(L_2\)正则化,但不是weight decay,因为给梯度加入的\(\color{red}{\lambda\theta_{t-1}}\)在后续经过指数加权平均,已经不是weight decay了,weight decay应该是
\(\theta_t\leftarrow\theta_{t-1}-\alpha\cdot(\hat{m_t}/(\sqrt{\hat{v_t}}+\epsilon)\color{red}{+\lambda \theta_{t-1}})\)

再来引用AdamW论文的一张图清晰看一下
image

标签:AdamW,weight,decay,梯度,beta,Adam,theta,SGD
From: https://www.cnblogs.com/wangbingbing/p/18436579

相关文章

  • adams cable 模块(一)
    本文摘要(由AI生成):本文主要介绍了在ADAMS中建立绳索的三种方法:使用Cable模块、使用宏命令和用Simulink创建PID控制联合ADAMS仿真。第一讲:先介绍adams中cable模块如何建立绳索 第二讲:介绍如何用宏命令创建绳索第三讲:用simulink创建PID控制联合adams仿真附参考文献《基......
  • 大模型微调j技术:GaLore、BAdam、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-D
    引言1.1大模型微调的重要性随着人工智能技术的飞速发展,大型语言模型(LLMs)如GPT-3、BERT等已经成为自然语言处理(NLP)领域的核心技术。这些模型通过在大规模文本数据上的预训练,掌握了丰富的语言知识和统计特征。然而,尽管这些预训练模型在通用任务上表现出色,但在特定任务或领......
  • 【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSS算法的Demosaic
    Demosaic,中文直接发翻译为去马赛克,但是其本质上并不是去除马赛克,这让很多第一次接触这个名词或者概念的人总会想的更多。因此,一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道,这样可以减少采集量,降低成本,由于人的视觉对绿色最为敏感,所以一般情况下,绿色分量会比红色......
  • Adams2021软件中文版Adams2020下载安装教程全版本
    Adams是一款功能强大的多体系统动力学仿真软件,主要具有以下特点:1.精确的刚体动力学求解器,可以对机械系统的运动进行高保真仿真。2.内置丰富的关节运动学库,大大简化了机构建模过程。3.强大的控制系统建模功能,可以对机电一体化系统进行仿真。4.先进的仿真后处理工......
  • Adam-mini Use Fewer Learning Rates To Gain More
    目录概Adam-mini代码ZhangY.,ChenC.,LiZ.,DingT.,WuC.,YeY.,LuoZ.andSunR.Adam-mini:Usefewerlearningratestogainmore.arXivpreprint,2024.概作者提出一种简化的optimizer,在取得和Adam相媲美的性能的同时,只需要一半的内存开销.Adam-mini......
  • BAdam A Memory Efficient Full Parameter Optimization Method for Large Language M
    目录概BAdam代码LuoQ.,YuH.andLiX.BAdam:Amemoryefficientfullparameteroptimizationmethodforlargelanguagemodels.arXivpreprint,2024.概本文介绍了一种Blockcorrdinatedescent(BCD)的训练方式.BAdam当模型本身很大的时候,训练它会成为一......
  • S2 - Lesson 57 - Can I help you, madam?
     ContentDidthewomangetwhatshewanted?  Awomaninjeansstoodatthewindowofanexpensiveshop.Thoughshehesitatedforamoment,shefinallywentinandaskedtoseeadressthatwasinthewindow.Theassistantwhoservedherdidnotlikethe......
  • 优化器Adam在非凸情况下证明为什么要用期望平方梯度范数$E[||\nabla f(x_k)||^2]$这
    如下内容由chatgpt生成在非凸优化问题中,使用期望平方梯度范数(E[|\nablaf(x_k)|^2])作为收敛性分析的指标有几个重要原因。以下是详细的解释:1.非凸优化问题的复杂性在非凸优化中,目标函数(f(x))可能存在多个局部最优解,甚至是鞍点、平坦区域等复杂的几何结构。相较于......
  • 安川伺服驱动器 SGDB-05ADG
    安川伺服驱动器维修经验总结:1、示波器检查驱动器的电流监控输出端时,发现它全为噪声,无法读出;故障原因:电流监控输出端没有与交流电源相隔离(变压器)。处理方法:可以用直流电压表检测观察。2、电机在一个方向上比另一个方向跑得快;(1)故障原因:无刷电机的相位搞错。处理......
  • Stochastic Gradient Descent (SGD) 原理与代码实战案例讲解
    StochasticGradientDescent(SGD)原理与代码实战案例讲解关键词:SGD(随机梯度下降)最小化损失迭代优化机器学习深度学习1.背景介绍1.1问题的由来在机器学习和深度学习领域,优化算法用于最小化模型预测与实际结果之间的误差,也就是损失函数。最小化损失是许多算法......