跳到主要内容

机器学习解决什么问题 — 为什么偏偏是现在,以及预测与分类

这一章讲三件事: 这项技术为什么是在这些年才火起来的(三个条件缺一不可); 它主要用来解决哪两类问题; 以及一句最容易被略过、却是全部要害的话——规则不由人写。

它在全书链条里的位置: 从这一章起进入原书的附录, 那是第 2 版在正文写完十二年后加上去的。 前十八章讲的是「人怎么把问题化到机器能照做」; 附录讲的是另一条路:让机器自己从数据里把规则找出来。 需要的基础: 无。

1. 先看现象:为什么偏偏是现在才火

这一节回答一个时代问题,而原书把它放在了讲定义之前——这个顺序是对的。

机器学习不是新想法。它这些年才火起来,是因为三样东西同时到位了1

第一样:有大量现成的、机器能直接处理的数据。 互联网让这件事变得很容易——网上到处是现成的图片、文字、记录; 而且能存大量数据的设备也越来越便宜2

第二样:要算的东西恰好能拆开同时算。 机器学习里最常做的那类计算(把一排排数按位置对应着乘起来再加总), 可以切成很多份分给不同的部件,各算各的、互不干扰—— 这种「同一批活拆开、好几个部件同时干」的算法,叫并行3

并行这条性质带来的后果很实在:砸设备就能提性能。 你多买一倍的计算部件,就真能快接近一倍;而专门干这种活的零件, 就是电脑里那块画图用的板子——它叫显卡,行话按英文缩写叫 GPU (这个名字原书没有提,是我们补的)。

第三样:算出来的结果有现成的出口。 最常见的例子是购物网站上那句「购买此商品的顾客还购买了」4—— 算出来立刻就能换成钱。再加上图像识别这类应用: 把手写文字认成文本、从图片里框出人脸、在一堆照片里找出某个人5

三样合起来才是答案:有料进得来、算得动、算完有地方用。 缺任何一样,这项技术都火不起来。

全章的主走查:一家网店,投多少广告费,销售额会是多少
─────────────────────────────────────────────────────────
§3 先摆出过去几次的记录:花了多少、卖了多少
§4 假设两者之间是「乘一个数再加一个数」的关系 ← 建立模型
§5 那两个数还没定 —— 它们叫参数
§6 拿一部分数据把参数调好,另留一部分当考试题
─────────────────────────────────────────────────────────

图说:这条走查从这一章的第 3 节起,一直走到第 7 节。
第 20 章会换一台更具体的机器,再走一次完整的调参过程。

2. 最要害的一句:规则不由人写

这一节回答:机器学习和前面十八章的做法,根本差别在哪。

先摆位置。人工智能是个很宽的词;机器学习是实现它的一种基本手段。

而机器学习里层数特别多的那一种,叫深度学习(第 21 章讲它)6

人工智能(最宽:让机器做原本要人来做的判断)
└── 机器学习(从大量数据里自己找规律)
└── 深度学习(层数很多的那一种,第 21 章讲)

图说:三个词的关系是层层包含,不是并列。
新闻里常把它们混着用,那是新闻的问题,不是你没读懂。

原书说,机器学习主要用来解决两类问题7:

  • 以大量数据为基础,预测结果;
  • 对大量数据进行识别和分类。

但紧接着那一句才是要害:预测或分类的具体方法,并不是由程序员事先设定的, 而是由计算机从大量数据中自动提取出关键之处(这些关键之处的行话叫特征), 从而解决问题8

把这句话和前十八章并排看,差别就出来了:

前十八章附录这三章
规则从哪来人想出来,写进程序机器从数据里找出来
人干什么把问题化到「机械照做就行」挑模型、备数据、解释结果

3. 第一类问题:预测

这一节开始走主走查。

预测问题就是:给定一个输入,得到一个尽量接近目标的输出9

原书的例子:你经营一个网站,想知道在广告上花的钱 会在销售额上有多大反映10。这里有三样东西,名字要分清:

名字在这个例子里是什么
输入广告费
输出算出来的销售额(预测值)
目标实际的销售额

这类问题也叫回归问题11

人其实一直在做这件事:「上次投了多少、销售额涨了多少, 所以再加点投放应该还会涨」——这就是凭经验做的预测12机器学习要做的是把这件事变成可计算的。

