【机器学习】【深度学习】优化器(Optimizer)

一、概述

什么是优化器?

优化器(Optimizer)是深度学习中的一个核心的概念,用于更新神经网络的权重,以减少或最小化损失函数(loss function)的值。损失函数衡量了模型的预测值与真实值之间的差异,而优化器的目标是通过调整网络参数来最小化这个差异,从而提高模型的准确性和性能。

在神经网络训练过程中,优化器在反向传播过程中起着至关重要的作用。反向传播计算了损失函数相当于模型参数的梯度(即损失函数的导数),优化器则使用这些梯度来更新模型的参数。

为什么使用优化器?

  1. 使用优化器可以提高模型的准确性。优化器通过调整模型的权重和偏置,以最小化损失函数,从而提高模型二点准确性。
  2. 改善学习速率。优化器能够根据损失函数的梯度调整学习速率,帮助模型更好地学习,同时避免在训练过程中陷入局部最小值。
  3. 提高训练效率。优化器的选择对模型的训练素的和最终性能有着很大的影响。不同的优化器可能适合不同的任务,和数据集。

二、常见的优化器用处及应用场景

批量梯度下降(BGD)

批量梯度下降(BGD)(Batch Gradient Descent):BGD是最原始的梯度下降方法,每次迭代使用全部训练数据来计算损失函数的梯度,并更新模型参数。

应用场景与特点:

  • 小型数据集;
  • 准确性高;
  • 全局最优解;
  • 收敛速度不是关键因素;
  • 不适用大型数据集,因为计算成本太高了。

img

随机梯度下降(SGD)

随机梯度下降(SGD)(Stochastic Gradient Descent):是一种优化模型的算法,SGD每次迭代只随机选择一个样本来计算损失函数的梯度,并更新模型参数。因此其计算量最小,更新速度最快,但是会引发一些随机性。与BGD相比,在大数据集上SGD的优势格外明显。

应用场景与特点:

  • 深度学习模型训练:SGD优化器常用于训练神经网络模型,包括卷积神经网络(CNN),循环神经网络(RNN),生成对抗网络(GAN)等;
  • 大规模的数据集:SGD优化器通常比传统的批量梯度下降(Batch Gradient Descent)更具优势。因为SGD每次只使用部分样本计算梯度,减少了计算开销,因此适合大规模数据。

img

小批量梯度下降(MBGD)

小批量梯度下降(MBGD)(Mini-Batch Gradient Descent):是批量梯度下降(BGD)与随机梯度下降(SGD)的这种方案,即在每一次迭代中使用一小批数据而不是全部数据来更新模型参数。

就是将训练数据集按照较小的批次分割,每次迭代时从这些批次中随机抽取一个进行计算并更新模型参数。这个在训练过程中,每次迭代计算量较小,同时兼顾准确性和随机性,有利于加快收敛速度。

应用场景与特点:

  • 大规模数据集,高纬度特征空间,如图像分类,等等;
  • 训练深度学习模型,卷积神经网络(CNN),循环神经网络(RNN)等,因为这些模型通常需要大量的数据来进行训练,而且MBGD能很好的接受大规模数据集。

img

优化器名称BGDSGDMBGD
优点1. 准确性高 2. 对梯度的估计是无偏的。样例越多,标准差越小。 3. 一次迭代是对所有样本进行计算,此时适用向量化进行操作,实现了并行。(向量化操作,可以参考Numpy的矩阵计算,无需进行for循环)1. 只用一个数据梯度更新快. 2. 更新时loss比较动荡,可能会跳出局部最优点,到一个更好的局部最优。结合了BGD,SGD的优点。
缺点1. 可能对内存要求高 2. 大规模数据集时,计算耗费太大 3. 每次的更新都是在遍历全部样例之后,这时会发现一些样例对于模型参数的更新是没有大用处的。因为每次更新只用一个数据梯度,loss比较动荡,所以比较难收敛到一个准确的极小值,需要调整学习率。1. 收敛速度慢;2. 需要选择合适的批次;3. 内存需求;4. 需要合适的学习率;
使用场景小型数据集,模型简单;准确性高;全局最优解(凸函数最好);并行计算大规模数据。大规模数据;高纬度特征空间。

img

动量(Momentum法)

动量法(Momentum):在深度学习中是一种常用的优化算法,它的作用主要是减少训练过程中的摆动,加速收敛,并帮助模型摆脱局部最小值区域。概念上,动量法通过引入一个累计梯度的指数加权平均,将过去的梯度信息考虑进当前的参数更新中,从而增加稳定性和提高训练效率。

