11 优化器

news2024/11/26 4:38:59

目录

1. 随机梯度下降系优化器:SGD

1.1 算法种类

1.2 优缺点 

2 SGDM 即为SGD with momentum 动量

2.1 公式

2.2 动量的优缺点

优点

缺点

2.3 使用场景

 3 AdaGrad

3.1 公式

3.2 AdaGrad的优缺点

优点

缺点

3.3 使用场景

3.4 Adam

3.4.1 Adam优化器的公式

3.4.2 Adam优化器的优缺点

优点

缺点

3.4.3 使用场景

4  怎么选择优化器


        昨天在计算大模型微调占用内存,然后看到优化器Adam占用两倍的模型参数(一阶矩、二阶矩),仔细思考没想明白,今天把优化器的内容补充下;

        优化器在机器学习和深度学习中扮演着至关重要的角色,它们负责更新模型的参数以最小化损失函数。优化器基于训练数据和模型预测的误差,调整模型参数,使模型更好地拟合数据。

1. 随机梯度下降系优化器:SGD

        SGD全称Stochastic Gradient Descent,随机梯度下降,1847年提出。每次选择一个mini-batch,而不是全部样本,使用梯度下降来更新模型参数。它解决了随机小批量样本的问题,但仍然有自适应学习率、容易卡在梯度较小点等问题。

核心思量:就是每次随机挑一个或者一组(mini-batch)数据来优化神经网络的参数。有大佬证明过,这种方式可以近似地等价于原始的梯度下降法。采用SGD的好处就是可以在保证精度的同时降低计算量,让神经网络可以应用于更大规模的数据上。

假设我们有参数向量 𝜃,损失函数为 𝐿,学习率为 𝜂(eta),并且 𝜃𝑗是参数向量中的第 𝑗个元素。SGD更新规则可以表示为:

其中:

  • 𝜃𝑗是参数向量 𝜃 中的第 𝑗个参数。
  • 𝜂 是学习率,控制更新步长的大小。这个是超参数,需要预先设定的,一般小于1;
  • ∇𝜃𝐿(𝜃;𝑥𝑖,𝑦𝑖) 是损失函数 𝐿关于参数 𝜃 的梯度,该梯度是在样本 (𝑥𝑖,𝑦𝑖)上计算的。

1.1 算法种类

1.SGD是最基本的随机梯度下降,它是指每次参数更新只使用一个样本,这样可能导致更新较慢。

2.Batch-SGD是批随机梯度下降,它是指每次参数更新使用所有样本,即把所有样本都代入计算一遍,然后取它们的参数更新均值,来对参数进行一次性更新,这种更新方式较为粗糙;需要更多的内存。

3.Mini-Batch-SGD是小批量随机梯度下降,它是指每次参数更新使用一小批样本,这批样本的数量通常可以采用trial-and-error的方法来确定,这种方法被证明可以有效加快训练速度。

1.2 优缺点 

  • 优点:计算效率高,容易跳出局部最小值。
  • 缺点:由于每次迭代只使用一小部分数据,更新方向可能不稳定。当遇到局部最优点或鞍点时,梯度为0,无法继续更新参数;

2 SGDM 即为SGD with momentum 动量

  • 原理:动量优化器在SGD的基础上增加了一个动量项,使得更新过程更加平滑,减少震荡,加速收敛。

  • 优点:有助于更快地收敛到最优解,特别是在非凸或噪声较大的损失函数中。

提出背景:SGD可能会在垂直方向上产生大幅度的振荡,这会导致训练过程变得非常慢,因为模型需要花费很多迭代来克服这些振荡。此外,在鞍点附近,SGD也可能会陷入停滞,这是因为梯度可能非常小。

思想:来源于物理学中的惯性原理,即物体倾向于保持其运动状态不变。在优化算法中,动量有助于平滑参数更新,减少振荡,加快收敛速度,并帮助模型更快地穿过鞍点。

2.1 公式

        动量始终使用的是梯度的信息,只不过在更新参数的时候,不仅使用了当前的梯度,同时前一步的梯度也参与了计算。

