🏠 总目录📚 本教程 02 · 机器学习在干什么
📑 本页目录(点开跳转)

02 · 机器学习到底在干什么

28 分钟 | ⭐ 核心


🎯 一句话

机器学习就一件事:从数据里找一个函数 f,让它对没见过的数据也管用。 「对没见过的也管用」这五个字,就是全部难点所在。


🆚 零、和普通编程的根本区别

普通编程:规则数据程序答案机器学习:数据答案学习规则(模型)
盯住「规则」这个框换了边:左边它是你写进去的输入,右边它是跑出来的产物。⭐ 所以机器学习真正的交付物不是代码,是一份你没亲手写、也读不太懂的规则 —— 后面所有「怎么知道它对不对」的麻烦都从这儿来。

💡 一句话普通编程是"你写规则",机器学习是"你给例子,让机器写规则"。

什么时候该用机器学习

情况 用什么
规则清晰、能写出来 普通代码("满 100 减 20" 别用模型)
规则存在但说不清楚 机器学习("这张照片里是猫" —— 你说不出判断规则)
规则经常变 ⭐ 机器学习(重新训练比重写代码快)
没有规则、纯随机 ❌ 谁也救不了(第 5 章的"不可约误差")

⚠️ 新手最常见的浪费:用模型去解一个 if-else 就能解决的问题。 先问一句"这能不能写成规则"——能,就别上模型。


🧠 一、三要素:任何算法都逃不出这个框架

不管是逻辑回归、XGBoost 还是 GPT,拆开都是这三样:

① 模型(假设空间)—— 我允许 f 长什么样?
  • 线性模型:f 只能是直线/平面
  • 决策树:f 是一堆 if-else 切出的方块
  • 神经网络:f 可以是任意复杂的曲面
💡 这决定了模型的「能力上限」
② 损失函数 —— 怎么衡量 f 有多差?
  • 回归:均方误差 MSE
  • 分类:交叉熵
  • 排序:BPR / pairwise(推荐算法第 5 章见过)
💡 这决定了模型「往哪个方向努力」
③ 优化方法 —— 怎么找到最好的那个 f?
  • 解析解:直接求公式(线性回归可以)
  • 梯度下降:一小步一小步挪(神经网络)
  • 贪心搜索:每次选最优切分(决策树)
💡 这决定了「能不能真的找到」

🔑 拿到任何新算法,就问这三个问题:它假设 f 长什么样?它的损失函数是什么?它怎么优化? 能答上来,就算懂了这个算法。

🔨 用三要素拆解三个你已经见过的模型

假设空间 损失函数 优化方法
线性回归 直线/超平面 MSE 解析解或梯度下降
XGBoost 一堆树的加和 任意可微损失 + 复杂度罚 贪心找切分 + 梯度提升
GPT Transformer 能表达的函数 交叉熵(猜下一个词) AdamW + 反向传播

💡 看出来了吗:GPT 和线性回归在框架上没有本质区别, 只是假设空间大了 10 亿倍、数据多了 10 亿倍。 "大模型"是量变,三要素这个框架没变。

🔗 数学原理第 1 章会告诉你更深的一层损失函数不是随便选的——MSE 对应"假设噪声是高斯的",交叉熵对应"假设标签服从伯努利分布"。 选损失函数 = 声明你对数据的假设。


🎭 二、核心难题:泛化

   你能测量的:训练误差(在见过的数据上错多少)
   你真正要的:泛化误差(在没见过的数据上错多少)

                    ↑ 这两个不是一回事
                      整个机器学习都在处理这个鸿沟

为什么会有鸿沟:训练数据只是真实世界的一个样本,里面既有真规律,也有噪声和巧合

   模型能力弱  →  只学到了粗糙的规律      →  欠拟合(两边都差)
   模型能力刚好 →  学到真规律,忽略噪声    →  ✅ 泛化好
   模型能力过强 →  把噪声和巧合也学进去了  →  过拟合(训练好测试差)

💡 人话类比

你观察到「过去 10 天下雨我都带伞了,而且这 10 天我都穿了蓝袜子」。 真规律:下雨要带伞。 巧合:蓝袜子和下雨有关。 一个"能力过强"的模型会把蓝袜子也学进去 —— 这就是过拟合。

💡 为什么"数据越多越不容易过拟合"

数据少时,"蓝袜子"这种巧合很容易出现(10 天全是蓝袜子完全可能)。 数据到 1000 天时,蓝袜子和下雨的巧合几乎必然被打破——噪声被平均掉了,真规律留下来。

