机器学习的全部核心思想,其实只有一句话。这一章用一笔网约车订单把它讲透。

这一讲对应《Hello, AI》第 4 章《规则不是写出来的,是学出来的》。主线约 9 分钟的阅读量,展开讲一节课。
本章要回答的问题:机器到底是怎么「学」的?学到的东西存在哪里?
起步价多少,每公里多少,夜间加成多少。表是人定的,写进程序,程序按表算。
把过去几亿笔订单的距离、时段、天气、供需和成交价喂进去,让模型自己找出「什么样的行程值多少钱」。
用一个学生每周都在用的东西开场。他们大多没想过这两种做法的本质区别。
可以现场问:同样一段路,为什么不同时间的价格不一样?谁定的这个价?答案会自然地引到「没有人定,是学出来的」。
没有人写过
「雨天晚高峰加价 23%」这条规则。
但模型的行为里包含了它,而且比人写的更细。
这一章只做一件事:把「让模型自己找规律」拆开,看清每一个零件。
这些零件在后面的神经网络和大语言模型里一个都不会少,只是尺寸变大了。
请强调最后一句。学生常以为大模型是另一种东西,其实它用的还是这一章的五个零件:样本、特征、参数、损失、梯度下降。
第二个问题(学到的东西存在哪里)会在本章中段得到一个具体得让人不安的答案:存在几千亿个数字里,人读不懂。
传统编程和机器学习的区别,不在语言、不在算力,而在「规则」这个东西站在等号的哪一边。
传统编程:规则 + 数据 → 答案
人写出规则,程序把输入按规则变成输出。规则是人提供的。
机器学习:数据 + 答案 → 规则
人提供大量的例子,机器找出把前者变成后者的规则。规则是学习产生的。
这两行可以写在黑板上,整节课都不要擦。本章后面每一个零件,都是在解释第二行怎么实现。
专家系统的瓶颈是知识获取:专家自己也说不清他怎么判断的。机器学习绕开了这个问题——不问你怎么判断,只要你给例子。
「规则难写而例子好找」是判断一个问题该不该用机器学习的第一条标准。反过来,规则清楚好写的地方(发票计算、排班约束),别用模型。
学出来的规则不是 if-then,
而是几千到几千亿个数字。
人读不懂它,只能测试它。
这是机器学习「黑箱」性质的根源。后面每一章都会撞上它:
第五章的评估、第十章的幻觉、第十四章的责任,都是在处理这一句话的后果。
请把这一页讲得慢一点。学生需要在第一次接触机器学习时就建立这个认识:可解释性不是没做好,是这条路本身的代价。
任何机器学习系统都由这三部分组成,从一条直线到万亿参数的大模型,一个不多,一个不少。
一亿行排成一张大表,就是训练数据。
模型能看到的、关于这笔订单的一切。
我们希望模型学会预测的答案。
这三个词是整门课的基础词汇,务必让学生能用自己的例子复述一遍:一张病历里,什么是样本、什么是特征、什么是标签?
| 特征 | 怎么算 | 为什么要它 / 陷阱 |
|---|---|---|
| 路程距离 | 路网最短路(不是直线) | 最重要的特征;用直线距离会低估跨江订单 |
| 出发时刻 | 拆成「小时」和「是否工作日」 | 直接用时间戳没意义,模型需要周期性 |
| 距高峰的分钟数 | 与最近早晚高峰的时间差 | 比「小时」更贴近真实的供需变化 |
| 天气 | 降雨量、温度 | 用的是下单时的天气,不是行程结束时的 |
| 起点供需比 | 附近 2 公里空车数 ÷ 等待订单数 | 溢价的核心;训练时必须用「当时」的快照 |
| 乘客历史订单数 | 用户过去的下单数 | 用于定价时要小心公平性问题 |
| 当前活动 | 演唱会、赛事散场 | 很难自动获得,常靠人工维护的日历 |
不必逐行念。挑两行讲:「出发时刻要拆开」说明模型看不懂人类的表示方式;「当前活动靠人工维护」说明模型再好也需要人补它看不到的世界。
把时间戳拆成周期,把类别编码成数字。对传统机器学习模型来说,翻译得好不好几乎决定成败。
必须只用「下单那一刻能知道的信息」。用事后才知道的信息,就是第五章的标签泄漏。
深度学习把很多手工判断交给了网络,但「用什么时刻的数据」这类问题,交不出去。
在深度学习之前,工程师大部分时间花在特征工程上。第六章会讲深度学习最大的贡献之一,就是把这一步也交给机器——但第二、三条仍然是人的责任。
「旋钮」这个比喻贯穿全书。第六章的神经网络、第七章的词向量、第九章的微调,说的都是同一件事:把旋钮拧到哪里。
价格 = w₁ × 距离 + w₂ × 时长 + b
这就是最简单的模型:一条直线,三个旋钮。术语叫参数。
一条直线能表达的规律很有限。多项式可以弯曲,决策树可以分段,神经网络可以有几十亿个旋钮。
这里埋下第五章的钩子。可以先给一句话的剧透:一个旋钮足够多的模型,可以把训练数据背下来,却在新数据上一塌糊涂。
对车费预测,最自然的损失是预测价与真实价之差的平方,在所有样本上求平均。损失越小,模型越准。
它把「好不好」这个模糊的评价,变成一个可以计算、可以比较的数。
对每一个旋钮,算「往右拧一点,损失会增大还是减小」,然后往减小的方向拧一小步。
对所有旋钮同时做,重复几千几万次,损失就一路下降。
请点明:这两个问题的答案,就是「训练」的全部内容。学生以后听到「训练了三个月」,脑子里应该是这两件事重复了无数次。
对大错误惩罚极重(差 10 元是差 1 元的一百倍)。数学上最好处理。
缺点:对异常值敏感,一笔录入错误的天价订单能把整个模型拉偏。
对每一元的错误一视同仁,对异常值稳健。
数据里有脏值、或你关心「典型情况下差多少」时更合适。
衡量「真实类别被分到的概率有多小」。惩罚自信地错远超犹豫地错。
大语言模型预训练用的就是它:每一步预测下一个 token。
一条经验:先问「什么样的错误最贵」,再选那个对这种错误惩罚最重的函数。这是把业务判断写进数学的地方。
最后这句话值得讲透:选损失函数不是技术决定,是价值判断。漏诊和误诊哪个更不可接受?这个问题应该由懂业务的人参与回答。
补一句:它不保证到达最低的谷底,但在实践中出奇地有效——而且它就是训练万亿参数大模型时用的那个算法,一个字都没变。
现场演示曲线拟合实验:拖几个点,看曲线一步步贴近,右边损失曲线往下走。再把多项式次数调很高——曲线穿过每个点却疯狂扭动,那就是第五章的过拟合。
方向对,但要走很久。算力全花在路上。
损失曲线平滑地往下走。这是训练时最想看到的画面。
甚至越跳越高,损失直接发散。
更新规则就一行:w ← w − η · ∇L(w)。减号表示往下坡走,η 就是学习率。调学习率是训练里最常见的手工活。
学生会问「那怎么知道该取多少」。诚实的答案是:试。现在有自动调节的办法,但本质仍是经验加试错。
车费 = w · 距离 + b
w 是每公里单价,b 是起步价。手里有三笔订单:
| 距离(公里) | 实际车费(元) |
|---|---|
| 2 | 14 |
| 5 | 23 |
| 10 | 38 |
这一页和下一页可以在黑板上边讲边算。学生亲眼看到数字从 417 掉到 50,比任何比喻都有说服力。
没有人告诉模型这两个数字,它们是从三笔订单里「学」出来的。
这就是本章标题的字面演示:规则(每公里三元)不是写出来的,是学出来的。
真实模型和这个例子的区别,
只有规模。
旋钮从两个变成几千亿个,样本从三笔变成几万亿个 token。
其余的每一步都一样:算梯度,走一小步,重复。
安心的是:你已经理解了训练大模型的全部原理。不安的是:我们对这个过程的理解,也就到这个程度——规模变大后发生了什么,至今没有完整的理论。
「距离大于 10 公里吗?是的话,是高峰期吗?是的话,约 45 元。」贪心地选最能分开数据的问题。
优点:人能读懂。缺点:容易长到把每个样本单独分出来。
每棵只看一部分数据和一部分特征,最后投票。单棵树的过拟合被平均掉了。
每棵专门修正前面所有树的错误。名字里有「梯度」,但树本身不是梯度下降训练的。
实用建议:在表格数据(订单、病历、学生记录)上,先跑一个梯度提升树作为基线,再考虑别的。几万行的表格不足以喂饱一个深度网络。
这一页很实用。很多学校和医院的数据规模,正好是「树比神经网络更合适」的那一档。别让学生以为深度学习总是更好。
按「答案从哪里来」,机器学习分成几个范式。第四种是过去十年最重要的新东西,也是大语言模型的根基。
历史订单有成交价,照片有人标了「猫」,邮件被标过「垃圾」。模型学习从特征到标签的映射。
最成熟、应用最广。瓶颈是标签贵。
把一亿个乘客按出行习惯自动分群,把新闻按主题归类,在交易记录里找「和别的都不像」的异常。
它不告诉你每一群是什么,只告诉你数据里有这样的分野。
第三章讲过。学的不是「这个输入对应什么输出」,而是「这种情况下该做什么」。
把一句话遮住一个词让模型猜;把一段文字截断让模型续写。标签藏在数据里,不需要人标。
所以可以用整个互联网来训练。第七章开始讲它怎么造出语言模型。
四张卡片里,请把自监督讲得重一些。它是「数据可以无限」这件事的技术原因,也是 2020 年之后一切的前提。
标签不但贵,还会带进标注者的偏见和错误。
迁移学习这一条是今天绝大多数应用的实际形态:没有人从零训练模型,都是拿别人训好的来微调。第九章会再讲。
「我们的模型准确率 98%」
——标签是谁标的,怎么标的?
模型学到的上限,是标签的质量。
标签错了,模型会把错误学得非常好。
这句话学生带出教室就能用。以后看任何 AI 产品的宣传数字,先问标签从哪来。
它只是记住所有样本。来了新的点,就看离它最近的 K 个邻居多数是什么。
没有旋钮,没有损失函数,没有梯度下降。但它确实在做分类,而且在小数据上常常不差。
「太碎」和「太粗」就是第五章过拟合与欠拟合的视觉版本。这个实验是第五章最好的预热,值得当堂做一遍。
把零件装起来。你会发现,真正花时间的地方,和你以为的不一样。
请学生猜哪一步最花时间。绝大多数人会猜第五步(训练)。答案在下一页。
这张图把本章前后两半缝在一起:上半是范式翻转,下半是工程流程。
第一步和第二步花的时间,
通常远超第五步。
「用什么模型」往往是最不重要的决定;
「预测的是不是对的东西」和「数据里有没有陷阱」才是。
这句话对准备做项目的学生特别重要。选模型是最容易的一步,也是最容易被误认为核心的一步。
一所高中想在期中前找出「期末可能不及格」的学生,提前干预。
第一步那个追问是整页的灵魂:同一个模型,用途不同,可接受的错误率完全不同。技术指标不能脱离用途来谈。
没有任何一步是技术难题,每一步都是判断。机器学习把规则交给了机器,却把更多的判断留给了人。
第六步的数字请讲透:91% 的准确率听起来很好,但在 12% 的不及格率下,一个「全部预测及格」的傻模型准确率也有 88%。第五章会正面处理这件事。
| 领域 | 样本 | 特征 | 标签 |
|---|---|---|---|
| 网约车定价 | 一笔订单 | 距离、时段、天气、供需 | 成交价 |
| 学情预警 | 一个学生一学期 | 出勤、作业提交、测验分、在线时长 | 期末是否及格 |
| 临床预测 | 一次住院 | 检查数据、用药、病史 | 三十天内是否再入院 |
| 文本分类 | 一篇文章 | 词频 / 向量表示 | 它的主题 |
请学生现场填一行:他自己专业里的一个问题,样本、特征、标签分别是什么。能填出来,这一章就算学会了。
它能不能代表要预测的对象?在城里收的数据,能用在郊县吗?
它真的是我们关心的那个东西吗?「期末及格」等于「学得好」吗?
老师多关注他,是好事;系统把他分到差班,是另一回事。
第二个问题最容易被跳过,也最致命:我们往往优化的是「能测量的那个东西」,而不是真正关心的东西。第五章、第十四章都会回到这里。
用数据和答案,
让一台带旋钮的机器
通过不断减小损失,自己找到规则。
规则藏在旋钮的位置里。人读不懂,但可以测试。
下一章就讲怎么测试——以及为什么「在训练数据上表现很好」几乎什么都不说明。
这句话是本章的全部。如果学生只记住一句,就是这一句。最后一行是第五章的引子。
「传统编程把规则当输入,机器学习把规则当输出。」用网约车的例子解释这句话。
损失函数和评估指标有什么区别?
先让学生回答,再按右键展开答案。第二题是很多人的盲区,也是第五章的入口。
自监督学习为什么能用「整个互联网」训练,而监督学习不能?
可以补一句:这也解释了为什么「数据用完了」会成为一个真问题——当标注不再是瓶颈,文本总量就成了瓶颈。
一个学情预警模型准确率 90%,老师该怎么用它?
最后一句会让学生吃一惊,这正是第五章要展开的第一个话题。可以把它作为下节课的开场。
继续读
正文与「深入」段落:ai4edu.sjtu.edu.cn/helloai/read/learning-from-data/
下一章:第 5 章 真正的考试在训练集之外
留三到五分钟做本页的回顾,让学生用自己的话复述其中一条。
鼠标移到屏幕底部会显示控制条;页码记在地址栏的 # 后面,刷新不会丢。
手机上:竖着拿会自动把版面转过来(底下那条里的「转向」可以切回去),点右半边或往上滑翻页。