跳转至

P2-6.3 梯度下降的直觉

Section ID: P2-6.3 Version: v2026.09.15

梯度下降(gradient descent)在当前参数处计算目标函数的梯度(gradient),再沿相反方向调整参数。学习率(learning rate)乘以梯度,用于控制移动量。

直线模型的当前损失

使用根据学习时间预测分数的数据。

学生 学习时间 x 实际分数 y
A 1 55
B 2 65
C 3 80
D 4 90

当前直线为 \(\hat{y} = 8x + 45\) 时,预测值为 53, 61, 69, 77,分别比真实值低 2, 4, 11, 13。均方误差为 (4 + 16 + 121 + 169) / 4 = 77.5。

目标是调整斜率 a 与截距 b,减小这个损失。

把这种移动写成学习循环,如下所示。

flowchart TD
  P["当前参数 a, b"]
  L["四名学生的预测与 MSE"]
  G["在同一当前位置<br/>计算两个偏导数"]
  U["[a, b] − η × 梯度"]
  P --> L --> G --> U --> P

当前位置的斜率

梯度下降常用下山来比喻:站在高处,观察附近的坡度,再沿变低的方向一步步移动。

当前位置对应当前模型参数,高度对应损失值,下坡方向对应损失减小的方向。

但这个比喻有局限。实际模型训练中,并不能一眼看到整座山的地图,而是读取当前位置附近的方向,稍微移动,再次检查。

因此,梯度下降是根据当前信息逐步改进的迭代方法,而非一次跳到答案。

在学习时间与分数的例子中,如果当前直线低估了学生 C、D,就反复检查稍微增大 a 或调整 b 是否能减小损失,而不是一次猜出完美直线。

梯度的相反方向

梯度与函数值在当前位置增长最快的方向相关。对于损失函数(loss function),梯度指向损失增大的方向。

AI 训练通常希望减小损失,因此沿梯度的相反方向移动。梯度方向使损失增大,反方向则使损失减小。

这就是 descent 的含义:虽然计算的是梯度,目标却是向下移动。

对于可微的目标函数,当梯度不为 0 时,沿相反方向足够小地移动,目标函数值会减小。移动量过大时,即使方向相同,损失也可能增大。

学习率与移动大小

知道损失减小的方向,并不意味着可以跳得很远。当前梯度描述的是附近的信息。移动过大可能越过更低的位置。

学习率用于控制每次移动多少。学习率过小会使进展缓慢,合适时损失可稳定下降,过大则可能越过好的位置或使损失波动。

实际移动量是学习率与梯度的乘积。即使学习率相同,梯度大小改变,移动距离也会改变。

例如,一次把 a 增大过多,可能减小学生 D 的误差,却对 A、B 预测过高。反过来,改动过小,即使方向能减小损失,改善也很慢。学习率控制这种步幅。

梯度下降更新式

梯度下降通常写成以下形式。

\[ \theta_{\text{new}} = \theta_{\text{old}} - \eta \nabla J(\theta_{\text{old}}) \]

各符号表示以下数值。

符号 入门含义
\(\theta\) 模型调整的参数(parameter)
\(J(\theta)\) 要减小的目标函数(objective function)
\(\nabla J(\theta)\) 当前位置损失增大的方向信息
\(\eta\) 学习率,乘以梯度的移动量系数
\(-\eta \nabla J(\theta)\) 沿损失减小方向的小幅移动量

在这个模型中,\(\theta\) 为 [a, b],目标函数 \(J\) 是四名学生的均方误差。公式压缩了 当前参数 − 学习率 × 梯度 这一计算。

斜率与截距的一次更新

将各学生的 预测值 − 实际值 记为 \(r_i\),当前误差为 −2, −4, −11, −13。对各参数求均方误差的偏导数,得到:

\[ \frac{\partial J}{\partial a}=\frac{2}{4}\sum_{i=1}^{4}r_i x_i =\frac{2}{4}(-2-8-33-52)=-47.5 \]
\[ \frac{\partial J}{\partial b}=\frac{2}{4}\sum_{i=1}^{4}r_i =\frac{2}{4}(-2-4-11-13)=-15 \]

改变 a 时,学习时间 x 越大的学生,其预测值变化越大,所以第一式乘以 x_i。改变 b 时,所有学生的预测值改变相同的量。

学习率为 0.01 时,更新结果如下。

  • a_new = 8 − 0.01 × (−47.5) = 8.475
  • b_new = 45 − 0.01 × (−15) = 45.15

使用新直线重新预测,MSE 从 77.5 降至约 54.76。下一次更新时,需要重新计算新位置 [8.475, 45.15] 的梯度。

