深度学习

YannLeCun, Yoshua Bengio & Geoffrey Hinton

原文出处:YannLeCun, Yoshua Bengio & Geoffrey Hinton. Deep Learning http://www.nature.com/articles/nature14539

摘要:

深度学习是指能够令由多个处理层组成的计算机模型以多层抽象的方式去学习数据的表达。这些方法使得一些前沿领域诸如语音识别,视觉物体识别,目标检测以及其他包括药物发现和基因组学等都有了极大地发展。深度学习使用反向传播(BP)算法,指出了机器应该如何改变其内部用于计算每一层对于上一层的表示的参数,从而可以发现在大型数据集中的复杂结构。深度卷积网络给处理图像、视频、语音和音频的领域带来了突破,而递归网络对于连续的数据例如文本和语音有很好的性能。

机器学习技术为现代社会的许多领域提供了强有力的支持:从网站搜索到社交网络的内容过滤再到电子商务网站的建议,并且它越来越多地出现在相机和智能手机等消费电子产品中。机器学习系统被用于分辨图像中的目标,将语音转换成文本,根据用户的兴趣选择新闻内容、广告或者产品,并选择相关的搜索结果。这些应用程序越来越广泛地使用一系列叫做深度学习的技术。

传统的机器学习处理原始数据的能力是有限的。几十年来,构造一个模式识别或机器学习系统需要细致的组织和专业的知识去设计一个特征提取器来完成将原始数据转换成一个合适的内部表示或特征向量,这当中的子系统通常是一个分类器,可以完成对输入样本的检测或分类。

表示学习是一系列学习的方法,它允许向机器输入原始数据,能够自动发现用于检测或分类所需的特征表示。深度学习方法就是一种拥有多层表示特征的学习方法,在每一层中通过简单但是非线性的模块将一个层级的数据(以原始数据开始)转换到更高层次,更抽象的表达形式。通过足够多的转换,即使非常复杂的函数也可以被学习到。对于分类任务,更高层次的表示可以放大输入的区别并且抑制无关的变化。例如,对于一幅图像来说,以像素值矩阵的形式输入,在第一层中被学习的往往是在图像中某些特定方向或位置边缘存在与否的特征。第二层往往是根据提取边界的走向来检测图案,而忽略边缘位置的细小变化。第三层可能是将图案组合成更大的组合图案,从而与相似的目标部分对应,并且随后的层会将这些部分再联合从而构成检测的目标。深度学习的关键方面在于这些层的设计不是由人类工程师完成的:它们是通过使用通用的学习算法从原始数据中学习的得到。

深度学习正在为解决多年来阻碍人工智能这一先进尝试的发展的诸多问题上发挥重要作用。它被证实已于发现高维数据的复杂结构,因此适用于科学、商业和管理等很多领域。除了打破图像识别和语音识别的很多记录外,它在诸如预测潜在药物分子的活性,分析粒子加速的数据,重新构建大脑回路以及预测非编码基因序列突变对基因表达和疾病的影响等领域打败了其他机器学习的技术。或许更令人惊讶的是,深度学习在自然语言理解方面的各种课题上也形成了极好的成果,特别是在主题分类,情感分析,问题回答和语言翻译上。

我们认为深度学习在不远的将来会有更大的成功,因为它需要很少的人工干预,所以它可以很容易地利用好计算能力和数据量的提升。目前正在为深度神经网络而开发的新的学习算法和结构只会加快这一进程。

监督学习

最常见的机器学习的形式,就是监督学习,不管其是否是深度的。试想我们建立一个可以对输入的图片中包含的东西进行分类的系统,包括人、车子、房子、宠物等等。我们首先需要建立带有对应类别标签的图片的巨大数据集。在训练过程中,机器被给与一张图片,就会输出一个其对于所有类别的得分构成的向量。我们想要让所期望的类对应最高的分数,但是在我们训练之前这是不太可能的。我们利用衡量误差(或距离)的目标函数来计算实际输出分数与期望的样本分数之间的差距。机器通过修改它内部的可调节的参数使得误差减小。而这些可调节的参数,通常称为权重,是可见的“旋钮”,真正决定了输入输出之间的函数关系。在一个典型的深度学习系统中,会有数百万个这样的可调节的权重,和数百万用来训练的带有标签的样例。

