深度学习优化器

news2024/10/5 16:32:08

1、什么是优化器

   优化器用来寻找模型的最优解。

2、常见优化器

2.1. 批量梯度下降法BGD(Batch Gradient Descent)

 2.1.1、BGD表示

      BGD 采用整个训练集的数据来计算 cost function 对参数的梯度:

  • 假设要学习训练的模型参数为W,代价函数为J(W),则代价函数关于模型参数的偏导数即相关梯度为ΔJ(W),学习率为ηt,则使用梯度下降法更新参数为:

    Wt+1=Wt−ηtΔJ(Wt)

    其中,Wt表示tt时刻的模型参数。
  • 从表达式来看,模型参数的更新调整,与代价函数关于模型参数的梯度有关,即沿着梯度的方向不断减小模型参数,从而最小化代价函数。
  • 基本策略可以理解为”在有限视距内寻找最快路径下山“,因此每走一步,参考当前位置最陡的方向(即梯度)进而迈出下一步。

2.1.2、BGD优缺点

  • 训练速度慢:每走一步都要要计算调整下一步的方向,下山的速度变慢。在应用于大型数据集中,每输入一个样本都要更新一次参数,且每次迭代都要遍历所有的样本。会使得训练过程及其缓慢,需要花费很长时间才能得到收敛解。

  • 容易陷入局部最优解:由于是在有限视距内寻找下山的反向。当陷入平坦的洼地,会误以为到达了山地的最低点,从而不会继续往下走。所谓的局部最优解就是鞍点。落入鞍点,梯度为0,使得模型参数不在继续更新。

2.2、随机梯度下降(SGD)

2.2.1、SGD表示

和 BGD 的一次用所有数据计算梯度相比,SGD 每次更新时对每个样本进行梯度更新,对于很大的数据集来说,可能会有相似的样本,这样 BGD 在计算梯度时会出现冗余,而 SGD 一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本。

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况,那么可能只用其中部分的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。缺点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向所以虽然训练速度快,但是准确度下降,并不是全局最优虽然包含一定的随机性,但是从期望上来看,它是等于正确的导数的。

2.2.2、SGD优缺点

优点:

  • 引入噪声,增加模型的鲁棒性。虽然SGD需要走很多步的样子,但是对梯度的要求很低(计算梯度快)。而对于引入噪声,大量的理论和实践工作证明,只要噪声不是特别大,SGD都能很好地收敛。

  • 应用大型数据集时,训练速度很快。比如每次从百万数据样本中,取几百个数据点,算一个SGD梯度,更新一下模型参数。相比于标准梯度下降法的遍历全部样本,每输入一个样本更新一次参数,要快得多。

缺点:

  • SGD在随机选择梯度的同时会引入噪声,使得权值更新的方向不一定正确。
  • 此外,SGD也没能单独克服局部最优解的问题。
  • SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。
  • BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。
  • 当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。

2.3、批量梯度下降MBGD(Mini-Batch Gradient Descent)

2.3.1、MBGD梯度下降表示

梯度更新规则:

MBGD 每一次利用一小批样本,即 n(50-256) 个样本进行计算,这样它可以降低参数更新时的方差,收敛更稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。

2.3.2、MBGD优缺点

优点:

  • 批量梯度下降法比标准梯度下降法训练时间短,且每次下降的方向都很正确。
  • 可以降低参数更新时的方差,收敛更稳定。
  • 可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。

缺点:

  1. 不能保证很好的收敛。不过 Mini-batch gradient descent 不能保证很好的收敛性,learning rate 如果选择的太小,收敛速度会很慢,如果太大,loss function 就会在极小值处不停地震荡甚至偏离。(有一种措施是先设定大一点的学习率,当两次迭代之间的变化低于某个阈值后,就减小 learning rate,不过这个阈值的设定需要提前写好,这样的话就不能够适应数据集的特点。)
  2. 可能陷入鞍点或局部最小点。对于非凸函数,还要避免陷于局部极小值处,或者鞍点处,因为鞍点周围的error是一样的,所有维度的梯度都接近于0,SGD 很容易被困在这里。(会在鞍点或者局部最小点震荡跳动,因为在此点处,如果是训练集全集带入即BGD,则优化会停止不动,如果是mini-batch或者SGD,每次找到的梯度都是不同的,就会发生震荡,来回跳动。)
  3. 应用同样的 learning rate,不能适应所有的参数。如果我们的数据是稀疏的,我们更希望对出现频率低的特征进行大一点的更新。LR会随着更新的次数逐渐变小。

2.4、动量(冲量)梯度下降法Momentum(Batch Gradient Descent Momentum)