🔗 数学原理第 9 章 PAC把这句话变成了公式m ≥ (1/ε)(ln|H| + ln(1/δ)) —— 模型能力(|H|)越大,需要的数据越多。 这是"要多少数据才够"这个问题唯一的理论答案。

⚠️ 一个必须现在就建立的习惯

   ❌ 用训练集的分数判断模型好坏
   ✅ 永远留出【模型没见过】的数据来评估

   → 这就是第 5 章要讲的训练/验证/测试集划分
   → 违反它,你所有的结论都是假的

📚 三、三类任务(分清楚,选错模型就白干)

监督学习 Supervised —— 有标准答案
  • 分类:答案是类别 「这个肿瘤是良性还是恶性」
  • 回归:答案是数字 「这套房值多少钱」
  • 排序:答案是顺序 「哪个商品该排前面」← 推荐算法
  • 👉 你 90% 的时间在做这个
无监督 Unsupervised —— 没有答案,找结构
  • 聚类:把相似的分成一堆 「用户能分成几种类型」
  • 降维:压缩到低维 「30 个特征压成 2 个来画图」
  • 👉 第 6 章讲
自监督 Self-Supervised —— 自己造答案 ⭐
  • 「遮住下一个词,让模型猜」← 大模型预训练就是这个!
  • 数据本身提供监督信号,不需要人标注
  • 👉 这是大模型能吃下整个互联网的根本原因

🔗 一个重要的连接:你在全景导论第 4 章学的「预训练=猜下一个词」, 在分类上属于自监督——它把「无标注文本」变成了「有答案的监督任务」。 这个技巧是大模型革命的地基。

💡 为什么自监督这么厉害

   监督学习的天花板 = 人能标多少数据
                     → ImageNet 花了几年标了 1400 万张图

   自监督的天花板 = 世界上有多少数据
                     → 整个互联网,而且【完全免费】 ⭐

   ⭐ 这个数量级差异,就是大模型和传统模型的分水岭

还有两类你会遇到的

类型 是什么 典型场景
半监督 少量标注 + 大量无标注 标注贵的领域(医疗影像)
强化学习 没有正确答案,只有奖励信号 游戏、机器人、RLHF(大模型对齐)

🔗 RLHF 让大模型"听话"的那一步就是强化学习——全景导论第 4 章


⚖️ 四、没有免费的午餐

不存在一个在所有问题上都最好的算法。

这不是鸡汤,是有数学证明的定理(No Free Lunch Theorem)。它的实践含义:

❌ 错误的想法 ✅ 正确的想法
「XGBoost 是最强的算法」 「XGBoost 在中小规模表格数据上通常最强」
「深度学习碾压一切」 「深度学习在图像/文本/大数据上强,小表格数据经常输给树模型」
「先上最复杂的模型」 「先上简单基线,用数据证明复杂度必要」

🔗 数学原理第 11 章给了严格版本, 结论比你想的更强:在所有可能的问题上平均,随机猜和最先进的算法一样好。 之所以机器学习仍然有用,是因为真实问题有结构——而选对模型 = 选对和这个结构匹配的假设

也是智能体工程第 6 章降级测试、 以及Kaggle 第 21 章任务决策路径背后的同一条原理。

实践中的选型直觉(第 19 章挑战 B 会让你亲手验证):

数据类型 首选
表格数据、几万到几百万行 梯度提升树(XGBoost/LightGBM)⭐
图像 CNN / 预训练视觉模型
文本 预训练语言模型微调
数据极少(<1000 行) 线性模型 + 强正则
需要可解释 线性模型 / 单棵决策树
有强先验知识(周期性、单调性) 把知识编码进模型/特征,比换模型有效得多 ⭐

🗺️ 五、一个完整项目的样子(后面每一章都是它的一环)

   ① 问题定义   这是分类还是回归?用什么指标?        ← 本章
   ② 数据       从哪来?有多脏?怎么划分?            ← 第 5、16 章
   ③ 基线       最简单的模型能到多少分?              ← 第 1、3 章
   ④ 特征       能不能造出更有信息量的输入?          ← 第 16 章
   ⑤ 模型       换更强的模型有没有提升?              ← 第 4、7-15 章
   ⑥ 调参       在噪声之上还有没有空间?              ← 第 4、9 章
   ⑦ 诊断       欠拟合还是过拟合?该加什么?          ← 第 5、10、11 章
   ⑧ 上线       线上和线下一致吗?                    ← 第 11 章

💡 绝大多数人的时间分配是错的: 新手把 80% 时间花在 ⑤⑥(换模型、调参), 老手把 80% 时间花在 ①②④(问题定义、数据、特征)。 —— 因为前者的天花板由后者决定。