先把过去的记录画成点:横轴是广告费,竖轴是销售额,每次投放是一个点13这是主走查的第一步。

4. 第二步:先假设一种关系,这一步叫建立模型

这一节是很多人会略过、但绝不能略过的一步。

要从那堆点里预测,得先假设它们之间是什么关系。 原书假设的是最简单的一种:销售额 = 广告费 × a + b14

做出这个假设的过程,就叫为这个问题建立模型15这是主走查的第二步。

注意这一步是人做的,不是机器做的。 而且它可能一开始就错。 原书专门提醒: 模型是有局限的——万一广告费和销售额之间根本不是这种关系, 那么无论怎么调,都不可能预测准16

5. 第三步:那两个待定的数,叫参数

这一节给出这一章第二个要记住的名字。

「销售额 = 广告费 × a + b」里,a 和 b 还没定。 像 a、b 这样的未知数,叫作这个模型的参数17

参数选得越好,预测越准18这是主走查的第三步。

同一堆点,同一个模型,两组不同的参数:

销售额↑ ╱ 销售额↑ ╱
│ · ·╱ · │ · ·╱· ·
│ · ╱· │ ·╱·
│ ╱· · │ ╱ · ·
└────────→ 广告费 └────────→ 广告费
参数没选好:线离点很远 参数选得好:线穿过点群中间

图说:模型定了形状(一条直线),参数定了这条线具体在哪、多斜。
「学习」要调的就是参数,不是模型。

一组「输入 + 目标」就是一条数据;这样的数据越多,参数越好找19

6. 第四步:数据要分两份,一份练一份考

这一节回答:数据全拿来调参数不行吗。

不行。原书要求把数据分成两份20:

名字干什么用
训练数据用来调参数;调参数的过程就叫学习(也叫训练)
测试数据调完之后用来考试,学习过程中一次都不能用

为什么非要留一份?因为要考的是「没见过的题」21原书打的比方非常准:学生在学校学习,目的不是把课堂上做过的练习题做对, 而是能解出难度相当的、没做过的题;所以学校要用课堂上没讲过的题来考试22

这是主走查的第四步:一部分数据用来调,另一部分留着考。

7. 考的是什么:泛化,以及它的反面

这一节给出这一章最后两个名字,它们是一对。

「对没见过的输入也能给出好结果」这种能力,叫泛化能力23

它的反面是这样:训练数据上表现完美,测试数据上却一塌糊涂—— 这种情况叫过拟合24换成学生的说法就是: 课堂上做过的练习题都能解得很好,但考试成绩却不怎么理想25

训练数据上的表现 测试数据上的表现 诊断
──────────────────────────────────────────────
好 好 这才是要的(泛化能力好)
好 差 过拟合 —— 把练习题背下来了
差 差 模型或数据本身有问题

图说:只看第一列是看不出问题的 —— 这正是必须留一份考题的理由。

8. 第二类问题:分类

这一节讲另一类问题,而它和第 06、07 章有一条明确的联系。

分类问题就是:给定一个输入,判断它该被归到哪一类26

原书的例子是手写数字:同一个「2」,每个人写出来都不一样, 但人看一眼就知道它是 0 到 9 里的哪一个27这类问题也叫识别问题。

原书在这里主动回指了前面:第 3 章提到过「分组」,而分类问题不外乎是分组的一种28—— 也就是我们第 06、07 章那件事,只是这次分组的规则由机器自己找。

还能用在哪儿? 原书举了三个:根据虫子的图像判断是不是害虫、 根据人脸判断是哪一位注册用户、检测运行中的机器是不是出了异常29

9. 输入不止一个数:一排数当成一个整体

这一节交代附录后两章要用的一样东西。

广告费那个例子里,输入只有一个数。可现实中往往不止—— 预测销售额时,季节、地区是不是也该考虑30?

手写数字更明显:输入是一张图。 做法是把图上每个点的颜色值变成一个数,然后把这些数排成一排31

这种「由多个数值组成的对象」,叫向量32说白了就是「一排排好顺序的数」——不必想成箭头,想成一列数更合适33