为了恰当地调整权重向量,学习算法计算了每个权值的梯度向量,表示如果权值增加了一个很小的量,那么误差就会增加或减少的量。然后,权值向量就需要在梯度矢量的相反方向上进行调整。

平均了所有样本的目标函数,可以看作是一种在权值的高维空间上的丘陵地形。负的梯度向量方向表示地形中下降最快的方向,地形上越接近它的最小值,也就取得了平均上的最小误差。

在实践中,大部分开发者都会采用随机梯度下降(SGD)的方法。它包括提取一组训练样本向量作为输入,计算输出和误差,还有这些样本的平均梯度,并且据此调整权重。不断地从训练集中获取一部分训练样本来重复这一过程,直到目标函数的平均值不再下降。它被称作随机,是因为每一个小的样本集对于全体样本平均梯度的估计来说都会产生噪声,相较于一些精细的优化方法,这个简单的过程往往会很快地找到一组好的权重。在训练完成后,系统的性能通过测试集来测试,即测试系统的泛化能力——也就是它对于训练过程中未见过的新样本的正确预测能力。

许多当前实际应用中的机器学习在人工提取的特证基础上使用线性分类器进行分类,一个二分类的线性分类器会计算特征向量各元素的加权和,若其高于阈值,那么输入就会被分类为一个特定的类别。

自从二十世纪九十年代以来,我们就知道一个线性分类器仅仅能通过一个超平面将输入空间分成几个简单的区域。但是图像或语音的识别问题等,要求输入-输出函数对于诸如位置,目标的光照和旋转,或者语音中音高和音色等的变化此类不相关的输入是不敏感的,而对一些特定的微小变化十分敏感,例如我们希望能够区分一只白色的狼和一只很像狼的萨摩耶犬。在像素层面上,在不同环境中不同姿势的两只萨摩耶的图片或许都会有很大的不同,然而相同背景中同样位置的一只萨摩耶和一只狼却会很像。线性的分类器,或者其他的直接在像素上操作的浅层分类器就算能够将前两个分为同一类,也很有可能不能地区分出后两个。这就是什么浅层分类器需要很好的用于解决选择不变问题的特征提取能器——一个能够提取出图像中区分目标的那些关键特征,但是这些特征对于分辨动物的姿势就无能为力了。为了使分类器更强大,可以使用通用的非线性特征,如核方法,但是诸如通过高斯核产生的这些通用特征,不能使学习对象具有对于所有的训练样本都很好的泛化效果。传统的选择是人工去设计好的特征提取器,而这需要大量的工程技能和专业经验。通过使用通用目标的学习过程,可以自动学习到好的特征,从而避免上述问题。这是深度学习的关键优势。

图1:多层神经网络和反向传播

a一个多层神经网络(由相连接的节点表示)能够通过扭曲输入空间使数据集(红线和蓝线代表的样本)更加线性可分。注意输入空间的规则网格(左侧)是如何被隐藏层(中间)转换的。这是一个只有两个输入节点、两个隐藏节点和一个输出节点的示例,但是用于目标识别或自然语言处理的网络通常有成千上百个这样的节点。

b链式求导法则告诉我们两个小的影响量(x的微小变化对于y的影响,和y对于z的影响)是如何关联的。x的微小变化量Δx首先会通过乘以∂y/∂x(这是偏导数的定义)转变成y的变化量Δy。类似的,Δy会给z带来改变Δz。通过链式法则将一个等式同另一个相关联——Δx通过乘以∂y/∂x和∂z/∂x就可以得到。当x,y,z是向量的时候,同样可以处理(导数是雅克比矩阵)。

c 在带有两个隐形层和一个输出层的神经网络中计算前向通路的值时使用这些等式,每个都包含一个可以反向传播梯度的模块。在每一层中,我们首先计算每一个节点的总输入z,即上一层输出的加权和。然后将非线性函数作用于z就得到这个节点的输出。为了简便,我们省略了偏置项。在神经网络中使用的非线性函数包括近些年广泛使用的修正线性单元(ReLU)f(z)=max(z,0),以及使用更广泛的S函数,例如双曲正切函数f(z)=(exp(z)-exp(-z))/(exp(z)+exp(-z))和Logistic函数f(z)=1/(1+exp(-z))。

