当前位置:   article > 正文

Pytorch-优化器使用_pytorch哪个版本里面开始有nadma优化器。

pytorch哪个版本里面开始有nadma优化器。

转载

目录

1、简介

2、常见优化器

1、SGD (实现随机梯度下降算法(momentum、nesterov可选))

1.1、使用动量(Momentum)的随机梯度下降法(SGD)

1.2、使用牛顿加速度(NAG, Nesterov accelerated gradient)的随机梯度下降法(SGD)

2、ASGD(随机平均梯度下降(Averaged Stochastic Gradient Descent))

3、AdaGrad算法

4、AdaDelta算法

5、Rprop(弹性反向传播)

6、RMSProp(Root Mean Square Prop,均方根传递)

7、Adam(AMSGrad)

8、Adamax

9、Nadam

10、SparseAdam

11、AdamW

12、L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)

3、参考


1、简介

最近因为模型训练不稳定的原因,在解决loss震荡不稳定的情况下,有人提出说可以先用adadelta优化器跑下试试看,于是开始了解,还未尝试。下面这个手册真心的棒,分析了各个优化器的优缺点和推荐使用程度,最后还给出了部分常见优化器的对比。

PyTorch中文文档:https://pytorch-cn.readthedocs.io/zh/latest/

PyTorch英文文档:https://pytorch.org/docs/stable/index.html

2、常见优化器

从最新(1.2.0)版本的Pytorch文档中可以知道,pytorch一共有11个优化器(当然,可实现的算法不止11种),分别是

SGD

ASGD

Adagrad

Adadelta

Rprop

RMSprop

Adam

Adamax

SparseAdam

AdamW

L-BFGS

下面分析加粗的常用优化器:

1、SGD (实现随机梯度下降算法(momentum、nesterov可选))

torch.optim.SGD(params,lr=<required parameter>,momentum=0,dampening=0,weight_decay=0,nesterov=False)

参数:

--params (iterable) – 待优化参数的iterable或者是定义了参数组的dict

--lr (float) – 学习率

--momentum (float, 可选) – 动量因子(默认:0,通常设置为0.9,0.8)

--weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认:0)

--dampening (float, 可选) – 动量的抑制因子(默认:0)

--nesterov (bool, 可选) – 使用Nesterov动量(默认:False)论文:http://www.cs.toronto.edu/~hinton/absps/momentum.pdf

例子:
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)

>>> optimizer.zero_grad()

>>> loss_fn(model(input), target).backward()

>>> optimizer.step()

优点:①使用mini-batch的时候,可以收敛得很快

缺点:①在随机选择梯度的同时会引入噪声,使得权值更新的方向不一定正确

           ②不能解决局部最优解的问题

推荐程度:不推荐!


1.1、使用动量(Momentum)的随机梯度下降法(SGD)

更新的时候在一定程度上保留之前更新的方向,用法为在torch.optim.SGDmomentum参数不为零,

优点:加快收敛速度,有一定摆脱局部最优的能力,一定程度上缓解了没有动量的时候的问题

缺点:仍然继承了一部分SGD的缺点

推荐程度:可以一试

1.2、使用牛顿加速度(NAG, Nesterov accelerated gradient)的随机梯度下降法(SGD)

可以理解为往标准动量中添加了一个校正因子

理解策略:在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误。所以需要一个更聪明的小球,能提前知道它要去哪里,还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡

优点:梯度下降方向更加准确

缺点:对收敛率的作用却不是很大

推荐程度:不如不试


2、ASGD(随机平均梯度下降(Averaged Stochastic Gradient Descent))

简单地说ASGD就是用空间换时间的一种SGD,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1005183
推荐阅读
相关标签
  

闽ICP备14008679号