输出也可以是一排数。 手写数字的输出可以不是「就是 2」这么一句话, 而是十个数:是 0 的可能性 0.04、是 1 的可能性 0.01、是 2 的可能性 0.90……34

顺带一句:机器学习里最常做的计算,是对成排成片的数做的—— 一排数叫向量,排成方阵的那种叫矩阵35第 1 节说的「能拆开同时算」, 说的正是这类计算。

10. 作者的判断、我们的判断,以及这一章的边界

说法书里给了什么
为什么是现在给了三条:数据易得且存储便宜、计算能并行、输出有应用场景
规则不由程序员设定是这一段的中心句,原书反复说了三次
模型有局限给了理由:关系假设错了,怎么调参数都没用
数据要分两份给了理由 + 一个很准的比方(学校用没讲过的题考试)
图像识别的能力已经开始超过人类是作者 2017 年的判断,书里没有给数据来源

判断(我们的,不是书里的):这一章最该带走的是第 6 节那条纪律—— 「考题必须是没做过的」。 这条纪律的适用范围远远超出机器学习:任何拿历史数据调出来的东西 (一条报警的红线、一套评分规则、一份运营策略), 如果是在同一批数据上调完又在同一批数据上验收的,那个漂亮的结果基本没有意义。 如果错,会错在: 数据太少的时候,分出去一份用来考试会让本来就不够的训练数据更少; 实践中有别的办法(把数据切成几份,每次挑一份当考题、其余用来练)来缓解。判据是: 你手上的数据够不够分出一份还留得住代表性。

这一章的边界:

  • 附录写于 2017 年 12 月,这一章的时代判断停在那时(第 21 章第 8 节交代之后的变化);
  • 没有讲怎么挑模型,只说了「模型有局限」;
  • 没有讲数据从哪来、怎么清洗、怎么把正确答案配上去——只说了「训练数据要正确、可靠」(第 21 章);
  • 概率统计一个字没讲,而附录小结自己承认这是不可欠缺的;
  • 「特征」这个词只出现了一次,原书没有解释它具体指什么。

11. 可带走的

  1. 它火起来靠三样同时到位:数据易得且存储便宜、计算能拆开同时算、结果有现成出口;
  2. 「同一批活拆开、几个部件同时干」叫并行;正因为能并行,砸设备就能提性能;
  3. 人工智能 ⊃ 机器学习 ⊃ 深度学习,三个词是层层包含,不是并列;
  4. 最要害的一句:规则不由程序员写,由机器从数据里自己找;
  5. 预测问题的三样东西:输入、输出、目标(广告费、算出来的销售额、真实销售额);
  6. 先假设一种关系,这一步叫建立模型——它是人做的,而且可能一开始就错;
  7. 模型里待定的数叫参数;学习就是调参数,不是调模型;
  8. 数据必须分两份:训练数据用来调,测试数据用来考,考试题不能提前做;
  9. 对没见过的输入也答得好,叫泛化;只在做过的题上好,叫过拟合;
  10. 分类问题就是第 06、07 章那个「分组」,只是规则由机器自己找;
  11. 一排排好顺序的数叫向量;不必想成箭头,想成一列数更合适。

12. 原文地图

主题原书章原文位置
为什么是现在附录 迈向机器学习的第一步text/15-apx.txt:62(搜「首先是输入资源」) · :66(搜「向量和矩阵的计算,是可以并行处理的」) · :69(搜「购买此商品的顾客还购买了」)
三个词的关系附录 迈向机器学习的第一步text/15-apx.txt:48(搜「机器学习是实现人工智能的一种基」)
规则不由程序员设定附录 迈向机器学习的第一步text/15-apx.txt:19(搜「机器学习主要用于解决以下类型的问题」) · :24(搜「并不是由程序员事先设定的」)
预测问题附录 迈向机器学习的第一步text/15-apx.txt:89(搜「所谓预测问题」) · :90(搜「想要预测在广告上投入的费用」) · :94(搜「预测问题也称回归问题」)
建立模型与参数附录 迈向机器学习的第一步text/15-apx.txt:123(搜「y = ax + b」) · :126(搜「就叫作「为预测问题建立模型」」) · :128(搜「称为模型中的参数」) · :156(搜「模型具有局限性」)
训练数据与测试数据附录 迈向机器学习的第一步text/15-apx.txt:140(搜「由输入和目标组成的数据称为训练数据」) · :440(搜「训练数据和测试数据」) · :443(搜「对于在学校的学习来说」)
泛化与过拟合附录 迈向机器学习的第一步text/15-apx.txt:438(搜「这称为泛化能力」) · :447(搜「可能是发生了过拟合」)
分类问题附录 迈向机器学习的第一步text/15-apx.txt:171(搜「所谓分类问题」) · :175(搜「第 3 章中提到过「分组」」) · :177(搜「根据虫子的图像判断它是否为害虫」)
向量附录 迈向机器学习的第一步text/15-apx.txt:162(搜「由多个数值组成的对象称为向量」) · :180(搜「将构成图像的每个点」) · :296(搜「排列”会更加合适」)