d计算反向传播值的等式。在每一个隐藏层,我们计算误差对于每一个节点输出的偏导,它是误差对上一层输入的偏导的加权和。我们通过乘以f(z)的梯度将误差对输出的偏导转换成对输入的导数。在输出层,误差对于每一个节点输出的偏导是通过对代价函数求导取得的。如果节点l的代价函数是0.5(yl-tl)2,那么结果就是yl-tl,而tl是目标值。一旦∂E/∂zk已知,则误差E对节点j的连接上的权重wlk的导数就是yl(∂E/∂zk)。

图2:一个卷积网络的内部

一个应用于萨摩耶犬图像的典型卷积网络的每一层的输出(不是滤波器)。每一个矩形图像是一个特征图,对应了由每一个位置的检测学习到的特征的输出。信息流自下而上,随着低层特征作为定向边界检测器,并利用修正线性单元计算出每一个输出图片类别的得分。

一个深度学习框架是简单模块的多层堆叠,其所有(或大多数)的目标是学习,并且很多是在计算非线性的输入输出映射关系。每个模块都在转换其输入,是为了同时增加选择性和表达的不变性。有5到20层的非线性层的系统,可以形成对一些细节很敏感的复杂函数——能够从白色的狼中区分出萨摩耶,并且对大型的不相关变量不敏感,例如背景,姿势,光照和周围的物体。

利用反向传播训练多层结构

在早期的模式识别中,研究的目标是期望利用可训练的网络代替人工设计的特征提取,尽管它很简单,但是它的解决方法直到二十世纪八十年代中期才被广泛理解。它指出的是,多层网络结构可以利用随机梯度下降来进行训练。只要每个模块是输入和内部权重的相对平滑的函数,就可以通过反向传播方法计算梯度。这个方法的可行性与有效性在二十世纪七、八十年代被几个不同的团体都独立地发现了。

用于计算目标函数对于多层模块中的权重的反向传播过程,仅仅是链式求导法则的一个实际应用。关键在于目标对于一个模块输入的导数可以利用对这个模块输出(或后一个模块的输入)的导数来求得(如图1)。反向传播的等式可以重复地被用来在从输出层(网络形成预测结果的输出层)到输入层(外部数据的输入层)的所有模型中传递梯度。一旦计算出这些梯度,就可以直接计算每个模块权重的梯度。

许多深度学习的应用实例都使用了前馈神经网络结构(如图1),这种结构将固定大小的输入(例如一幅图像)映射到固定大小的输出(例如划分为若干的类别的可能性值)。在层间传递中,一些单元计算了来自于上一层的输入的的加权和,并通过非线性函数传递它们的输出。目前最流行的非线性函数是修正线性单元(ReLU),它是一个简单的半波整流函数f(z)=max(z,0)。过去几十年中,神经网络使用了具有更平滑的非线性的函数,例如tanh(z)和1/(1+exp(z)),但是ReLU仍然可以在多层网络中较快地学习,使得不需要进行非监督的预训练就可以训练一个深度的监督网络。不属于输入层和输出层的单元被称为隐藏单元。隐藏层可以被看作是以非线性方式扭曲输入空间的,所以类别就变得可以被输出层线性分离(如图1)。

二十世纪九十年代后期,神经网络和BP算法机器学习领域的研究者所遗弃,也被计算机视觉和和语音识别领域的研究者们忽视。人们广泛认为学习实用的、多阶段的、需要很少先验知识的特征提取器是不可行的。特别的是,人们普遍认为简单的梯度下降很可能陷入局部最小——小的改变不能够使平均误差再下降的权重配置。

在实践中,局部最小在大型网络中很少会成为问题。不考虑初始条件,系统总能得到效果差不多的结果。最近的理论和经验结果都强烈表明,局部最小通常不是一个严重的问题。正相反,解空间中存在大量的梯度为零的鞍点,并且在大多数维度上曲面都是弯曲向上的,只有剩下的很少的曲面方向是向下的。分析指出大量出现的鞍点都只有极少的向下卷曲的方向,但是它们几乎所有的都有和目标函数差不多的值。因此,即使算法陷入这些鞍点也没有太大的问题。

2006年前后,加拿大高级研究院(CIFAR)聚集了一个研究员团队,他们使得人们重燃了对于深度前馈网络的研究兴趣。研究者们介绍了不需要有标签数据就可以创建多层特征检测器的无监督学习方法。在学习过程中,每一层的特征检测器的目标是希望能够在下一层重建或模拟特征检测器(或原始数据)的活动。通过利用重构目标预训练出更加复杂的若干层特征提取器,网络的权重可以被初始化为合适的值。输出层加在网络的顶部后,整个网络可以通过标准的BP算法做出相应的调整。这个方法在手写体识别和行人检测方面有很好的效果,特别是当有标签数据十分有限的时候。