训练过程中模型内存使用: 模型参数P+梯度P+动量参数P

        设 𝑣𝑡 是动量项,𝛾 是动量系数(通常设置为0.9),𝜂是学习率,∇𝜃𝐿(𝜃)是损失函数关于参数 𝜃θ 的梯度。动量更新规则如下:

其中:

  • 𝑣𝑡​ 是在时间步 𝑡的动量项(梯度的变种),它是一个累积梯度的加权和。
  • 𝛾 是介于0和1之间的动量系数,决定了前一次梯度的影响程度。
  • 𝜂是学习率,控制参数更新的幅度。
  • ∇𝜃𝐿(𝜃) 是在当前参数 𝜃 下损失函数的梯度。

2.2 动量的优缺点

优点
  • 加速收敛:动量有助于加速在平坦区域的收敛,因为一旦算法确定了正确的方向,它就会沿该方向持续前进,减少在垂直方向上的振荡。
  • 改善稳定性:在训练过程中,动量可以平滑更新过程,减少因随机梯度造成的波动。
  • 逃逸鞍点:动量有助于模型更快地逃离鞍点,因为即使在梯度很小的地方,动量也能推动参数更新。
缺点
  • 可能过冲:如果动量设置得过高,算法可能会在最小值附近过冲,导致模型在最小值附近振荡,不能稳定收敛。
  • 动态调整困难:动量系数和学习率的选择可能需要通过实验来确定,而且可能需要随训练过程进行调整,这增加了训练的复杂性。

2.3 使用场景

  • 当训练数据集很大时,SGD的随机性可能会导致更新方向不稳定,动量可以帮助平滑这个过程。
  • 当损失函数表面具有许多局部最小值或鞍点时,动量可以帮助模型更快地穿越这些区域。
  • 在深度学习中,特别是在训练深度神经网络时,动量常被用来加速收敛和提高稳定性。

 3 AdaGrad

        AdaGrad(Adaptive Gradient)算法是为了解决传统随机梯度下降(SGD)在优化过程中的一些局限性而提出的。在SGD中,所有参数都共享同一个全局学习率,这意味着无论参数的特性如何,它们的更新步长都是一样的。然而,在实践中,不同的参数可能需要不同的更新步长来更有效地收敛。例如,一些参数可能需要更小的步长以避免在最小值附近振荡,而另一些参数可能需要更大的步长来加速收敛。

        AdaGrad的提出正是为了适应不同参数的特性,通过为每个参数分配一个自适应的学习率,从而在优化过程中自动调整每个参数的更新步长。这样,AdaGrad能够在处理稀疏数据时表现得更为优秀,因为在稀疏数据中,某些参数可能很少更新,而AdaGrad可以为这些参数提供较大的学习率,以确保它们能够及时地进行有效的更新。

  • 原理:AdaGrad为每个参数维护一个历史梯度的累积平方和,然后基于这个累积和动态调整学习率。
  • 优点:自适应学习率,对稀疏数据有效。
  • 缺点:历史梯度的累积可能导致学习率过快衰减。

3.1 公式

g_{i,j}^2是参数 𝜃𝑗​ 在时间步 𝑡的梯度平方,𝐺𝑡,𝑗 是从开始到时间步 𝑡 所有梯度平方的累加和,𝛼 是初始学习率,𝜖 是一个很小的正数(为了防止除数为零)。

在时间步 𝑡,AdaGrad的更新公式为:梯度越大迭代的步长越小;

在AdaGrad中,如果某个参数的历史梯度平方累积和 G_{i,j}较大,意味着该参数在过去的迭代中收到的梯度较大或较多,那么在接下来的迭代中,该参数的学习率会相应减小,即 \frac{\alpha }{\sqrt{G_{i,j}+\varepsilon }}​ 减小。因此,虽然单次梯度 𝑔𝑡,𝑗可能很大,但由于学习率的减小,实际的更新步长可能并不会很大。

3.2 AdaGrad的优缺点

优点
  • 自适应学习率:AdaGrad为每个参数提供自适应的学习率,这使得它在处理稀疏数据时特别有效。
  • 处理稀疏特征:对于在训练过程中很少更新的参数,AdaGrad能够给予较大的学习率,帮助它们更快地收敛。
