深度学习(Deep Learning)

Author:Yann LeCun, Yoshua Bengio, Geoffrey Hinton

深度学习允许由多个处理层组成的计算模型来学习具有多个抽象级别的数据表示。这些方法在语音识别、视觉对象识别、目标检测以及一些其他领域,例如:药物发现和基因学,极大地提高了技术水平。深度学习通过使用反向传播算法发现大数据集中的复杂结构,反向传播算法可以用来指导学习机器应该怎样从前一层获取误差而改变本层的内部参数。深度卷积网络在处理图像、视频、语音和音频方面取得了重大突破,而循环网络在处理序列数据,例如:文本和语音,上发挥着重大作用。

机器学习应用在现代社会的许多方面,从Web搜索到内容过滤,到电子商务网站的推荐系统,以及越来越多的出现在像相机和智能手机这样的消费产品中。这些应用在逐渐的使用一种被称为深度学习的技术。
  传统的机器学习技术在处理原始数据方面的能力有限。几十年来,在构建一个模式识别或者机器学习系统都需要非常细致的工程和丰富的专业领域的知识储量来设计一个特征提取器,把原始数据(如图像的像素值)转换成一个适当的内部特征表示或特征向量,子学习系统,通常是一个分类器,对输入的样本进行检测或分类。
  表示学习是一套可以自动从原始数据中发现需要用来检测或分类的表示形式。深度学习就是一种特征学习方法,把原始数据通过一些简单的但是非线性的模型转变成为更高层次的,更加抽象的表达。通过足够多的转换的组合,非常复杂的函数也可以被学习。对于分类任务,高层次的表达能够强化输入数据的区分能力方面,同时削弱不相关因素。
深度学习的关键方面在于这些特征层不是由人类工程师所设计,而是使用通用的学习过程从数据中学到的。
  深度学习在解决多年来阻止人工智能尝试的问题上体现了重大的优势。深度学习方法非常适用于在高维数据中发现复杂的内部结构。在不久的将来,深度学习将会取得更多的成功,因为它需要很少的手工工程,它可以很容易受益于可用计算能力和数据量的增加。目前正在为深度神经网络开发的新的学习算法和架构只会加速这一进程。

监督学习

无论是深度还是非深度,监督学习都是机器学习最常见的方式。
假如要搭建一个能够分类一幅图像中的房子、车子、人和宠物的系统,首先需要收集大量的关于房子、车子、人和宠物的图像,并做好分类标记。在训练的时候,机器获取一幅图像并输出一个分数向量对应着每一类的得分情况,我们希望预期的类别在所有类别中得分最高,但是,这在开始训练前是没法知道的。然后计算一个目标函数用来衡量输出得分和预期得分之间的误差,接着调整机器的内部参数以减小这个误差。这些可调整的内部参数一般称为权重。在一个典型的深度学习系统中有数以亿计的这样的参数和被标记的样本用来训练机器。
  寻找适合的权重向量可以使用梯度下降算法。在实际应用中,随机梯度下降(SGD)算法使用的更多。
  训练结束后,使用测试集验证系统的泛化能力。
  当前应用中的许多机器学习技术使用的是线性分类器来对人工提取的特征进行分类。但是从20世纪60年代开始,我们就知道了线性分类器只能够把样本分成非常简单的区域,也就是说通过一个超平面把空间分成两部分。对输入特征不敏感。为了加强分类能力,可以使用泛化的非线性特性,如核方法,但这些泛化特征,比如通过高斯核得到的,并不能够使得学习器从学习样本中产生较好的泛化效果。传统的方法是手工设计良好的特征提取器,这需要大量的工程技术和专业领域知识。但是如果通过使用通用学习过程而得到良好的特征,那么这些都是可以避免的了。这就是深度学习的关键优势。
  一个深度学习结构是由简单模块的多层堆叠而来,每一个模块的目标是学习,期中许多模块需要计算非线性输入输出的映射。在堆叠中的每一个模型都需转换输入来增强表示的选择性和不变性。有了多个非线性层,系统就可以实现其输入的非常复杂的功能。