这种预训练尝试的一个主要应用是语音识别,快速图形处理单元(GPU)的出现使得编程变得便捷,并且使研究者们训练网络的速度比以前提升了10到20倍。在2009年这种尝试被应用到将一段声波中提取到的短时间的窗口系数,映射到可以被窗口帧中心代替的一系列语音碎片的概率。它打破了在使用较小词汇库的标准的基准语音识别记录,并很快打破了使用更大的词汇库的识别记录。到2012年为止,从2009年发展起来的深度网络已经被许多主流语音团队所发展,并且已经被应用到了安卓手机上。对于比较小的数据集来说,无监督预训练可以很好地预防过拟合。当有标签数据比较少或者有很多源数据而目标数据很少时,它会取得更好的泛化效果。一旦深度学习的研究获得了恢复,这种预训练也就只有在数据较少的时候才需要了。

然而,一种特殊的深度前馈网络相对于那种相邻层使用全连接的网络来说更容易训练,泛化性能也更好。它就是卷积神经网络(ConvNet)。在神经网络不受人们关注期间,它取得了许多实践性的成功,并且最近已经被计算机视觉领域的研究者们广泛接受。

卷积神经网络

卷积网络是被设计用来处理多队列数据的,例如一张包含三通道2维彩色像素强度队列的图片。许多数据形态是多维队列的形式:1维的是包括语言的信号序列,2维的是图像或声谱图,3维的是视频或立体图像。卷积网络利用自然信号的特性时存在四个关键点:局部连接,权值共享,池化和多层结构。

典型的卷积网络结构(如图2)由一系列的阶段构成。最初的阶段由卷积层和池化层组成。卷积层的很多节点被构造成了一个特征映射,每个节点与上一层在特征映射中的局部块通过一系列的被称为滤波器的权重连接。这个节点的局部加权和被通过一个非线性函数如ReLU进行传递。一个特征映射中的所有节点分享了相同的滤波器。设计这种结构的原因有两方面。首先,在队列型数据例如图像中,局部的值是高度相关的,形成局部特征图是很容易检测的。其次,图像的局部统计与其他信号在位置上是不相关的。换句话说,一个局部图像也可能出现在其他的任何地方,因此构建在不同位置共享相同权值并在队列的不同部分检测相同模式的单元的方法,在数学上叫做离散卷积,是利用特征映射进行滤波操作的方法。

卷积层的功能是检测前一层特征的局部连接,而池化层的作用是合并语义上相似的特征。这是因为形成一个目标的特征的相对位置会有所不同,位置粗糙颗粒化的特征也可以形成可靠的目标检测。一个典型的池化单元会计算在一个(或几个)特征映射中的一个局部块中单元的最大值。邻近的池化单元对局部块按照一行或一列或者更多的顺序切换取得数据,从而减少了表达的维数,创造了对于微小移动或扭曲的不变性。两到三个卷积层,加上非线性性和池化层的堆叠,再连接上全连接层就构成了卷积网络。同普通深度网络中一样简单的BP算法就可以训练卷积网络所有的滤波器中的权重。

深度神经网络在探究自然信号层级组成的特性,其中的高级特征是由低级特征组合获得的。在图像中,边缘的局部组合形成了图案,图案聚合成很多部分,最终组成目标。相似的层级结构也存在于来自电话里的声音、音位、音节以及单词和句子等的这些语音和文本中。当前一层的元素的位置或表现变化时,池化操作能够保证表达几乎不变。

卷积网络中卷积层和池化层是由视觉神经科学中的简单细胞和复杂细胞的经典观念启发而来的,视觉皮层的神经回路是以LGN–V1–V2–V4–IT这样的整体架构构成的。当给卷积网络和猴子展示相同图片时,卷积网络高层单元的激活过程就可以解释猴子的下颞叶皮质中随机组合的由160个神经元组成的神经元组中一半神经元的活性变化。卷积网络的根源可以归结到神经认知机,他们有相似的结构,但神经认知机中没有类似BP算法之类的端到端的监督学习算法。一个简单的1维卷积网络被称作时延神经网络,它曾被用于音位与简单单词的识别。