在新位置重新计算

第一次更新时,两个参数都使用同一个更新前位置 [8, 45] 的梯度。这不同于先改变 a,再用改变后的 a 计算 b 的梯度。

在新位置 [8.475, 45.15],预测值为 53.625, 62.1, 70.575, 79.05。预测值减去真实值的误差也变为 −1.375, −2.9, −9.425, −10.95,因此需要重新计算梯度。

更新前位置 [a, b] 该位置的梯度 以 η=0.01 更新后的位置 更新后的 MSE
[8, 45] [−47.5, −15] [8.475, 45.15] 约 54.7584
[8.475, 45.15] [−39.625, −12.325] [8.87125, 45.27325] 约 38.9750

第二次更新为 a=8.475−0.01×(−39.625)=8.87125、b=45.15−0.01×(−12.325)=45.27325。学习率不变,梯度改变也会使移动量改变。每次都根据四名学生的全部损失计算梯度,因此本例属于全批量梯度下降。

全批量梯度下降更新 20 次的均方误差

横轴为更新次数,纵轴为每一步的 MSE。使用同样的四名学生数据,从 [8, 45] 出发,学习率为 0.01,每次重新计算梯度。第 0 次表示尚未更新时的损失。该图记录 20 次更新中的损失,不是参数空间中的地形图。

不同学习率下的损失

从同一个起点 [8, 45]、同一个梯度 [-47.5, -15] 出发,只改变学习率并移动一次。

学习率 新 a 新 b 移动后的 MSE
0.001 8.0475 45.015 约 75.04
0.01 8.475 45.15 约 54.76
0.2 17.5 48 约 409.63

三种情况都沿梯度的相反方向移动,但学习率为 0.2 时损失大幅增加;为 0.001 时损失下降幅度较小。因此,方向与合适的移动量都需要确定。

影响收敛的条件

梯度下降很有用,但不会自动保证得到完美答案。

结果受到多个条件影响。

条件 为什么重要
初始位置(initialization) 起点不同,路径也可能不同。
学习率(learning rate) 过小可能缓慢,过大可能不稳定。
损失曲面(loss landscape) 可能存在谷地、平坦区域和多个低点。
数据(data) 损失根据数据计算,受到数据质量影响。
迭代次数(iterations) 过少可能训练不足,过多可能过拟合。

梯度下降是在给定标准和条件下朝更好方向移动的方法,并不会自动解决现实中的所有条件。

收敛与停止训练

收敛是指迭代过程中参数或目标函数值的变化逐渐变小,并趋近某个值。实现时可以设定最大迭代次数,检查相邻更新之间的损失变化或梯度大小是否低于设定容差。损失变化小并不能单独证明已经到达最优点;也可能只是学习率过小,几乎没有移动。

提前停止(early stopping)则可以根据验证数据上的表现决定。例如,训练损失仍在下降,但验证损失在一定期间内没有改善,就停止训练。目标函数是否收敛,与新数据上的表现是不同的判断。不使用测试数据反复选择停止时点。

重复使用旧梯度会怎样

第一次更新后,从 [8.475, 45.15] 出发,不重新计算梯度,而是再次使用最初的 [-47.5, -15]。学习率为 0.01 时,下一组参数是什么?与上表的第二次更新比较。

解答: 得到 a=8.95, b=45.3,不同于在当前位置重新计算后的 [8.87125, 45.27325]。本例中,重复使用旧梯度也能使 MSE 降至约 36.1588。但某一步下降更多,不保证后续更新的方向与幅度仍然合适。基本梯度下降使用当前位置的梯度。

检查清单

  • 能把梯度下降解释为通过反复移动来减小损失的方法。
  • 能说明梯度与当前位置损失增大的方向相关。
  • 能说明为减小损失,需要沿梯度相反方向移动。
  • 能从每次移动大小的角度解释学习率。
  • 能把更新式读成从当前值沿梯度相反方向小幅移动。
  • 能说明初始位置、学习率、损失曲面、数据和迭代次数的影响。
  • 能把减小损失与实际调整参数的方式联系起来。
  • 能区分梯度方向与下降时所需的反向移动。

来源与参考资料

  • Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, Chapter 8: Optimization for Training Deep Models, MIT Press, 2016, 确认日期: 2026-09-15。用于支撑深度学习最优化中成本函数、参数、基于梯度的移动、梯度下降与学习率角色的说明。
  • Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004, 确认日期: 2026-07-20。作为在数学最优化语境中确认最优化问题与基于梯度的重复移动的辅助依据。