反向传播(BP)来训练多层神经网络

图1 多层神经网络和BP算法

最早期的模式识别任务中,研究者的目标一直是训练多层网络来替代人工选择的特征。尽管多层网络很简单,但是直到20世纪80年代中期才被广泛的理解。事实证明,多层结构的神经网络可以使用简单的随机梯度下降算法进行训练。只要网络的输入和内部权重函数是相对平滑的,就可以使用反向传播过程计算梯度。这种可以正常工作的反向传播算法是在20世纪70年代到80年代由一些独立团队发现的。
  用来计算多层神经网络权重的梯度的反向传播算法只不过是用来求导的链式法则的实际应用。反向传播算法的核心思想是:目标函数对于某层输入的导数(或者梯度)可以通过向后传播对该层输出(或者下一层输入)的导数求得(如图1)。反向传播算法可以被重复用来传播梯度通过所有的模块,从输出的最顶层(网络产生预测的那一层)到最底层(网络接受外部输入的那一层)。一旦这些梯度被求解出来,就可以前向去求解每一层的权重。
  许多深度学习应用采用前馈神经网络结构(如图1),这种网络学习从一个固定大小的输入(例如:图像)到一个固定大小的输出(例如:每一种类型的概率)的映射。从第一层到下一层,一系列的单元计算关于前一层的输入的权值和,然后将计算结果传递给一个非线性函数。目前,最流行的非线性函数是ReLU(rectified linear unit),函数形式如:f(z) = max(z, 0)。在过去的数十年,神经网络使用后一些更加平滑的非线性函数,例如:tanh(z) 或者 1/(1 + exp(−z)),但是ReLU在多层网络中的学习速度要比其他的快,并且允许在未经非监督预训练的前提下训练一个深度监督网络。不属于输入层或输出层的单元成为隐藏单元。这些隐藏层可以被看作是扭曲输入的一种非线性方法,因此那些输入类别在最后一层能够被线性可分割。
  在20世纪90年代末,神经网络和反向传播算法被机器学习团队所抛弃,被计算机视觉和语音识别团队所忽略。人们普遍认为学习有用的、多层次的、具有少量先验知识的特征提取是不可行的。特别的,人们普遍认为简单的梯度下降容易使权重计算陷入局部最小的困境,因为,没有细微的改变会减小平均误差。
  实际上,在大型网络面前,陷入局部最小往往不是一个问题。不管初始情况如何,系统几乎都会获得相同的结果。目前的理论和经验结果强有力的证明了局部最小解通常不是个问题。相反,解空间中充满了大量的鞍点(梯度为0的点),同时鞍点周围大部分曲面都是往上的。所以这些算法就算是陷入了这些局部最小值,关系也不太大。
  2006年前后,CIFAR(加拿大高级研究院)的一组研究员重新唤起了人们对于深度前馈网络的兴趣。这些研究员引进了一种无监督学习方法,这种方法可以创建一些特征检测的网络层,而不适用带标签的数据。每一个特征检测网络层的学习目的是在下一层重构或者对特征检测器进行建模。通过使用这种重构目标预训练一些逐渐复杂的特征检测网络层,深度网络的权重可以初始化成合理的值。然后一个输出层可以被添加到网络的顶部,并且可以使用标准的反向传播算法进行微调。这对识别手写数字识别或检测行人非常有效,特别是在当带标记的数据的数量非常有限的时候。
  使用这种预训练方法的第一次的主要应用是在语音识别方面,快速图像处理单元(GPU)的出现使这成为了可能,并且可以很方便在上边编写程序,研究员在训练网络的时候可以获得10到20倍的加速。2009年,这种方法被用来映射短时间的系数窗口,该系统窗口是提取自声波并被转换成一组概率数字。它在一组使用很少词汇的标准的语音识别基准测试程序上达到了惊人的效果,然后又迅速被发展到另外一个更大的数据集上,同时也取得惊人的效果。从2009年到2012年由一些主要的语音团队开发了多个版本的深度网络,并且将其应用到Android手机上。对于更小的数据集,无监督预训练学习方法可以防止过拟合,同时,当有标签的样本很少的时候可以带来很好的泛化性能。事实证明,一旦深度学习技术的恢复了,这种预训练方式只会在小数据集上有需求。
  然而,有一种特殊的深度前馈网络,这种网络更加容易训练,并且泛化性能比相邻层之间完全连接的网络要好。这就是卷积神经网络。在之前神经网络不受欢迎的时候卷积神经网络就已经取得了许多成功,现在已经在计算机视觉团队得到了广泛的应用。

