第 1 步 · 监督学习的起点
线性回归 + 梯度下降Linear Regression + Gradient Descent
让机器自己学会画一条穿过数据点的直线
8 分钟
阅读 + 实操
1 个
交互演示
初级
难度
线性回归 · 交互演示
w 斜率0.00
b 截距0.00
∇w--
∇b--
Loss--
为什么学这步?
线性回归是机器学习的"Hello World":给定一堆数据点,能否找到一条线捕捉其趋势?房价、气温、销量预测本质上都是"从已有数据找规律,再预测新数据"。更重要的是它引出了梯度下降——几乎所有深度学习都建立在它之上。
📌 发生了什么
- 模型从随机参数开始,计算每条数据点的预测误差。
- 沿误差下降最快的方向(负梯度)小幅更新 w、b。
- 反复迭代,直到损失曲线趋于平缓。
⚠️ 常见陷阱
- 学习率越大越快?错,过大反而震荡发散。
- 梯度下降总能找到最优?线性可,复杂模型会卡局部最优。
- 拟合好 = 因果?不,相关≠因果。
✅ 本章小结
- 模型:y = w·x + b,两个参数描述线性关系。
- 损失:MSE 衡量预测与真实的差距。
- 优化:梯度下降沿损失下降方向迭代更新。
📐 梯度推导
损失函数 MSE 对参数 w、b 的偏导数如何得到?以下是完整推导链。
对 w 求偏导(链式法则):先对外层平方求导,再乘以内层 w·x+b 对 w 的偏导(即 x_i):
对 b 求偏导:内层 w·x+b 对 b 的偏导为 1:
参数更新规则(沿负梯度方向下降):
🎛 学习率对比
学习率 η 是梯度下降最关键的超参数。太大发散,太小极慢。
| 学习率 | 表现 | 结果 |
|---|---|---|
| η = 0.001 | 每步更新极小,损失几乎不动 | 收敛过慢 |
| η = 0.01 | 平稳下降,几十步内收敛 | 推荐区间 |
| η = 0.1 | 初期快但开始震荡 | 不稳定 |
| η = 1.0 | 梯度爆炸,损失不降反升 | 发散 |
💡 上方演示器可实时调节学习率(10⁻³ ~ 10⁰),亲手验证这些行为。
💻 实现要点
梯度下降核心循环(Python,与上方演示器逻辑一致):
# 初始化参数
w, b = 0.0, 0.0
lr = 0.01 # 学习率 η
for step in range(max_steps):
# 1. 计算梯度(遍历所有样本)
grad_w, grad_b = 0.0, 0.0
for i in range(n):
error = y[i] - (w * x[i] + b)
grad_w += -2 * x[i] * error
grad_b += -2 * error
grad_w /= n; grad_b /= n
# 2. 沿负梯度方向更新
w -= lr * grad_w
b -= lr * grad_b
📚 参考文献与延伸阅读
- Andrew Ng, Machine Learning (Coursera), Week 1: Linear Regression with One Variable
- Goodfellow, Bengio & Courville, Deep Learning (2016), §4.3 Gradient-Based Learning + §5.9 Stochastic Gradient Descent
- Sutton & Barto, Reinforcement Learning (2nd ed.), §2.4 Iterative Optimization — 同样的梯度下降思想在 RL 中反复出现
- Wikipedia: Gradient descent — 梯度下降的数学定义与变体
📝 课后练习
检验你的理解——答对为止