首页 > 其他分享 >优化方法总结

优化方法总结

时间:2024-02-26 14:44:05浏览次数:25  
标签:总结 迭代 优化 更新 参数 动量 梯度 方法 SGD

个人学习使用,内容来源于网络,侵权删

神经网络反向传播时参数朝着最小化损失的方向前进,确切说,是朝着梯度方向更新。设神经网络参数是\(W\),学习率是\(\alpha\),网络代表的函数是\(L(W)\),那么参数更新公式可表示为:

$W=W-\alpha*\bigtriangledown_WL(W)$

在深度学习中,有三种最基本的梯度下降算法:SGD、BGD、MBGD,他们各有优劣。根据不同的数据量和参数量,可以选择一种具体的实现形式,在训练神经网络是优化算法大体可以分为两类:1)调整学习率,使得优化更稳定;2)梯度估计修正,优化训练速度。

1. 随机梯度下降SGD

每次迭代只使用单个训练样本,参数更新表达式如下

$W=W-\alpha*\bigtriangledown_WL(W;x^{(i)};y^{(i)})$

优点: SGD 一次迭代只需对一个样本进行计算,因此运行速度很快,还可用于在线学习。
缺点:(1)由于单个样本的随机性,实际过程中,目标损失函数值会剧烈波动,一方面,SGD 的波动使它能够跳到新的可能更好的局部最小值。另一方面,使得训练永远不会收敛,而是会一直在最小值附近波动。(2)一次迭代只计算一个样本,没有发挥GPU并行运算的优势,使得整体计算的效率不高。

2. 批量梯度下降BGD

每次迭代使用所有样本,参数更新表达式如下:

$W=W-\alpha*\bigtriangledown_WL(W;x^{(0:n)};y^{(0:n)})$

优缺点分析:BGD能保证收敛到凸误差表面的全局最小值和非凸表面的局部最小值。但每迭代一次,需要用到训练集中的所有数据,如果数据量很大,那么迭代速度就会非常慢。

3. 小批量梯度下降MBGD

每次迭代使用一个batch的样本,batch一般为64~256,参数更新表达式如下:

$W=W-\alpha*\bigtriangledown_WL(W;x^{(i:i+n)};y^{(i:i+n)})$

优缺点分析:因为每次迭代使用多个样本,所以 MBGD 比 SGD 收敛更稳定,也能避免 BGD 在数据集过大时迭代速度慢的问题。因此,MBGD是深度学习网络训练中经常使用的梯度下降方法。

上图为BGD和MBGD训练损失图。

4. Adagrad

Adagrad详解

算法如下

简单来讲,该算法就是在设置全局学习率之后,每次通过全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同

作用

起到的效果是在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。

如上图所示,蓝色为MBGD的参数更新路线,绿色为Adagrad的参数更新路线,由于参数\(b\)方向更陡峭,梯度更大,所以累计梯度更大,在更新时除以累计梯度之后更新的步幅更小,而\(W\)方向更平缓,梯度较小,因此更新步幅较大,两者合并使得更新速度更快。

5. Adadelta

Adadelta详解

用到了牛顿法和Hession矩阵

6. RMSProp

优化:

在上面的公式中 Sdw​ 和 Sdb​ 分别是损失函数在前 t−1轮迭代过程中累积的梯度平方动量, β 是梯度累积的一个指数。所不同的是,RMSProp算法对梯度计算了微分平方加权平均数。这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,如下图所示,使得各个维度的摆动幅度都较小。另一方面也使得网络函数收敛更快。

7. Momentum动量梯度下降法

动量梯度下降法作用是加快学习速度,还有一定摆脱局部最优的能力。如下图红色线所示:

其表达式如下所示

\[v_t=\gamma v_{t-1} + \eta \bigtriangledown_{\theta}J(\theta) \]

\[\theta=\theta-v_t \]

其中,\(\gamma\)表示动量参数momentum;当$\gamma = 0 $时,即是普通的SGD梯度下降。\(0 < \gamma < 1\) ,表示带了动量的SGD梯度下降参数更新方式,\(\gamma\) 通常取0.9。

普通SGD的缺点:SGD很难在沟壑(即曲面在一个维度上比在另一个维度上弯曲得更陡的区域)中迭代,这在局部最优解中很常见。在这些场景中,SGD在沟壑的斜坡上振荡,同时沿着底部向局部最优方向缓慢前进。为了缓解这一问题,引入了动量momentum。