从二十世纪九十年代早期开始,卷积网络已经有了大量的应用,最初是时延神经网络用于语音识别和文本阅读。文本阅读系统使用了一个训练好的卷积网络和一个受到语言约束的概率模型的联合。二十世纪九十年代后期,这个系统阅读了大概10%的美国全国的支票。后来微软公司研发出大量的基于卷积网络的视觉特征识别和手写体识别系统。二十世纪九十年代早期,卷积网络也曾被实验在自然图片中的目标检测上,包括人脸识别和手写体识别。

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

从2000年以来,卷积网络被应用在物体和区域的检测,分割和识别上,并取得了巨大成功。这些所有的任务都有相对丰富的有标签数据集,如交通标志的识别,生物图像特别是神经组的分割,以及自然图像中的人脸,文字,行人和人体的检测。卷积神经网络最近的一个重大的成功实践是人脸识别。

重要的是,图像在像素水平就可以打上标签,这样就可以应用在很多技术上,包括自动移动机器人,自动驾驶汽车等。诸如Mobileye和英伟达这样的公司就在他们即将发布的汽车视觉系统中使用了基于卷积神经网络方法。其他值得关注的应用涉及到了自然语言理解和语音识别。

尽管已经有了这些成功,卷积神经网络仍然被主流计算机视觉和机器学习团队所抛弃,直到2012年的ImageNet竞赛。当深度卷积网络被应用在包含1000个不同类别的大概有100万张图片的数据集上时,它们取得了惊人的成功,错误率低至原来最好结果的一半。这样的成功来源于GPU的有效利用,和ReLU函数的使用,以及一种叫做dropout的新的规则化技术的应用,还有通过扭曲现有图像来获得更多训练数据的技术。这个成功带来了一场计算机视觉领域的革命;几乎在所有检测和识别项目上卷积神经网络都是最具优势的方法,并在一些方面性能几乎接近人类。最近的一个很好的证明是结合了卷积神经网络与递归网络的,能够根据图像产生其文本标题(如图3)。

图3:从图像到文本

由一个递归神经网络(RNN)生成的字幕,从测试图像中利用深度卷积神经网络(CNN)提取出的表达作为额外的输入,使用RNN训练出的高级图像表达将其”翻译“成字幕(图中最上方)。图转载自参考文献102。当递归神经网络在产生每个单词(粗体)时,它具备了关注输入图像不同位置的能力(图中二三行;较亮的部分被给予了更多的关注),我们发现它使得将图片“翻译”成文字的技术有了极大的扩展。

最近的卷积神经网络架构有10到20层的ReLU层,百万个权重,数十亿的节点间连接。然而在2年前,训练这样一个网络需要数周,随着硬件,软件和算法的同时提升,现在这仅仅需要几个小时了。

基于卷积神经网络的视觉系统的性能已经引起了许多科技公司的关注,包括Google,Facebook,Microsoft,IBM,Yahoo!,Twitter和Adobe,还有越来越多的创业公司开始研究并致力于提供基于卷积神经网络的图像理解产品和服务。

卷积神经网络是很容易在芯片或可编程门阵列上实现的。许多公司例如NVIDIA,Mobileye,Intel,Qualcomm和Samsung正在开发卷积神经网络芯片使之能够在智能手机,相机,机器人和自动驾驶汽车上实现实时的视觉应用。

分布式表达与语言处理

深度学习理论表明深度网络有两个不同的指数优于不使用分布式表达的经典学习算法。这两个优点源于其组成,并且依赖于底层的数据生成的分布有一个适当的组成结构。首先,学习分布式表达能够超出训练时可见的特征,概括出已学习特征的新组合(例如,n个二值的特征就有种可能)。第二,深度网络中表达的构成层会带来潜在的另一种指数级的优势(指数级深度)。

图4:已学习单词向量可视化

左图是为语言建模所学习的单词表达的图解,使用t-SNE算法将其非线性映射到2维实现可视化。右图是由一个英语-法语编解码递归神经网络学习到的单词的2维表达。可以观察到语义上相似的单词会在图上表达在相近的区域。单词表达的分布是由BP算法对每个单词表达的共同学习和一个可以预测目标总量的函数得到的,例如一句话中的下一个单词(针对语言模型)或一整句话的译文(针对机器翻译)。

