设为首页添加收藏

您好! 欢迎来到广东某某建材科技有限公司

微博
扫码关注官方微博
微信
扫码关注官方微信
电话:400-123-4567

您的位置: 主页 > 杏鑫资讯 > 公司新闻
公司新闻

【Pytorch的优化器总结归纳】

发布日期:2024-04-15 来源: 网络 阅读量(


pytorch的几类优化器
在这里插入图片描述

1.https://pytorch.org/docs/stable/optim.html
2.https://ptorch.com/docs/1/optim
3.https://www.cntofu.com/book/169/docs/1.0/optim.md

 
  • SGD :使用动量(Momentum)可以一试,使用牛顿加速度(NAG)不如不试
  • ASGD :很少见
  • Adagrad :不推荐
  • Adadelta :可以一试
  • Rprop :不推荐
  • RMSprop :推荐
  • Adam :非常推荐
  • Adamax:非常推荐
  • Nadam:非常推荐
  • SparseAdam:推荐
  • AdamW:非常推荐,观望
  • L-BFGS:非常推荐,酌情选择
  • Radam:非常推荐
 

优点:①使用mini-batch的时候,可以收敛得很快
缺点:①在随机选择梯度的同时会引入噪声,使得权值更新的方向不一定正确;②不能解决局部最优解的问题

a、使用动量(Momentum)的随机梯度下降法(SGD):
用法为在torch.optim.SGD的momentum参数不为零。
优点:加快收敛速度,有一定摆脱局部最优的能力,一定程度上缓解了没有动量的时候的问题;缺点:更新的时候在一定程度上保留之前更新的方向,仍然继承了一部分SGD的缺点。
b、使用牛顿加速度(NAG, Nesterov accelerated gradient)的随机梯度下降法(SGD):
理解为往标准动量中添加了一个校正因子。
优点:梯度下降方向更加准确;缺点:对收敛率的作用却不是很大。

 

a、使用动量(Momentum)的随机梯度下降法(SGD);
b、使用牛顿加速度(NAG, Nesterov accelerated gradient)的随机梯度下降法(SGD)。

优缺点类似同上。

 

独立地适应所有模型参数的学习率,梯度越大,学习率越小;梯度越小,学习率越大。 Adagrad适用于数据稀疏或者分布不平衡的数据集

 

是Adagard的改进版,对学习率进行自适应约束,但是进行了计算上的简化,加速效果不错,训练速度快。
优点:避免在训练后期,学习率过小;初期和中期,加速效果不错,训练速度快
缺点:还是需要自己手动指定初始学习率,初始梯度很大的话,会导致整个训练过程的学习率一直很小,在模型训练的后期,模型会反复地在局部最小值附近抖动,从而导致学习时间变长

 

1、首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子。
2、在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。
3、网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。
缺点:优化方法适用于full-batch,不适用于mini-batch,因此基本上没什么用

 

RProp的改进版,也是Adagard的改进版
思想:梯度震动较大的项,在下降时,减小其下降速度;对于震动幅度小的项,在下降时,加速其下降速度
RMSprop采用均方根作为分母,可缓解Adagrad学习率下降较快的问题。对于RNN有很好的效果
优点:可缓解Adagrad学习率下降较快的问题,并且引入均方根,可以减少摆动,适合处理非平稳目标,对于RNN效果很好
缺点:依然依赖于全局学习率

 

将Momentum算法和RMSProp算法结合起来使用的一种算法,既用动量来累积梯度,又使得收敛速度更快同时使得波动的幅度更小,并进行了偏差修正。
优点:
1、对目标函数没有平稳要求,即loss function可以随着时间变化
2、参数的更新不受梯度的伸缩变换影响
3、更新步长和梯度大小无关,只和alpha、beta_1、beta_2有关系。并且由它们决定步长的理论上限
4、更新的步长能够被限制在大致的范围内(初始学习率)
5、能较好的处理噪音样本,能天然地实现步长退火过程(自动调整学习率)
6、很适合应用于大规模的数据及参数的场景、不稳定目标函数、梯度稀疏或梯度存在很大噪声的问题

 

Adam的改进版,对Adam增加了一个学习率上限的概念,是Adam的一种基于无穷范数的变种。
优点:对学习率的上限提供了一个更简单的范围

 

Adam的改进版,类似于带有Nesterov动量项的Adam,Nadam对学习率有了更强的约束,同时对梯度的更新也有更直接的影响。一般而言,在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。

 

针对稀疏张量的一种“阉割版”Adam优化方法。优点:相当于Adam的稀疏张量专用版本

 

Adam的进化版,是目前训练神经网络最快的方式
优点:比Adam收敛得更快
缺点:只有fastai使用,缺乏广泛的框架,而且也具有很大的争议性

(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)

 

是一种在牛顿法基础上提出的一种求解函数根的算法,简单来说,L-BFGS和梯度下降、SGD干的同样的事情,但大多数情况下收敛速度更快
L-BFGS是对BFGS的改进,特点就是节省内存
是解无约束非线性规划问题最常用的方法。
警告:
这个optimizer不支持为每个参数单独设置选项以及不支持参数组(只能有一个)
目前所有的参数不得不都在同一设备上。在将来这会得到改进。
注意:
这是一个内存高度密集的optimizer(它要求额外的param_bytes * (history_size + 1)个字节)。内存不符合要求,尝试减小history size,或者使用不同的算法。

  

平台注册入口