第1章 浅层模型

1.1 深度学习史前发展史

本书是一部介绍深度学习的简明教材。深度学习的前身是人工神经网络,而人工神经网络既可以看作人工智能连接主义学派的代表性技术,又可看作机器学习的一个分支。同时,机器学习又是人工智能的一个分支。人工智能或机器学习的一个终极目标是希望在给计算机“喂”足够的“数据”后,机器能自动地从“数据”(或者说外部输入)中学习知识,形成类似于人的智能。因此,人工智能或机器学习背后是强大的数据分析能力,它们脱胎于一个更古老的学科——数据分析学科。

作为基础,本章将介绍一类称为线性模型的统计模型,包括线性回归模型、logistics二分类模型、softmax多分类模型、广义线性模型(generalized linear models,GLMs)。这些模型均可被归为一类只有输入和输出两层的浅层模型,这类浅层模型对应后续深度网络的倒数第二层和输出层,是搭建深度网络的模块。同时,关于机器学习的一些基本概念和知识,将被融汇在对这些模型的介绍中,以作为后续章节学习的基础。

本节以1946年人类制造出第一台电子计算机和2006年Hinton以其开创性工作成功地打开了训练深层网络的大门为两个重要时间节点,将数据分析划分成初级阶段、浅层模型阶段和深度学习与大数据分析三个阶段,从数据分析这一更宽的视角回望人类在认识理解自然现象及其背后隐藏规律时由最初原始的手工分析数据,到今天大数据时代下的深度学习,再到迈向通用人工智能征途这一跌宕起伏、一波三折的艰难探索历程。

1.1.1 数据分析的初级阶段:手工演算阶段

数据分析是一门历史悠久的学科。人类在漫长的被自然主宰的阶段累积进化,逐渐掌握了观察自然现象、认识自然规律的本领。人类观测的现象常常以数据的形式被记录下来,随着造纸术的出现,信息记录存储手段的进步增强了人类“沉淀”数据的能力,也催生了分析所沉淀数据并发现其中隐含规律的需求。

为从数据中发现隐含规律,首先需要处理一个所谓数据的真实性问题:在沉淀数据过程中,人们常常发现数据记录与现实情况并不总是相符,这就形成了所谓“误差”的概念。经历了漫长的误差认识史后,人们逐渐发现多次测量然后求算术平均值能有效抑制误差,得到一个更逼近真实值的估计,这一规律的认识为后来高斯发现概率论中的重要分布——正态分布提供了非常必要的知识储备。

正态分布这一规律的发现是处理天文观测数据的结果。1801年1月,天文学家Giuseppe Piazzi发现了一颗从未见过的光度8等的星在移动,这颗后来被称作谷神星(Ceres)的小行星在夜空中出现六个星期,扫过8角后在太阳的光芒下没了踪影,再无法观测。而如何在现有观察数据下推算其运行轨道,进而确定这颗新星是彗星还是行星成为当时天文界乃至学术界共同关注的焦点。这一焦点引起了当时年轻数学家高斯的关注。准确地计算新星的运行轨道的难点在于如何解决有限观测值中存在的误差分布问题。既然大家普遍认为算术平均是一个好的估计,天才的高斯猜测由观测值误差分布导出的极大似然估计就等于算术平均值,满足这一性质的函数只有,这就是所谓的正态分布。高斯根据误差分布服从正态分布这一假定发展了现在大家都耳熟能详的极小二乘法[1]-[3]来估计新星运行的轨道,并准确地预言了这颗新星在夜空中再次出现的时间和位置。

从漫长的经验数据中进行分析并逐渐发现了观测的误差分布理论,这是一个伟大的成就。正态分布的发现打开了现代统计学的大门,这使数据分析这一古老的经验主义学科逐渐蜕变成有扎实基础的现代学科——统计学。从正态分布的发现到1946年这一阶段是统计学发展的重要时期:Karl Pearson提出拟合优度检验[4–6];Karl Pearson的学生,英国医生William Sealy Gosset的Student分布(Student是William Sealy Gosset的笔名)的提出[7];Fisher发展的正态总体下种种统计量的抽样分布[8]、以最大似然估计为中心的点估计理论[9]和方差分析法[10];Neyman的置信区间估计理论[11];John Wishart[12],许宝禄(Pao-Lu Hsu)等人的多元正态总体分析法[13]。这一阶段统计学方面硕果累累,极大地增强了人类从数据中发掘规律、理解数据的能力。这个时期统计学几乎成了数据分析的代名词。

由于以统计量的抽样分布的极限分布理论为基础的统计学使用的基本方法是假设检验和参数估计,这些方法的有效使用需要与专业知识、领域知识高度融合。从假设检验中零假设和备择假设的提出,到分析结果的解释,均需要将统计学知识与业务逻辑知识甚至常识高度融合。要做到这一点,高素质的专业人员是不可或缺的。所以基于统计学的数据分析更像是在计算工具辅助下的手工或半自动化的数据分析过程,这为后来的人工智能走进数据分析这一舞台的中央埋下了伏笔。