本质上,当使用动量时,如同我们将球推下山坡。球在滚下坡时积累动量,在途中变得越来越快。同样的事情发生在参数更新上:对于梯度指向相同方向的维度,动量会积累并增加,而对于梯度改变方向的维度,动量会减少更新。结果,我们获得了更快的收敛和减少的振荡。

8. Adam优化器

小结

深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

pytorch中优化器与学习率衰减方法总结

参考来源:
深度学习知识点全面总结
吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(2-2)-- 优化算法

标签:总结,迭代,优化,更新,参数,动量,梯度,方法,SGD
From: https://www.cnblogs.com/cqut-zhoutao/p/18024844

相关文章

  • 启用或禁用SELinux的方法
    SELinux介绍:SELinux是Security-EnhancedLinux的缩写。它就像Windows防火墙,但它更安全,更私密。它管理所有的访问控制策略。我们可以通过使用一些直接命令或实际进入SELinux配置文件并编辑状态来控制SELinux安全性的状态。SELinux有三个值:enforcing,permissiveanddisabl......
  • jQuery对象与DOM对象之间的转换方法
    jQuery对象与DOM对象之间的转换方法刚开始学习jquery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象。至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换。什么是jQuery对象?就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的......
  • 《系统科学方法概论》——第三章 信息方法
    一、信息科学简史1、古代通信方式:语言、文字、光信号。古代通信方式的缺点:通信距离短;通信速度慢;通信数量少;通信保密性差。2、近代通信科学的产生:近代通信技术首先是从有线电通信发展起来的。3、现代通信理论——申农信息论的创立:随着通信技术的迅速发展,从20世纪20年代起,人们......
  • 万字Java进阶笔记总结
    JavaApi字符串String注意:Java中“==”操作符的作用:基本数据类型:比较的是内容。引用数据类型比较的是对象的内存地址。StringBuffer/StringBuilder由于String是字符串是常量,它们的值在创建之后不能更改。如果我们使用这个String频繁进行操作,会有性能问题,这个时候就需要......
  • 《系统科学方法概论》第二章读后感
    在阅读《系统科学方法概论》这本书的第二章,这一章节详细介绍了系统科学的基本方法和工具,为我提供了一种全新的思考和解决问题的方式。作者首先介绍了系统科学的基本方法,包括系统分析、系统设计和系统管理等。我了解到,这些方法是系统科学的核心,它们相互关联,共同构成了一个完整的体......
  • 从零开始写 Docker(二)---优化:使用匿名管道传递参数
    本文为从零开始写Docker系列第二篇,主要在mydockerrun命令基础上优化参数传递方式,改为使用runC同款的匿名管道传递参数。如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。扫描下方二维码或搜索公众号【探索云原生】即可订阅完整代......
  • 《系统科学方法概论》第一章读后感
    在阅读《系统科学方法概论》这本书的第一章后,我对系统科学的基本概念和方法论有了初步的了解。这一章节为我打开了一个全新的视角,让我开始思考复杂问题背后的系统性规律和原理。作者首先介绍了系统科学的起源和发展,以及它在各个领域的应用。我了解到,系统科学是一种跨学科的研究领......
  • 《系统科学方法概论》第五章读书笔记
    首先,组建现代管理系统必须遵循远离平衡态原则。这也就是说,构成管理系统的人员必须具有各不相同的能力和水平,尤其是作为管理系统的第一把手应具备把握全局的能力和权力,而其他成员则不必具备把握全局的能力和权力,或只需具备把握某-方面全局的能力和权力即可。如果-一个管理系统的所......
  • 《系统科学方法概论》第二章读书笔记
    系统工程不是无缘无故地提出的,而是为了解决目前实践或科研中所遇到的问题而搞起来的。所以,在设计或研制一项系统工程前,应先把所遇到的问题搞清楚。问题是什么?就是现实状况和主观需要之间的矛盾。在阐述问题时,要注意三个方面:-是注意问题的过去、现在和将来的发展趋势,也就是要考......
  • 《系统科学方法概论》第三章读书笔记
    信息论最初是作为一种通信理论而被建立起来的,它也主要用于通信领域。但是经过30多年的发展,到了20世纪70年代,信息论已不仅仅是一种通信理论,而是越过了通信领域,广泛渗人其他学科了。例如在物理学研究中,一些科学家就把信息与熵1]联系起来,以说明系统的有序和无序的相互转化。在生物学......