一个多层神经网络的隐藏层学习输入的特征重新表达,是为了使输出预测的结果更容易。通过训练一个根据局部文本中的前一部分去预测接下来的一个单词的多层神经网络,就可以证明这一点。内容中的每个单词代表网络中的一个N分之1的向量,也就是说,一个元素中有一个1,其他都是0。在第一层中,每个单词生成一个不同的激活模式,或是单词向量(如图4)。在一个语言模型中,为了预测下一个单词,网络的其它部分学习将输入单词向量转化为一个输出单词向量,这可以用来预测字典中任一词作为下一个出现的概率。网络学习了包含许多积极成分的单词向量,其中每一个成分都可以被看作单词的一个分离特征,正如学习符号的分布式表达时在文本中实现分布一样。这些语义特征没有在输入中被明确地表示出来。在学习过程中发现,将可以将输入输出符号之间的关系分解为多重的“微规则”。当单词来自于一个庞大的真实文本语义库并且独立微规则也不可靠时,学习单词向量的方法也有很好的效果。当利用训练好的网络去预测新闻中的下一个单词时,已学习到的单词向量有的很相似,例如星期二和星期三,瑞典和挪威。这种表达被称为分布式表达,因为他们的元素(特征)不相互独立,并且他们的很多配置与观察到数据的变化相一致。这些单词向量由学习好的特征组成,这些特征并不是事先由专家决定的,而是由神经网络自动发掘。从文本中学习单词向量的表达的方法在自然语言处理中已经被广泛使用了。

特征表示是逻辑启发范例和神经网络启发范例在认知问题上争论的核心。在逻辑启发范例中,一个符号的实例是与其他完全相同或完全不同的唯一属性。它没有与其使用相关的内部结构;并且,理解它的语义时,必须与推断选择规则的变量相关。正相反,神经网络使用巨大的活跃向量,巨大的权重矩阵以及阶梯非线性性来实现一种快速直观的、支撑简单常识的推断。

在介绍神经语言模型之前,标准的统计语言建模方法并没有扩展分布式表达:是基于对最高长度为N 的短符号序列进行出现频率统计的方法(N元文法)。可能的N-grams的数目接近V的N次方,其中V是词汇表的大小,所以考虑一段文本可能需要非常大的训练语料库。N-grams将每个单词看作一个原子单元,所以它不能使语义相关的单词序列一般化,而这是神经语言模型可以的,因为它利用有实值特征的向量组织起了每个单词,并且语义相关的单词在向量空间是邻近的(如图4)。

递归神经网络

当BP算法第一次被公布时,它最令人激动的应用就是训练递归神经网络(RNNs)。对于语音和语言这种连续输入的问题,递归神经网络的效果通常是比较好的。递归神经网络一次处理输入序列中的一个元素,并且将序列中之前元素的历史信息含蓄地保存在隐藏节点的状态向量中。当我们考虑不同的离散时间节点上隐藏节点的输出时,就像它们是深度多层网络中不同神经元的输出,我们就能清晰地知道BP算法是如何被用来训练递归神经网络的。

递归神经网络是非常强大的动态系统,但是它们的训练是存在问题的,因为反向传播的梯度在每个时间间隔中都或增或减,所以一段时间后可能就会激增或归零。

得益于它们先进的结构和训练方式,递归神经网络被发现在预测文本中下一个字符或序列中下一个单词上是很有效的,但是也可以被用来完成一些更复杂的任务。例如,在一字一句地阅读完一个英文句子后,一个被训练出的英文“编码器”网络的隐含层的最终状态向量就是句子意思的正确表达。这个设定向量可以作为共同训练出的法语“译码器”网络的隐含层的初始状态向量(或是网络的额外输入),它的输出是法语翻译的首单词的概率分布。如果一个特殊的首单词从分布中被选中并作为编码器网络的输入,它将能输出第二个单词的概率分布,如此直到最后。总的来说,这个过程是根据英语句子的概率分布来产生法语单词的序列。这种很简单的机器翻译方法很快成为了最先进方法的对手,这引起了人们对于理解一个句子是否需要使用推理规则来组织内部符号表达产生了很大的怀疑。这与日常推理会同时涉及到可以为形成结论提供合理性的类推这一观点是相互并列的。

与将一个法语句子翻译到英不同,我们也可以学习将一幅图像的意思“翻译”成一个英文句子。这里的编码器是一个深度卷积网络,在它最后的隐藏层将像素转换成了活动向量。而译码器是与用于机器翻译和神经语言模型类似的递归神经网络。最近,研究者们对这样的系统产生了巨大的兴趣(见参考文献96中提及的例子)。

