Skip to content
MAMasterAI Now
1 / 11约 11 分钟阅读难度: Beginner5 张卡片中文 100%

线性回归

教机器在一团杂乱的数据中画出最好的那条直线。

阅读进度0%
卡片 1 — 核心想法第 1 / 5 张卡片

机器学习就是从例子中猜出规则

你不必编写答案,你让数据自己暴露出规则。

Analogy
账单类比

朋友告诉你「4 个人,80 元」和「6 个人,120 元」。没人说规则,你却立刻猜出「10 个人大约 200 元」。你刚刚找到了规则:人均约 20 元。线性回归做的就是同一件事,只不过更精确、全自动。

模型是一台带旋钮的机器。给它例子——输入加上正确答案——然后不断转动旋钮直到答案正确,这个过程叫训练。历史上第一台会转旋钮的机器就是线性回归。

它假设世界看起来像 答案 = 权重 × 输入 + 偏置。权重表示关系有多陡;偏置(截距)表示输入为零时直线从哪里开始。两个旋钮、一条直线,却有无数种拟合方式。

ŷ = w · x + b
ŷ 是预测值,x 是输入,w 是权重(斜率),b 是偏置(截距)。
进入下一张卡片前的一个小检查

模型用面积预测房价。w 和 b 分别代表什么?

5 个知识检查

🔒

实验区已锁定

完成全部 5 张卡片及其知识检查,即可解锁这个模拟实验。

Read the full stage transcript (all 5 cards, no JavaScript required)
卡片 1 — 核心想法

1. 机器学习就是从例子中猜出规则

你不必编写答案,你让数据自己暴露出规则。

Analogy
账单类比

朋友告诉你「4 个人,80 元」和「6 个人,120 元」。没人说规则,你却立刻猜出「10 个人大约 200 元」。你刚刚找到了规则:人均约 20 元。线性回归做的就是同一件事,只不过更精确、全自动。

模型是一台带旋钮的机器。给它例子——输入加上正确答案——然后不断转动旋钮直到答案正确,这个过程叫训练。历史上第一台会转旋钮的机器就是线性回归。

它假设世界看起来像 答案 = 权重 × 输入 + 偏置。权重表示关系有多陡;偏置(截距)表示输入为零时直线从哪里开始。两个旋钮、一条直线,却有无数种拟合方式。

ŷ = w · x + b
ŷ 是预测值,x 是输入,w 是权重(斜率),b 是偏置(截距)。

Knowledge check: 模型用面积预测房价。w 和 b 分别代表什么?

  • a. w 是第一套房的价格,b 是平均价格
  • b. w 是每多一平方米增加的价格,b 是面积为零时的基础价格← correct
  • c. w 是训练速度,b 是训练时长

权重是一个比率(每平方米多少钱),偏置是一个偏移量(起步价格)。两者合起来描述了一整族直线。

卡片 2 — 记分板

2. 我们错了多少?认识平方误差

你无法改进你无法衡量的东西。

对每个数据点,用预测值减去真实值,得到残差——点到直线的垂直距离。正数表示直线太低,负数表示太高。

如果直接把残差相加,一条在某处高 100、在另一处低 100 的直线反而会得满分。所以我们要先把每个残差平方。平方消除了符号,并且对大错误的惩罚远重于小错误。这些平方值的平均数就是均方误差(MSE)——记分板。

MSE(w, b) = (1/n) · Σ (yᵢ − (w·xᵢ + b))²
始终 ≥ 0。大错误按平方惩罚;只有完美拟合时才是 0。
Analogy
为什么平方是一个严格的裁判

只数「错误次数」的裁判,不管你越位 1 厘米还是 10 米。平方裁判的喊声则成倍放大。机器学习大多使用这位严格裁判,因为它给出一个平滑、可以沿其行走的记分板。

Knowledge check: 为什么要对残差取平方,而不是直接加绝对值?

  • a. 因为平方后的数字更省存储空间
  • b. 因为它消除了符号、重罚大误差,而且始终平滑可导← correct
  • c. 因为残差总是负数

贡献恒为正、重大失误占主导,而且处处可导——下一张卡片正需要最后这个性质。

卡片 3 — 地形

3. 每一对 (w, b) 都有一个分数,而分数构成一个碗

把误差对旋钮作图,你就得到一片能闭着眼走的地形。

想象一张巨大的表格:行是权重,列是偏置,每个格子里放着这一对参数的 MSE。把这些格子画成地形——高度是误差,地面是旋钮取值——线性回归永远给出一个平滑的凸碗,只有一个最低点。

