机器学习已经存在至少60年了。早期机器学习系统源于对人工智能的探索,推导出if…else语句的手工编码规则来处理数据并做出决策。考虑一个垃圾邮件过滤器,其工作是解析收到的电子邮件,并将无用的邮件移入垃圾邮件文件夹,如图1-1所示。
图1-1 垃圾邮件过滤器处理过程
我们可以列出一个单词黑名单,只要在一封邮件中出现这些黑名单中的单词,就将该邮件标记为垃圾邮件。这是手工编码专家系统的一个简单示例。(我们将在第7章中构建一个更加智能的垃圾邮件过滤器。)
如果允许我们将这些专家决策规则组合并嵌套到一棵 决策树 中,那么这些专家决策规则可能会变得更加复杂(第5章)。接下来,通过一系列决策步骤,我们就可以做出更明智的决策。你应该注意到,尽管决策树看起来像是一组if…else条件,但是它远不止于此,实际上这是一种机器学习算法,我们将在第5章中进行探讨。
手工编码这些决策规则有时是可行的,但有两个主要的缺点:
这就是机器学习的用武之地。有时,我们不能很好地定义任务——除非通过例子——我们希望机器能够自己理解并解决这些任务。在其他时候,重要的关系和相关性可能隐藏在我们人类会忽略的大数据中(见第8章)。在处理大数据时,机器学习通常可以用来找出这些隐藏关系(也称为 数据挖掘 )。
人工专家系统失败的一个很好的例子是检测图像中的脸。这么愚蠢,真的吗?如今,每一部智能手机都能够检测图像中的脸。可是,在20年前,这个问题基本上还没有解决。原因是,人们对脸部构成要素的认识对机器没有太大的帮助。我们并不用像素来思考问题。如果要我们来检测一张脸,那么我们可能只会寻找一张脸的决定性特征,例如:眼睛、鼻子、嘴巴等。可是,当所有的机器只知道图像有像素,像素有一定的灰度时,我们如何告诉一台机器去寻找什么呢?在很长的一段时间里,这种图像表征上的差异基本上使人们无法提出一套好的决策规则,让一台机器检测出图像中的一张脸。我们将在第4章中讨论解决这个问题的各种方法。
然而,随着卷积神经网络和深度学习的出现(第9章),在识别脸部方面,机器已经和我们人类一样成功了。我们所要做的仅仅是向机器呈现大量脸部图像集。大多数方法还需要对训练数据中脸部的位置进行某种形式的标注。从这时起,机器就能够发现可以识别一张脸的特征集,而不必像人类一样来处理这个问题了。这就是机器学习的真正强大之处。