应用场景与特点:

  • 用来改进一些优化器,比如随机梯度下降(SGD),小批量梯度下降(MBGD);
  • 一些训练过程中摆动较大的模型,可以减少摆动。

SGD是每次选择一个数据进行梯度更新,loss经常反复震荡,这就好比这辆车每开一步就换一个司机(数据产生的梯度),每个司机的想法都不同。

而Momentum虽然使得SGD每一步都要换司机,但是,新的司机必须参考上一个司机的意见(主要是近几次),这样即使在局部最优,新司机觉得应该停止,但是前几位司机认为都应该冲过去,这时新司机就会冲过去,这就避免了局部最优。

img

NAG(Nesterov Accelerated Gradient)

NAG(Nesterov Accelerated Gradient):是一种在动量法(Momentum)基础上进行改进的优化算法。它的作用主要是提高训练过程中的收敛速度和稳定性。概念上,NAG先按照之前的动量更新参数,再在这个新的位置计算梯度,并根据此调整更新方向,从而减少摆动,加快收敛。

应用场景与特点:

  • 用来改进一些优化器,比如随机梯度下降(SGD),小批量梯度下降(MBGD);
  • 一些训练过程中摆动较大的模型,可以减少摆动;

img

Adagrad(Adaptive Gradient)

Adagrad(Adaptive Gradient):是一种自适应梯度下降的优化器,它对不同参数使用不同的学习率,对于更新频率较低的参数施以较大的学习率,对于更新频率较高的参数使用较小的学习率。通过调整每个参数的学习率,使得模型能够更快的收敛到最优解。

应用场景与特点:

  • 大规模的数据集:Adagrad通过自适应调整学习率,减少了在大规模数据集上手动调参的工作量;
  • 特征提取:在图像识别和处理任务中,Adagrad可以加速模型对重要视觉特征的学习,尤其是在处理高纬度和稀疏的特征向量时。

img

Adam

Adam(Adaptive Moment Estimation):是一种梯度下降算法的变体,用于更新神经网络的权重,它结合了AdaGrad和Momemtum两种优化算法的优点,能够快速收敛并且减少训练时间。Adam优化器计算出每个参数的独立自适应学习率,不需要手动调整学习率的大小,因此在实践中被广泛应用(一阶矩估计,二阶矩估计)。

应用场景与特点:

  • 处理大规模的数据:Adam优化器因为其计算效率搞而特别适合处理大规模数据。他能够在有限的计算资源下快速迭代更新神经网络权重,这对于处理大型数据集至关重要;
  • 训练复杂模型:对于复杂模型,比如神经网络,Adam能够提供稳定而快速的收敛性能。

在训练过程中,loss值越来越小,说明了Adam优化器性能高。

img

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

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

相关文章

CPU内部结构窥探·「3」

加法器的工作原理:从简单的逻辑到现代计算 我们在cpu内部结构窥探「1」中提到CPU内部ALU的核心部件就是运算器,今天就以加法器为例,来讲解我们ALU中算数逻辑运算的过程。 1.认识数字电路中的各种门电路 2. 什么是加法器? 加法器…

Web UI自动化测试_Selenium+Python

一、概述: 1.1 Selenium是什么 Selenium 是一个基于浏览器的自动化工具,可以跨平台、跨浏览器使用。 Selenium 主要包括三部分: 1、Selenium IDE: Firefox 浏览器的一个插件(扩展),它可以进行…

如何检测UV胶的均匀性?

如何检测UV胶的均匀性? 检测UV胶的均匀性可以通过以下几种方法来实现: 肉眼目视检查: 这是最简单直接的方法。将UV胶涂在表面上,使用裸眼观察胶层的表面。特别注意是否存在气泡、颜色不均匀、裂纹或其他明显的不均匀性。如凹凸不…

异步复位和同步释放

文章目录 前言一、为什么需要复位呢?二、同步复位1. 同步复位定义2. 同步复位的实现3. 同步复位的优点和缺点同步复位优点同步复位缺点 三、异步复位1. 异步复位定义2. 异步复位的实现3. 异步复位的优点和缺点异步复位优点异步复位缺点 四、异步复位同步释放1. reco…

Html/HTML5常用标签的学习

课程目标 项目实战,肯定就需要静态网页。朝着做项目方式去学习静态网页。 01、编写第一个html工程结构化 cssjsimages/imgindex.html 归档存储和结构清晰就可以。 02、HTML标签分类 认知:标签为什么要分类,原因因为:分门别类…

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…