递归神经网络在时域上展开,可以看作是一个所有层共享相同权重的深度前馈网络。尽管他们的主要目标是学习到长期的依赖,但是理论和实践经验都表明学习去长久地储存信息是很困难的。

为了解决这一问题,可以增大网络的存储量。这个方法最初的提议是一种采用了特殊隐藏单元的长短期记忆网络(LSTM),它自然的行为就是长时间地保存输入内容。一种叫作记忆细胞的特殊单元,类似累加器或门控神经元:在下一个时间节点时,它与自身以一个权重连接,所以它复制了自己的实值状态,并且累加了外部信号,但是这个自连接是被另一个学习决定何时清除记忆内容的单元以乘法门控制的。

长短期记忆网络后来被证明比传统的递归神经网络更有效,尤其是当每一个时间节点有若干层时,使整个语音识别系统能够完成从声音到字符序列的转录。长短期记忆网络或者其他门限单元也被用于编解码网络,在机器翻译中也表现得很出色。

图5:一个递归神经网络和其包括前向的计算过程在时域的展开

在前一个时间节拍上,人工神经元(例如在时刻,节点下有值的隐藏节点)从其他神经元获取输入(由图中左边黑方块代表,表示了一个时间节拍的延迟)。通过这样,递归神经网络就可以将输入序列元素映射到输出序列元素,每个都由前一个决定()。相同的参数(矩阵U,V,W)在任一时刻都会被利用。很多结构都可以这样,包括很多可以生成一个输出队列(如单词)的网络,这些输出都会作为下一层的输入。反向传播算法(图1)可以直接应用在右边的展开网络中,用于计算总误差关于所有的状态以及参数的导数(例如产生正确输出的对数概率)。

在过去,若干学者已经对于增大递归神经网络的记忆模块提出了不同的方法。包括神经图灵机,一个递归神经网络可选择读或写的类似“磁带”的存储模型,还有记忆网络,它可以通过联想记忆来增强常规的网络。记忆网络在标准的问答基准测试中表现良好。记忆是用来记住后来网络被要求回答的问题的事例的。

除了简单的记忆,神经图灵机和记忆网络还被用于进行推理或符号操作的任务。神经图灵机也可以被教授“算法”。在其它的事情中,当它们的输入由未排序的序列组成时,它们可以学习输出符号排序后的列表,并且输出的每个符号都会有一个表明优先值的实值。记忆网络可以被训练去追踪一个与文字冒险游戏相似的世界,并且在阅读一个故事后,它可以回答需要复杂推理才能得出结果的问题。在一个测试示例中,网络被给予一个15句版本的《指环王》,结果它正确回答了例如“Frodo在哪?”这样的问题。

深度学习展望

非监督学习对于恢复人们对于深度学习的兴趣有催化作用,但是纯粹的监督学习的成功已经失去了光彩。尽管在这篇综述中我们并没有太多关注无监督学习,但是从长期来看我们期望它变得更加重要。人类和动物学习是无监督的:我们通过观察去发现世界的结构,而不是被告知每个物体的名字。

人类视觉是通过使用一个极小的、高分辨率的视网膜中间凹以及其周围相对大的低分辨率的感官,以一种智能的,特定方式进行采集成像的活跃过程。我们期望未来能够训练出端到端的系统,并且联合卷积神经网络以及使用强化学习的 递归神经网络,从而实现能够决定去看哪里的系统。结合了深度学习和强化学习的系统还处于初级阶段,但是在分类任务以及学习操作很多不同的视频游戏上,它已经超越了之前的视觉系统。

在未来几年,自然语言理解方面的是深度学习的另一个大有可为的发展领域。我们希望使用递归神经网络的系统学会选择性地一次能够进入某一部分的策咯,从而使得它们理解句子或整个文档的效果变得更好。

最后,通过结合表示学习与复杂推理的系统会在人工智能领域取得重大的进展。尽管深度学习和简单的推理被用于语音和手写体识别已经很长一段时间了,但是用操作大型向量的方法去替代基于规则的符号表达方法需要新的范例。

