第6章 机器学习基础:AI 怎么学会

终于讲到这一章了!前面几章,我们把"地基"一块块铺好:数字怎么表示(线性代数)、变化怎么衡量(微积分)、判断怎么量化(概率)、机器怎么变聪明(优化),还学会了动手的工具(Python)。这一章要回答一个最核心、也最让人好奇的问题:AI 到底是怎么"学会"的?答案不在什么玄乎的"智能"里,而在三个特别普通的词里 - 数据、模型、学习算法。这一章几乎没有公式,全是生活类比和图画。读完它,你会第一次真正看懂:那些天天上新闻的 AI 产品,背后到底在忙什么。

6.1 机器学习的本质

先做一个对比。传统编程,是你当老师、电脑当"复读机":你把规则一条条写进程序,电脑照着执行。比如要判断一封邮件是不是垃圾邮件,你得写"含'中奖'字样算垃圾、含'免费'字样算垃圾、发件人陌生算垃圾"……规则越写越多,永远写不完,因为骗子也在变花样。机器学习完全反过来:你不写规则,只给例子。你给电脑一万封邮件,每封标好"这是垃圾 / 这不是垃圾",让它自己看、自己总结 - "原来带这些词、来自这些发件人的,多半是垃圾"。电脑学出来的,不是你的规则,而是它自己的"经验"。

这个"从例子中自己总结规律"的过程,就是机器学习。拆开来看,它永远离不开三样东西:

  • 数据:学习的素材,就是那一封封带标注的邮件、一张张标好的图片。它是 AI 的"经验",也是它唯一的老师。
  • 模型:装规律的"容器",可以想成一个函数:输入一个东西(一封邮件),输出一个判断(垃圾 / 不垃圾)。模型的结构决定了它能装下多复杂的规律。
  • 学习算法:把"数据"变成"模型里的规律"的那个训练过程,是不断调整模型、让它越学越准的"教练" - 上一章讲的梯度下降,就是教练手里最常用的一根鞭子。

图 6-1 机器学习的三个要素:数据、模型、学习算法,一个都不能少

再用学做菜打个比方:数据是菜谱和一次次试做留下的记录;模型是你家那口锅,锅的大小决定你能做多少种菜;学习算法是反复试吃、调整火候和盐量的过程。三道工序配齐,你才真正"学会"一道菜。

重要

一句话记住
机器学习的本质:从数据中自动找规律(而不是人写死规则),再用学到的规律去做预测或决策。三要素:数据、模型、学习算法。后面主书里所有算法,都跑不出这个框架。

6.2 三种学习方式

同样是"从例子中学",老师(数据里的答案)给不给、给多少,分出了三种主流方式。先记一句大白话:监督学习有老师,无监督学习没老师,强化学习靠"试错拿奖励"

监督学习(supervised learning):数据自带"标准答案",这个答案叫标签。就像老师布置作业还批改:你做一道,老师告诉你对错,你根据对错去改进。垃圾邮件分类、房价预测、手写数字识别,都属于这一类。它是目前应用最广、最"稳"的一种。

无监督学习(unsupervised learning):数据没有答案,算法要自己发现结构。就像老师丢给你一堆乱七八糟的零件,不告诉你分类标准,让你自己按相似程度分组。电商把用户分成"价格敏感型""尝鲜型",新闻网站把海量文章自动归成"体育""财经",都是无监督的活儿。

强化学习(reinforcement learning):没有现成答案,只有"做得好不好"的反馈(奖励)。像训练小狗:坐下给零食,乱跑没零食,小狗自己琢磨出"坐下 → 有零食"这个规律。AlphaGo 下围棋、机器人学走路,都是这样"挨打受奖"学出来的。

学习方式 有没有"答案" 像什么 典型例子
监督学习 有标签(老师批改) 作业有答案,做错即改 垃圾邮件分类、房价预测、手写数字识别
无监督学习 无标签 自习课,自己分组 用户分群、新闻聚类、数据压缩
强化学习 只有奖励信号 试错拿零食 下围棋、机器人走路、自动驾驶决策

图 6-2 三种学习方式:有没有"答案",决定了学法的不同

注记

先记住这三兄弟
后面读主书时,你还会碰到"半监督学习""自监督学习"这些变体,本质都是在这三种思路上做加减法。到时候回头看这一节,你会发现它们都逃不出这张表。

6.3 分类与回归:两大基本任务

学会了"找规律",那规律拿来干嘛?机器学习的两大基本任务:分类(猜类别)回归(猜数值)。判断方法特别简单:看模型要输出的是"哪一类",还是"一个数字"。

