学习率与动量

使用 PyTorch 的深度学习入门

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

用 SGD 更新权重

  • 训练神经网络 = 解决一个优化问题

随机梯度下降(SGD)优化器

sgd = optim.SGD(model.parameters(), lr=0.01, momentum=0.95)
  • 两个参数:
    • learning rate:控制步长
    • momentum:加入惯性以避免卡住
使用 PyTorch 的深度学习入门

学习率影响:最优学习率

最优学习率示例

  • 随梯度变小,靠近 0 时步长会减小
使用 PyTorch 的深度学习入门

学习率影响:学习率过小

较小学习率示例

使用 PyTorch 的深度学习入门

学习率影响:学习率过大

学习率过大示例

使用 PyTorch 的深度学习入门

凸函数与非凸函数

这是一个凸函数

凸函数示例

这是一个非凸函数

非凸函数示例

  • 损失函数通常是非凸
使用 PyTorch 的深度学习入门

无动量

  • lr = 0.01 momentum = 0,100 步后在 x = -1.23y = -0.14 处找到极小值

优化器陷入局部极小值的示例

使用 PyTorch 的深度学习入门

有动量

  • lr = 0.01 momentum = 0.9,100 步后在 x = 0.92y = -2.04 处找到极小值

带动量的优化示例

使用 PyTorch 的深度学习入门

总结

$$

学习率 动量
控制步长 控制惯性
过高 → 表现差 帮助跳出局部极小值
过低 → 训练慢 过小 → 优化器会卡住
常见范围:0.01 ($10^{-2}$) 到 0.0001 ($10^{-4}$) 常见范围:0.85–0.99
使用 PyTorch 的深度学习入门

让我们练习吧!

使用 PyTorch 的深度学习入门

Preparing Video For Download...