梯度下降 vs. 随机梯度下降
- 标准梯度下降(Batch Gradient Descent):
- 每次迭代需要计算整个数据集的损失函数梯度。
- 优点:梯度方向准确,更新稳定。
- 缺点:计算量大,尤其对大规模数据集不现实。
- 随机梯度下降(SGD):
- 每次迭代仅**随机选择一个样本(或一小批样本)**计算梯度并更新参数。
- 优点:计算快,适合大规模数据;能跳出局部极小值。
- 缺点:更新路径波动大,收敛过程不稳定。
“随机”体现在哪里?
- 随机选择样本:
- 每次更新参数时,从数据集中随机抽取一个样本(或一小批样本)来计算梯度。
- 例如:如果有100万个数据,SGD每次随机选1个样本计算梯度,而非用全部100万数据。
- 随机性来源:
- 由于每次梯度估计基于随机抽样的数据,更新方向具有随机性,路径呈现“震荡”特性。
- 这种随机性可能帮助算法跳出局部极小值,但也可能导致收敛速度变慢。
为什么随机性有用?
- 计算效率:
- 逃离局部最优:
- 随机噪声可能使算法跳出局部极小值,找到更好的全局解(尤其在高维非凸优化问题中)。
- 在线学习:
- 支持实时更新模型,适用于数据流场景(如推荐系统)。
变体:小批量梯度下降(Mini-batch SGD)
- 实际应用中,SGD通常指小批量梯度下降:
- 每次随机选取一小批(如32、64个)样本计算梯度。
- 平衡了计算效率和梯度稳定性,是深度学习的默认选择。
总结
- 随机性是SGD的核心特征,体现在每次更新的数据选择和梯度估计中。
- 它通过牺牲梯度方向的精确性,换取了计算效率和跳出局部最优的可能性。
- 实际应用中常通过调整学习率、批量大小等参数来平衡收敛速度和稳定性。