1.1 为什么这一章出现在这里
本章旨在帮助你熟悉机器学习的重要理念和基本术语。
机器学习(machine learning)这一术语涉及越来越多的技术,这些技术都有一个共同目标,那就是从数据中发现有意义的信息。
其中,“数据”是指任何可以被记录和测量的东西。它可以是原始数据(如连续几天的股票价格、不同行星的质量、小城集市里人们的身高),也可以是声音(如某人的手机录音)、图(如鲜花或猫的照片)、单词(如报纸文章或小说的文本),抑或是我们想要研究的其他任何东西。
“有意义的信息”是指我们可以从数据中提取到的任何信息,在某种程度上,这些信息对我们而言是有用的。我们可以判断哪些信息是有意义的,然后设计一个算法,从数据中找到尽可能多的这样的信息。
“机器学习”一词涵盖了广泛范围内的各种算法和技术,虽然明确定义这个词的精准含义是好的,但由于它对于不同的人来说有不同的用途,因此我们最好把它理解成一个涵盖了越来越多的各种算法和原理的统称,这些算法和原理的目的是对海量训练数据进行分析,并从中提取含义。
近来,有人创造了深度学习(deep learning),用来指代那些使用特殊分层计算结构的机器学习方法(这些分层依次堆叠),这样就形成了一个像堆叠的煎饼一样的“深度”结构。由于“深度学习”指的是所创建的系统的本质,而不是任何特定算法,因此它实际上指的是一种特定的机器学习方式或方法。近几年,人们通过该方法取得了大量研究成果。
现在,让我们来看一下使用机器学习从数据中提取含义的几个典型应用。
1.1.1 从数据中提取含义
邮局每天都需要根据手写的邮政编码整理大量的信件和包裹,目前他们已经开始借助计算机读取这些编码并自动分拣邮件,如图1.1a所示。
银行需要处理大量的手写支票:查看总金额栏内手写的数字金额(如25.10美元)与大写金额栏内的金额是否一致(如贰拾伍美元拾美分),以判断支票是否有效。计算机可以同时读取数字金额和大写金额,并确认两者是否相匹配,如图1.1b所示。
社交媒体网站想要通过照片识别出他们的用户,这意味着不仅要检测给定照片中是否有人脸,还要识别人脸的位置,然后将每张脸与之前看到的人脸进行匹配,由于灯光、角度、表情、衣着和许多其他特质都与先前的照片存在差异,并且同一个人的每一张照片都是独一无二的,因此人脸识别的难度加大了。而社交媒体网站想要的是为任何一个人拍摄一张照片后就可以识别出他的身份,如图1.1c所示。
(a) (b) (c)
图1.1 从数据集中提取含义。(a)从信封中获取邮政编码;(b读取支票上的数字和字母;(c)从照片中识别人脸
数字助手的供应商会聆听人们对其小工具的反馈,以便智能地做出回应。来自麦克风的信号是一系列数字,这些数字用于描述声音撞击麦克风膜时造成的压力,供应商想要分析它们,以便理解产生它们的声音,理解这些声音所属的词语以及词语所属的句子,最终得到这些句子的含义,如图1.2a所示。
科学家从无人机、高能物理实验和深空观测中获得大量数据后,往往需要从这些洪流般的数据中挑选出几个项目实例。这些实例与所有其他的项目都相似,但略有不同。即使不乏许多训练有素的专家,但要人工查看所有数据也是一项不可能完成的任务,所以最好能够通过计算机使这个过程自动化。通过计算机实现数据的彻底梳理,不遗漏任何一个细节,如图1.2b所示。
自然资源保护主义者会随着时间的推移来追踪物种的数量,观察它们的表现,如果物种数量长期下降,那么他们可能就会采取行动进行干预。如果物种数量稳定或有所增长,那么他们可能保持观望。预测一系列值的下一个值也是我们可以训练计算机去做的事情,图1.2c(改编自[Towers15])记录了加拿大西海岸北部虎鲸种群每年的数量,以及对于这些数量的预测值。
(a) (b) (c)
图1.2 从数据中提取含义。(a)用声音记录,之后转化为文字,最后输出完整的话语;(b)粒子加速器输出的痕迹大多是相似的,需要在其中发现一个不寻常的事件;(c)预测加拿大西海岸北部的虎鲸数量
这6个例子展示了为许多人所熟悉的机器学习的应用,其实机器学习还有很多其他应用。由于机器学习算法能够快速提取有意义的信息,因此它的应用领域也在不断扩展。
在这里,共同的地方是所涉及的大量工作以及它的详细细节。我们可能有数百万条数据需要研究,并从每条数据中提取有用含义。人类会感到疲倦、无聊和心烦意乱,但是计算机可以一直稳定又可靠地完成工作。
1.1.2 专家系统
一种发现隐藏在数据中的含义的早期流行方法涉及专家系统(expert system)的构建。这个想法的本质是:在研究了解人类专家知道什么、做什么以及怎样做后,将这些行为自动化,从本质上说,我们要制造一个能够模仿人类专家的计算机系统。
这通常意味着构建一个基于规则的系统(rule-based system),在这个系统中,我们会为计算机制订大量的规则,使其能够模仿人类专家。例如,如果试图识别邮政编码中的手写数字7,我们就可以设计一套这样的规则:7的形状是在图的顶部有一条近乎水平的线,然后有一条近乎对角线的斜线从水平线的右端点延伸到左下角,如图1.3所示。
(b)
图1.3 设计一套识别手写数字7的规则
(a)我们想识别的一个典型的7;(b)组成7的3条规则,如果有一个形状满足这3条规则,那么它被归为7
对每一个数字,我们都有相似的规则,通常情况下这些规则都可以实现要求,直至遇到图1.4所示的数字。
图1.4 这个7也是一个7的有效写法,但是它不会被图1.3的规则识别,因为多了一条线
我们之前没有考虑到有人会在7的中间加一横,所以现在需要为这种特殊情况添加另一条规则。
手动调整规则来更好地理解数据的过程有时称为特征工程(feature engineering)。这个术语也用于描述使用计算机为我们寻找这些特征的过程,参见本章“参考资料”中的 [VanderPlas16]。
这个术语描述了我们的愿景,也就是想要构造(或设计)人类专家完成工作所需的全部特征(或品质)。总的来说,这是一项非常艰难的工作。正如所看到的那样,我们很容易忽略一个甚至多个规则,想象一下(以下场景有多困难),你试图找到一套规则去总结“放射科医生如何判断X射线图像上的斑点是否是良性的”,或者“空中交通管制员如何处理繁忙的空中交通”,抑或“一个人如何在极端天气条件下安全驾驶汽车”。
诚然,基于规则的专家系统能够胜任一些工作,但是人工设定一个正确的规则集以及确保专家系统在各种各样的数据面前都能正确工作是非常困难的,而这个问题也似乎已经注定了其无法作为一种通用解决方法。对于一个复杂的过程,要清晰地表达其每一个步骤已经是极其困难的了,而在有些情况下,我们还需要考虑人类判断时基于经验和预感所做的决定,那么,除非是最简单的情况,否则这几乎是不可能完成的事情。
机器学习系统的美妙之处在于(在概念层面上):它们可以自动地学习数据集的相关特征。我们不需要告诉算法如何识别2或7,因为系统自己就能够去总结理解,但要做到这一点,系统通常需要大量的数据,即超大的数据量。
这也是机器学习在过去几年大受欢迎并得到广泛应用的一个重要原因,互联网提供的大量原始数据可以让机器学习这一工具从大量数据中提取出更多信息。企业能够利用与每个客户的每次交互来积累更多的数据,然后将这些数据作为机器学习算法的输入,利用它们为客户提供更多的信息。