带动量随机梯度下降与普通 SGD,有何异同?
好的,让我们共同来探索带动量随机梯度下降 (SGD) 和普通 SGD 之间的异同,了解为什么带动量 SGD 在优化深度学习模型方面表现得更佳。在讨论之前,先了解一下它们的共同点:
共同点
1. 目标相同: 优化损失函数,不断调整模型参数让函数值最小化。
2. 迭代更新: 每次迭代都会更新模型参数,直到满足停止条件。
3. 计算梯度: 都要计算损失函数对模型参数的梯度。
普通 SGD 的特点及缺陷
优点:
1. 简单易实现: 更新规则简单,实现起来非常方便。
2. 收敛性保证: 在凸函数下保证收敛到最优解。
缺点:
1. 容易受噪声影响: 每次只使用单样本梯度,容易受训练数据中噪声的影响,导致更新方向不稳定。
2. 收敛速度慢: 在非凸函数或高维参数空间中,收敛速度会很慢。
3. 容易陷入鞍点: 当梯度为零但函数值非最优时,容易被困在鞍点,无法进一步优化。
带动量 SGD 的特点及优势
改进方式: 带动量 SGD 通过引入一个变量 v 来保留历史梯度的信息,从而缓解普通 SGD 的缺陷。
变量 v:
v = β v + (1 - β) 梯度
1. β: 动量超参数,控制历史梯度的影响权重。
2. v: 动量项,模拟梯度变化的平滑轨迹。
优点:
1. 平滑梯度方向: 动量项 v 累积了历史梯度,抑制了噪声影响,使更新方向更稳定。
2. 加速收敛: 当梯度方向一致时,momentum 项增强了向减小损失函数方向的更新,加速收敛。
3. 跳出鞍点: 带动量 SGD 能够沿着v 的方向继续更新,有助于跳出鞍点。
带动量 SGD 与普通 SGD 的对比
| 特征 | 普通 SGD | 带动量 SGD |
|---|---|---|
| 梯度计算 | 单样本梯度 | 历史梯度加权平均 |
| 更新稳定性 | 易受噪声影响 | 抑制噪声,更新方向更稳定 |
| 收敛速度 | 慢 | 加速收敛 |
| 容易陷入鞍点 | 是 | 有助于跳出鞍点 |
带动量 SGD 的注意事项
使用带动量 SGD 时需要注意:
1. 动量超参数 β: β 的值通常介于 0 和 1 之间。较小的 β 保留较少的历史梯度信息,而较大的 β 可能导致更新速度过慢。
2. 学习率: 使用带动量 SGD 时,可能会需要降低学习率以防止更新过大。
3. 高频噪音: 如果训练数据中存在高频噪音,带动量 SGD 可能无法有效抑制,需要使用其他优化方法。
互动时间
现在你已经了解了带动量随机梯度下降和普通 SGD 之间的异同。对于选择哪种优化器,以下问题可以帮助你思考:
1. 训练数据是否嘈杂?
2. 模型收敛速度是否重要?
3. 模型是否容易陷入鞍点?
根据你的具体情况选择最合适的优化器,能帮助你优化模型表现,让深度学习之旅更加轻松高效!如果你有其他关于 SGD 的疑问,欢迎下方留言,让我们一起探讨!





