前置基础 · 第 3 章
机器学习入门:模型是怎么"练"出来的
别被"机器学习"四个字唬住。它最朴素的意思就是:不给它写死规则,而是喂给它大量例子,让它自己总结出规律。就像你教小孩认猫——不是给他背"猫有尖耳朵胡须",而是给他看一千张猫和狗的照片,看久了他自然就会了。这一章讲清楚这个"练"的全过程。
① 什么叫"训练":喂数据、调参数
传统写程序是人把规则写死:if 耳朵尖 and 有胡须: 猫。机器学习反过来——把答案和例子都喂给机器,让它自己把"规则"(也就是一堆参数)调成最准的样子。
1喂数据
给它成千上万张标注好的图(这张是猫、那张是狗)。
2瞎猜一个
一开始参数是随机的,猜得一塌糊涂。
3算错多少
用损失函数量出"这次猜得有多离谱"。
4调参数
沿梯度下降方向微调,下次少错一点。重复几万次。
本章小目标学完你要能:说清训练=喂数据调参数;分清训练/验证/测试集;知道损失函数(MSE、交叉熵)在干嘛;理解学习率和梯度下降;认出过拟合/欠拟合,以及 L1/L2 正则化是干嘛的。
② 核心概念卡片
三份数据:训练集 / 验证集 / 测试集
| 数据集 | 给谁用 | 生活类比 | 能不能偷看答案 |
| 训练集 | 拿来学习、调参数 | 平时做的练习题 | 反复看,随便用 |
| 验证集 | 训练中途检查、调超参 | 月考卷 | 训练时偶尔拿来估水平 |
| 测试集 | 最后正式考试 | 期末考 | 全程不许碰,只用来报最终成绩 |
为什么测试集必须藏起来如果你把期末考题也拿来刷题,成绩再高也没用——那是背答案,不是真会。测试集就是为了证明模型"遇到没见过的新东西也能行"。
损失函数:量出"猜得有多离谱"
| 损失函数 | 用在哪 | 直觉 |
| MSE(均方误差) | 回归题:预测连续数字(房价、气温) | 预测值和真实值差多少,平方后平均 |
| 交叉熵 | 分类题:猫/狗、是不是垃圾邮件 | 它把正确答案猜得多不自信,越错罚得越狠 |
梯度下降(直觉,别背)
新参数 = 旧参数 − 学习率 × 梯度 (朝误差下坡方向走一小步)
学习率就是这一步迈多大:太大容易一步跨过谷底、来回震荡;太小又走得龟速、半天不到底。调学习率是炼丹师最常干的事。
③ 伪代码:一次完整的训练循环
把训练想成"刷练习题—对答案—订正"的循环
每一轮(epoch)都把训练集过一遍。
① 拿一批数据,模型先猜一遍;② 用损失函数算"跟正确答案差多少";③ 用梯度下降算出每个参数该往哪调;④ 微调参数。然后换下一批数据,重复几万轮。
# 伪代码:训练循环长这样
for 轮次 in range(epochs):
for 一批数据 in 训练集:
预测 = 模型(数据) # 瞎猜
误差 = 损失函数(预测, 标准答案) # 量错多少
梯度 = 反向传播(误差) # 算该怎么调
参数 -= 学习率 * 梯度 # 微调一步
过拟合 vs 欠拟合:两种失败
| 毛病 | 表现 | 类比 | 怎么办 |
| 欠拟合 | 训练集分数就很低 | 学生连练习题都做不对,没学会 | 模型太简单/训练不够,加大复杂度或多练 |
| 过拟合 | 训练集几乎全对,测试集一塌糊涂 | 学生把练习题答案背下来了,新题就懵 | 加正则化、加数据、早停 |
L1 / L2 正则化(直觉)就是"别让某些参数大得离谱",逼模型学得简单、通用一点,别死记硬背。L1 倾向把不重要的参数压成 0(做特征筛选),L2 倾向把参数整体压小一点(更平滑)。目的都是一句话:别背题,要举一反三。
④ 常见误区(先打预防针)
误区 1:训练集分数越高越好如果训练集 99% 但测试集 60%,那是过拟合——背题了。真正要看的是没见过的测试集分数。
误区 2:学习率越大学得越快越好太大容易在谷底两边来回跳,永远落不下去,甚至越来越差。通常从很小的值(比如 0.001)开始试。
误区 3:验证集和测试集是一回事验证集是训练中用来调超参的"模拟考",会被反复参考;测试集是最后才动一次的"高考",两者不能混。
误区 4:模型自动就会举一反三不会。不给正则化、数据少的时候,它倾向死记训练集。泛化能力是要刻意设计和约束出来的。
⑤ 折叠自测(3 题,点开看解析)
自测1"训练一个模型"用大白话说是在干嘛?
就是喂给它大量带答案的例子,让它反复猜、算错多少、再微调自己的参数,直到猜错的次数尽量少。不是人写规则,是机器自己总结规律。
自测2训练集分数 99%,测试集只有 60%,这是什么毛病?怎么救?
这是过拟合——把练习题答案背下来了,遇到新题就懵。可以加 L1/L2 正则化、增加训练数据、训练早停、降低模型复杂度。
自测3为什么测试集在训练全程都要"藏起来"?
因为测试集是用来模拟"从未见过的新情况"的高考。如果训练时偷看了,成绩再高也是背题,证明不了模型真的会泛化。
⑥ 费曼三问(合上眼睛讲给 12 岁小孩听)
问 1:机器学习和你以前写程序,最大的区别是啥?
答:以前是人把规则一条条写死;现在是把例子和答案喂给它,让它自己练出规则。像教小孩认猫,不是背定义,是看很多照片看会的。
问 2:那三份数据(练习/月考/期末)各是干嘛的?
答:训练集是平时刷题,验证集是月考用来调整学习方法,测试集是期末高考——全程不许偷看,只用来证明你真会了。
问 3:模型为啥会"背答案",正则化是怎么劝它别死记硬背的?
答:它太努力了,把练习题全背下来,新题就傻了。正则化就是告诉它"别太钻牛角尖,学得简单点、通用点",逼它举一反三。
口述全链路"机器学习就是喂数据让模型自己调参数:先瞎猜,用损失函数量错多少(回归用 MSE、分类用交叉熵),再沿梯度下降微调,学习率控制步幅。数据分训练/验证/测试三份,测试集必须藏好。训练分太高测试分低是过拟合,加 L1/L2 正则化、加数据、早停来救;两边都低是欠拟合,得加大模型或多练。"
⑦ 知识链路:你现在站在哪
本节位置
AI 前置四章的第 3 站:理解"训练"这件事本身——数据怎么分、损失怎么算、过拟合怎么防。
🎯 深入学习路径 · 机器学习
直觉建立后,按下面的链路往上爬。