线性回归
从 7 辆汽车的数据出发,先写出预测方程,再定义“错了多少”,最后让梯度下降自动找到合适的权重和偏置。读完后,你会看懂模型训练真正更新了什么。
- 区分特征、标签、预测、权重、偏置、参数和超参数。
- 手算一次线性预测,并说明权重正负与大小代表什么。
- 比较 MAE、MSE 与 RMSE,按离群值和业务代价选择指标。
- 说清梯度下降的一次完整迭代,并从损失曲线判断训练状态。
线性回归与模型方程
线性回归要解决的是:当标签是一个连续数值时,能不能用输入特征的加权和来预测它?例如根据汽车重量预测燃油效率,根据房屋面积预测房价。
1.1 先认识训练数据
一行数据叫一个样本。在这个案例中,每行是一辆汽车:重量是已知输入,也就是特征;每加仑汽油能行驶多少英里是希望模型预测的标签。
| 汽车 | 重量 x(千磅) | 燃油效率 y(MPG) |
|---|---|---|
| A | 3.50 | 18 |
| B | 3.69 | 15 |
| C | 3.44 | 18 |
| D | 3.43 | 16 |
| E | 4.34 | 15 |
| F | 4.42 | 14 |
| G | 2.37 | 24 |
点不可能都落在线上,因为现实还受排量、路况和发动机等因素影响。回归追求整体误差尽量小,不要求死记每个样本。
1.2 方程中每个符号都在做什么
x特征 feature
模型接收到的输入。本例是汽车重量。
y标签 label
训练数据中已知的正确答案。本例是真实 MPG。
ŷ预测 prediction
模型算出的答案。帽子表示它是估计值。
w权重 weight
输入每增加 1 单位,预测大约改变多少。
b偏置 bias
x 为 0 时的基准预测,也控制整条线的上下位置。
w, b参数 parameter
模型在训练过程中自动找到的数值。
1.3 手算一次预测
假设训练得到 w = −4.6、b = 34,且重量单位是“千磅”。预测一辆 4,000 磅汽车时,输入要写成 x = 4:
- w 为负:重量增加时,预测 MPG 降低,表示负相关。
- |w| = 4.6:重量每增加 1 千磅,预测 MPG 平均下降 4.6。
- b = 34:它负责基准位置。x = 0 在真实汽车范围之外,因此这里不应把 b 当成有现实意义的“零重量汽车油耗”。
1.4 多特征模型仍是同一件事
每增加一个特征,就增加一个“特征 × 权重”项。预测 MPG 时可以同时输入重量、排量、马力、汽缸数和加速时间。每个权重表示:在其他特征保持不变时,该特征改变 1 单位对预测造成的影响。
“千磅”和“磅”表示同一重量,但数值相差 1,000 倍,对应权重也会缩放。判断特征重要性时,要先关注单位、标准化和特征相关性。
损失:怎样衡量预测错误
模型需要一个明确目标才能学习。损失函数把预测与真实答案的差距变成一个数;训练就是调整 w 和 b,让这个数尽可能小。
2.1 残差是有方向的,损失只关心距离
真实值 24、预测值 23.1,残差是 +0.9;预测值若是 24.9,残差是 −0.9。两个预测错得一样远。直接把正负残差相加会互相抵消,所以损失函数通常取绝对值或平方。
2.2 五个常见名称,其实只有两种核心做法
| 名称 | 公式 | 回答的问题 | 特点 |
|---|---|---|---|
| L1 损失 | Σ |y − ŷ| | 全部绝对误差共多大? | 随误差线性增长 |
| MAE | (1/N) Σ |y − ŷ| | 平均错多少? | 与标签同单位,较抗离群值 |
| L2 损失 | Σ (y − ŷ)² | 全部平方误差共多大? | 大误差被显著放大 |
| MSE | (1/N) Σ (y − ŷ)² | 平均平方误差是多少? | 优化平滑,单位变成平方 |
| RMSE | √MSE | 典型误差量级是多少? | 与标签同单位,仍重罚大误差 |
误差 1、2、8
(1 + 2 + 8) ÷ 3 = 3.67
离群误差按原大小计入误差 1、2、8
(1² + 2² + 8²) ÷ 3 = 23
误差 8 平方后变成 64,影响很大2.3 跟着公式算一遍
使用上一节的模型 ŷ = 34 − 4.6x。一辆 2,370 磅汽车的 x 是 2.37,真实 MPG 为 24:
- 先预测:ŷ = 34 − 4.6 × 2.37 ≈ 23.1
- 算残差:e = 24 − 23.1 = 0.9
- 算单样本 L2:e² = 0.9² = 0.81
若有 N 个样本,就分别计算平方误差,全部相加再除以 N,得到 MSE。注意:0.81 是单个样本的平方误差,不是整份数据集的 MSE。
2.4 MAE 还是 MSE?看你怎样对待大错误
- 数据有明显异常记录,不想让它支配模型。
- 业务希望直接解释“平均错多少单位”。
- 大误差的代价大致线性增长。
- 大错误的业务代价远高于小错误。
- 离群值是真实且重要的情况,模型应主动照顾。
- 希望利用平滑可导的目标稳定优化。
先问“错 10 单位是不是错 5 单位的两倍严重?”如果明显不止两倍,平方误差通常更贴近代价。RMSE 适合报告结果,MSE 常适合训练。
梯度下降:模型怎样学参数
我们已经有模型方程和损失函数。现在的问题是:怎样自动找到让损失较小的 w 和 b?梯度下降会反复预测、量错、找方向、改参数。
3.1 梯度到底是什么
把损失想成山坡的高度,把 w 和 b 想成你所站的位置。梯度告诉你当前位置向哪边走,损失上升最快;因此要朝它的反方向走,才能下坡。
∂L/∂w权重方向的坡度
w 稍微增加时,损失变化得多快。
∂L/∂b偏置方向的坡度
b 稍微增加时,损失变化得多快。
α学习率
每次沿下坡方向迈多大一步。
“偏导数”只是分别观察一个参数:先假设 b 不动,看 w 改一点会怎样;再假设 w 不动,看 b 改一点会怎样。对单特征线性回归和 MSE:
权重梯度多乘了 x,是因为同样的预测误差发生在较大 x 上时,改变 w 对预测的影响更大。偏置对每个预测都直接加 1 份影响,所以偏置梯度不乘 x。
3.2 用真实数字走完第一次更新
从 w = 0, b = 0 开始,7 个样本的预测都为 0,MSE 为 303.71。计算得到权重梯度 −119.7、偏置梯度 −34.3。设学习率 α = 0.01:
负梯度前面还有一个减号,所以参数向正方向移动。用新参数重新预测后,MSE 会从 303.71 降到约 170.84。
| 迭代 | 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 | 还未收敛,继续训练 |
因为从全零模型开始的前几步只是在快速降低巨大误差,不代表最终关系为正。随着 b 和 w 共同调整,权重会继续移动,最终可到达该数据对应的负权重附近。
3.3 什么叫收敛
训练早期参数很差,损失常快速下降;靠近谷底后,梯度变小,曲线逐渐变平。此时继续训练也难以明显降低损失,称为收敛。线性回归配合 MSE 的损失面是凸的,形状类似一个碗,因此没有多个互相竞争的局部最低点。
训练损失达到 0 并不是普遍目标。现实数据含噪声,完全贴合所有训练点常意味着模型在记忆数据;是否可靠还要看验证集表现。
超参数:怎样控制训练
w 和 b 是模型从数据中学出的参数;学习率、批次大小和周期数由训练者预先设置,叫超参数。它们决定训练走多快、一次看多少数据、完整看多少遍。
参数
权重 w、偏置 b
训练结果的一部分超参数
学习率、批次大小、周期数
训练过程的控制旋钮4.1 学习率:每次迈多大一步
更新式 θ ← θ − α∇L 中的 α 就是学习率。它没有一个对所有任务通用的最佳值:同一个 0.01,在不同特征尺度和数据集上可能表现完全不同。
若梯度为 2.5、学习率为 0.01,则本次参数变化量是 0.025;更新方向由公式中的减号决定。
4.2 批次大小:更新前看多少样本
| 方式 | 每次更新使用 | 训练表现 | 适用理解 |
|---|---|---|---|
| 全批量 | 全部 N 个样本 | 梯度稳定,单次计算重 | 小数据集容易理解 |
| SGD | 1 个随机样本 | 更新快、噪声大 | 曲线会频繁抖动 |
| 小批量 SGD | 1 < batch < N | 速度与稳定性的折中 | 现代训练中最常见 |
这里的“噪声”是指:某个小批次不代表整份数据,所以单次更新后损失可能暂时上升。适度波动不等于训练失败,要看一段时间的总体趋势。
4.3 周期与迭代不是同一个计数
例如 1,000 个样本、批次大小 100、训练 20 个周期:每周期 10 次迭代,总共更新参数 200 次。若使用 SGD(批次为 1),则总更新次数是 20,000 次。
4.4 一套可执行的调参顺序
- 01先建立基准
固定数据切分和指标,用一组朴素设置完成训练并保存曲线。
- 02先看数据尺度
数量级差异很大的特征先标准化,避免某一方向的梯度远大于其他方向。
- 03优先调学习率
损失发散就按 10 倍逐步减小;下降过慢可谨慎增大,直到快速且稳定。
- 04再调批次与周期
根据内存和曲线噪声选批次;训练到验证损失不再改善即可停止。
- 05用验证集做选择
测试集只用于最后一次客观评估,不能反复用于调参。
线性回归用 ŷ = wx + b 预测连续数值,用 损失函数衡量预测错误,再用梯度下降更新 w 和 b;学习率、批次大小与周期数决定这个训练过程怎样运行。
本模块术语速查
- 特征 x
- 给模型的输入
- 标签 y
- 训练数据里的正确答案
- 预测 ŷ
- 模型算出的答案
- 参数
- 训练学出的 w 与 b
- 损失
- 对预测错误的数值衡量
- 梯度
- 损失上升最快的方向和变化率
- 迭代
- 处理一个批次并更新一次参数
- 周期
- 完整处理训练集一遍
- 超参数
- 训练前由人设置的控制项
- 收敛
- 继续训练已难以降低损失