【计算机网络】对应用层协议中HTTPS协议的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

Oracle的优化器

sql优化第一步:搞懂Oracle中的SQL的执行过程 从图中我们可以看出SQL语句在Oracle中经历了以下的几个步骤: 语法检查:检查SQL拼写是否正确,如果不正确,Oracle会报语法错误。 语义检查:检查SQL中的访问对象…

【C++】用红黑树封装map、set

用红黑树封装map、set 1. 红黑树1.1 模板参数的控制1.1.1 Value1.1.2 KeyOfValue 1.2 正向迭代器1.2.1 构造函数1.2.2 begin()end()1.2.3 operator()1.2.4 operator--()1.2.5 operator*()1.2.6 operator->()1.2.7 operator()1.2.8 operator!()1.2.9 总代码 1.3 反向迭代器1.…

规则引擎-Easy rule

规则引擎-Easy rule 最近有几个项目中都出现了根据XX条件执行XX方法的业务,在动手之前脑中总会下意识的发现如果按照常规的去写代码,无论使用何种设计模式,都会出现不同程度上的代码冗余或大量if-else判断。 甚至说判断XX条件的代码和执行X…

2024中国大学计算机科学与技术专业排名(非常详细)零基础入门到精通,收藏这一篇就够了

今天 6 月 8 号,高考第二天,随着大部分地区的高考结束,接下来就是焦急的等待分数的公布,然后学生们就迎来人生中的一个重要时刻——选择大学和专业。 在众多专业中,计算机科学与技术一直是备受瞩目的热门选择&#xf…

【爬虫】使用Python爬取百度学术页面的标题、作者、摘要和关键词

目录 安装所需库编写爬虫代码解释运行脚本结果 在本文中,我将介绍如何使用Python编写一个网络爬虫,从百度学术页面提取研究论文的标题、作者、摘要和关键词。我们将使用 requests和 BeautifulSoup库来实现这一目标。 安装所需库 首先,确保…

uniapp引入uview无代码提示

前提安装正确: 无论是基于npm和Hbuilder X方式安装,一定要配置正确。 解决办法 以前在pages.json里面的写法: "easycom": {"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" }但是现在hbuilderx要求规范ea…

驱动开发之 input 子系统

1.input 子系统介绍 input 就是输入的意思,input 子系统就是管理输入的子系统,和 pinctrl、gpio 子系统 一样,都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠标、触摸屏等 等这些都属于输入设备,不同的输入…

Redis到底支不支持事务?

文章目录 一、概述二、使用1、正常执行:2、主动放弃事务3、全部回滚:4、部分支持事务:5、WATCH: 三、事务三阶段四、小结 redis是支持事务的,但是它与传统的关系型数据库中的事务是有所不同的 一、概述 概念: 可以一次执行多个命令,本质是一…

《解决方案架构师修炼之道》读书笔记

1. 水在前面 第一次看到“解决方案架构师”这个词,就把这本书借回家翻了。最近也在网上看点资料,对比起来发现还是出版物内容更完整和更有体系,而且看书真的能让人安静下来。。。 《解决方案架构师修炼之道》所罗伯死里瓦斯塔瓦,内…

每天五分钟深度学习pytorch:pytorch中的广播机制是什么?

本文重点 在pytorch中经常有张量和张量之间的运算,那么有一点需要注意,那就是维度要匹配,如果维度不匹配就有可能出现问题。如果维度不一致,此时也可以同时进行操作,此时就需要使用pytorch中的广播机制,本节课程就讲解pytorch中的广播机制。 广播机制示意图 如上就是py…

RK3568技术笔记之三 SAIL-RK3568开发板板卡功能测试

从这里开始,就是老生常谈系列之一:板卡功能测试。 放一张图镇一下帖 按照我自己顺手的方式,把这板子功能测一下。 先把开发板串口信息打印出来。 工具 功能 备注 电脑(必备) 提供使用终端软件环境 需要具备至少…

【ArcGIS微课1000例】0117:ArcGIS中如何将kml(kmz)文件转json(geojson)?

文章目录 一、kml获取方式二、kml转图层三、图层转json一、kml获取方式 kml文件是一种很常用的数据格式,可以从谷歌地球(googleearth)获取某一个地区的kml范围文件,如青海湖(做好的kml文件可以从配套实验数据包0117.rar中获取)。 二、kml转图层 打开【KML转图层】工具,…