第 17 篇 · 神经网络基础

优化器:让AI学得更快

的「加速器」

还记得我们之前讲的梯度下降吗?它就像一个人在黑暗的山坡上,蒙着眼睛往山下走。

但这个人可以走得更快、更稳。他可以借助拐杖(动量),可以根据地形调整步伐(自适应学习率),还可以和其他人一起协作(批量梯度下降)。

这些「改进版」的梯度下降,就是我们要讲的优化器。

1
复习:基础梯度下降

先快速回顾一下最基础的梯度下降。

梯度下降的核心公式

权重 = 权重 - 学习率 × 梯度

w = w - α × ∇L

学习率 α

每一步迈多大

梯度 ∇L

往哪个方向走

权重 w

要调整的参数

⚠️
基础梯度下降的问题:1) 学习率固定,可能太快或太慢;2) 容易卡在局部最小值;3) 方向变化太「抖」。
继续看下去

2
动量法:借惯性加速

想象一个球从山坡上滚下来。它不会每走一步就停下来,而是会越滚越快,直到达到最底部。

动量法的原理
普通梯度下降动量法

动量法的优势:

  • ✅ 在一致的方向上加速
  • ✅ 减少震荡,更快收敛
  • ✅ 有助于逃离局部最小值

v = β×v + (1-β)×梯度

w = w - α×v

β通常设为0.9,表示保留90%的动量

3
AdaGrad:自适应学习率

不同的参数可能需要不同的学习率。AdaGrad为每个参数单独调整学习率。

AdaGrad的原理
频繁更新的参数

📉

学习率变小

已经学了很多,小心调整

很少更新的参数

📈

学习率保持

学得少,可以大步走

问题:学习率会单调递减,最终变得太小,训练提前停止。这催生了RMSprop和Adam。

4
Adam:集大成者

Adam(Adaptive Moment Estimation)结合了动量和自适应学习率的优点,是目前最常用的优化器。

Adam = 动量 + 自适应
💨

一阶矩估计

动量(平均梯度)

二阶矩估计

自适应(梯度平方)

Adam

既有惯性加速,又能自适应调整步伐

优点1🚀

收敛快

结合了动量和自适应的优点,通常比SGD收敛更快。
优点2🔧

调参简单

对学习率的设置不敏感,默认参数在大多数情况下工作良好。
优点3📊

适合稀疏梯度

在自然语言处理等稀疏梯度场景下表现很好。

5
各种优化器对比

优化器选择指南
优化器
优点
缺点
适用场景
SGD
简单,泛化好
慢,需调学习率
大规模数据
SGD+Momentum
加速收敛
需调参
计算机视觉
AdaGrad
自适应
学习率单调减
稀疏数据(少用)
RMSprop
解决AdaGrad问题
需调参
RNN
Adam ⭐
快,易用
可能泛化稍差
默认首选
💡
虽然Adam是默认首选,但在一些计算机视觉任务上,精心调参的SGD+Momentum可能达到更好的最终性能。

6
学习率调度:动态调整

除了选择优化器,学习率的调整策略也很重要。

学习率调度策略
阶梯衰减

每N轮降低一次

指数衰减

平滑持续下降

余弦退火

周期性变化

技巧:训练初期用较大学习率快速接近最优解,后期用较小学习率精细调整。这叫做「学习率预热」和「学习率衰减」。

7
常见误区

❌ 误区1:Adam总是最好的选择

Adam虽然好用,但不是万能的。在一些任务上,SGD配合好的学习率调度可能达到更好的最终性能。

❌ 误区2:学习率越大收敛越快

太大的学习率会导致震荡甚至发散。需要在速度和稳定性之间找到平衡。

❌ 误区3:优化器可以弥补模型问题

好的优化器能加速训练,但不能弥补模型架构或数据的问题。先确保模型设计合理,再调优化器。

总结

🎓 一句话总结

  • 优化器决定AI如何更新权重,影响训练速度和效果
  • 动量加速收敛,自适应为每个参数调整学习率
  • Adam结合了动量和自适应,是目前的默认首选
  • 学习率调度能进一步提升训练效果

下篇预告

第18篇:超参数——AI的「调味料」,调对了才好吃

学习率、批量大小、网络层数...这些超参数决定了AI的性能。下一篇,我们来看看如何调好这些「调味料」。

✏️ 手绘图解 · AI Catch 出品

第 17 篇 / 共 84 篇