2.4.1、Momentum描述

        SGD的梯度下降过程,类似于一个小球从山坡上滚下,它的前进方向由当前山坡的最大倾斜方向与之前的下降方向共同决定,小球具有初速度(动量),不只被梯度制约。SGDM克服了之前SGD易震荡的缺点。使用动量(Momentum)的随机梯度下降法(SGD),主要思想是引入一个积攒历史梯度信息动量来加速SGD。

2.4.2、Momentum优缺点

优点:

1、引入积攒的历史梯度信息动量加速参数更新

2、一定程度解决了SGD易震荡的问题

缺点:

1、全过程使用了相同的学习率

2、在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误。

2.5、牛顿加速梯度NAG(Nesterov accelerated gradient)

2.5.1、NAG描述

 

NAG是Momentum动量算法的变种。更新模型参数表达式如下:

  • Nesterov动量梯度的计算在模型参数施加当前速度之后,因此可以理解为往标准动量中添加了一个校正因子。
  • 理解策略:在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误。所以需要一个更聪明的小球,能提前知道它要去哪里,还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。计算Wt−αvt−1可以表示小球下一个位置大概在哪里。从而可以提前知道下一个位置的梯度,然后使用到当前位置来更新参数。

2.5.2、NAG优缺点

优点

在momentun SGD基础上添加了一个校正因子,避免盲目跟从梯度下降方向

缺点

固定学习率

2.6、AdaGrad

自适应学习率优化算法针对于机器学习模型的学习率,传统的优化算法要么将学习率设置为常数要么根据训练次数调节学习率。极大忽视了学习率其他变化的可能性。然而,学习率对模型的性能有着显著的影响,因此需要采取一些策略来想办法更新学习率,从而提高训练速度。目前的自适应学习率优化算法主要有:AdaGrad算法RMSProp算法Adam算法以及AdaDelta算法。这类算法可以对低频的参数做较大的更新对高频的做较小的更新,也因此,对于稀疏的数据它的表现很好,很好地提高了 SGD 的鲁棒性

AdaGrad算法,独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有代价函数最大梯度的参数相应地有个快速下降的学习率,而具有小梯度的参数在学习率上有相对较小的下降。

 梯度更新规则:

​​​​​​​

  • 从表达式可以看出,对出现比较频繁的特征,Adagrad给予越来越小的学习率,而对于比较少的特征,会给予较大的学习率。因此Adagrad适用于数据稀疏或者分布不平衡的数据集。

2.6.2、Adagrad优缺点

优点:

Adagrad适用于数据稀疏或者分布不平衡的数据集

Adagrad 的主要优势在于不需要人为的调节学习率,它可以自动调节;

缺点:

随着迭代次数增多,学习率会越来越小,最终会趋近于0。

 

2.7、RMSProp

2.7.1、RMSProp描述

  RMSProp是对Adagrad的一个改进它解决了Adagrad优化过程中学习率 η 单调减少问题。Adadelta不再对过去的梯度平方进行累加,而是改用加权平均

2.7.2、RMSProp优缺点

优点

不再对过去的梯度平方进行累加,通过指数衰减平均值,解决了Adagrad学习率单调递减问题

缺点

需指定全局学习率

 

2.8、AdaDelta算法

2.8.1、AdaDelta描述

思想:AdaGrad算法和RMSProp算法都需要指定全局学习率,AdaDelta算法结合两种算法每次参数的更新步长

2.8.2、AdaDelta优缺点

优点

结合adgrad和rmsprob算法,通过前t-1累加梯度指定学习率,无需指定全局学习率

缺点

在优化前期和中期效果较好,后期在局部最小点震荡。

2.9、Adam

 

这个算法是另一种计算每个参数的自适应学习率的方法。相当于 RMSprop + Momentum,除了像 Adadelta 和 RMSprop 一样存储了过去梯度的平方 vt 的指数衰减平均值 ,也像 momentum 一样保持了过去梯度 mt 的

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

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

相关文章

项目管理工具探析:详细介绍四种常用选择

市场上的项目管理工具,主要是解决项目计划制定、任务协作、文档协作这几方面的问题, 下面简单聊聊一些自己用过的工具: 1、Excel/在线协作表格 如果项目简单,任务数少,没什么依赖,那么就可以用Excel来做项目…

静电放电发生器的操控模式和释放模式有哪些方式

静电放电是一种自然现象 ,当两种不同介电强度的材料相互摩擦时,就会产生静电电荷,当其中一种材料上的静电荷积累到一定程度,在与另外一个物体接触时,就会通过这个物体到大地的阻抗而进行放电。静电放电及影响是电子设备…

四大运营商的大流量卡测评,看完您会选哪个运营商?

很多朋友都说网上的流量卡资费是真的便宜,但是小编认为资费便宜归便宜,但是运营商的小心思也有不少。 ​ 今天小编就带大家看一看三大运营商推出的正规流量卡都有哪些小心思? 首先,移动推出的线上大流量卡数量是最少的&#xff…