1.1.2 数据分析的中级阶段:浅层模型阶段

1946年是值得载入人类史册的一年,美国人莫克利(John W.Mauchly)和艾克特(J.Presper Eckert)在美国宾夕法尼亚大学建造了世界上第一台通用电子计算机ENIAC。从此,数据分析这一古老的学科从原始的纸笔手工演算阶段进入电子计算机驱动的近现代阶段。计算机逐渐成为辅助人们进行数据分析的有力工具。

人类是一种带有梦想的动物,先驱们并不满足于计算机仅仅充当非常有限的助手角色,自第一台电子计算机诞生之日起,人们就追问一个梦想中的问题:计算机能否像人那样进行分析思考?1950年,仍是大四学生的马文·明斯基(后被称为“人工智能之父”)与同学邓恩·埃德蒙一起,建造了世界上第一台模拟人脑神经网络计算系统的计算机Snare。同在1950年,被称为“计算机之父”的阿兰·图灵提出著名的测试一台计算机是否具有智能的测试——图灵测试。1956年,在美国达特茅斯学院举办的一次会议上,计算机专家约翰·麦卡锡首次提出了“人工智能”(artificial intelligence,AI)一词,正式开启了人类追逐人工智能这一梦想的征程。

让机器像人一样具有智能的梦想显然无法一蹴而就。在追问计算机能否像人那样进行分析思考这一问题不久后,Arthur Samuel等人追问了另一个类似的问题:人能否教会计算机自动地进行数据分析?或者说,能否让计算机在尽可能少的人工干预情况下帮助人们分析数据、理解数据,甚至提取数据中隐含的知识?1959年,在IBM工作的Arthur Samuel实现了一个具有学习能力的西洋棋程序,并在IBM Journal of Research and Development上发表了一篇题为Some studies in machine learning using the game of checkers的论文[14],该论文首次给出了机器学习(machine learning,ML)的一个非正式的定义:机器学习是在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。

在Arthur Samuel给出其仰望星空式的机器学习定义之前,已经有人迈出了第一步:1957年,Rosenblatt发明了感知机(或称感知器,Perceptron)[15,16]。感知器的本质是根据训练数据学习一个能将数据正确分类的超平面,它是神经网络的雏形,也是后来的支持向量机的基础。但Rosenblatt设计感知器的出发点是希望构造一种通用的识别机器。

然而,Marvin Minsky的工作几乎浇灭了Rosenblatt等人构造通用识别机器的梦想:1969年,Marvin Minsky在与Seymour Papert合著的《感知机》[17]中指出,Rosenblatt的单层神经网络无法处理“异或”电路,这是一个简单而典型的非线性映射问题。而实际的问题更多属于非线性问题,这使人们对感知器以及神经网络计算模型失去了信心。

技术的突破源于执着的科研工作者的积累。1970年,Seppo Linnainmaa首次给出了自动链式求导方法(automatic differentiation,AD)[18],这项工作是今天大家耳熟能详的反向传播(back propagation,BP)算法的雏形。Seppo Linnainmaa这项工作的重要意义体现在为数学优化这一数学王国塔尖上的明珠介入多层甚至深层网络的训练打开了大门。四年后,Werbos系统性地将BP算法的思想应用于称为多层感知机(multilayer perception,MLP)的模型上,这是一个具有单隐层的全连接型人工神经网络(artificial neural network,ANN)[19]。1982年,Werbos实现了一个通用的BP神经网络算法。同时,Werbos还是反馈神经网络的先驱[20]。在Werbos工作基础上,1985—1986年,Rumelhart等许多著名的神经网络学者成功地实现了用实用的BP算法来训练神经网络[28]。直到今天,BP算法仍然是神经网络训练的主流算法。

1979年,受生物视觉模型[22][23]的启发,日本学者Kunihiko Fukushima[24][25]提出了一个称为“neocognitron”具有平移不变性的视觉识别系统,这就是后来被Yan LeCun用来进行手写体识别的卷积神经网络(convolution neural networks,CNNs)[26–28]的雏形。后来,Yan LeCun的卷积神经网络在大规模识别问题上效果并未呈现类似手写体识别这类小规模问题上的效果。当时训练卷积神经网络的方法正是为适应卷积网特有结构而进行相应调整后的BP算法。

然而,1991年BP算法训练多层神经网络时被指出存在梯度消失或梯度爆炸问题[29][30],该问题恰似一道套在神经网络计算模型上的紧箍咒,限制了神经网络往多层深度模型方向发展,使得神经网络模型停留在浅层模型阶段,无法发挥出多层神经网络计算模型应有的性能。