分类输出的是离散的类别。比如水果摊老板让你猜:这个圆圆的、红红的东西,是苹果还是橙子?答案只有几个选项,非此即彼。垃圾邮件(是 / 否)、猫狗识别(猫 / 狗)、手写数字(0–9),都是分类。画出来看,就是两类点(苹果、橙子)挤在坐标系里,模型学出一条"分界线",把两类分开 - 线这边是苹果,线那边是橙子。

回归输出的是一个连续的数字。比如房屋中介猜房价:看面积、地段、楼层,报出一个数"这套大概 320 万"。数字可以无限细分,320 万和 320.5 万都算"接近"。预测房价、气温、销量,都是回归。画出来看,数据点大致沿着一条趋势分布,模型学出的那条曲线就是规律本身:给它一栋新房子的信息,它沿着曲线给你报个数。

图 6-3 分类靠"分界线"猜类别,回归靠"曲线"猜数值

注记

快速判断题
识别照片里是"晴天 / 阴天 / 雨天"是分类;预测明天气温 26.3℃ 是回归。区分它们,只看答案是"几个选项里挑一个",还是"一个可以细分的数字"。

6.4 训练、验证、测试:考试三部曲

模型学得好不好,不能只看它"做过的题"。你一定见过这样的同学:练习册上的题全对,一考试就垮。为什么?因为他背答案,没学会方法。机器也一样。所以聪明的做法是:把数据分成三份,扮演三场考试 - 作业、模拟考、高考

训练集(作业):模型主要在这份数据上学习、反复改错。就像平时做作业,错了老师讲、自己改,越做越熟练。模型绝大部分"功夫"都花在这上面。

验证集(模拟考):训练过程中,我们经常要"调参数"(比如第 4 章讲的学习率、模型要多复杂),每次调整都要看看效果。验证集就是用来"试考"的:考完把结果反馈回去微调。它像模拟考,考多少次都行,目的只是帮你调整状态。

测试集(高考):训练完、参数也调完了,才轮到它上场。这份数据从头到尾模型都没见过,只考一次,分数就是模型真实水平的最终报告。

图 6-4 数据分成三份:训练(作业)、验证(模拟考)、测试(高考),比例常见 70/15/15

划重点:测试集绝对不能偷看!如果你用测试集调过参数、改过模型,就等于"高考前拿到了考卷",分数再高也是假的,一上真实战场立刻现出原形。这就是为什么严谨的项目里,测试集像密封的考卷一样被锁起来,谁都不许碰。

提示

类比:考试三部曲
作业(训练集)是平时练习,做错没关系,重在改正;模拟考(验证集)帮你调状态,考多少次都行;高考(测试集)只此一次,成绩单上写的才是你真本事。记住:一个模型,只配考一次高考

注记

别忘了打乱
划分数据要随机打乱(比如 70% / 15% / 15%),不能简单把前一半给训练、后一半给测试 - 万一前一半全是猫、后一半全是狗,考试就变味了。

6.5 过拟合与欠拟合

学得过头或学得不够,都会出问题。这一节认识两个词:欠拟合(underfitting)过拟合(overfitting)

欠拟合 = 没学会。模型太"笨"(结构太简单),连作业里的规律都没抓住。明明规律是弯着走的,你却拿一条直线去硬套,训练差、测试也差。就像没复习就去考试,卷子上大片空白。对策:换更复杂的模型,或者给模型提供更多有用的特征。

过拟合 = 背答案。模型太"聪明"(结构太复杂),把作业里的每个细节、甚至噪音都背了下来,作业满分,一换新题就懵。就像有的同学把练习册答案背得滚瓜烂熟,连题目序号都记住了,可考试题稍微变一变就不会了 - 他背的是答案,不是方法。对策:多给数据、简化模型、加一点"正则化"约束(第 4 章的优化思想在这里派上用场)。

怎么判断是哪种?看"作业分"和"高考分"的差距:训练误差低、测试误差高 → 过拟合;两个都高 → 欠拟合。理想状态是"刚刚好":既学得会作业,又能举一反三。

图 6-5 欠拟合、刚刚好、过拟合:模型复杂度的三个档位,最右边那条"蛇形曲线"就是背答案

重要

一句话判断
欠拟合:训练差、测试也差 → 模型太简单,加大复杂度。过拟合:训练好、测试差 → 模型背了答案,加数据、简化模型。两者都是"学歪了",区别只是一个没学够,一个学过头。

6.6 评估指标:怎么知道模型好不好

模型练完了,怎么量化"好不好"?最直觉的指标是准确率(accuracy):猜对的比例。

\[ \text{准确率}=\frac{\text{正确预测数}}{\text{总样本数}} \]

人话:一百道题里对了九十道,准确率就是 90%。听起来很简单?但这一节要泼一盆冷水:准确率高,不等于模型好