卷积神经网络(CNN)

卷积神经网络是设计用来处理多维数据形式的数据的,例如一幅包含了3个色彩通道的彩色图像有3个包含像素值得2D数组。许多数据都是这种多维数组的形式:1D的有信号、序列包括语言;2D的有图像、频谱;3D的有视频或者有声音的图像。对于利用自然信号的属性,卷积神经网络有4个关键的思想:局部连接、共享权重、池化和使用多层。
  一个典型的卷积神经网络结构是由一系列的过程构成的(如图2)。最初的几个阶段由卷积层和池化层组成。卷积层的单元被组织在特征图中,在特征图中,每一个单元通过一组叫做滤波器的权值被连接到上一层的特征图的一个局部块,然后这个局部加权和被传给一个非线性函数,比如ReLU。在一个特征图中的全部单元享用相同的过滤器,不同层的特征图使用不同的过滤器。使用这种结构处于两方面的原因。首先,比如说在像图像数组这样的数据中,一个值得附近通常是高度相关的,可以形成比较容易被探测的有区分的性的局部特征。其次,图像和其他信号的局部统计特征是不相关的。换言之,一个图案可以出现在一幅图像中的一部分,那么它也可以出现在其他任何地方,所以不同位置的单元可以共享权值以及可以探测相同的样本。在数学上,由特征映射执行的筛选操作是一个离散的卷积,因此得名。
  卷积层的作用探测上一层的局部连接,池化层的作用是将一些语义相近的特征合并到一起。由于一个图案形成的特征的相对位置可能会发生变化,通过粗化每一个特征的位置就可以实现可靠的检测图案。一个典型的池化单元计算一个特征映射(或者一个新的特征映射)中单元的局部块的最大值。相邻的池化单元从由多个行或列转化的块中获得输入,从而减少了表示的纬度,给微小的移动和变化创造一个不变性。卷积的二三个阶段,非线性层和池化层是堆叠在一起的,其次是更多的卷积层和全连接层。在卷积神经网络上进行反向传播算法和在一般的深度网络上是一样的,可以让所有的在过滤器中的权值得到训练。
  深度神经网络利用了很多的自然信号是由层级结构组成的这一属性,在这种属性中高级的特征是由低级的特征组合构成的。在图像中,局部边缘组合形成的图案,这些图案组成图像的局部,然后局部组成目标。从声音到电话、音素、音节、字和句子,同样的层级结构存在于语音和文本中。当输入的数据在前一层中的位置发生变化时,池化操作让这些特征表示对这些变化具有鲁棒性。
  卷积神经网络中的卷积层和池化层的灵感来源于视觉神经中的简单细胞和复杂细胞,这种细胞是以LGN-V1-V2-V2-IT的层级结构形成视觉回路的。当把卷积神经网络和猴子放在一起时,卷积神经网络高级单元的激活解释了猴子下颞叶皮质中随机160个神经元的变化。卷积神经网络有神经认知的根源,它们的结构有些相似,但是在神经认知中没有像反向传播这样的端到端的监督学习算法。有一种一维的卷积神经网络被称为时延神经网络,这种神经网络应用于音素和简单测字词识别。
  20世纪90年代以来,从用于语音识别和文档阅读的时延神经网络开始,出现了大量基于卷积神经网络的应用。文档阅读系统利用卷积神经网络和概率模型共同训练,实现对语言的约束。到20世纪90年代末,这样的系统已经阅读了超过美国所有支票的10%。后来,微软开发了一系列的基于卷积神经网络的光字符识别和手写体识别系统。在20世界90年代早期,卷积神经网络也对自然图像中的目标检测做了实验,包括人脸、手,以及人脸识别。


