虽然人工智能并不是最近几年才兴起的,但是它一直作为科幻元素出现在大众视野中。自2016年AlphaGo战胜李世石之后,人工智能突然间成了公众热议的话题,仿佛人类已经创造出了超越人类智慧的机器。人工智能的核心技术——机器学习及其子领域深度学习迅速成为瞩目的焦点。面对这个似乎从天而降的新现象,乐观者有之,悲观者亦有之。
追溯历史,我们会发现机器学习的技术爆发有其历史必然性,属于技术发展的必然产物。而理清机器学习的发展脉络,有助于我们整体把握机器学习或者人工智能的技术框架,有助于从“道”的层面来理解这一技术领域。本节就先从三大究极哲学问题中的后两个——“从哪来”“到哪去”入手,整体把握机器学习,而后从“术”的角度深入学习,解决“是谁”的问题。
机器学习的发展并不是一帆风顺的,它的起源可以追溯到赫布理论的诞生。赫布于1949年基于神经心理提出了一种学习方法,该方法被称为赫布学习理论。大致可描述为:假设反射活动的持续性或反复性会导致细胞的持续性变化并增加其稳定性,当一个神经元A能持续或反复激发神经元B时,其中一个或两个神经元的生长或代谢过程都会变化。
从人工神经元或人工神经网络角度来看,赫布学习理论简单地解释了循环神经网络(Recurrent Neural Network,RNN)中节点之间的相关性关系(权重),即如果两个节点同时发生变化(无论是Positive还是Negative),那么节点之间有很强的正相关性(Positive Weight);如果两者变化相反,那么说明有负相关性(Negative Weight)。
赫布学习理论在20世纪70年代曾陷入了瓶颈期,而后大数据时代开始,机器学习也在大数据的支持下复兴,因此我们可以大致将它的理念和运作模式按大数据时代前后分为浅层学习和深度学习。浅层学习起源20世纪70年代人工神经网络的反向传播(Back Propagation,BP)算法的发明,使得基于统计的机器学习算法大行其道,虽然这时候的人工神经网络算法也被称为多层感知机,但由于多层网络训练困难,因此通常都是只有一层隐含层的浅层模型。而深度学习则是多层神经网络的感知机,它的实质便是通过海量的数据进行更有效的训练,从而获得更精确的分类或预测。
1949年,Donald Hebb提出的赫布理论解释了人类学习过程中大脑神经元所发生的变化。赫布理论的诞生标志着机器学习领域迈出了第一步。1950年,阿兰·图灵创造了图灵测试(见图1-6)来判定计算机是否智能。图灵测试认为,如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么这台机器具有智能。这一简化使得图灵能够令人信服地说明“思考的机器”是可能的。
图1-6 图灵测试
2014年6月8日,一个叫作尤金·古斯特曼的聊天机器人成功地让人类相信它是一个13岁的男孩,成为有史以来首台通过图灵测试的计算机。这被认为是人工智能发展的一个里程碑事件。
1952年,IBM科学家亚瑟·塞缪尔(见图1-7)开发了一个跳棋程序。该程序能够观察当前位置,并学习一个隐含的模型,从而为后续动作提供更好的指导。塞缪尔发现,伴随着程序运行时间的增加,程序可以实现越来越好的后续指导。通过这个程序,塞缪尔驳倒了普罗维登斯提出的机器无法超越人类,无法像人类一样写代码和学习的理论。塞缪尔创造了“机器学习”这一术语,并将它定义为:可以提供计算机能力而无须显式编程的研究领域。同时,IBM首次定义并解释了“机器学习”,将它非正式定义为“在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域”。
图1-7 塞缪尔工作照
1957年,罗森·布拉特基于神经感知科学背景提出了第二模型,非常类似于今天的机器学习模型。这在当时是一个非常令人兴奋的发现,它比赫布的想法更适用。基于这个模型,罗森·布拉特设计出了第一个计算机神经网络——感知机(Perceptron),它模拟了人脑的运作方式。
罗森·布拉特对感知机的定义如下:感知机旨在说明一般智能系统的一些基本属性,它不会被个别特例或通常不知道的东西束缚,也不会因为那些个别生物有机体的情况而陷入混乱。
1960年,威德罗提出了Delta学习规则,也就是差量学习规则,即如今的最小二乘问题。这种学习规则随即被应用到感知机模型中,创建出更精确的线性分类器。随后机器学习的发展出现了瓶颈。
1967年,K邻近算法(K-Nearest Neighbor Algorithm,KNN)出现,使计算机可以进行简单的模式识别。KNN算法的核心思想是,如果一个样本在特征空间中与其 k 个最相邻的样本中的大多数都属于某一个类别,则该样本也属于这个类别,并具有该类别样本的特性,如图1-8所示。这就是所谓的“少数服从多数”原则。
图1-8 KNN算法
1969年,明斯基提出了异域问题,指出了感知机的本质缺陷——面对线性不可分问题时无力,即当空间内的点无法被直线分类时,感知机便会束手无措。直到20世纪80年代末此算法才开始被接纳使用,并给机器学习带来了希望。人们发现,神经网络反向传播算法可以帮助机器从大量数据统计中整理规律,从而面对未知的事件做出推测。这时候的感知机只是一种含有一层隐藏层节点的浅层模型,这个时代的浅层学习也因此而得名。到了20世纪90年代,浅层学习进入黄金时代,各种各样的浅层学习模型被相继提出,这些模型大多数在实际运用中都取得了巨大的成功。
随着人类对数据信息的收集和应用逐渐娴熟,对数据的掌控力逐渐提升,伟博斯在1981年的神经网络反向传播算法中具体提出了多层感知机模型。虽然BP算法早在1970年就已经以“自动微分的反向模型(Reverse Mode of Automatic Differentiation)”为名提出来了,但直到此时才真正发挥效用,并且直到今天,BP算法仍然是神经网络架构的关键因素。有了这些新思想,神经网络的研究又加快了。多层感知机如图1-9所示。
1985-1986年,机器学习在海量数据的支持下攀上了新的高峰,神经网络研究人员鲁梅尔哈特、辛顿、威廉姆斯、尼尔森相继提出了使用BP算法训练的多参数线性规划(MLP)的理念,成为后来深度学习的基石。
图1-9 多层感知机
在另一个谱系中,昆兰于1986年提出了一种非常出名的机器学习算法,我们称之为决策树(见图1-10),更具体地说是ID3算法。这是另一个主流机器学习算法的突破点。此外,ID3算法也被发布成为一款软件,它能以简单的规划和明确的推论找到更多的现实案例,而这一特性正好和神经网络黑箱模型相反。
图1-10 决策树
决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。
决策树仅有单一输出,若欲有复数输出,则可以建立独立的决策树以处理不同输出。在数据挖掘中,决策树是一种经常被使用的技术,可以用于分析数据,同样也可以用来进行预测。
在ID3算法提出来以后,研究社区已经探索了许多不同的选择或改进(如ID4、回归树、CART算法等),这些算法仍然活跃在机器学习领域中。
1990年,Schapire最先构造出一种多项式级的算法,这就是最初的Boosting算法。一年后,Freund提出一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确的下限。
1995年,Freund和Schapire改进了Boosting算法,提出了AdaBoost(Adaptive Boosting)算法,该算法效率和Freund于1991年提出的Boosting算法几乎相同,但它不需要任何关于弱学习器的先验知识,因而更容易应用到实际问题当中。
Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法先构造一个预测函数系列,然后以一定的方式将它们组合成一个预测函数。它是一种框架算法,主要通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。
支持向量机(Support Vector Machine,SVM)的出现是机器学习领域的另一个重要突破,该算法具有非常强大的理论地位和实证结果。自SVM出现之后,机器学习研究也分为神经网络(Neural Network,NN)和支持向量机两派。
然而,自2000年左右提出了带核函数的支持向量机后,SVM在许多以前由NN为主的任务中获得了更好的效果。此外,相对于NN来说,SVM还能利用所有关于凸优化、泛化边际理论和核函数的深厚知识。因此,SVM可以从不同的学科中大力推动理论和实践的改进。
此时,神经网络又遭受到一个质疑。1991年Hochreiter等人和2001年Hochreiter等人的研究表明,在应用BP算法学习时,NN神经元饱和后会出现梯度损失(Gradient Loss)的情况。简单地说,在一定数量的epochs训练后,NN会产生过拟合现象。因此,这一时期与SVM相比,NN处于劣势地位。
决策树模型由布雷曼博士在2001年提出,它是一种通过集成学习的思想将多棵树集成的算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。随机森林的名称中有两个关键词,一个是“随机”,另一个是“森林”。“森林”很好理解,一棵叫作树,那么成百上千棵就可以叫作森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想——集成思想的体现。
从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本, N 棵树会有 N 个分类结果。而随机森林集成了所有的分类投票结果,并将投票次数最多的类别指定为最终的输出,这就是一种最简单的集成学习思想。
2006年,神经网络研究领域的领军者Hinton提出了神经网络Deep Learning算法,使神经网络的能力大大提高,并向支持向量机发出了挑战。同年,Hinton和他的学生Salakhutdinov在顶尖学术刊物 Science 上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。
这篇文章有两个主要的信息:①有很多隐藏层的人工神经网络具有优异的特征学习能力,学习到的特征对数据有更本质的刻画,从而有利于可视化或分类;②深度神经网络在训练上的难度可以通过“逐层初始化”(Layer-wise Pre-training)来有效克服。在这篇文章中,逐层初始化是通过无监督学习(Unsupervised Learning)来实现的。
2015年,为纪念人工智能概念提出60周年,LeCun、Bengio和Hinton推出了深度学习综述。
深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示。这些方法为人工智能的许多方面都带来了显著的改善,包括最先进的语音识别、视觉对象识别、对象检测和许多其他领域,例如药物发现等。深度学习能够发现大数据中的复杂结构。它利用BP算法来完成这个发现过程。BP算法能够指导机器如何从前一层获取误差,从而改变本层的内部参数,这些内部参数可以用于计算表示。深度卷积网络为图像、视频、语音和音频处理方面带来了突破,而递归网络在处理序列数据(例如文本和语音方面)时表现出闪亮的一面。
当前,统计学习领域热门的方法主要有Deep Learning和SVM,它们是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机,但它们一直处于“竞争”关系。SVM应用核函数的展开定理,无须知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,因此与线性模型相比,不仅几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”。而早先的神经网络算法比较容易过训练,需要设置大量的经验参数;训练速度比较慢,在层次比较少(小于或等于3)的情况下效果并不比其他方法更优。
神经网络模型似乎能够实现更加艰难的任务,如目标识别、语音识别、自然语言处理等。但是,这绝对不意味着其他机器学习方法已终结。尽管深度学习的成功案例迅速增长,但是对这些模型的训练成本是相当高的,调整外部参数也很麻烦。同时,SVM的简单性促使其仍然是使用最为广泛的机器学习方式。