与此同时,1995年,统计学习理论奠基人Vapnik和Cortes提出了支持向量机(support vector machines,SVMs)模型[31–33],其主要思想是通过数学优化的方式极大化分类间隔超平面,取得了在当时看来非常不错的分类识别效果。随着2001年核方法与SVM的融合,进一步提升分类性能的同时,扩大了SVM处理问题的范围。SVM兼具理论上的完美和实验结果的理想,这使得SVM方法获得了广泛关注。但SVM是建立在已有数据特征下的分类方法,其分类性能好坏与所给“特征”好坏有密切关系,因此它不具备自动提取特征的能力,仍然属于浅层模型范畴。

计算机的诞生对数据分析学科的发展无疑是个巨大的促进作用。随着计算机硬件,尤其是存储设备的不断发展,计算机计算能力及存储数据能力不断得到增强。与此相适应,越来越多的功能强大、友好的软件被编写出来以辅助人们完成各项任务。随着这一趋势,统计学的众多理论和方法逐渐被编制成统计软件的形式,人们更多地通过统计软件的辅助完成各项复杂的数据分析任务。最终,计算机走到了数据分析的台前,而统计学更多地退居幕后起着不起眼但关键的作用。这给了很多人一个错觉,计算机学科在数据科学中的地位逐渐超过了统计学。

1.1.3 数据分析的高级阶段:大数据深度学习阶段

计算机的诞生开启了用计算机辅助数据分析的浅层模型时代,与计算机诞生之日起几乎同步发展的是存储技术。1946年RCA公司的计数电子管是一个长为10英寸(25cm)、能保存4096bit数据、用在早期巨大电子管计算机上的存储设备。2018年世界上最大容量的固态硬盘Nimbus Data ExaDrive DC100存储容量已高达100TB(这一容量足以容纳2亿首歌曲的数据),这一固态硬盘具有体积小(只有3.5英寸)、容量大(是当前最大容量的机械硬盘容量8倍以上)、能耗低(读写数据0.1W/TB的能耗,比同期竞争对手节省高达90%的能耗)的特性。目前,存储技术仍然在朝体积小、容量大、能效低、全闪存、软件定义存储等方向发展。

在计算机逐渐普及以及存储技术不断发展的背景下,无论是政府部门、学校、医院,还是电商企业、大型超市、商业网点,甚至个体工商企业,均在各自的信息系统里沉淀了大量业务数据。据统计,2017年,人类总共创造了8.8ZB(88亿TB)的数据,而这个数字大约每两年就会翻倍。在这些数据中隐藏了各种关于消费习惯、公共健康、全球气候变化以及其他经济、社会还有政治等方面的深刻信息。计算机的普及和存储技术的发展催生了大数据时代。

存储技术的发展既赋予了人类沉淀数据、记录时代的能力,也对现有的数据分析处理能力提出了挑战。如何从海量数据中挖掘出有价值的信息,或者如何组织整理好海量数据,准确把握海量数据背后的总体,这是大数据时代给数据科学、计算科学工作者出的一道考题。仅靠大数据和计算机的快速计算蛮力,而没有相应的大数据处理技术,大数据的价值也无法体现。一个典型的例子是,计算机博弈能力从国际象棋到围棋的飞跃,如果单纯靠大数据棋谱和处理器计算能力的提速,而没有相应的计算技术的突破性进展,这是不可能做到的。

1997年IBM的深蓝计算机,以2亿次每秒的计算速度穷举所有搜索路径来选择最佳走棋策略,击败了人类国际象棋世界冠军——棋王卡斯帕罗夫。这个在当时引起轰动的结果是靠半自动手工调参的方式取得的。然而,近20年后的2016年,在深度学习和强化学习技术的助力下,隶属于国际搜索巨头Google公司的DeepMind子公司开发的AlphaGo以一种全自动的方式,在远比国际象棋复杂的围棋领域,以4:1的比分击败了韩国职业棋手李世石。次年的AlphaGo zero更是抛弃人类棋谱,以一种纯自我学习的方式,通过自我博弈来提升自己的棋力,最终AlphaGo zero的棋力横扫围棋界,以压倒性优势击败了所有人类职业棋手。

围棋共有19×19=361个位置,每个位置有“白、黑、空”三种状态,其状态空间为3361≈10172。平均一盘围棋约需要走150个回合可分出胜负,而每一状态可能的走子约250种,因此围棋博弈树规模为250150≈10360。相比之下,国际象棋的状态空间约1047,博弈树规模为10123。这是两个完全不同量级的比赛,如果单纯靠大数据棋谱和处理器计算能力的提速,而没有相应的计算技术的突破性进展,是不可能的。