图2 卷积神经网络

使用深度卷积网络理解图像

从21世纪早期开始,卷积神经网络就被成功的大量应用在检测、分割、物体识别和图像的各个领域。这些应用都是使用了大量的带标签的数据,比如交通信号识别,生物图像分割,面部探测,文本、行人以及自然图像中的人体检测。近年来,卷积神经网络取得的主要成果在人脸识别方面。
  值得一提的是,图像可在像素级别标记,这样就可以应用在自动电话接听机器人、自动驾驶汽车等技术中。像Mobileye和NVIDIA这样的公司正把基于卷积神经网络的方法应用于汽车中的视觉系统中。其他更重要的应用在自然语言理解和语音识别领域。
  尽管卷积神经网络很成功,但是直到2012年的ImageNet竞赛才被计算机视觉和机器学习团队重视起来。在竞赛中,深度卷积神经网络被应用在拥有上百万张图像的网络数据集中,这个数据集包含了1000个不同的类别,结果取得了惊人的成绩,几乎比当时使用的最好的方法减少了一半的错误率。这一成功来自于对GPU、ReLU和一种称为dropout的正则化技术分有效利用,以及对现有样本进行分割获得更多训练样本的技术的有效利用。这样的成功给计算机带来了一场革命,如今,卷积神经网络几乎成为了所有识别和检测任务的主要方式,并且在某些任务达到了人类水平。最近一个更好的成果是,利用卷积神经网络结合循环神经网络用来产生图像标题。
  目前的卷积神经网络结构有10到20层的ReLU激活函数,在所有单元中有上百万个权重和几十亿个连接。然而训练如此大的网络在两年前就只需要几个星期的时间,现在硬件,软件和算法的提高已经将时间缩短到只要几个小时。
  基于卷积神经网络的视觉系统已经引起了许多主要的科技公司的注意,包括Google,Facebook,Microsoft,IBM,Yahoo,Twitter以及Adobe等公司,并且很多初创公司也是如此。
  卷积神经网络很容易在芯片或者FPGA中高效实现。NVIDIA、Mobileye、Inter、Qualcomm和Samsung等许多公司正在开发一种用于智能手机、相机、机器人和自动驾驶汽车的实时视觉应用的卷积神经网络芯片。


图3 从图像到文本

分布式表示和语言处理

