Pytorch-优化器使用

本文档详细介绍了PyTorch中的多种优化器,包括SGD、ASGD、Adagrad、Adadelta、Rprop、RMSProp、Adam、Adamax、Nadam、SparseAdam和L-BFGS。讲解了各个优化器的原理、参数、优缺点以及推荐使用程度,旨在帮助用户选择合适的优化器来提升模型训练效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载

目录

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中小球会盲目地跟从下坡的梯度,容易发生错误。所以需要一个更聪明的小球,能提前知道它要去哪里,还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡

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

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

推荐程度:不如不试


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静静喜欢大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值