机器学习速成·线性回归(3/4):梯度下降——如何找到最优的权重和偏差
本文参考 Google 机器学习速成课程 - 线性回归:梯度下降(Gradient Descent) 模块撰写,承接前三篇,讲清训练的核心算法——梯度下降是如何一步步把”损失”降到最低、找到最优权重和偏差的。
一、梯度下降是什么?
梯度下降(Gradient Descent) 是一种数学技巧,通过反复迭代,找到能让模型产生最低损失的权重和偏差(w 和 b)。
训练开始时,权重和偏差会被随机化为接近零的值,然后重复以下 4 步:
梯度下降循环:
1. 用当前的权重和偏差计算损失
2. 确定能减少损失的"移动方向"
3. 沿这个方向,把权重和偏差移动"少量距离"
4. 回到第 1 步,重复……直到无法再减少损失(收敛)
简单说,梯度下降就像在山坡上滚球:每次朝下坡方向走一小步,直到滚到山谷最低点(损失最低的 w、b 组合)。
二、一个具体算例:手把手走一遍
沿用油效数据集(7 个样本),用 MSE 作为损失指标,逐步执行梯度下降。
第 1 步:从零开始
把权重和偏差都设为 0:
权重 w = 0,偏差 b = 0
模型:y = 0 + 0·x₁
第 2 步:计算初始 MSE 损失
把所有预测值(都是 0)与实际标签求差、平方、求平均:
Loss = [(18−0)² + (15−0)² + (18−0)² + (16−0)² + (15−0)² + (14−0)² + (24−0)²] / 7
= 303.71
第 3 步:求损失函数的斜率(梯度)
对损失函数分别关于权重和偏差求导,得到切线的斜率:
权重斜率(对 w 求导)= −119.7
偏差斜率(对 b 求导)= −34.3
预测方程记为 f₍w,b₎(x) = (w·x) + b,MSE = (1/M)·Σ(f₍w,b₎(x) − y)²。对 w 求导得 (1/M)·Σ((f−y)·2x),代回初始值算出 −119.7;对 b 求导得 (1/M)·Σ((f−y)·2),算出 −34.3。
第 4 步:沿负斜率方向移动”少量”
目前先任意把”少量”定为 0.01(下一篇文章将讲这正是”学习速率”):
新权重 = 旧权重 − (0.01 × 权重斜率) = 0 − 0.01 × (−119.7) = 1.2
新偏差 = 旧偏差 − (0.01 × 偏差斜率) = 0 − 0.01 × (−34.3) = 0.34
用新的 w、b 再算损失,回到第 1 步重复。完成六次迭代后:
| 迭代 | 权重 w | 偏差 b | 损失(MSE) |
|---|---|---|---|
| 1 | 0 | 0 | 303.71 |
| 2 | 1.20 | 0.34 | 170.84 |
| 3 | 2.05 | 0.59 | 103.17 |
| 4 | 2.66 | 0.78 | 68.70 |
| 5 | 3.09 | 0.91 | 51.13 |
| 6 | 3.40 | 1.01 | 42.17 |
可以看到,随着每次更新 w 和 b,损失越来越低。本例只做了 6 次就停了;实际训练会一直进行到收敛。
三、模型收敛与损失曲线
收敛(Convergence) 指:额外的迭代不再能进一步减少损失,因为梯度下降已找到能让损失最低的 w、b。
3.1 用损失曲线判断收敛
训练时通常查看损失曲线(横轴=迭代次数,纵轴=损失):
- 前几次迭代:损失大幅下降
- 随后:下降速度变慢,逐渐变平
- 大约 1000 次迭代后:曲线趋于平缓 → 基本可确定已收敛
⚠️ 注意:模型几乎找不到精确的最优 w、b,但能找到非常接近的值。 而且最终的最小损失通常 > 0。如果损失降到 0,意味着模型对每个点都拟合得完美——这往往是过拟合的信号(后面课程会细讲)。
3.2 训练过程中的三个快照
看模型在不同迭代时刻的状态,能直观联系”w、b 更新、损失下降、收敛”:
| 阶段 | 迭代期 | 模型表现 |
|---|---|---|
| 开始 | 约第 2 次 | 损失过大,预测很差 |
| 中间 | 约第 400 次 | 已找到更优 w、b,模型明显改善 |
| 结束 | 约第 1000 次 | 已收敛,损失降到最低 |
四、收敛与凸函数:为什么梯度下降一定有用?
线性模型的损失函数始终是一个”凸”(Convex)曲面。这意味着:只有一个全局最低点,没有任何局部陷阱。
基于这个性质,当线性回归模型收敛时,我们能确定它已经找到了产生最低损失的 w、b——不用担心卡在某个”假谷底”。
如果画出一个单特征模型的损失曲面(z 轴=损失,x 轴=权重,y 轴=偏差),凸函数就像一个碗:梯度下降的点就像球从碗沿滚下去,最终停在碗底(最低点)。
关键术语:凸函数(Convex Function)——碗状、只有唯一最低点的函数。这是线性回归 vs 深层神经网络在处理收敛上最本质的差异。
五、关键术语速查
- 梯度下降(Gradient Descent):迭代寻找最低损失 w、b 的算法。
- 迭代(Iteration):梯度下降循环中的一轮。
- 损失曲线(Loss Curve):损失随迭代次数变化的图,用于判断收敛。
- 收敛(Convergence):额外迭代不再减少损失的状态。
- 凸函数(Convex Function):线性模型损失曲面形状,保证全局最优。
总结
| 核心要点 | 关键结论 |
|---|---|
| 梯度下降 | 反复”算损失→找方向→小幅移动”,直到损失最低 |
| 一个循环 | 4 步:算损失 → 求梯度斜率 → 沿负斜率移动 → 重复 |
| 收敛判定 | 看损失曲线是否变平;额外迭代不再降损失 |
| 凸函数保证 | 线性模型损失是凸的 → 收敛即全局最优 |
| 最小损失 > 0 | 损失为 0 往往是过拟合信号 |
一句话:梯度下降就是”滚下山谷”找损失最低点——每轮根据梯度(斜率)决定往哪走、走多远,直到停在碗底;因为线性回归的损失是凸的,所以停下来那一瞬间,就是全局最优。