Analogy
雾中的行走者

你被放进一个有雾的山谷,看不见谷底。但你能感觉到脚下的地往哪边倾斜。反复向下走,即使看不见也能到达最低点。模型就是这样学习的。

脚下的坡度有个名字:梯度。它指向上升方向,所以你要朝相反方向迈步。步子大小就是学习率(α)。太小训练慢如蜗牛;太大你就会跳过山谷、在对面墙上弹回来。

w ← w − α · ∂MSE/∂w b ← b − α · ∂MSE/∂b
重复到梯度几乎为零:你已经到达碗底。
Watch out新手常踩的坑

如果忘记把梯度除以样本数量,梯度就会随数据集规模增大,于是同一个学习率突然爆炸。永远要清楚你的损失是在对什么取平均。

Knowledge check: 损失剧烈震荡、始终不稳定,最可能的原因是什么?

  • a. 学习率太大,步子越过了最小值← correct
  • b. 数据集太小
  • c. 线性回归需要 GPU

越过最小值是最典型的症状。只有当步长足够小时,梯度下降才保证收敛到唯一的全局最小值。

卡片 4 — 行走

4. 一个短循环里的梯度下降

价值数十亿美元模型的训练循环,缩小版。

ts
let w = 0, b = 0;
const lr = 0.01;

for (let epoch = 0; epoch < 400; epoch++) {
  let gradW = 0, gradB = 0;

  for (const { x, y } of data) {
    const residual = (w * x + b) - y;  // prediction - truth
    gradW += 2 * residual * x;         // dMSE/dw
    gradB += 2 * residual;             // dMSE/db
  }

  gradW /= data.length;                // average over the batch
  gradB /= data.length;

  w -= lr * gradW;                     // step downhill
  b -= lr * gradB;
}
  1. 1预测:把每个例子送入当前旋钮。
  2. 2衡量:计算残差,并归并成一个损失数值。
  3. 3归责:计算每个旋钮贡献了多少(梯度)。
  4. 4修正:让两个旋钮沿梯度的反方向稍微移动。
  5. 5重复,直到损失不再改善。

这个五步循环再也不会改变。一个 4000 亿参数的语言模型跑的也是同一个循环——只是旋钮和损失更复杂了。

Good to know有意思的一点

线性回归还有闭式解:w = (XᵀX)⁻¹Xᵀy。梯度下降之所以重要,是因为在没有闭式解时它依然可用——而这一阶段之后的每个模型都属于这种情况。

Knowledge check: 哪一步告诉每个旋钮该如何改变?

  • a. 预测步骤
  • b. 由损失计算出的梯度← correct
  • c. 在测试集上的最终评估

梯度是唯一把信息从损失传回参数的步骤。这一阶段之后的一切,都是关于如何更便宜地完成这一步。

卡片 5 — 现实检验

5. 当直线在说谎

模型是关于世界形状的一个承诺。违背承诺,它就会响亮地失败。

线性回归假设四件事:关系大致是直的、误差相互独立、误差离散程度恒定、没有哪个点占主导。破坏其中一条,拟合可能看起来很自信,其实是错的。

  • 离群点:因为误差被平方,一个极大的数值会把整条直线拖过去。
  • 曲率:销量对价格不是直线。给模型喂 x 和 x²,它就能拟合曲线——这仍然是「线性」回归,只是对其参数线性。
  • 外推:用 50–200 平方米的房子拟合出的直线,对一栋 5000 平方米的宅邸毫无可信度。
  • 相关 ≠ 因果:直线可以完美,而它背后的故事完全荒谬。
Analogy
鞋码陷阱

在 4 到 12 岁的孩子中,鞋码能极好地预测阅读能力。真正的驱动因素是年龄。模型找到了真实的模式,却给出了错误的原因。永远要问:相关性背后藏着什么。

Note接下来

直线只能回答「多少」。要回答「是或否」,你需要一个会弯折的旋钮:人工神经元。

Knowledge check: 一次录入错误把某套房的价格乘了 1000 倍,拟合出的直线会怎样?

  • a. 没有影响,线性回归对离群点很稳健
  • b. 它会被拉向该离群点,因为平方误差放大了大错误← correct
  • c. 学习率会自动降低

在 MSE 下,1000 倍的错误代价是 1,000,000 倍。Huber 损失、RANSAC 和分位数回归正是为此而生。