《 Deep Learning 》全文翻译 Yann LeCun, Yoshua Bengio, Geoffrey Hinton相关推荐

  1. 论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio Geoffrey Hinton) 精典

    深度学习的奠基 作者:Yann LeCun,Yoshua Bengio & Geoffrey Hinton(三位大神) Geoffrey Hinton:谷歌副总裁 兼 工程研究员(多伦多大学的 ...

  2. 深度学习笔记之一—— 生翻 deeplearning(2015,Yann LeCun, Yoshua Bengio Geoffrey Hinton)

  3. Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hintonxi

    一.背景知识 1.传统方法: 构建一个模式识别或机器学习系统需要领域专家的帮助设计一个特征提取器 2.表示学习: 一系列允许机器接收原始数据并自动转换成监测或分类任务能处理的形式的方法 3.深度学习方 ...

  4. 论文笔记翻译——Nature 综述论文《deep learning》LeCun、Bengio和Hinton

    Yann LeCun , Yoshua Bengio和Geoffrey Hinton被作者誉为深度学习界三大天王,他们所发布在 Nature上的"Deep Learning"包含了 ...

  5. 深度学习-LeCun、Bengio和Hinton的联合综述-Deep Learning一篇nature综述论文

    深度学习-LeCun.Bengio和Hinton的联合综述 原文摘要:深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示.这些方法在许多方面都带来了显著的改善,包括最先进的语音 ...

  6. Deep Learning 中文翻译

    Deep Learning 中文翻译 在众多网友的帮助和校对下,草稿慢慢变成了初稿.尽管还有很多问题,但至少90%的内容是可读的,并且是准确的. 我们尽可能地保留了原书Deep Learning中的意 ...

  7. Deep Learning 教程翻译

    Deep Learning 教程翻译 非常激动地宣告,Stanford 教授 Andrew Ng 的 Deep Learning 教程,于今日,2013年4月8日,全部翻译成中文.这是中国屌丝军团,从 ...

  8. 深度学习-LeCun、Bengio和Hinton的联合综述(上)

     深度学习-LeCun.Bengio和Hinton的联合综述(上) width="22" height="16" src="http://hits ...

  9. 深度学习-LeCun、Bengio和Hinton的联合综述(下)

    [编者按]三大牛Yann LeCun.Yoshua Bengio和Geoffrey Hinton在深度学习领域的地位无人不知.为纪念人工智能提出60周年,最新的<Nature>杂志专门开辟 ...

  10. 论文笔记:Deep Learning [nature review by Lecun, Bengio, Hinton]

    如今,机器学习的技术在我们的生活中扮演着越来越重要的角色.从搜索引擎到推荐系统,从图像识别到语音识别.而这些应用都开始逐渐使用一类叫做深度学习(Deep Learning)的技术. 传统机器学习算法的 ...

最新文章

  1. 关于Apahce服务器安装中遇到的问题
  2. 泛娱乐迎来善变的95后Z世代 技术从拐杖变为核心引擎
  3. python 后台服务
  4. WPF之鼠标滑动切换图片
  5. 搭建LNMP基础框架
  6. 时间序列趋势分解 seasonal_decompose
  7. class ts 扩展方法_一个class文件到底包含了哪些东西?
  8. 工具的使用——windows操作系统的使用(二)
  9. Python学习笔记020——数据库基本操作
  10. linux x86软件改arm,x86程序移植到arm上
  11. 推特 我们目前不能注册此邮箱地址_安卓版推特App存在隐私漏洞,官方发信敦促用户更新...
  12. 百度统计热力图邀请码
  13. Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
  14. 高效沟通的5个原则,解决90%的沟通问题
  15. resultful接口开发
  16. Clion安装及相关环境(MinGW和OpenOCD)的配置及利用Clion点亮led灯
  17. CSS-Grid(网格)布局
  18. elementUI angular适合做H5吗
  19. tomcat脚本启动正常,服务无法启动,特定错误代码1
  20. Java 基础笔记代码 流

热门文章

  1. MongodB数据库安装教程
  2. linetv_linetv台湾版官方下载|line tv安卓版下载_v1.0.10_9ht安卓下载
  3. 解读2021年智源 AI 前沿报告:医疗领域最新进展
  4. 这款优秀的检验工具SolidWorks Inspection你用过吗?
  5. 微信群机器人管理系统源码+支持同登陆多号
  6. (更新至v0.108)termux下载、安装教程 版本v0.88
  7. .与localhost与 .\sqlexpress的区别
  8. 里恩药物警戒系统(RH-PV)介绍
  9. 如何用python计算行列式_Python入门教程: 计算范德蒙矩阵的行列式
  10. vue实现简单的日历