举个扎心的例子:癌症筛查。假设 1000 人来体检,只有 10 人真的患病。有个偷懒的模型对所有人都说"没病"。它的准确率是多少?990 ÷ 1000 = 99%,高得吓人!可那 10 个真病人全被漏掉了 - 对病人来说,这是 100% 的错误。所以光看准确率,你会被它骗得团团转。

怎么办?把"预测结果"和"实际情况"放在一起对账,就得到混淆矩阵(confusion matrix)

图 6-6 混淆矩阵:预测和实际对账,四种结果一目了然

由混淆矩阵可以派生出两个更专业的指标:

\[ \text{精确率}=\frac{TP}{TP+FP}\qquad\text{召回率}=\frac{TP}{TP+FN} \]

人话解释:精确率(precision)衡量"在我说你有病的人里,真有病的比例" - 它管的是别乱吓人(怕误诊);召回率(recall)衡量"在真病人里,被我找到的比例" - 它管的是别漏掉人(怕漏诊)。这两个指标常常顾此失彼:报得多就误诊多,报得少就漏诊多。所以还常用F1 分数 - 精确率和召回率的"调和平均" - 来看综合水平。

注记

什么时候盯哪个?
病人很少的筛查(类别不平衡)→ 盯召回率,漏一个可能出人命;垃圾邮件拦截 → 盯精确率,把正常邮件误删比放走一封垃圾更让人抓狂。业务场景决定你看哪个数。

6.7 特征与数据:好数据胜过好模型

最后说一句行话:垃圾进,垃圾出(Garbage In, Garbage Out,简称 GIGO)。模型再先进,喂给它的数据是垃圾,学出来的也一定是垃圾。好数据,胜过好模型。

先搞懂特征是什么:特征就是"你让模型看哪些信息"。就像医生看病:年龄、体温、咳不咳嗽、有没有家族史……这些判断依据就是"特征"。你给中介看地段、面积、楼层、朝向,他才能估价;你要是只给他看"房主星座",他也没法用。选择、加工特征的功夫,行话叫特征工程 - 好的特征让学习事半功倍。

特征类型 长什么样 例子 通常怎么处理
数值型 能比大小的数字 身高、房价、温度 直接喂给模型,或做归一化
类别型 几个固定选项 性别、城市、颜色 编码成数字(one-hot)
有序型 有顺序的等级 学历、好评星级 按顺序编码成 1、2、3…
文本 / 图像 原始素材 评论、照片、语音 先转成特征向量(第 7 章讲)

再看数据清洗的直觉 - 就像做饭先洗菜,几件最常见的"脏"事:缺值(这行年龄没填 - 填平均值,或干脆删掉);异常值(年龄填成 999 - 八成是手滑,要剔除);重复数据(同一封信录了两遍 - 会让模型对这条"偏心");标签错误(把橙子标成苹果 - 模型会跟着学歪)。每一件"脏"事,都在悄悄拖低模型的天花板。

提示

类比:买菜做饭
数据是食材,特征是切配好的菜,模型是锅,学习算法是大厨。食材发霉(脏数据),大厨手艺再好也白搭;食材新鲜(好数据),随便炒炒都好吃。所以动手做项目前,先花时间把"菜"洗好、切好。

重要

一句话记住
模型的上限由数据决定,模型只是在尽量逼近这个上限。与其急着堆模型复杂度,不如先问自己两句:数据干净吗?特征选对了吗?

重要

本章要点

  • 机器学习 = 从数据中自动找规律,三要素:数据、模型、学习算法
  • 三种学习方式:监督(有老师批改)、无监督(没答案自己找结构)、强化(试错拿奖励)。
  • 两大任务:分类猜类别、回归猜数值 - 看输出是"选项"还是"数字"。
  • 训练 / 验证 / 测试 = 作业 / 模拟考 / 高考,测试集绝不能偷看
  • 过拟合是背答案(训练好、测试差),欠拟合是没学会(两个都差)。
  • 准确率会骗人:类别不平衡时,要看精确率、召回率和 F1。
  • 垃圾进垃圾出:好数据胜过好模型,特征选对、数据干净,比堆模型更重要。
警告

衔接 · 下一站
这一章的概念不是孤立知识点,而是主书《人工智能理论与实践》第 1–7 章所有算法的共同框架:无论感知机、SVM、决策树,还是 CNN、RNN、Transformer、强化学习,本质上都是同一套流程 - 选一个模型结构 → 用数据和学习算法把它练好 → 用测试集验证 → 用指标评估。下一章(第 7 章)我们先热身:看看最经典的一种"模型 + 学习算法" - 神经网络,是怎么把本章的三要素串起来的。然后你就可以拿着这张地图,去主书里对号入座了。