深度学习理论表示,与不使用经典的分布表示学习算法相比,深度网络具有两个不同的巨大优势。这两种优势来源于网络中的各节点成分,并且取决于具有合理结构的生成数据分布。第一,学习分布式表示能够泛化适应新学习到的特征值的组合,而不是在训练中所观察到的(例如:2^n可能有n个二进制特征)。第二,在一个深度网络中组成表示的网络层将带来一个指数级的潜在优势。
  多层神经网络的隐藏层学会以一种便于预测目标输出的方式来表示网络的输入。下面是一个很好的示范,将本地文本的内容作为输入,训练多层神经网络来预测句子中下一个单词。在文本中的每一个单词作为一个n维向量呈现给网络,也就是说一个向量有一个值是1,其余值均为0.在第一层中,每一个单词创建一个不同的激活形式或者词向量。在一个语言处理模型中,网络中的其它层学习将输入的词向量转换为预测下一个单词的输出词向量,它可以用来预测词汇表中的任意一个单词作为下一个单词输出的概率。网络学习了包含许多激活节点的、并且可以解释为词的独立特征的单词向量,正如第一次示范的文本学习分层表征文字符号的例子。这些语义特征并没有在输入时明确表示出来,它们由学习程序发掘出来,作为分解输入和输出之间的结构关系的可行的方法。当单词序列来自一个大型的真实的文本,并且在独立的微规则不可靠时,词向量的学习方法的结果也表现得很好。例如,当训练去预测一个新闻故事中的下一个单词时,对于Tuesday和Wednesday所学习到的词向量和Sweden和Norway所学习到的词向量是非常相似的。类似于这样的表示都称为分布表示,因为他们的属性并不是相互独立,并且它们的许多配置变化和观测中的数据一致。这些词向量都是由学习特征组成的,并且这些特征没有提前由专家区分开来,但是它们由神经网络自动发现了。现在,从文本中学习到的单词的词向量表示方法被广泛的应用在自然语言处理领域。
  特征表示问题争论的中心介于对基于逻辑启发和基于神经网络的认识。在逻辑启发的范式中,一个符号的实体对应唯一的属性,它与其他符号的实例相同或者不相同。它没有内部结构,并且这样的结构和它们的使用相关,它们必须和变化的合理推理对应。相反的,神经网络利用了大量活动载体、权值矩阵和标量非线性化,来实现能够支撑简单容易的、具有常识推理的快速直觉函数。
  在引入神经语言模型之前,对语言进行统计建模的标准方法没有使用分布式表示方法,而是基于统计短符号序列发生频率增长到n(称为N-grams)。可能N-grams的数量是接近V^n,其中V为词汇表的大小,考虑到文本可能需要成千上万的单词,所以需要一个非常大的语料库。N-grams将每一个单词看作是一个原子单元,因此它们不能泛化语义相关的单词序列,但是神经语言模型可以,因为它将每一个单词与一个真实特征的向量联系在一起,并且语义相关的单词在这个向量空间是相互接近的。


图4 可视化词向量

循环神经网络(RNN)

