/ Deep Learning   Pytorch  

深度学习常用优化器及Pytorch使用

本文参考自Deep Learning 之 最优化方法Pytorch官方文档1.4.0版本,另有官方文档中文翻译可供参考。

SGD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认:0)
dampening (float, 可选) – 动量的抑制因子(默认:0)
nesterov (bool, 可选) – 使用Nesterov动量(默认:False)
"""
# 例
optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()

Momentum

  1. 动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲就是梯度高度敏感于参数空间的某些方向)的。
  2. 加速学习
  3. 一般将参数设为0.5,0.9,或者0.99,分别表示最大速度2倍,10倍,100倍于SGD的算法。
  4. 通过速度v,来积累了之间梯度指数级衰减的平均,并且继续延该方向移动: