Local EPUB Text
“思考”机器的工厂
随着人们对大数据、ML和AI的兴趣激增,人们越来越清楚地认识到,用户数据是科技巨头的核心资产。机器学习是构建AI系统的第二代方法。第一代方法在20世纪80年代基本被淘汰了,它专注于构建正式的逻辑规则,来描绘语言或游戏等智力类的人类任务。这种方法取得了一些显著的成功,包括创造出击败了世界象棋冠军加里·卡斯帕罗夫(Garry Kasparov)的“深蓝”电脑,但它在大多数商业应用中都失败了。20世纪90年代和21世纪初,一种基于统计和概率预测的新方法走到了前沿。
ML的核心思想是,这个世界以及智能地“导航”着它的人类思维比任何程序员能精确制定出的规则都更加复杂和不确定。ML设计的算法,不是试图描述通过计算机直接执行指令集的智能,而是训练往往很复杂和不透明的统计模型,来“学习”进行分类或预测人们感兴趣的结果,比如一个借款人的信誉度如何,或一张照片中是否包含一只猫。
ML算法最著名的例子是“神经网络”,简称神经网。神经网模拟人脑的结构,而不是执行标准的统计分析。常规的统计方法假设不同的输入变量对我们要解释的输出变量具有相对简单而独立的影响。个子高、是个男人、吃富含糖分的食物,这些都被认为是相对独立的预测高体重的因素。
神经网络的工作方式与此不同。它不是让输入直接独立地决定输出,而是假设输入以复杂的方式组合在一起,为研究的现象创造“特征”,而“特征”又反过来决定其他特征,最终决定其结果。这种复杂的关系在日常生活中很常见。如果我们在计算机屏幕上看到一些红色像素,我们可能会发现图像主要是红色的。如果我们看到鼻子和耷拉着的耳朵,我们也许能认出大象来。然而,只有当我们同时看到这两种形态时,我们才会意识到,这是共和党的标志——它通常用红色和大象的图形来表示。仅仅有软绵绵的耳朵上一些红色的像素并不能直接暗示这是“共和党”,例如,它可能在传达这是一个伤口。
神经网络能够通过学习数据“隐藏层”中更加抽象的特征来处理这些复杂的抽象。图像直接而明显的特征,如图像中每个像素的颜色阴影,由“输入层”中“神经元”或节点的激活状态来表示。然后,神经元的输入层与代表某种更抽象特征的“隐藏层”相连。当输入神经元的加权平均值超过某个“激活阈值”时,该隐藏层中的神经元就会被依次激活。这些激活状态往往表现出图像中稍微更抽象和更复杂的特征。
为了实现更大程度的抽象,这个隐藏层随后连接到具有相同属性的第二个隐藏层,依此类推。最终,这些隐藏层的最后一层产生了最终的“输出层”,确定了我们感兴趣的最终结果,例如预测照片是否是共和党的竞选材料。图5-1显示了一个只有两个隐藏层的简单神经网络。
原则上,神经网络可以对非常广泛的关系进行编码,特别是当层数很多时。通常,每深入一层,编码就更抽象,图5-2展示了这样一个例子。在靠近左边的地方是“浅”层,表示图像相对简单的特征。在最左边,我们看到一个典型的图像输入。接下来,在它的右边,我们看到一个浅浅的隐藏层。这显示了导致神经元激活的一组典型模式。这些层次用于检测各个方向的线条和颜色,这是一种相对简单而具体的想法。右侧显示的是较深层编码的典型面部的元素,如眼睛、耳朵、鼻子等。在最右侧,我们看到的是最深的一层,它最靠近输出层。这些更深的层显示了整个面部的抽象版本。一旦神经网络达到这种抽象程度,它就能很清楚地检测到人脸:激活一个或多个这种最深的“面部识别”神经元,检测到人脸出现在图像中。因此,神经网络通过一系列的层不断地将越来越复杂的输入转化为更复杂的输入,从而实现惊人的智能,直到它们最终达到它们想要的预测结果。
图5-1 神经网络的程式化表示
图5-2 面部识别神经网络,更深的层表示更高的抽象程度
神经网络如何从每层可能性无穷多的权重组合中学习,来预测感兴趣的结果(在这个例子中,人脸是否存在)?要制造一个能工作的神经网络,有三个关键的要素。首先是“数据”:通常是一个非常大的标签示例集合,在这个例子中,是指大量标记为包含或不包含人脸的照片。其次是“计算”:神经网络通常在大型服务器上运行。最后(并且,至少正如我们想要论证的那样)是“主管”:建立网络结构的程序员,帮助防止程序卡壳,并使用各种技巧来确保它快速有效地学习。
神经网络并不新鲜。至少从20世纪50年代末开始,研究人员就断断续续地对它感兴趣。然而,直到大约10年前,神经网络一直被普遍认为是没有用的:1995年,ML的创始人之一,弗拉基米尔·瓦夫尼克(Vladimir Vapnik)以一顿奢侈的晚餐打赌,2005年之前,“理智的人都不会使用神经网络”。14问题在于那些层数很少的“浅层”神经网络做不了太多事情。事物最有趣的特性比这些简单的浅层网能检测到的要抽象得多。另外,由于缺乏数据和计算能力,多年来训练更深层次网络的尝试都失败了。
如果没有足够数量的标记示例,那么可能的表示空间对于神经网络来说就会太大而无法搜索。因此,它将最终“过度拟合”特定图像的无关细节,例如,学习到所有包含人脸的图像可能在图片中正好有三个红色像素。对于过度拟合的问题(即试图用不充分的数据拟合复杂的模型),图5-3部分重现了xkcd[1]漫画,它巧妙地将此描绘了出来。如果我们让一套复杂的规则来预测总统选举,那么很少有实例可以拟合这些复杂的规则,因此我们的规则很容易“过度”拟合那些选举中不重要的特征,从而导致糟糕的预测。我们想要拟合的规则越复杂(越深和越完整交织着的神经网络),就需要越多的数据来避免过度拟合。这种需要标记大量数据点以避免过度拟合的问题(如人脸或艺术风格的识别),计算机科学家和统计学家称之为“样本复杂性”问题。15
图5-3 过度拟合的问题(以预测总统选举为例)
资料来源:节选自https://xkcd.com/1122/。
然而,仅仅有数据还不足以训练神经网络,数据必须得到存储和处理。更重要的是,实际训练网络的过程需要大量的计算。如果没有足够的能够处理这些计算的计算机,无论数据有多少,神经网络将永远无法找到对观测数据的正确解释。21世纪后期,云计算和云空间存储能力的巨大进步对训练神经网络至关重要。网络越深,越复杂,训练它就需要越强大的计算和存储能力。网络的这种计算和存储需求被称为“计算复杂度”。
使神经网络工作起来的最后一个要素是编程。程序员目前在调整网络结构和训练过程中扮演着重要的角色。然而,这些过程是通过微软领导的“民主化AI”运动来实现的。16对程序员的需求量,与数据量和计算量不同,并不一定会随着网络的复杂性而增加。更基础的研究,即提出新的算法或训练技术,可能会产生更大的影响。但在实践中,这种算法进步所带来的优势通常是短暂的,而且很快就会被复制。网络成功的关键要素是数据和计算能力。
简单的浅层网络具有较低的复杂性(包括样品和计算),可以解决基本问题,比如检测图像是水平还是垂直。而深层网络则更为复杂,可以解决更复杂的问题,比如个性化人脸识别或生成简介来描述照片中的动作,需要更复杂的数据和计算。
这就是为什么在21世纪头10年之前神经网络几乎没有得到使用,然而从2010年左右开始,神经网络却爆炸式地发展,成为当今最热门的技术。大约在那个时候,收集的数据量与计算的速度和深度都足以让那些对用户的生活产生影响的应用程序发挥作用。同样在那个时候,第一批由ML驱动的个人数字助理和听写服务出现了;Siri、谷歌助手和科塔娜(Cortana)[2]已成为人们日常生活中熟悉的角色。更多雄心勃勃的应用正在开发中,包括虚拟现实和增强现实、自动驾驶汽车,以及只须按一下按钮就能向消费者送货的无人机。
这些服务具有很高的“样本复杂性”,因此它们需要大量的数据存储,以便对ML系统进行训练。因此,本来作为谷歌、脸书等公司核心业务功能的副产品收集的庞大数据集,现在已成为其收入和竞争优势的重要来源。那些起初不情愿提供免费服务,而寻求一种收入模式后来演变为广告平台的公司,现在正在成为数据收集者,它们通过提供服务来吸引用户提供信息,以便使用ML训练AI。
[1] xkcd是由兰德尔·门罗(Randall Munroe)创作的网络漫画(https://xkcd.com/)。作者对它的描述是“关于浪漫、讽刺、数学和语言的网络漫画”,一般在每周一、三、五更新。——译者注
[2] Siri是苹果出品的智能语音助手。科塔娜是微软出品的智能语音助手。——译者注