更新于 2026年7月11日

梯度下降#


术语解释#

梯度下降(Gradient Descent,GD) 是一种用于最小化目标函数(Loss Function)的优化算法,是深度学习和机器学习中求解模型参数的核心工具。

梯度下降是一个迭代寻找最优解的过程。它通过计算目标函数关于参数的梯度(即函数增长最快的方向),然后沿着梯度的反方向步进,从而使函数值逐步减小,最终达到(或接近)全局最小值或局部最小值。 其参数更新公式为

$$ w = w - \alpha \cdot \frac{\partial J}{\partial w} $$

其中 $w$ 是待求解的参数,$\frac{\partial J}{\partial w}$ 是梯度,$\alpha$ 为步长(也叫学习率),决定了每次迭代移动的距离。

形象比喻:就像一个人被困在山谷中,为了最快下到谷底,他在每一步都选择坡度最陡的方向向下跳。

梯度下降迭代过程
梯度下降迭代过程

梯度下降是深度学习的“方向盘”,它利用反向传播提供的“地图”(梯度)来指引模型寻找最优参数。虽然它存在易陷于局部最优和对超参数敏感的缺陷,但通过引入动量(Momentum)、Adam 等自适应算法以及小批量采样技术,这些问题在现代工程实践中已得到了显著改善。详细内容可参见「第3.3节 反向传播与梯度下降:梯度消失与爆炸的解决方法」内容。


出现动机#

  • 解决直接求解困难的问题:在处理实际问题(如房价预测)时,样本点往往不在一条直线上。传统的解析方法(如代数求导直接求零点)在面对海量、高维或含有噪声的数据时计算极其复杂或无法直接求解。
  • 参数自动更新的需求:在深度神经网络中,参数量巨大,需要一种系统性的算法能根据误差(由反向传播提供梯度)自动、高效地调整成千上万个权重参数。
  • 处理非线性映射:为了让模型能够学习复杂的非线性关系,需要通过梯度下降来不断优化由于引入激活函数而变得复杂的非线性目标函数。

优点缺点#

  • 优点:
    • 通用性极强:它是目前训练各类深度学习模型(如 CNN, RNN, Transformer)的底层基石。
    • 原理简洁直观:其“按梯度反方向寻找最低点”的逻辑非常清晰,且具有坚实的数学基础(方向导数与链式法则)。
    • 灵活性与可扩展性:通过变体(如 SGD 随机梯度下降或 Mini-batch 小批量梯度下降),它可以有效处理大规模数据集,而不必一次性将所有数据装入内存。
  • 缺点:
    • 对学习率($\alpha$)高度敏感: 如果学习率过大,目标函数可能会在谷底附近剧烈震荡甚至发散;如果学习率过小,收敛速度会非常缓慢,甚至会因为梯度趋近于 0 而卡在半山腰。
    • 容易陷入局部最优解:在处理复杂的非凸目标函数时,算法可能会停留在局部最小值点或鞍点,而无法找到真正的全局最优解。
    • 计算开销问题:原始的梯度下降(Vanilla GD)在每一次更新时都需要计算所有样本的梯度,对于数千万级的数据集来说速度极慢。
    • 梯度稳定性隐患:在深层网络中,连续的梯度计算可能导致梯度消失(参数不更新)或梯度爆炸(参数变为无穷大),需要配合梯度裁剪或归一化等技术来缓解。

相关术语#

  • 学习率
  • Momentum
  • Adam
  • 反向传播
  • 随机梯度下降
  • 小批量梯度下降
阅读 --

3.6 Softmax回归简洁实现

在本节内容中,我们首先介绍了什么是随机梯度下降和小批量梯度下降,并顺利的引出了PyTorch框架中DataLoader模块;然后介绍了PyTorch中用于计算分类任务模型损失的nn.CrossEntropyLoss()模块及其使用示例;

3.3 梯度下降与反向传播

在本节中,我们首先通过一个跳跃的例子详细地向大家介绍了什么是梯度,以及为什么要沿着梯度的反方向进行跳跃才能最快到底谷底;然后通过图示推导出了梯度下降的更新迭代公式;接着详细介绍了网络模型的前向传播过程和反向传播过程,并推导了整个梯度的求解过 …