人工智能
1、第一次浪潮
在1943年,科学家WarrenMcCulloch和WalterPitts提出了神经网络作为一个计算模型的理论。1957年,康内尔大学教授FrankRosenblatt提出了“感知器”(perceptron)模型。感知器是第一个用算法来精确定义的神经网络,第一个具有自组织自学习能力的数学模型,是日后许多新的神经网络模型的始祖。感知器的技术在20世纪60年代带来人工智能的第一个高潮。
1969年,MarvinMinsky和SeymourPapert在出版的《感知器:计算几何简介》一书中强烈地批判了感知器模型:首先,单层的神经网络无法解决不可线性分割的问题,典型例子如异或门;其次,当时的计算能力低下无法支持神经网络模型所需的计算量。此后的十几年,以神经网络为基础的人工智能研究进入低潮。
2、第二次浪潮
Minsky提出的尖锐问题后来被逐步解决。传统的感知器用所谓“梯度下降”的算法纠错时,其运算量和神经元数目的平方成正比,因而计算量巨大。1986年7月,Hinton和DavidRumelhart合作在《自然》发表论文,系统地提出了应用反向传播算法,把纠错的运算量下降到只和神经元数目成正比。同时,通过在神经网络里增加一个所谓隐层(hiddenlayer),反向传播算法同时也解决了感知器无法解决的异或门难题。
Hinton的博士后YannLecun于1989年发表了论文《反向传播算法在手写邮政编码上的应用》。他用美国邮政系统提供的近万个手写数字的样本来训练神经网络系统,在独立的测试样本中错误率低至5%,达到实用水准。他进一步运用“卷积神经网络”(convolutedneuralnetworks)的技术,开发出商业软件,用于读取银行支票上的手写数字,这个支票识别系统在20世纪90年代末占据了美国接近20%的市场。
贝尔实验室的VladmirVapnik在1963年提出了支持向量机(supportvectormachine,SVM)的算法。在数据样本线性不可分的时候,支持向量机使用所谓“核机制”(kerneltrick)的非线性映射算法,将线性不可分的样本转化到高维特征空间(high-dimensionalfeaturespace),使其线性可分。作为一种分类算法,从20世纪90年代初开始,SVM在图像和语音识别上找到了广泛的用途。在手写邮政编码的识别问题上,SVM技术在1998年错误率降至0.8%,2002年最低达到了0.56%,远远超越同期的传统神经网络。
这时,传统神经网络的反向传播算法遇到了本质难题——梯度消失(vanishinggradientproblem)。这个问题在1991年被德国学者SeppHochreiter第一次清晰提出并阐明原因。简单地说,就是成本函数(costfunction)从输出层反向传播时,每经过一层,梯度衰减速度极快,学习速度变得极慢,神经网络很容易停滞于局部最优解而无法自拔。同时,算法训练时间过长会出现过度拟合(overfit),把噪音当成有效信号。SVM理论完备、机理简单、容易重复,从而得到主流的追捧。SVM技术在图像和语音识别方面的成功使得神经网络的研究重新陷入低潮。
3、第三次浪潮
(1)改进算法
2006年,Hinton和合作者发表论文《深信度网络的一种快速算法》。在这篇论文里,Hinton在算法上的核心是借用了统计力学里的“玻尔兹曼分布”的概念,使用所谓的“限制玻尔兹曼机”(RBM)来学习(图5)。
图5波尔兹曼机与限制波尔兹曼机
RBM相当于一个两层网络,可以对神经网络实现“没有监督的训练”(unsupervisedtraining)。深信度网络就是几层RBM叠加在一起,RBM可以从输入数据中进行预先训练,自行发现重要特征,对神经网络连接的权重进行有效的初始化。经过RBM预先训练初始化后的神经网络,再用反向传播算法微调,效果得到大幅度提升。
2011年,加拿大的蒙特利尔大学学者XavierGlorot和YoshuaBengio发表论文《深而稀疏的修正神经网络》。论文的算法中使用一种称为“修正线性单元”(rectifiedlinearunit,RELU)的激励函数。和使用别的激励函数的模型相比,RELU识别错误率更低,而且其有效性对于神经网络是否进行“预先训练”并不敏感。RELU的导数是常数,非零即一,不存在传统激励函数在反向传播计算中的“梯度消失问题”。由于统计上约一半的神经元在计算过程中输出为零,使用RELU的模型计算效率更高,而且自然而然地形成了所谓“稀疏表征”(sparserepresentation),用少量的神经元可以高效、灵活、稳健地表达抽象复杂的概念。
2012年7月,Hinton发表论文《通过阻止特征检测器的共同作用来改进神经网络》。为了解决过度拟合的问题,论文中采用了一种新的被称为“丢弃”(dropout)的算法。丢弃算法的具体实施是在每次培训中给每个神经元一定的几率(比如50%),假装它不存在,计算中忽略不计。使用丢弃算法的神经网络被强迫用不同的、独立的神经元的子集来接受学习训练。这样网络更强健,避免了过度拟合,不会因为外在输入的很小噪音导致输出质量的很大差异(图6)。
图6标准神经网络(a)与使用丢弃算法后的神经网络(b)
(2)使用GPU提高计算能力
2009年6月,斯坦福大学的RajatRaina和吴恩达(AndrewNg)合作发表论文《用GPU大规模无监督深度学习》,论文模型里的参数总数(就是各层不同神经元之间链接的总数)达到1亿。与之相比,Hinton在2006年的论文里用到的参数数目只有170万。论文结果显示,使用GPU的运行速度和用传统双核CPU相比,最快时要快近70倍。在一个四层、1亿个参数的深信度网络上,使用GPU把程序运行时间从几周降到一天。
2010年瑞士学者DanCiresan和合作者发表论文《Deepbigsimpleneuralnetsexcelonhandwrittendigitrecognition》,其中使用的还是20世纪80年代的反向传播计算方法,但是计算搬移到GPU上实现,在反向传播计算时速度比传统CPU快了40倍。
2012年还在斯坦福大学做研究生的黎越国(QuocVietLe)领衔,和他的导师吴恩达,以及众多谷歌的科学家联合发表论文《用大规模无监督学习建造高层次特征》。黎越国的文章中使用了九层神经网络,网络的参数数量高达10亿,是Ciresan2010年论文中的模型的100倍,是2009年Raina论文模型的10倍。
(3)海量的训练数据
在黎越国文章中,用于训练这个神经网络的图像都是从谷歌的录像网站youtube上截屏获得。1000万个原始录像,每个录像只截取一张图片,每张图片有4万个像素。与之相比,先前大部分论文使用的训练图像,原始图像的数目大多在10万以下,图片的像素大多不到1000。黎越国的计算模型分布式地在1000台机器(每台机器有16个CPU内核)上运行,花了三天三夜才完成培训。互联网的大规模普及,智能手机的广泛使用,使得规模庞大的图像数据集能够被采集,并在云端集中存储处理。大数据的积累为深度学习提供了数据保障。
责任编辑人:CC
全部0条评论
快来发表一下你的评论吧 !