Footnotes

  1. 出处:「附录 迈向机器学习的第一步」第 61 段(text/15-apx.txt:61,搜「有以下几个技术上的原因」)。原书这一小节的标题就是「机器学习是随着时代发展诞生的技术」。

  2. 出处:「附录 迈向机器学习的第一步」第 62 段(text/15-apx.txt:62,搜「首先是输入资源」)。原文说:现代互联网社会,我们很方便就能得到大量计算机可以直接处理的数据;能够存储大量数据的存储设备也越来越便宜。

  3. 出处:「附录 迈向机器学习的第一步」第 65 段(text/15-apx.txt:65,搜「计算机的信息处理能力变得更强大了」)与第 66 段(text/15-apx.txt:66,搜「向量和矩阵的计算,是可以并行处理的」)。原文的落点是:只要在设备上有足够的投入,处理性能就能得到提升。「显卡 / GPU」这个名字是我们补的,原书没有提。

  4. 出处:「附录 迈向机器学习的第一步」第 68 段(text/15-apx.txt:68,搜「机器学习的输出结果能够应用于多种多样的场景中」)与第 69 段(text/15-apx.txt:69,搜「购买此商品的顾客还购买了」)。

  5. 出处:「附录 迈向机器学习的第一步」第 51 段(text/15-apx.txt:51,搜「说到机器学习的应用,图像识别就是其一」)。原书还提到:如果程序只通过虫子的图片就能判断出它是否是害虫,那将产生多么大的价值。

  6. 出处:「附录 迈向机器学习的第一步」第 48 段(text/15-apx.txt:48,搜「机器学习是实现人工智能的一种基」)。原文的原话是:人工智能这个词的含义比较广泛,机器学习是实现人工智能的一种基本技术手段,而深度学习是机器学习技术的一种。

  7. 出处:「附录 迈向机器学习的第一步」第 19 段(text/15-apx.txt:19,搜「机器学习主要用于解决以下类型的问题」)。

  8. 出处:「附录 迈向机器学习的第一步」第 24 段(text/15-apx.txt:24,搜「并不是由程序员事先设定的」)。「特征」这个词原书只在这里出现过一次,而且没有解释它具体指什么——上面那句「关键之处」是我们的转述。

  9. 出处:「附录 迈向机器学习的第一步」第 89 段(text/15-apx.txt:89,搜「所谓预测问题」)。

  10. 出处:「附录 迈向机器学习的第一步」第 90 段(text/15-apx.txt:90,搜「想要预测在广告上投入的费用」)。

  11. 出处:「附录 迈向机器学习的第一步」第 94 段(text/15-apx.txt:94,搜「预测问题也称回归问题」)。

  12. 出处:「附录 迈向机器学习的第一步」第 95 段(text/15-apx.txt:95,搜「这类预测问题是自然而然就可以解决掉的」)。

  13. 出处:「附录 迈向机器学习的第一步」第 100 段(text/15-apx.txt:100,搜「将广告费记为 x,销售额记为 y」)。原书的图 A-1 就是这堆点。

  14. 出处:「附录 迈向机器学习的第一步」第 123 段(text/15-apx.txt:123,搜「y = ax + b」)。原文的解释是:广告费乘以 a 倍之后加上 b 的值,就可以得到销售额 y。

  15. 出处:「附录 迈向机器学习的第一步」第 126 段(text/15-apx.txt:126,搜「就叫作「为预测问题建立模型」」)。

  16. 出处:「附录 迈向机器学习的第一步」第 156 段(text/15-apx.txt:156,搜「模型具有局限性」)。原文的原话是:如果根本没有这样的关系,那么无论怎么调整参数,也不可能正确预测销售额。

  17. 出处:「附录 迈向机器学习的第一步」第 128 段(text/15-apx.txt:128,搜「称为模型中的参数」)。原文还提醒了一件容易混的事:算输出时把 a、b 当常量看,调它们的时候又要把它们当会变的量看(第 146 段)。

  18. 出处:「附录 迈向机器学习的第一步」第 129 段(text/15-apx.txt:129,搜「参数选取得越好,预测的准确性就越高」)。原书图 A-3 并排画了两条线,我们那张图照它重画。

  19. 出处:「附录 迈向机器学习的第一步」第 137 段(text/15-apx.txt:137,搜「(x, y) 是由输入和目标组成的 1 组数据」)。原文说图里只画了 5 组,而数据越多参数越好找。

  20. 出处:「附录 迈向机器学习的第一步」第 140 段(text/15-apx.txt:140,搜「由输入和目标组成的数据称为训练数据」)与第 440 段(text/15-apx.txt:440,搜「训练数据和测试数据」)。原文写明:在学习过程中只使用训练数据。

  21. 出处:「附录 迈向机器学习的第一步」第 437 段(text/15-apx.txt:437,搜「对于未知的输入」)。原文提的问题是:会不会只有输入是训练数据时才能得到正确的输出?

  22. 出处:「附录 迈向机器学习的第一步」第 442 段(text/15-apx.txt:442,搜「对于在学校的学习来说」)。

  23. 出处:「附录 迈向机器学习的第一步」第 438 段(text/15-apx.txt:438,搜「这称为泛化能力」)。原文说:我们需要的是解决一般性问题的能力。

  24. 出处:「附录 迈向机器学习的第一步」第 447 段(text/15-apx.txt:447,搜「可能是发生了过拟合」)。原书给的英文是 overfitting。

  25. 出处:「附录 迈向机器学习的第一步」第 447 段(text/15-apx.txt:447,搜「用学生来说」)。

  26. 出处:「附录 迈向机器学习的第一步」第 171 段(text/15-apx.txt:171,搜「所谓分类问题」)与第 174 段(text/15-apx.txt:174,搜「称为识别问题」)。

  27. 出处:「附录 迈向机器学习的第一步」第 172 段(text/15-apx.txt:172,搜「手写的数字形态各异」)。

  28. 出处:「附录 迈向机器学习的第一步」第 175 段(text/15-apx.txt:175,搜「第 3 章中提到过「分组」」)。这是原书自己的回指——它指的正是我们第 06、07 章拆的那一章。

  29. 出处:「附录 迈向机器学习的第一步」第 177 段(text/15-apx.txt:177,搜「根据虫子的图像判断它是否为害虫」)。

  30. 出处:「附录 迈向机器学习的第一步」第 159 段(text/15-apx.txt:159,搜「只有广告费这一项作为输入,没有问题吗」)。

  31. 出处:「附录 迈向机器学习的第一步」第 179 段(text/15-apx.txt:179,搜「将构成图像的每个点」)。原文说的是把像素的颜色值变换成数、排列成向量作为输入。

  32. 出处:「附录 迈向机器学习的第一步」第 162 段(text/15-apx.txt:162,搜「由多个数值组成的对象称为向量」)。

  33. 出处:「附录 迈向机器学习的第一步」第 297 段(text/15-apx.txt:297,搜「排列”会更加合适」)。这是原书那个讲向量的专栏,原话是:希望大家不要执着于箭头的刻板印象。

  34. 出处:「附录 迈向机器学习的第一步」第 200 段(text/15-apx.txt:200,搜「输出可以是「数字 2」这样一个明确的分类结果」)。原书给了完整的十个数,我们只取了前三个。

  35. 出处:「附录 迈向机器学习的第一步」第 66 段(text/15-apx.txt:66,搜「向量和矩阵的计算」)。「排成方阵的那种叫矩阵」是我们补的一句说明——原书用了这个词,但没有解释它。