第 9 章:统计学习:当规则写不完之后
本章问题:机器如何从数据中寻找规律?
9.1 规则写不完之后怎么办?
上一卷的结尾停在了反向传播的复兴。但在反向传播真正改变主流 AI 之前,还有另一条线在静默地延展。
这条线不从"模拟大脑"出发,也不从"把知识写成规则"出发。它从统计学出发。
当专家系统的维护成本变得越来越不可控——规则写不完、规则打架、规则过时——一些研究者开始问一个明显但之前被边缘化的问题:
如果我们需要的那些"规则",不一定是用人写进去的,而是从数据里自己长出来的,会怎么样?
这个想法并不新。感知机就是从这个想法出发的——从样本中调整权重,而不是预写规则。但它当时太早了。现在,时代的条件开始缓慢变化:计算机有了更多的内存,数据开始以新的形式积累——银行的贷款记录、医院的病历、超市的销售流水、气象站的温度测量——人们拿到的不再是十几个精心选择的样本,而是成百上千、成千上万条记录。
大量数据 + 统计方法 = 一种不同于"写规则"和"模拟大脑"的第三条路。
这条路后来被称为统计学习。
它不是突然出现的。它的根在更早——回归分析、贝叶斯推断、概率论这些工具在统计学里已经用了几十年甚至几百年。但在人工智能的主流叙事里,"从数据中学习"这个思想曾经被看作是二流路线——不如"把知识写清楚"那么优雅、可控、可解释。
但当规则路线撞到墙之后,数据路线开始获得新的尊重。
9.2 从"写规则"到"喂数据"
用一个具体的例子来理解这个转变。
假设我们要做一个垃圾邮件过滤器。
写规则的方法是这样的:找一个专家(或者自己当专家),写下"如果邮件里出现'中奖'和'领取',标记为垃圾"。然后再加"如果出现'亲爱的朋友'和'汇款',标记为垃圾"。慢慢地积累几十条、上百条规则。每遇到一种新的垃圾邮件套路,就加一条规则。每加一条规则,就要检查它和已有规则是否冲突。每过一段时间,旧的规则可能不再有效——垃圾邮件的手法在变。
统计学习的方法完全不同。
它不写规则。它准备几千封邮件,每封都已经被人工标记为"垃圾"或"正常"。然后,让一个学习算法去读这些邮件。算法从这些邮件中提取统计规律——"中奖"这个词在正常邮件中出现了 3 次,在垃圾邮件中出现了 487 次;"会议"这个词在正常邮件中出现了 2100 次,在垃圾邮件中出现了 12 次。
算法不"理解"邮件在说什么。它只是在算相关性——但算得足够多、足够精确之后,它做出的判断经常比手写规则的那套系统更准,而且遇到新套路的垃圾邮件时,它不需要工程师加规则。用新数据重新训练一次就好了。
这就是两种范式的核心差异:
- 符号主义/专家系统:"我知道垃圾邮件长什么样,我把这个知识写成规则,机器执行。"
- 统计学习:"我收集了很多垃圾邮件的实例,机器自己去算什么是特征。"
前者依赖人类的知识外化。后者依赖数据中的统计信号。
9.3 泛化:学会的不只是记住
统计学习中有个核心概念叫泛化。它听起来很学术,但直觉非常简单。
泛化的意思是:学到的东西不仅对见过的数据有效,对没见过的新数据也有效。
这听起来像一句废话——"学会了"不就应该能用在新情况吗?但在机器学习中,这不是自动发生的。
假设你用一种"死记硬背"的方式来学:你让机器把 1000 封训练邮件全部背下来——第 3 封是垃圾,第 17 封是正常,第 42 封是垃圾……然后每当来一封新邮件,机器就去查:这封新邮件和背过的哪封最像?像第 3 封?好,那就是垃圾。
这确实是一种"学习"。但它不会泛化。当你给它一封和训练集里任何邮件都不太像的新邮件时,它就不知道怎么办了。
真正的泛化要求机器从数据中提取的是规律而不是个例。不是"第 3 封是垃圾",而是"包含'中奖'且来自陌生发件人的邮件有高概率是垃圾"。
这个从"记住"到"泛化"的跨越,对应到数学上是一个非常重要的概念——训练集和测试集要分开。
你把邮箱里的 10,000 封邮件随机分成两份:8,000 封用来"教"算法(训练集),2,000 封用来"考"它(测试集)。算法在训练集上反复调整参数,不断降低错误率。但最终评判它的成绩时,只看它在那 2,000 封从未见过面的邮件上的表现。
这个分离保护的是一个朴素的真理:真正的学习不是能复述看过的例子,而是在新例子上做出正确判断。
这个理念在今天的大模型中也仍然是最核心的评估原则。GPT 的训练数据截止于某个日期——之后发生的事情它应该"不知道"。如果你在它没见过的新问答上测试它的推理能力,并且它仍然表现良好,这才说明它学到了一般性的能力,而不是仅靠记忆。
9.4 过拟合:当机器学得太认真
泛化的反面是过拟合。这是统计学习中最经典也最有趣的现象之一。
过拟合的意思是:机器把训练数据学得太好了——好到它把训练数据中的噪声也当成了规律。
想象你刚搬到一个城市,第一天出门就碰上了一场暴雨。如果你从此得出"这座城市每天都下雨"的结论,你学过拟合了。你把一个随机事件当成了规律。
机器也会做同样的事情。
假设你想训练一个模型来预测房价。你收集了 50 套房子的数据:面积、楼层、朝向、装修状况和一个房价标签。如果你用的模型非常复杂——比如它有很多参数——它可能会完美地穿过训练集中的每一个数据点,误差为零。但它产出的那条曲线会疯狂地上蹿下跳。当你用它去预测第 51 套不在训练集中的房子的价格时,它给出的数字可能荒唐到不真实。
这就是过拟合的核心矛盾:在训练数据上表现越好,在新数据上未必越好。 有时候,一个稍微"粗糙"一点的模型——它在训练集上犯了一些小错——反而在测试集上表现更稳。
这个矛盾在今天的 AI 中也有鲜明的回响。一个大语言模型在标准化测试中拿到高分,和在真实世界的开放任务中表现可靠,是完全不同的两件事。前者可能意味着它学会了解题模板;后者才意味着它有稳定的推理能力。过拟合不只是统计学习里的一个技术小麻烦——它是所有从数据中学习的系统都会面临的终极考题。
9.5 分类与回归:两种最基本的"学习"
在统计学习中,绝大多数问题可以归为两类。
分类,就是"这个样本属于哪一类?"——这封邮件是垃圾还是正常?这张 X 光片里有没有肿瘤?图片里是猫还是狗?
回归,就是"这个样本的值大概是多少?"——这套房子值多少钱?明天的气温是多少度?这个广告大概会带来多少点击量?
这两个类型听起来很不一样,但在机器眼里它们用的数学工具高度共通。分类和回归的本质都是在做同一件事:给定输入 x,预测输出 y。 只不过在分类中 y 是有限的类别(0 或 1、A/B/C),在回归中 y 是一个连续的数值(200 万还是 210 万)。
这种统一框架是统计学习一个优雅的地方。无论是图像、文本、声音、表格数据,只要你能把问题表达为"输入→预测输出",统计学习就给你一套工具来处理它。
当然,"艺术"的部分在于:你如何把原始世界变成"输入 x"?在统计学习的时代,这个任务通常由人来完成——它叫特征工程(下一章的主角)。
9.6 从确定性到概率
统计学习还有一个重要的思想成分:不确定性。
在专家系统中,规则是确定的——如果条件满足,结论必定成立。在统计学习中,结论通常是概率性的——"这封邮件有 82% 的概率是垃圾"。
这个转变在当时的 AI 文化中是有争议的。确定性的逻辑推理有一种干净利落的美感——如果 A 则 B,不是 B 则不是 A。概率则让人感觉"模糊""不干净""不像是真正的推理"。
但真实世界本来就充满不确定性。同样的症状可能对应不同的病。同样的词语在不同的语境下意思完全不同。同样的投资策略在不同年份效果可能截然相反。确定性系统在这些地方会直接崩溃——因为规则无法容纳"可能"。
统计学习拥抱了不确定性。它不追求"必定正确的推理",而追求"在给定数据下最优的猜测"。这看起来像是退了一步——承认自己不一定对——但实际上这正是它能处理真实世界复杂性的前提。
用概率来思考,而不是用"是/否"来思考,是统计学习给人工智能带来的最重要方法论贡献之一。
9.7 本章小实验:用眼睛做一次泛化
这个实验不需要写代码。
找七天,每天记录两个数:当天的最高温度和当天你喝了几杯水。
七天之后,你会得到七对数据点:(温度, 喝水量)。
现在,把这七个点画在一张纸上——横轴是温度,纵轴是喝水量。然后问自己两个问题:
- 你能发现规律吗? 天越热水喝得越多?还是没什么关系?还是天越热水喝得越少(因为喝冰饮料不算水)?
- 你能预测吗? 如果明天温度是 32 度,你大概会喝几杯水?你给出的那个推测,是凭感觉画的,还是看着这七个点"大致延长线"的方向估的?
你刚才在脑子里完成的动作,和统计学习算法做的事情(在更简单的版本上)完全一样:
- 把数据投影到一个低维度空间里(散点图);
- 寻找输入(温度)和输出(喝水量)之间的相关性;
- 判断这个相关性强不强(这些点聚在一条线附近,还是散在一团?);
- 用这个相关性去预测一个没见过的新输入的结果(32 度→?)。
整个过程中你不需要"知道水的代谢原理"、"不需要知道人体的温度调节机制"——你只用了数据中的统计信号。这就是从数据中学习最基本的形态。
9.8 本章地图
9.9 本章结语:数据接管了老师的位置
统计学习改变的不只是算法,而是人工智能研究的"教学方式"。
在这个范式里,老师不再是写规则的人,而是数据本身。人不再告诉机器"垃圾邮件长这样"——人收集很多邮件,标注好对错,然后退到旁边,让数据说话。
这个转变听起来可能只是技术细节。但它其实意味着一件事:人类不再需要事先知道正确答案。 只要数据中存在统计规律,算法就可能把它挖出来。
当然,这也意味着另一个问题:如果数据中没有足够的信号——或者更糟,数据中有偏见——算法学到的东西也会偏。在这个阶段,统计学习的核心限制仍然是对"好特征"的依赖——如何把原始信息变成算法能处理的有效输入。这件事在很长一段时间里仍然是人在做。
下一章,我们看特征工程——人类最后一次手工教机器的时代。在那之后,"特征"也将被交给机器自己去学。
那也是深度学习故事真正开始的地方。
Discussion
留言区 · GitHub-powered comments via Giscus