反向传播算法的第一次引用,最振奋人心的应用是用来训练循环神经网络(RNN)。对于涉及连续输入的任务,例如语音和语言,通常使用RNN能取得更好的效果。RNN一次处理一个输入序列元素,在隐藏层中保持一个状态向量,这个状态向量隐式的包含了之前所有序列的元素的历史信息。当我们考虑在不同离散时间步骤时隐藏层的输出时,这就好像它们是在深度多层网络中不同神经元的输出(如图5 右),那么我们该怎样利用反向传播训练RNN就变得清晰了。
  RNN是非常强大的动态系统,但是训练RNN被证明是有问题的,因为反向传播梯度在每一步都是增长或者下降的,因此在多次迭代之后他们可能会导致激增或者消失。
  由于先进的结构和训练方式,RNN被发现可以很好的预测下一个字符或者句子中下一个单词,并且可以应用于更加复杂的任务。例如在某时刻阅读一个英语句子的单词之后,一个英语句子的“编码”网络将会被训练,使得隐式单元的最终状态向量能够很好的表征句子所要表达的意思或思想。这种“思想向量”(thought vector)可以作为联合训练一个法语“编码器”网络的初始化隐式状态(或者额外的输入),其输出为法语翻译首单词的概率分布。如果从分布中选择一个特殊的首单词作为编码网络的输入,将会输出翻译句子中的第二个单词的概率分布,并直到停止选择为止。总体而言,这一过程是根据英语句子的概率分布生成法语单词序列。这种简单的机器翻译方法和最先进的机器产生了竞争,同时也引起了人们对于理解句子是否需要使用推理规则操作内部符号表示严重怀疑。这与日常推理中同时涉及到根据合理结论类推的观点是匹配的。
  类比于将法语句子的意思翻译成英语句子,同样可以学习将图像的意思转换成英语句子(如图 3),这里的编码器是一个深度卷积神经网络,这个网络在最后一个隐藏层将像素转换为一个激活向量,解码器是一个RNN,与机器翻译和神经语言建模中使用的循环神经网络类似。如今,人们对这样的系统的兴趣激增。
  RNN一旦在某时刻展开,它可被看成一个非常深度的前馈神经网络,在这个网络中的所有层都共享相同的权重。尽管RNN的主要目的是学习长期的依赖关系,但是理论和经验证明长时间的去学习去存储信息是困难的。
  为了纠正这一点,一个想法是用一个显示的内存来增强网络。这个的第一个建议是使用特殊隐藏单元的长短期记忆(LSTM)网络,其自然行为是长期的记忆输入。这个特殊的单元被称为记忆细胞,它就像一个累加器或者是一个封闭的神经元:它与自己的下一步相连接,并且连接的权值为1,因此它复制了自己的实值状态,并且累加外部信号,但是这样的自我连接是由另一个单元乘法封闭的,这样的单元学习如何决定何时清除记忆内容。
  LSTM网络随后被证明比常规的RNN要更加有效,尤其是当一个时间步长中有几个层时,整个语音识别系统能够完全将声音转换为字符序列。LSTM网络或者相关的封闭形式的单元目前都被用于编码和解码网络,这在机器翻译方面表现得很好。
  在过去的几年里,对于RNN的记忆模型一些作者有了不同的建议。这些建议包括神经图灵机(Neural Turing Machine),它通过一个类似磁带的存储器来扩充网络,使RNN可以选择读写;利用联想记忆增强常规网络的记忆网络。在标准的问答基准上记忆网络产生了卓越的表现。记忆网络被用来记忆最后被要求回答问题的来历。
  除了简单的记忆网络,神经图灵机和记忆网络被用在需要常规推理和符号操作的任务中。神经图灵机能从算法中学习。在其他方面,当它们的输入是一个无需的序列时,它们可以输出一个已经排好序的符号列表,并且每一个符号都有一个表示在列表中的优先级的实数。记忆网络可以用来训练追踪一个类似于文字冒险游戏世界中的状态,在读完故事之后,它可以回答一些需要复杂推理的问题。在一个测试例子中,网络能够正确回答15句版的《指环王》中类似于“Where is Frodo now?”的问题。


图5 循环神经网络(RNN)

深度学习的未来

在振兴深度学习方面,无监督学习起着催化作用,但是纯粹的监督学习的成功掩盖了无监督学习的作用。尽管在这篇综述中我们还没有关注这一点,但是从长远来看,我们认为无监督学习将变得越来越重要,人类和动物的学习大部分是无监督的:我们是通过观察这个世界,而不是被告知每一个事物的名字来发现这个世界的结构的。
  人类视觉是一个智能的、基于特定方式的利用小或大分辨率的视网膜中央窝与周围环绕区域对光线采集成像的活跃的过程。我们期望未来能在机器视觉方面取得更大的进步,这些进步通过训练结合CNN和RNN的端到端的系统取得,采用强化学习来决定其走向。结合深度学习和增强学习的系统还处在初级阶段,但是它们在分类任务和学习玩不同的视频游戏方面所表现出来的结果已经要比被动视觉系统要好。
  在未来几年,深度学习将会产生巨大冲击的另一个领域是自然语言理解。当系统学习选择策略的时候,我们认为利用RNN去理解句子或者整个文档的系统将会变得更好。
  最后,人工智能方面所取得的进步将来自那些结合了复杂推理的表示学习系统。尽管深度学习和简单推理已经在语音识别和手写体识别方面应用了很长时间了,我们仍需要通过操作大量向量的新范式来代替基于规则的字符表达式操作。
原文下载:Deep learning(CSDN)Deep Learning
原文链接:Deep Learning(nature)

推荐阅读更多精彩内容