神经网络和深度学习简史(一)
神经网络和深度学习简史(一)
“深度学习这一朵浪花在计算机语言学的海上已经被研究了多年,但2015年似乎有一股海啸般的力量把自然语言处理(NLP)推到了世人面前”-----------Dr. Christopher D. Manning, Dec 2015 [1]
科研某一个领域的所有已知方法被一种突如其来新发现而完全取代,如同被“海啸”袭击了一样,这听起来像是一个奇异的故事。然而这种灾难性的比喻用来形容近几年的深度学习再恰当不过了,在过去的几年中,深度学习被广泛的应用在解决复杂的人工智能(AI)问题。机器学习的发展的背后是由类似谷歌一类的工业巨头的资助下,以及在呈指数增长的机器学习论文(以及研究人员)的共同推动的。在学习了一些机器学习的课程并把用在了我的本科研究之中,我不禁在思考,机器学习到底是可以满足一切的幻想还是仅仅是人工神经网络的放大版本。众所周知,人工神经网络在上世纪80年代就已经被提出来了。接下来让我们一起揭开深度学习神秘的面纱,来体会这个超越了大规模人工神经网络的故事,一个由坚持着梦想的学者们,透过几十年的黑暗重新寻回神经网络以及机器学习的艰辛梦想。
一、线性回归
图1.1 上个世界末的机器学习算法(线性回归):
简单的介绍一下什么是机器学习,在二维平面上随机画出一些点,并画出一条适合这些点的直线。这就完成了从有限的成对输入(x)输出(y)值中确定普遍适用的一般函数的过程。这一过程一般被称为线性回归(Liner Regression),它是一个已经流传了200年的精妙小工具,它可以由一组输入-输出来推断一般函数。奇妙之处在于:对于无法直接建立函数却容易收集输入输出的方程,我们可以估测其表达式的形式。例如,现实生活中音频输入与语音输出直接映射函数。
线性回归并不能很好的解决语义识别的问题,但它的本质是一个监督学习模型。所谓监督学习就是:学习一个函数给定的训练集,训练集中每一个值都是函数的一对输入输出值,通过机器学习的方法可以获得一个预测函数,这个预测函数可以推广到不在训练集中的其他值,因此就可以用来预测未知输入到输出值。例如谷歌的语音识别技术由机器学习训练了大量的训练集,但是该训练集并不可能涵盖所有的语音输入,而手机却可以理解你的语音输入。
这种推论十分重要,因为与训练集相对应,总有一组不属于训练集的测试数据集合存在(其本质是更多的输入-输出示例)。这些测试集合通过判断计算结果正确与否来检测机器学习技术的有效性。过度的训练的结果是可能出现的过拟合现象——机器学习技术对于训练集十分有效,但对于测试数据则会出现严重失真。由于机器学习的研究人员需要一个标准来判断其方法的有效性,用于评估机器学习算法有效性的标准训练集和测试集就逐步出现了。
上述的例子只是一个简单的监督模型的机器学习的例子:点是训练集(x是输入,y是输出),而红色直线所代表的函数就是预测函数,我们可以用这个函数来预测训练集以外的未知输入的输出。接下来我们将要进行更进一步的理解。
二、AI的寒冬
本文是讨论机器学习的文章,为何要以线性回归作为本文的开篇序言呢?科学界普遍认为,线性回归正是第一个让机器学会学习的思路,那么我们就不能不谈到Frank Rosenblatt和他的感知机[2]。
图1.2感知机工作原理
心理学家Rosenblatt提出假设,认为感知机是一个简化的描述人类大脑中神经元的数学模型:它的输入是一组二进制输入(附近的神经元),每个输入都需要一个权重(附近神经元的突触强度),输出的结果通过一个阈值进行判断,如果超过阈值则输出1,否则输出0。感知机的输入大多数是数据或另一个感知机的输出,除此之外,感知机还有一个特殊的偏差输入,该偏差输入只有一个为“1”的值,用来确保同一个输入被抵消和值还可以可以被多个函数计算。这个神经元的模型是建立在Warren McCulloch和Walter Pitts Mcculoch-Pitts[3]的研究基础之上。这样的一个计算多个二进制输入的和值并阈值判断输出为1或0的神经元模型,可以基本建立一个与/或/非懂函数模型。这是人工智能(AI)早期的大事件,当时的主流思想是计算机能过通过逻辑推理的形式解决AI问题。
图1.3 生物灵感。激励函数是对于非线性函数进行加权操作以产生人工神经元的输出。在Rosenblatt感知机中,该函数值进行阈值操作。
然而Mcculoch-Pitts的模型缺乏学习的机制,这对于这个模型能否应用到AI领域是十分重要的。而这正是Rosenblatt的感知机擅长的地方。这灵感来自于Donald Hebb的基础研究工作[4],Hebb的想法奇妙之处在于,人类的认识和学习发生在大脑神经元之间突触的形成和变化——简称Hebb规则:当细胞A的突触足够接近细胞B足以对细胞B产生激励或者持续参加激励的时候,在细胞A或者AB两个细胞之间会产生一些生长或代谢变化,似的细胞A对细胞B的影响加大。
感知机没有完全的遵守这个想法,但是对于输入的权重采取一种非常简单直观的数学方案:对于给定输入输出示例的训练集,感知机应该“学习”每一个输入来得到一个函数,如果感知机的输出与输入相差过大则增加该例子的权值,否则输出太高则减小权重。更正式的算法说明如下:
1、感知机有一个随机权重的训练集;
2、对训练集中某一个样本的输入计算出对应的感知机输出;
3、如果感知机的输出与样本的正确输出不同:
a.如果输出应该为了0,却输出了1,则减小为1的输入的权重;
b.如果输出应该为了1,却输出了0,则增大为1的输入的权重;
4、重复训练训练集的其他样本,并重复2-4步骤,直到感知机答案全部正确。
这是一个简单的过程,并且产生了简单的结果:一个线性函数作为输入(加权和),被一个非线性的激励函数(和的阈值)所限制,这一过程与线性回归类似。但函数只有有限的输出值的时候(逻辑函数的输出值有真(1)或假(0)),阈值求和的方法是很有效的。因为此时问题数量有限,对于任何的连续输入都可以通过输出-回归-使用正确标签分类的方法来解决。
Rosenblatt自己用硬件实现了感知机的理念(硬件在五花八门的编程语言面世之前是通用的科研手段),并且证明了感知机对于20x20的像素学习中可以实现正确的简单形状分类。此时机器学习诞生了——一台根据输入-输出对可以给出近似的估计函数的电脑产生了。虽然此时它只实现了一个小功能,但不难相信,这种方法可以被扩展到更多更有用的场景,例如将人类手写的文字转化为电脑可以识别的文本。
然而,迄今为止,我们只知道一个感知机是如何学会输出一个1或是0的,但是如何扩展到许多类别的分类任务呢,例如人类手写识别(多个字母或数字类别)呢?这对于一个感知机是不可能的,因为它只有一个输出。多种输出的功能可以在一个有多个感知机的层级中来进行学习,使得所有感知机接受相同的输入,每个感知机只负责该功能的一个输出。事实上,神经网络(正式名称,“人工神经网络”(ANN)),只不过是一层感知机,这些感知机通常被称为神经元或者单元。在这个阶段只有一层——输出层。神经网络的典型应用就是手写数字图像的识别,输入的是图像的像素,输出部分由10个神经元组成,每个神经元对应10个可能的数字之一。在这种情况下,10个输出神经元只有一个输出1,其余输出都是0,我们去最高加权和作为正确的输出。
图1.4 一个有多种输出的神经网络
还可以使用与感知机不同的人工神经元来构思神经网络。例如阈值的激励函数不是必不可少的;Bernard Widrow和Tedd Hoff在1960年发现了一种使用化学记忆器的自适应线性元件(ADALINE)[5],该元件可以改变输入量的权值,他们还展示了如何将这种“自适应线性神经元”结合到拥有化学电阻器的电路中。他们还揭示了,没有阈值激励函数在数学上也是成立的,因为神经元学习机制可以在形式上通过良好的微积分方法使误差变最小化。因此在这样从0到1的突变跳跃使得神经元的性质变得可以理解,我们可以通过改变阈值(导数)的方式来减小误差,并找到最佳权值。而这种通过训练误差导数的方法正是现今神经网络的具体训练方式。
如果我们进一步思考ADALINE,我们知道:为输入值加权重实际上是一种线性回归,因此与线性回归一样,这并不足以解决语义识别或计算机视觉这样复杂的AI问题。令McCulloch、Pitts 和Rosenblatt 真正感到兴奋的是:这样的简单单元组合起来就可以变得功能强大,强大到足以解决复杂的AI问题。正如纽约时报当时的评论所说[6]:
“海军近日展示了未来计算机的胚胎模型,它甚至具有走路、看、读、写、甚至意识到自己的存在的功能......康奈尔航空实验室的Rosenblatt博士认为,感知机可以作为被发射到行星空间的机械空间探索者的存在”
可以看当时的视频(视频源来自Youtube)
https://youtu.be/aygSMgK3BEM
这种说法在当时毫无疑问阻碍了学者对AI的研究,他们中的大多数人正执着于遵循着严格的数学逻辑的符号操作的方法。麻省理工学院AI实验室创始人Marvin Minsky和时任实验室主任的Seymour Papert对于这种炒作持有怀疑的态度,并与1969年以严格的科学方式发表了他们的怀疑论,质疑当时被命名为感知机的局限性[7]。有趣的是,在当时的1951年,Minsky可能是第一个使用随机神经模拟增强计算器(SNARC)[8]来实现神经网络硬件的科学家。他的工作比Rosenblatt 的研究要早很久,但是他对于这个系统的工作原理以及对于感知机的关键性质的理解偏差导致了他的AI研究陷入了一个死胡同。在他的论文之中,着重强调了感知机的局限性-例如感知机不能学习简单的异或(XOR)问题,因为它不是线性可分的。虽然这段历史是很模糊的,但毫无疑问,该出版物的发表引发了第一个AI寒冬。在一轮对AI的大规模炒作之后,黑夜降临了。这直接导致了资金的冻结以及很大程度上影响了相关出版物的发表。
图1.5,感知机局限性的可视化,对于输入X,Y找到一条正确的线性函数来区分输出+,-,等同于在2D平面上找到一条直线来区分+和-。显然在第三个图中这是不可能完成的任务。
三、AI寒冬的复苏
为什么事情的发展对于神经网络是这么的不利?这个想法是集合一堆感知机来完成复杂的任务,而不仅仅使用一个感知机。在一个神经网络之中不仅仅有一层输出层,而是将输入发送到任意多个成为隐藏层的单元之中,作为另一个隐藏层或输出层的输入。尽管只有输出层的结果可见,但是中间隐藏层做的计算比单一层多很多。
图1.6 有两个隐藏层的神经网络
隐藏层的优势之处在于,隐含层可以在数据之中寻找特征,并允许下一层对特征进行操作,而不用处理大量的原始数据和噪声的干扰。例如,在图像之中进行人脸识别是一种非常常见的神经网络任务,第一层隐含层在图像之中找到线、圆、椭圆等特征,下一层接收这些线、圆、椭圆等在图像中的具体位置,接收到这些信息之后找到人脸的位置就更容易了。现今,机器学习并不会接收诸如语音、图像等原始的数据作为输入;相反,机器学习需要先对数据进行特征提取之后进行的——也就是说为了使学习更容易,我们通常会对与处理数据进行诸如角度或形状之类的特征提取之后再进行机器学习。
图1.7 传统手动特征提取的可视化
Minsky和Papert的论文不仅仅表明了异或(XOR)问题用单层感知机是无法解决的,还表明了Rosenblatt的算法并不适用于多层感知机,我们知道XOR问题必须通过多层感知机来解决。为了明确这一概念,我们重新明确一下感知机如何学会计算一个函数:
1、等于函数输出的感知机的数值将会获得一个很小的权重;
2、对训练集中某一个样本的输入计算出对应的感知机输出;
3、对于每个感知机,如果训练的结果与样本的结果不符,相应的调整权重;
4、重复训练训练集的其他样本,并重复2-4步骤,直到感知机答案全部正确。
这就是为什么对多层感知机不起作用的原因:该样本只会调整输出层来输出正确的结果,那我们到底如何调节上层的感知机权重?尽管需要一些时间来推导,但答案是显而易见的,我们需要一条古老的运算法则:链式法则。实现的关键之处在于,若神经网络并不是完全由感知机组成的,却要通过 诸如ADALINE元件来计算并输出非线性可微方程,链式法则不仅可以通过调节权重似的误差最小化,还可以通过计算所有先前层的神经网络导数来获得调节它们权重的方式。简而言之:我们可以通过微积分将任何训练集的错误放于先前隐含层的每个神经元,如果有更多的隐含层,我们可以将误差进一步分裂,以此类推。总之,我们反向传递误差。因此我们可以改变神经网络中的所有权重,包括隐含层中的所有权重,并且通过最优化技术(通常 是梯度下降法),来选择最适合的最终权重值。
图1.8 反向传递函数的基本原理
反向传递函数是由多个研究人员在60年代提出来的,并在1970年由Seppo Linnainmaa[9]首次部署在计算机上,该运用方式与今日使用方式基本相同。但是Paul Werbos在1974年通过他的博士论文[10]通过深度的分析反向传递函数,首次提出了它可以用于神经网络之中。有趣之处在于,与感知机一样,他的灵感也是建立在对人类思维的建模之中。这种弗洛伊德心理学的情况正如他自己所说:
“在1968年,我提议在神经元之间模仿弗洛伊德的信用分配的 逆向流的概念......我通过将直觉、例子和链条法则组合起来来解释反向传递,尽管它是由弗洛伊德在他的精神动力学中的理论的数学翻译。”
尽管在已经解决了多层神经网络如何训练等诸多问题,也在论文中充分论证了反向传递函数的工作,但受到AI寒冬的影响,Werbos直到1982年才 在刊物上表反向传递的应用。事实上,Werbos认为这种方法对于解决感知机中存在的问题是有意义的,然而整个学术圈失去了解决这些问题的信心[11]:
“Minsky的书中论点有(1)我们需要使用MLP[多层感知,神经网络的另一个词语],甚至可以表示类似亦或之类的非线性函数。(2)没有人可以找到一个可行的方式来训练MLP使之能学习这些简单的函数。Minsky的书让大多数人相信神经网络是一个死胡同。这才是最坏的异端!Widrow强调这种悲观主义学说阻碍了当时大多AI学校的对感知机的研究,但我们却不应该怪罪Minsky。Minsky只是总结了数百神经网络的研究人员的经验,而他们无一例外想找到一种训练MLP的最佳方式,然而他们的结局往往是无疾而终。当然仍然有一些希望之岛存在着,例如Rosenblatt的“反向传播”算法和Amari的最小二乘法作为训练神经网络的方法。但当时的学术圈主流意见终于变得悲观。20世纪70年代,我曾经到过麻省理工学院访问Minsky,我建议我们发表一份联合声明,表明MLP事实上可以克服先前提出的问题,然而Minsky却不屑一顾。更有甚者,无论是麻省理工还是哈佛还是其他任何地方,没有人还有任何的兴趣。”
看起来,这一现象的发生正是由于学术圈已经丧失了相关研究的兴趣,这一现象一直持续到十余年以后。1986年,这种方法在论文Learning representations by back-propagating errors问世后得到了普及。该论文的作者是David Rumelhart, Geoffrey Hinton, 和 Ronald Williams[12],这篇发表在1986年的论文除了展示该方法的诸多发现(该文甚至提到了David Parker和Yann LeCun是最先发现这个方法的人)外,更着重强调了如何简洁清除的描述该方法。事实上,作为一个机器学习的学生很容易发现,他们在论文中的描述与教科书或AI课堂上的概念的解释方式基本相同。IEEE重新回顾了这段历程[13]:
“不幸的是,Werbo的研究在学术界几乎是不为人知的。直到1982年Parker重新发现了这项技术,并与1985年在麻省理工学院做了一份报告[40]。不久之后Parker发表了他的研究结果[41]。Rumelhart,Hinton和Williams[42]也重新发现了这些技术,并且也是主要由于他们清晰的阐述了自己的观点,终于使得机器学习广为人知。”
然而这三位学者不仅提出了这种新的学习方法。同年他们发表了更多更深入的关于“通过误差传递进行内部学习”[14]的论文,并特别解决了Minsky书中的问题。虽然解决问题的方法是有前人提出的,但是正是他们1986年的清晰表述使得人们广泛的理解如何通过训练多层感知机来解决复杂的问题。所以,神经网络终于复苏了! 在第二部分中,我们将看到几年后,反向传播和“过误差传递进行内部学习”中讨论的一些其他技巧,并且应用于一个非常重要的问题:使计算机能够读取人类手写数字。
-
Christopher D. Manning. (2015). Computational Linguistics and Deep Learning Computational Linguistics, 41(4), 701–707. ↩
-
F. Rosenblatt. The perceptron, a perceiving and recognizing automaton Project Para. Cornell Aeronautical Laboratory, 1957. ↩
-
W. S. McCulloch and W. Pitts. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5(4):115–133, 1943. ↩
-
The organization of behavior: A neuropsychological theory. D. O. Hebb. John Wiley And Sons, Inc., New York, 1949 ↩
-
B. Widrow et al. Adaptive ”Adaline” neuron using chemical ”memistors”. Number Technical Report 1553-2. Stanford Electron. Labs., Stanford, CA, October 1960. ↩
-
“New Navy Device Learns By Doing”, New York Times, July 8, 1958. ↩
-
Perceptrons. An Introduction to Computational Geometry. MARVIN MINSKY and SEYMOUR PAPERT. M.I.T. Press, Cambridge, Mass., 1969. ↩
-
Minsky, M. (1952). A neural-analogue calculator based upon a probability model of reinforcement. Harvard University Pychological Laboratories internal report. ↩
-
Linnainmaa, S. (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s thesis, Univ. Helsinki. ↩
-
P. Werbos. Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. PhD thesis, Harvard University, Cambridge, MA, 1974. ↩
-
Werbos, P.J. (2006). Backwards differentiation in AD and neural nets: Past links and new opportunities. In Automatic Differentiation: Applications, Theory, and Implementations, pages 15-34. Springer. ↩
-
Rumelhart, D. E., Hinton, G. E., and Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323, 533–536. ↩
-
Widrow, B., & Lehr, M. (1990). 30 years of adaptive neural networks: perceptron, madaline, and backpropagation. Proceedings of the IEEE, 78(9), 1415-1442. ↩
-
D. E. Rumelhart, G. E. Hinton, and R. J. Williams. 1986. Learning internal representations by error propagation. In Parallel distributed processing: explorations in the microstructure of cognition, vol. 1, David E. Rumelhart, James L. McClelland, and CORPORATE PDP Research Group (Eds.). MIT Press, Cambridge, MA, USA 318-362 ↩