算法|Day37 动态规划5

LeetCode 1049- 最后一块石头的重量 II 题目链接:力扣 题目描述:有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量…

Blazor : Component parameter should be auto property,无法修改get;set;

文章目录 Blazor 无法在get;set;里面定义方法 Blazor 无法在get;set;里面定义方法 Blazor Component组件 其实原因就是微软觉得你在get;set;里面放自定义逻辑,太容易出现无限父子回调的问题。如果你要在get时候进行某种逻辑,那你就在OnParameterSetAs…

归并排序 与 计数排序

目录 1.归并排序 1.1 递归实现归并排序: 1.2 非递归实现归并排序 1.3 归并排序的特性总结: 1.4 外部排序 2.计数排序 2.1 操作步骤: 2.2 计数排序的特性总结: 3. 7种常见比较排序比较 1.归并排序 基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种…

Qgis统计面要素内点的数量,不同类型点的数量

简单: 统计面要素内点的数量。 工具栏直接搜索:统计点在多边形中的数量 统计面要素内不同类型点的数量。 查看QGIS-11 “按位置连接属性工具”——“按类别统计工具”——pandas透视表统计 数据透视表参考链接 参考链接: QGIS入门-9 统计面…

leetcode375. 猜数字大小 II(动态规划-java)

猜数字大小 II lc - 375 猜数字大小 II题目描述暴力递归 记忆化搜索代码演示动态规划 动态规划 lc - 375 猜数字大小 II 题目描述 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字。 你来猜我选了哪个数字。 如果你猜到正确的数字&…

开学季 | 新生入学必备好物,快来看看你漏掉了哪些!

一转眼年就过完了,又到了开学季。有很多学生又要重新走进校园,开始自己的学生宿舍生活。作为一个从初中就开始住宿舍的过来人,有一些东西确实是我当时在学校里用过的,非常好用的神器,可以非常好的帮助我们生活、学习或…

界面组件DevExpress Reporting——支持图表本地化和可绑定属性

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 在最近的更新(v23.1)中,官方扩展了…

无脑入门pytorch系列(三)—— nn.Linear

本系列教程适用于没有任何pytorch的同学(简单的python语法还是要的),从代码的表层出发挖掘代码的深层含义,理解具体的意思和内涵。pytorch的很多函数看着非常简单,但是其中包含了很多内容,不了解其中的意思…

智能设备管理系统对企业设备管理效果有作用吗?

智能设备管理系统对企业设备管理效果具有显著的作用和积极的影响。它可以提高设备管理的效率、准确性和可靠性,帮助企业降低运营成本、提高生产效率,并为企业提供更好的决策支持。以下是智能设备管理系统对企业设备管理效果的几个方面影响: …

手机图片怎么转换成pdf?这几个转换方法看看

手机图片怎么转换成pdf?如果你在手机上需要将一些图片转换成PDF文件,将图片转为PDF文档有多种优点。首先,PDF格式是一种通用的文件格式,可以在几乎所有设备上进行查看和打印,而且保留了原始文件的格式和布局。其次&…

为什么很多人认为ChatGPT最好的替代工具是Claude?

ChatGPT引领着生成式AI聊天机器人领域,但Claude AI看起来是一个有力的竞争者。 前段时间,ChatGPT的强劲竞争对手Claude2面世。当时很多人认为它可能会取代ChatGPT,在体验过一段时间之后,深以为然。原因如下: 更强大的…

使用vscode进行远程调试

官方调试手册:vscode官方调试手册 1.安装python扩展 如果是远程连接的话,一定要在ssh上启用扩展。不然创建基于python的配置文件时就会提示,无python扩展。 2.新建配置文件,并修改参数 点击左侧第四个按钮,运行与调试…

一、Dubbo 简介与架构

一、Dubbo 简介与架构 1.1 应用架构演进过程 单体应用:JEE、MVC分布式应用:SOA、微服务化 1.2 Dubbo 简介一种分布式 RPC 框架,对专业知识(序列化/反序列化、网络、多线程、设计模式、性能优化等)进行了更高层的抽象和…

“new出对象“原理的深层解密

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

网络安全(自学)

想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…

数字鸿沟,让气候脆弱者更脆弱

随着科技的飞速发展,数字化正在改变我们的生活方式和社会结构。然而,数字鸿沟(Digital Divide)这一长期存在的问题,却在某些方面加剧了社会的不平等现象。在此,我们将探讨数字鸿沟如何加剧了气候脆弱者的脆…

帮助中心干货:7步即可在线搞定产品帮助中心!

在产品的生命周期中,帮助中心是一个非常重要的部分,它能够为用户提供必要的信息和解决方案,帮助他们更好地使用产品。如果你正在寻找一种简单高效的方法来在线搭建产品帮助中心,那么这篇干货文章将为你提供7个步骤,让你…