20世纪90年代,BP算法被指出在训练多层神经网络时存在梯度消失或梯度爆炸问题后,人们很快发现在反馈网络中使用BPTT(沿时间轴反向传播的BP算法)算法时,梯度信号沿时间轴反向传播同样存在梯度消失或梯度爆炸问题[30],这进一步限制了神经网络计算模型在序列建模上的应用。真正解除套在神经网络上的梯度消失或梯度爆炸问题这一魔咒,使神经网络能向深度模型演变的是Hinton的工作。2006年,Hinton提出受限玻耳兹曼机(restricted Boltzmann machine,RBM)模型[34],并采用逐层贪心预训练加全局微调的办法将多个RBM堆叠得到一个称为深度信念网络(deep belief networks,DBNs)的模型[35]。这是第一个能有效克服深层网络训练难题的方法。这一方法的提出打开了训练深度模型的大门。

深度学习的突破性进展极大地增强了人类从海量数据中提取知识的能力。早在AlphaGo出现之前的2012年,深度学习先驱Hinton课题组开发的AlexNet[36]利用了一个8层的卷积神经网络,取得了ImageNet图像识别比赛冠军。此后深度学习模型展现了其在数据处理方面强大的特征学习和对象识别能力:Russakovsky[37]等人的ImageNet利用深度技术从100万张图片中识别含有1000个类别的对象,错误率只有3.46%,而人经过24h的训练后完成同样任务的错误率为5.1%;Graves等人将深度技术应用于时间序列处理,他们的工作将语音识别误差率降到17.7%[38],准确性比之前最好的技术提升了近30%。而在此之前,语音识别领域最好的高斯混合模型——隐马尔可夫模型(GMM-HMM)经过近10年的努力均没能带来误差率的改进。

深度学习的优点主要体现在通过多个层次模型从海量数据中进行逐层特征提取,以最优化损失函数的方式进行表示学习的能力,这是深度模型能够取得超过人类能力的高识别精度的主要原因。深度学习模型另一个不可忽视的优点是越来越多的深度模型能够提供一种全自动的端到端的数据处理和交互方式进行工作,这里所谓的端到端是指给模型直接输入原始数据如声音、图像等信息,模型能直接输出最终目标,例如输出控制机械手移动的指令来抓取物品。端到端的这种方式有别于传统的机器学习方式。在传统的机器学习下,原始数据往往先通过一个预处理过程处理成特征,然后根据特征进行分类,其效果取决于所用特征的质量。因此,传统的机器学习需花很大精力去研究如何设计更好的特征。深度学习出现后,人们发现让网络自动从原始数据中抓取得到的特征远好于专家设计的特征,于是,全自动的端到端模型取代了需要人工干预的半自动模型。

浴火重生后的深度学习技术在语音识别、图像理解、自然语言处理、智能博弈、自动驾驶等众多领域攻城拔寨,不断刷新纪录甚至战胜人类时,另一数据分析的利器——统计学在深度学习光环笼罩下更多地退居幕后起着不可或缺的作用:神经网络从训练数据(X,Y)中学习的目标是要从数据中学习给定X下关于Y的条件分布PY|XW),这里W代表要学习的网络连接参数,或者说W代表神经网络本身。网络的学习过程本质上是一个极大似然估计过程:寻找网络W使训练数据(X,Y)被同时观察到的联合概率最大。Hinton的受限玻耳兹曼机的训练使用了Gibbs抽样方法,使得学习过程能以一种无监督方式进行,所以Hinton的受限玻耳兹曼机是一种无监督的基于Gibbs抽样的自我表示学习。

虽然由于深度学习的进展似乎让人看到了真正人工智能的一线曙光,但也要清醒地认识到,以深度学习技术为代表的连接主义方法存在诸如可解释性差、不具备小样本学习和迁移学习能力、不具备推理能力等缺点,实用中除了在大规模图像识别、机器翻译、围棋人机对弈(深度学习和强化学习技术融合的结果)等领域取得了令人惊艳的进展外,在其他诸如语音交互、视频理解、无人驾驶等众多领域远未达到人类的能力。因此,真正人工智能时代尚未到来。但更应该理性看到的是,以深度学习技术为代表的连接主义方法从结构上模拟了人脑,这赋予了这类方法像人脑一样从外界输入信息中提取知识的能力,从目前所取得的效果来看,至少它做到了其他如逻辑主义学派所没法做到的事情。这样说并非是要将连接主义学派和逻辑主义学派对立起来,而仅仅是为了强调从目前进展来看,深度学习显然是实现真正人工智能的一种有力工具,它是近年来众多人工智能方法、思想中取得较大进展的一种。深度学习目前存在的不足,需要从包括逻辑主义学派的方法在内的其他方法中吸取营养,形成新的突破。人工智能的发展更应该从统计学、数学、计算机、脑与神经认知科学,甚至物理学、心理学、社会学等相关学科中取得营养。