缺点
  • 学习率衰减过快:AdaGrad的学习率会随着训练的进行而单调递减,这可能导致学习率过早地变得太小,从而阻碍模型的进一步改进。
  • 存储成本:AdaGrad需要为每个参数存储一个梯度平方的累加和,这会增加内存的使用。

3.3 使用场景

        AdaGrad非常适合于处理稀疏数据和具有大量零值或极少更新的特征的情况。例如,在自然语言处理(NLP)任务中,词嵌入矩阵往往非常稀疏,AdaGrad能够为不常见的词提供更大的学习率,有助于它们更快地学习到有意义的表示。

        在深度学习中,AdaGrad可能不是最优选择,特别是在需要长时间训练的模型中,因为它的学习率衰减问题可能会导致训练后期的收敛速度变慢。然而,对于那些数据集较小或特征稀疏的任务,AdaGrad仍然是一个值得考虑的优化算法。在实际应用中,AdaGrad经常被更先进的自适应优化算法如Adam和RMSprop所取代,这些算法在学习率调整方面提供了更好的性能。

3.4 Adam

        Adam优化器(Adaptive Moment Estimation)由Diederik P. Kingma和Jimmy Ba在2014年提出,旨在结合AdaGrad和RMSprop的优点,同时解决它们的一些缺点。AdaGrad能够自适应地调整学习率,但在训练后期学习率会过快衰减;RMSprop通过使用滑动平均来解决AdaGrad的这一问题,但在处理稀疏数据时效果不佳。Adam试图提供一个更全面的解决方案,既能处理非稀疏数据,又能处理稀疏数据,并且能够自适应地调整每个参数的学习率。

3.4.1 Adam优化器的公式

        Adam优化器结合了一阶矩估计(即动量)和二阶矩估计(类似于RMSprop)。它维护了两个滑动平均值,分别是梯度的一阶矩(即梯度的均值)和梯度的二阶矩(即梯度平方的均值)。

        设 𝜃 是参数向量,𝛽1 和 𝛽2是两个超参数,分别用于控制一阶和二阶矩估计的指数衰减率,𝛼 是学习率,𝜖 是一个很小的正数,用于防止除数为零。

        β1​ 的默认值是 0.9,而 𝛽2的默认值是 0.999。

一阶矩估计:(其实就是动量)当前梯度与前面梯度(动量)的加权平均。

一阶矩估计:(学习率调节器)当前梯度平方与前面梯度(动量)平方的加权平均。

  • 一阶矩的偏差校正\beta_1^t是 𝛽1 的 𝑡次幂,它表示了从算法开始到当前时间步 𝑡的所有历史一阶矩估计的衰减累积效应。在初始迭代时,这个值接近于0,但随着迭代次数增加,它会逐渐接近1。通过除以 1-\beta_1^t,偏差校正确保了 m_t的估计更加准确,尤其是在迭代开始时。

  • 二阶矩的偏差校正:类似的,\beta_2^t是 𝛽2​ 的 𝑡 次幂,它表示了所有历史二阶矩估计的衰减累积效应。由于 𝛽2​ 通常设置得更接近于1(如0.999),它的 𝑡次幂在迭代初期会非常小,导致 \bar{v}_t的值在开始时可能很大。偏差校正通过除以1-\beta_2^t 来调整这个估计,确保它更接近于真实值。

3.4.2 Adam优化器的优缺点

优点
  • 自适应学习率:为每个参数提供自适应的学习率,能够处理稀疏和非稀疏数据。
  • 快速收敛:在实践中,Adam通常能够比传统的SGD更快地收敛。
  • 简单易用:相比其他自适应优化算法,Adam的超参数设置较为直观,且通常不需要大量的调参即可获得良好效果。
  • 鲁棒性强:Adam对学习率的选择相对不敏感,且在不同的任务和模型上表现出较好的泛化能力。
缺点
  • 可能在非凸问题中收敛到次优解:虽然Adam在许多任务中表现良好,但在某些非凸优化问题中,它可能无法找到全局最优解。
  • 偏差校正:虽然Adam通过偏差校正来减轻初始迭代时的偏差问题,但这种校正可能在某些情况下引入额外的复杂性。