🔗 和站内其他章的关系

相关的地方 这一章的位置
推荐算法第 5 章的 BPR 损失 三要素里的「损失函数」,排序任务专用
推荐算法第 12 章的离线/在线不一致 泛化鸿沟的工业版
全景导论第 4 章预训练 自监督学习
全景导论第 4 章 RLHF 强化学习
数学原理第 1 章 损失函数从哪来
数学原理第 9 章 "要多少数据"的定量答案
数学原理第 11 章 NFL 的严格版
Kaggle 第 2 章正则化 对抗过拟合的工具箱
智能体第 6 章降级测试 没有免费午餐的工程实践

✅ 检查点

  1. 机器学习和普通编程的根本区别是什么?什么时候该用机器学习?
  2. 机器学习三要素是什么?拿到新算法该问哪三个问题?
  3. 用三要素拆解一下 GPT。它和线性回归有本质区别吗?
  4. 训练误差和泛化误差的区别?为什么会有鸿沟?
  5. 为什么"数据越多越不容易过拟合"?
  6. 欠拟合和过拟合分别是什么原因?
  7. 「预训练=猜下一个词」属于哪类学习?为什么它是大模型的分水岭?
  8. 除了监督/无监督/自监督,还有哪两类?RLHF 属于哪类?
  9. 「没有免费的午餐」的实践含义是什么?为什么机器学习仍然有用?
  10. 新手和老手的时间分配有什么区别?为什么?
👀 答案
  1. 普通编程是你写规则,机器学习是你给例子让机器写规则规则清晰能写出来时不该用("满 100 减 20"别上模型)。
  2. 模型(f 能长什么样/能力上限)、损失函数(往哪个方向努力)、优化方法(能不能真找到)。问:假设空间是什么?损失是什么?怎么优化?
  3. 假设空间=Transformer 能表达的函数,损失=交叉熵(猜下一个词),优化=AdamW+反向传播。没有本质区别——只是假设空间大了 10 亿倍、数据多了 10 亿倍。大模型是量变。
  4. 训练误差是在见过的数据上的表现(可测量),泛化误差是在没见过的数据上的(真正要的)。鸿沟来自训练数据只是真实世界的一个样本,含有噪声和巧合。
  5. 数据少时"蓝袜子"这种巧合很容易出现;数据多了巧合几乎必然被打破——噪声被平均掉,真规律留下。定量版是 PAC 的 m ≥ (1/ε)(ln|H|+ln(1/δ))。
  6. 欠拟合=模型能力太弱,连真规律都没学到(训练测试都差);过拟合=能力太强,把噪声和巧合也学进去了(训练好测试差)。
  7. 自监督——数据本身提供答案,不需要人工标注。分水岭在于:监督学习的天花板是"人能标多少",自监督的天花板是"世界上有多少数据",而且免费
  8. 半监督(少量标注+大量无标注)和强化学习(只有奖励信号)。RLHF 属于强化学习
  9. 不存在通用最优算法 → 先上简单基线、用数据证明复杂度必要。仍然有用是因为真实问题有结构,选对模型 = 选对和这个结构匹配的假设。
  10. 新手 80% 时间在换模型/调参,老手 80% 时间在问题定义/数据/特征。因为前者的天花板由后者决定。

🛑 可以停在这里

走神救援

普通编程是你写规则,ML是你给例子让机器写规则——规则能写出来就别上模型。ML=从数据找函数f,难点全在"对没见过的也管用"。三要素:模型(f能长啥样/能力上限)+损失(往哪努力)+优化(能否找到)——拿到新算法就问这三个。GPT 和线性回归在这个框架里没有本质区别,只是量变(🔗数学原理第1章:损失函数不是随便选的,MSE=高斯噪声假设,交叉熵=伯努利假设)。核心难题泛化:训练误差可测但泛化误差才是要的,鸿沟来自数据含噪声和巧合(蓝袜子);数据多了巧合被平均掉(定量版=PAC的 m≥(1/ε)(ln|H|+ln(1/δ)))。能力弱→欠拟合,过强→过拟合。任务类型:监督(90%时间)/无监督/自监督(预训练=猜下一个词——分水岭在于天花板从"人能标多少"变成"世界有多少数据"且免费)/半监督/强化学习(RLHF)。没有免费午餐→先上简单基线;ML仍有用是因为真实问题有结构,选模型=选匹配这个结构的假设。⭐新手80%时间调参,老手80%时间在问题定义/数据/特征——前者的天花板由后者决定

下一节 👉 03-线性模型.md

打卡记录保存在你的浏览器里,首页能看到总进度