第 5 章 · 机器学习概述

从本章起进入 AI 的现代篇章:不写规则,给数据让机器自己找规律。机器学习(ML)的定义一句话:从经验(数据)E 中,针对任务 T 和性能度量 P,自动改进的系统(Mitchell)。本章建立 ML 的世界观:三种学习范式、泛化与过拟合(全 ML 最重要的概念)、以及「模型 = 假设空间 + 搜索」的统一视角——后面四章(线性模型、神经网络、CNN、Transformer)都只是这个视角下的具体假设空间。

5.1 三种学习范式

监督学习(supervised):带标准答案的数据(输入 x,标签 y),学 x → y 的映射。分类(垃圾邮件识别)、回归(房价预测)。它吃标签,标签靠人工标注(成本的大头)。

无监督学习(unsupervised):无标签,自己找结构。聚类(用户分群)、降维(压缩特征)、异常检测(信用卡欺诈)。它回答「数据长什么样」而不是「这个是什么」。

强化学习(reinforcement):智能体在环境中试错,靠奖励信号学习,无标准答案只有延迟反馈。下棋(第 3 章 AlphaZero 的自我对弈)、机器人控制、游戏 AI。它最接近「学习」的本义(婴儿学走路也是试错),也最难训练(奖励稀疏、探索成本高)。

(还有半监督、自监督——大模型的关键:把无标注文本本身变成标签「预测下一个词」,一举吃下全互联网的数据,第 10 章。)

5.2 模型的统一视角:假设空间 + 损失 + 搜索

任何监督学习系统拆开都是三件套:

  • 假设空间:候选函数的集合(线性函数?树?神经网络?),模型的结构决定了「它可能学出什么」;
  • 损失函数:量化「这个假设有多差」(预测值与真实值的差距);
  • 优化算法:在假设空间里找损失最小的那个(梯度下降,第 6 章的主角)。

「学习 = 在假设空间中搜索让损失最小的假设」。这个视角的威力:不同模型是不同大小的假设空间——线性模型(百万级假设)简单可控但表达力弱,神经网络(无限维)表达力强但难驾驭;ML 的艺术 = 假设空间与数据量的匹配。第 3 章的搜索(在状态空间)与这里的搜索(在假设空间)是同一门手艺的两次应用。

5.3 泛化与过拟合:全课程最重要的概念

训练的目标不是在训练数据上表现好(背下答案也能做到),而是泛化:在没见过的数据上表现好。由此产生的三个状态:

  • 欠拟合:训练集上都差,假设空间太弱(用线性模型拟合曲线数据);
  • 过拟合:训练集近满分、测试集崩盘,模型把训练集的噪声当规律背下来了;
  • 恰好处:两者之间。

经典实验(自己在纸上就能脑补):用 1 次、5 次、15 次多项式拟合 10 个带噪声的点——1 次(直线)欠拟合,15 次(穿过每个点)过拟合,5 次左右恰到好处。模型复杂度与数据量的匹配是永恒主题:数据少就别上大模型,数据多时大模型的容量才吃得满。

工程上的防过拟合三板斧:训练/验证/测试集三分(测试集只许最后碰一次,像高考)、正则化(给损失加复杂度惩罚,「简洁的假设优先」,奥卡姆剃刀的数学化)、交叉验证(数据轮流当验证集,榨干小数据)。铁律:验证集上的表现才是模型的真实水平,训练集分数是自欺。

5.4 机器学习的完整流程

工业界 ML 项目的真实流水线(和软件工程课第 10 章的 CI/CD 平级):

① 明确任务与指标(第 3 章需求工程的 ML 版:预测什么?什么算准?)
② 收集数据 + 清洗(脏活占 80% 工时;缺失值、异常值、标签错误)
③ 特征工程(把领域知识编码进输入;深度学习时代弱化但没消失)
④ 训练与调参(第 6 章起)
⑤ 评估(第 5.5 的指标;在验证集上)
⑥ 部署与监控(数据分布会漂移:去年的用户画像今年失效,模型要定期重训)

流程里最反直觉的事实:算法只占 ML 工程的 20%,数据和工程占 80%。「模型即产品」是研究视角,「数据管线即产品」是工业视角。

5.5 评估指标:别只看准确率

准确率(accuracy)在类别不均衡时会撒谎:欺诈交易占 0.1%,全预测「非欺诈」的蠢模型准确率 99.9%。要看混淆矩阵的四格(真阳/假阳/真阴/假阴)派生的指标:

  • 精确率(precision):报的警报里多少是真的(宁缺毋滥);
  • 召回率(recall):真的坏蛋抓到了几个(宁枉勿纵);
  • F1:两者的调和平均;
  • ROC/AUC:阈值扫过全区间时两者的整体权衡。

指标的选型是业务决策:癌症筛查(漏诊致命)保召回,垃圾邮件拦截(误杀烦人)保精确。「指标决定行为」(Goodhart 定律)在 ML 里是字面成立的:优化什么,模型就扭曲什么,第 10 章的大模型对齐困境同源。

常见认知误区

  • 「模型准 = 学习了规律」。在测试集上反复调参,相当于把测试集泄露给了模型(数据泄露,工业界头号造假事故源);测试集必须隔离到最后一刻。
  • 「相关 = 因果」。冰淇淋销量与溺水人数同涨(都是夏天的果);模型学到相关性,人要负责因果判断。
  • 「深度学习万岁」。小数据、表格数据(数据库课里那种)上,梯度提升树(XGBoost)常年吊打神经网络;选模型看数据形态,不看潮流。
  • 「训练完就结束」。分布漂移(drift)让线上模型悄悄变蠢,监控与重训(软件工程课第 10 章的监控思想)是长期饭票。

练习

  1. 动手:用 sklearn(或手写)跑第一个分类:鸢尾花数据集(150 条,3 类),训练/验证/测试三分,分别报三个集合的准确率,观察「训练集永远最好」的现象。
  2. 动手:过拟合实验:自己造 20 个 y = sin(x) + 噪声 的点,分别用 1 次、5 次、15 次多项式拟合(第 6 章将给出原理),画图对比训练误差与测试误差,亲手看到「U 形」曲线。
  3. 手算:1000 封邮件里 50 封垃圾。模型把 40 封垃圾和 20 封正常邮件标为垃圾。算准确率、精确率、召回率,并解释为什么 99% 的准确率在这题里没有意义。
  4. 思考:第 4 章说符号 AI 卡在「知识获取瓶颈」,本章的监督学习把它变成「标签获取瓶颈」。对比两代瓶颈:哪个更便宜?自监督(第 10 章)为什么被视为对这个瓶颈的突破?