3.4.3 使用场景

        Adam优化器因其优秀的性能和广泛的适用性,已经成为深度学习中最为流行的优化算法之一。它在各种场景下都能提供良好的优化效果,包括但不限于:

  • 计算机视觉:在图像识别、目标检测和图像生成等任务中。
  • 自然语言处理:在文本分类、机器翻译和文本生成等领域。
  • 推荐系统:在个性化推荐和广告投放的模型训练中。
  • 强化学习:在智能体的学习和决策制定中。

总的来说,Adam优化器因其灵活性和高效性,成为了深度学习模型训练的首选优化算法。

4  怎么选择优化器

        五大优化器其实分为两类,SGD、SGDM,和Adagrad、RMSProp、Adam。使用比较多的是SGDMAdam

        如上所示,SGDM在CV里面应用较多,而Adam则基本横扫NLP、RL、GAN、语音合成等领域。所以我们基本按照所属领域来使用就好了。比如NLP领域,Transformer、BERT这些经典模型均使用的Adam,及其变种AdamW。

        SGDM训练慢,但收敛性更好,训练也更稳定,训练和验证间的gap也较小。而Adam则正好相反。

ref:

https://zhuanlan.zhihu.com/p/208178763

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

倒计时:60秒后再输入验证码

思路1:每隔 1 秒种减 1 ,直到减到 0 为止。可以写成公用方法。亲测有效。 countDown(){ const TIME_COUNT 60; if (!this.timer) { this.count TIME_COUNT; this.codeShow false; this.timer setInterval(() > { if (this.count > 0 &&…

苹果密码解锁工具已注册专业版_不限制电脑

Aiseesoft iPhone Unlocker:轻松解锁iPhone。功能强大:一键移除4位、6位密码、Touch ID和Face ID。隐私保护:创建密码,安全无忧。数据提醒:解锁时,注意数据和设置将被清除。Apple ID 解锁:快速删…

【Spring Boot教程:从入门到精通】掌握Spring Boot开发技巧与窍门(三)-配置git环境和项目创建

主要介绍了如何创建一个Springboot项目以及运行Springboot项目访问内部的html页面!!! 文章目录 前言 配置git环境 创建项目 ​编辑 在SpringBoot中解决跨域问题 配置Vue 安装Nodejs 安装vue/cli 启动vue自带的图形化项目管理界面 总结 前言 …

Qt基础 | TCP通信 | TCP服务端与客户端程序设计 | QTcpServer | QTcpSocket

文章目录 一、TCP 通信1.TCP 通信概述2.TCP 服务器端程序设计2.1 主窗口定义与构造函数2.2 网络监听与 socket 连接的建立2.3 与 TCP 客户端进行数据通信 3.TCP 客户端程序设计3.1 主窗口定义与构造函数3.2 与服务器端建立 socket 连接3.3 与 TCPServer 的数据收发 4.小结 Qt 网…

[Docker][Docker Image]详细讲解

目录 1.Docker镜像是什么?2.Docker镜像加载原理1.bootfs2.rootfs3.为什么CentOS镜像几个G,而Docker CentOS镜像才几百M?1.CentOS2.Docker CentOS 3.镜像分层1.Union FS2.分层理解3.容器层 vs 镜像层 4.镜像命令1.docker images2.docker image…

大数据信用报告查询会不会留下查询记录?怎么选择查询平台?

最近有不少网友都在咨询一个问题,那就是大数据信用报告查询会不会留下查询记录,会不会对自己的征信产生影响,下面本文就详细为大家介绍一下,希望对你了解大数据信用有帮助。 首先、大数据信用与人行征信是独立的 很多人只知道人行…

innovus:如何only select highlighted

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 来自星球提问; 1)ICC2 2)innovus View->Set Preference,勾选Only Select Highlighted

新装centos7虚拟机如何配置网络,NAT配置固定IP

首先声明,我想使用的是NAT连接模式,并且设置完IP之后,使得这个IP固定住,以后不会再变了。 文章目录 1,打开Vmware软件的【编辑】-【虚拟网络编辑器】2,先选择VMnet8(画1处)&#xf…

2025上海国际显示技术及应用创展览会

DIC EXPO2025中国(上海)国际显示技术及应用创展览会 时间:2025年8月7-9日 地点:上海新国际博览中心 主办单位: 中国光学光电子行业协会液晶分会 联合主办: 中国电子材料行业协会 中国电子商会 韩国…

嵌入式人工智能(32-基于树莓派4B的旋转编码器-EnCoder11)

1、旋转编码器 旋转编码器是一种输入设备,通常用于测量和控制旋转运动。它由一个旋转轴和一系列编码器组成。旋转编码器可以根据旋转轴的位置和方向来测量旋转角度,并将其转化为电子信号输出。 旋转编码器通常分为两种类型:绝对值编码器和增…

【微服务】Spring Cloud Gateway

文章目录 强烈推荐引言主要功能关键概念示例配置依赖添加常见的几种整合案例1. 与 Spring Cloud Eureka 整合2. 与 Spring Cloud Config 整合3. 与 Spring Cloud Sleuth 和 Zipkin 整合4. 与 Spring Cloud Security 整合5. 与 Resilience4j 整合6. 与 Redis 整合 结论强烈推荐专…

Matlab编程资源库(19)级数与符号方程求解

一、级数符号求和 求无穷级数的和需要 符号表达式求和函数 symsum ,其调用 格式为: symsum(s,v,n,m) 其中 s 表示一个级数的通项,是一个符号表达式。 v 是求和变 量, v 省略时使用系统的默认变量。 n 和 m 是求和的开始项 和…

如何恢复WPS文档中未保存或删除的文件

由于各种原因,您可能会丢失 WPS 文档,例如意外删除、硬盘格式化、病毒攻击等。您是否遇到过丢失未保存的 WPS 文件的情况?您知道如何恢复 WPS 文档中未保存的文件吗? WPS Office 是一款办公套件,可以作为 Microsoft O…

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 作者:王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台,基于字节跳动数据平台多年的“数据…

一个私有化的中文笔记工具个人知识库,极空间Docker部署中文版『Trilium Notes』

一个私有化的中文笔记工具&个人知识库,极空间Docker部署中文版『Trilium Notes』 哈喽小伙伴们好,我是Stark-C~ 最近被很多小伙伴问到NAS上的笔记工具,虽说之前也出过Memos,刚开始用起来还不错,但是用了一段时间…

W1R3S靶机全通详细教程

文章目录 w1r3s主机发现主机扫描 端口扫描tcp端口扫描UDP扫描漏洞扫描 攻击面分析FTP渗透匿名登录 web渗透目录爆破 cuppa cms文件包含漏洞getshell提权 w1r3s 引言 近些日子看红笔大佬的靶机精讲视频时,他的一句话让我感受颇深,很多视频在讲解时&…

《Windows API每日一练》23.1 Windows多媒体

本节我们将讲述单线程到多线程的演进过程,以及进程与线程的区别。 本节必须掌握的知识点: 多媒体硬件 API 概述 第172练:交互输入MCI命令 23.1.1多媒体硬件 多媒体硬件是指用于处理音频、视频和其他多媒体内容的硬件设备。在计算机系统中&…

迈尔沃护眼大路灯怎么样?书客、迈尔沃、霍尼韦尔护眼灯测评PK!

迈尔沃护眼大路灯怎么样?作为一名专业的实测博主,温馨提示大家,虽然护眼落地灯是个好东西,它能够提供柔和舒适的环境光,减少对眼睛的伤害,但是千万别乱买跟风,盲目入手踩雷率80%以上。那么如何辨…

SpringBoot集成 Druid 连接池及监控配置详解

Spring Boot 集成 Druid 连接池及监控配置详解 Spring Boot 是当前 Java 开发中的热门框架,而在数据库连接池的选择上,Druid 因其性能和功能强大也备受青睐。在这篇文章中,我们将深入探讨如何在 Spring Boot 项目中集成 Druid 连接池&#x…

大厂linux面试题攻略二之Linux系统管理

一、Linux系统管理权限优化类 1.简述Linux权限划分原则(经验类) 文件权限: 默认权限: 特殊权限; ACL权限: sudo授权: 文件系统属性权限: 解题思路: 注意权限分离(Linux系统…