Deep learning「Yann LeCun, Yoshua Bengio & Geoffrey Hinton| 28 May 2015 Nature」

在这里插入图片描述

摘要

深度学习方法能够让由多个处理层组成的可计算的模型学习复杂数据的表征(representations of data),这些数据常常由多层的抽象组成。这些方法已经大幅度的提高了包括语音识别、物体识别、物体检测等许多领域的sota(state-of-the-art)效果,甚至在诸如药物识别和基因研究领域也展现出了极大的优势。深度学习方法能发掘大量数据中内在的结构。通过反向传播算法,深度学习方法会确定模型如何修改自身的内在参数,而模型中每层的参数会用于使用前一层的数据表征来计算当前层的数据表征。深度卷积网络在图像、视频、文本和音频上取得了重大突破,而当前(2015年)的网络在诸如文本这一类的连续性数据上展现出了良好的表现。


机器学习对现代社会中的很多方面都有推动的作用,无论是互联网上的搜索功能,社交网络中的内容筛选算法,还是电商平台的网页上的推荐系统。而当前,机器学习正在越来越多的出现在了消费者手中的产品里,比如相机和智能手机。机器学习系统被用来识别图片中的物体,将音频转为文字,将新闻信息、报文或者产品和用户的兴趣配对,选取搜索内容的相关结果等场景。逐渐的,这些应用开始采用一种(新的)类型的技术,这种技术就叫做深度学习。
由于其本身的粗糙结构,传统的机器学习技术处理自然数据的能力会受到限制。多年来,建立一个模式识别或者机器学习系统需要小心翼翼的建模和值得信赖的领域专家,通过建立一个特征提取器,将原数据(比如图像的像素值)转化为合适的内在表征或者特征向量。在这样的情况下,学习子模块(通常是一个分类器)才能够侦测或分类输入数据的模式。
表征学习(Representation learning)是一种能够允许模型输入原数据并且自动发掘所需的表征或特征,从而进行侦测或者分类的方法。深度学习方法则是具有多个表征层的表征学习方法,通过将多个简单但是非线性的模块组合起来得到。这些非线性的模块会将一层的表征数据(从原数据开始)转化为更高一层的,稍微更加抽象一点的表征数据。使用这样的组合,堆叠足够多的转换模块,即使是非常复杂的函数也能被学习。对于分类任务,高层的表征数据会放大那些对分类很重要的变量,而会缩小无关的变量。举个例子,对于一个图像,深度学习使用向量值的列表对其进行表示。此时第一层的表征会特意的表示某个方向或位置的边是否存在,第二层表征则会重在通过特定的边的排序图案并且无视边位置的微小不同,而第三层则会将图案按照图案和一些相关物体的一部分的关系将图案组成更大的组合,接下来的层则会将这些组合进行进一步的检测。深度学习的关键方面在于,这些特征层不是人类设计的,它们是基于数据,使用一个总体的学习流程来学到的。
深度学习方法在人工智能社区研究了很多年而没有重大成果的问题上取得了主要的突破。它非常适合用在发掘高维数据的内在结构上,因此它在包括科学、商业和政府管理等领域都非常实用。深度学习不仅在图像识别(1-4)领域和语音识别领域(5-7)都打破了记录,它还在潜在药物结构预测(8)、分析粒子加速器数据(9,10)、重构大脑回路(11)和预测非编码DNA基因表达的疾病突变(12、13)等领域都打败了其他的机器学习方法。当然,可能最让人惊讶的一点在于,深度学习在自然语言处理的多个任务中都取得了非常好的结果,比如自然语言理解、话题分类、情感分析、问题回答和语言翻译等。
我们认为深度学习将会在不远的将来取得更多的成功,因为它不需要太多的手工特征提取工作,因此它能够很容易的利用算力和数据的增长。当前为深度神经网络发明的新的学习算法和结构只会促进这一进程。

监督学习

无论深度还是浅度,其最常见的机器学习的形式都是监督学习。假设我们能建立一个系统,它能够识别图像中是否含有一个房子、一辆车子、一个人或者一个宠物。我们首先搜集一个巨大的图片数据集,里面包括了房子、车子、人和宠物的图片,并且每张图片都打上标签。在训练过程中,将图像输入模型,模型则会输出一个向量形式的分数,每一个分数对应一个类别。我们希望图片所属的类别对应的分数在所有的分数中最高,但不经过训练这显然不可能。此时我们计算一个客观的函数,这个函数用于衡量输出的分数和期望的分数之间的误差(或者距离)。模型则会修改其内在可修改的参数,从而使得误差的值减小。这些可调整的参数常常被叫做权重,取值范围是实数范围。它们就像机器上仪表盘上决定机器对应函数的把手一样可以被观测。在一个典型的深度学习系统中,可能有上百万的可调整参数,而为了训练这些参数,则会有上百万的打好标签的数据作为训练集。
为了正确的调整权重向量,算法会为每个权重计算一个梯度向量,这个梯度向量代表了当权重增加一个微小的量时误差会增加或者减小多少。然后权重向量会向梯度向量的反方向进行调整。
上文所说的这个误差函数综合了所有训练集的样本的情况。它能被看做权重值空间中的一个高纬度凹凸不平的平面,负的梯度指明了平面中最陡峭的下降到最小值的路线,在那里误差函数在平均上会达到最低。
在实践中,大多数人会使用名叫随机梯度下降(SGD)的算法。这个算法会将少量的数据放入模型并且计算输出和误差,在计算了这些数据的平均梯度后进行相应的权重调整。这个过程会基于训练数据进行不断的重复,直到误差函数的值停止减少。算法名字中有随机的原因在于,训练数据中的每一个小部分计算出的结果都是带有噪声的所有的样本梯度的估计。这个简单的过程能常常够找到一组优秀的权重,特别是和一些更加复杂的优化技术相比而言。训练后,系统的表现会在另外一个样本数据集中得到检验,这个数据集就叫做测试集。测试集用于测试模型的泛化能力,也就是对在训练期间没见过的数据输出优秀结果的能力。
当前许多用于实践的应用中,机器学习算法使用线性分类器对手工提取的特征进行分类。一个两类的线性分类器计算特征向量组成部分中的权重和。如果这个权重和比某一个阈值高,则输入被分类成某个特定的类别。
自从1960年代以来,我们已经知道了线性分类器只能将输入的空间转变为非常简单的区域,也就是由一个超空间区分的多个子空间。但是诸如图像和语音识别这一来的问题要求输入-输出函数对无关的变量不敏感,这些变量包括位置、目标、不同的物体绘画风格、说话时的音调等。而同时这类问题又需要对另外一些特定的微小的变量非常敏感(比如白狼和萨摩耶犬之间的区别)。在像素级别,两只有着不同姿势并且处在不同环境下的萨摩耶犬之间应该非常不同,而具有相同姿势和类似背景的一只白狼和一只萨摩耶犬之间应该非常相近。在线性分类器和其他的“浅”分类器中,算法在原像素上工作得到的结果大概率不能区分上面提到的萨摩耶犬和白狼,而会将它们分到一类中去。这也是为什么浅的分类器需要一个很好的特征提取器,这个特征提取器常常用来解决“非变量困境”(invariance dilemma),也就是用于计算对分类问题而言重要的表征或特征,而不重视那些无关的特征,比如说动物的姿势等。为了使得分类器更加强大,研究者可以使用普适性的非线性特征,比如用核方法提取的那些特征。但这些使用高斯核提取的特征不能使得学习者总结出和训练集差距太大的有效的特征。因此最常见的选择是,在可靠的建模技巧和领域专家知识的帮助下,手动设计一个优秀的特征提取器。但当优秀的特征能在使用原则性的学习流程下被自动学习时,上面提到的手动设计这一过程则可以被避免,这也是深度学习的核心优势所在。
一个深度学习模型是由多层的简单方法组成的,这些方法都需要学习,并且大多数的方法都计算输入和输出之间的非线性映射。每层中的模块对其输入进行转化,从而提升表征的可选择性和不变性。使用这些具有5到20层非线性层的系统能够对输入数据建立非常本质的函数,这一函数能够在对诸如萨摩耶犬和白狼的区别这类微小区别上保持敏感的同时,对大量的诸如背景、姿势、光照、周围物体等无关变量保持迟钝。

用于训练多层结构模型的反向传播算法

早期的模式识别研究中,研究者的目标就已经变成了使用可训练的多层神经网络去替换基于手工建模的特征提取算法。但是即使这种方法很简单,但是直到1980年代中期,这种解决方案都没有被广泛理解。研究表明,多层结构能被简单的随机梯度下降算法(SGD)训练。这是因为,对于输入数据和模块内在参数而言,这些深度学习中的模块都是相对光滑的函数,因此研究人员可以使用梯度下降算法计算梯度。这个想法在1970年代和1980年代先后被几个独立的研究小组证明是可以实现并且有效的。
用于计算多层模型中的参数对于损失函数的梯度的梯度下降算法从本质上讲就是导数的链式法则的实际应用。这一方法的核心观点是,一个模块的输入对于输出目标的导数能使用这个模块的输出(或者子模块的输入)的梯度进行反向传播计算得到。(Fig1)

Fig1:多层神经网络和反向传播
图a:一个多层神经网络(由连接起来的点展示在图中)能将输入空间扭曲,从而使得输入数据能够被线性的分类(图中红色和蓝色的线就是一个例子)。需要注意的是输入数据中一个正常的方格(在左侧展示)也同样被隐藏单元转化了(在中间的图中展示)。这是一个只有两个输入单元,两个隐藏单元和一个输出单元的网络的可视化。但是用于物体识别和自然语言处理的网络包含了数以万计的单元。经C.Olah许可复制(http://colah.github.io/).
图b:导数的链式法则告诉我们两个微小的影响(比如x的变化影响y,y的变化影响z)是如何组合起来的。对于x的微小变化 △ x \triangle x x,其对y的微小变换 △ y \triangle y y的影响为 ∂ y ∂ x \frac{\partial y}{\partial x} xy(这是偏导数的定义)。同样的, △ y \triangle y y也会对z产生一个微小变化量为 △ z \triangle z z。将一个方程代入另一个方程就得到了导数的链式法则,也就是描述 △ x \triangle x x如何通过 ∂ y ∂ x \frac{\partial y}{\partial x} xy ∂ z ∂ x \frac{\partial z}{\partial x} xz变成 △ z \triangle z z的过程。当x、y、z为向量时,这一法则同样适用(此时其导数都是雅各比矩阵)。
图c:图中的公式用于计算前向传播。这些方程通过了一个拥有两个隐藏层和一个输出层的神经网络,网络中的每一层都构成了一个模块,可以通过这个模块进行反向传播的梯度计算。在每一层,我们首先计算对于每个单元的汇总 z z z值(note:也就是图中的 z j = ∑ w i j x i z_j=\sum w_{ij}x_i zj=wijxi),也就是上一层的单元的权值和。然后我们对 z z z使用了一个非线性函数 f ( . ) f(.) f(.),从而计算出该单元的输出。为了简洁性,我们忽略了偏置。这里用到的非线性函数包括修改后的线性单元ReLU,也就是 f ( z ) = m a x ( 0 , z ) f(z)=max(0,z) f(z)=max(0,z),这一函数最近常常被使用。当然也有更多更加传统的函数,比如sigmoids函数、双曲线tangent函数、 f ( z ) = e z − e − z e z + e − z f(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}} f(z)=ez+ezezez f ( z ) = 1 1 + e − z f(z)=\frac{1}{1+e^{-z}} f(z)=1+ez1、逻辑函数等。
图d:图中的公式用于计算反向传播。在每个隐藏层我们计算每个单元对于输出的误差的导数,这个值其实就是下一层的输入的误差导数的权值和。接下来我们通过对其乘上一个 f ( z ) f(z) f(z)的梯度,将关于输出的误差导数转化为关于输入的误差导数。在输出层,关于输出的误差导数通过对开销函数(cost function)求导得来。当开销函数(注:我感觉这里的意思是误差函数)为 ( y l − t l ) 2 2 \frac{(y_l-t_l)^2}{2} 2(yltl)2,其中 t l t_l tl是目标值时,其导数就应该是图中所示的 y l − t l y_l-t_l yltl。一旦 ∂ E ∂ z k \frac{\partial E}{\partial z_k} zkE已知,则与前面层单元 j j j之间连接的权重 w j k w_{jk} wjk的误差导数就是 y j ∂ E ∂ z k \frac{y_j\partial E}{\partial z_k} zkyjE

反向传播公式能在所有的模块中重复的使用以进行梯度的传递,这个过程从模型的顶端开始(在这里模型输出其预测),一路向下走到模型输入层(在这里外部数据被放入模型)。一旦这些梯度被计算出来,它们就直接被用于计算每个模块的权重的梯度。
许多深度学习的应用使用前馈神经网络结构,这一结构能在一个确定大小的输入(比如一张图片)和确定大小的输出(比如每个分类的概率)之间建立映射。为了在层与层之间向前推进,每一层之间的单元都会计算上一层所给的所有单元输出的加权和,并且将这个值通过一个非线性的函数进行加工。当前,最受欢迎的非线性函数是ReLU函数 f ( z ) = m a x ( z , 0 ) f(z)=max(z,0) f(z)=max(z,0)。在过去的几十年内,神经网络使用了更加平滑的非线性函数,诸如 t a n ( z ) tan(z) tan(z)或者 1 1 + e − z \frac{1}{1+e^{-z}} 1+ez1,但是ReLU总是在具有很多层的网络中学习的更快,这使得在不进行非监督预训练的情况下监督训练一个深度神经网络变得可能。不在输出和输入层的单元被叫做隐藏单元,这些隐藏单元能被看做对输入数据进行非线性扭曲的工具,在这种情况下最后一层的分类才变得线性可分。
在1990年代末期,神经网络和反向传播算法被机器学习、计算机视觉和语音识别社区极大程度的遗忘和忽略了。当时的普遍观点认为,在使用很少的先验知识的情况下训练多层次的高效的特征提取器是不可能的。特别是,当时普遍认为,简单的梯度下降会被局部最小值困住,在此时无论如何配置参数都没法造成平均误差的减小。
但在实际中,局部最小值的问题很少难住大的神经网络。在不考虑初始状态的情况下,系统常常计算出具有非常相似质量的解。最近的理论和经验结果都强烈表明,总体而言局部最小值并不是一个严重的问题。相反,参数空间是由许多马鞍形状组成的,这些马鞍形状中具有梯度为0的点,并且空间的表面在大多维度中向上卷曲,而在另外的维度向下卷曲。分析结果表示,具有少数向下卷曲方向的马鞍点以很大的数量出现,但是它们中的大多数在误差函数中都具有非常相近的值。因此,算法会在哪个马鞍点上卡住并没有那么重要。
由加拿大高级研究所CIFAR召集起来的一群研究者使得学界在2006年左右(refs31-34)重拾了对前馈神经网络的兴趣。研究者们介绍了无监督的训练过程,这一过程能够产生多层的特征提取器,并且在训练过程中不需要打标的数据。训练每一层的特征检测器的目的是让其能够重构下一层的特征检测器(或者输入数据)的活动。在这一目标的指导下,通过“预训练”多层逐渐复杂的特征检测器,一个深度网络的参数能够被初始化到一个合理的状态。此时,一个输出层可以被放到网络的顶端,并且整个深度系统能够使用标准的反向传播算法进行参数微调(33-35)。这在手写数字识别和行人检测领域运行的非常好,特别是当具有标签的数据非常少的时候。
这种预训练方式的第一次主要应用是在语音识别中,这次应用由于GPU的出现而在编程方面变得可以实行,并且GPU的出现还让训练者能够以10到20倍的速度训练网络。在2009年,该方法用于将从声波中提取的系数的短时间窗口映射到可能由窗口中心的帧表示的各种语音片段的一组概率。通过使用少量的词汇表,算法在标准语音识别基准上达到了破纪录的结果,并且它以较快的速度发展,在更大的词汇表的任务中也很快取得了破纪录的结果。截止2012年,2009年以来的各种版本的深度网络被多个语音团队开发并且已经部署在了安卓手机上。对于较小的数据集,无监督预训练帮助我们避免过拟合,使得在打标样例很少或者说源数据很多但是目标数据很少的情况下,模型能具有更好的泛化能力。一旦深度学习被恢复,事实证明只有小数据集才会需要预训练阶段。(注:这句话翻译的比较奇怪,原文:Once deeplearning had been rehabilitated, it turned out that the pre-trainingstage was only needed for small data sets.)
不过有一种特殊类型的神经前馈网络,相比起其他具有多个全连接层的网络而言更加容易训练,并且具有更加优秀的泛化性能。这就是卷积神经网络(ConvNet)。当神经网络收到冷落之时,它收获了非常多的实战方面的成果,并且在当前的计算机视觉社群中它被广泛采用。

卷积神经网络

卷积神经网络被设计用于处理多数组的数据,比如一个有色图像是由三个颜色通道的三个2D的数组构成的,每个数组中的每个元素都是像素的像素值。许多数据的形态都是多个数组的形态:对于信号和序列,是一维的数据;对于图像和音频谱图,是二维的数据;对于视频和体积图像则是三维的。在卷积神经网络背后,有四个关键的认知,这四个认知很好的应用了自然信号的性质:本地的连接、共享的参数、池化、使用多个层(local connections, shared weights, pooling and the use of many layers)。
典型的卷积神经网络结构按照一系列阶段构建(Fig2)。一开始的几个阶段由两种类型的层组成:卷积层和池化层。卷积层中的单元被组织在特征图中,其中每一个单元通过名为“滤波器(filter bank)”的一组权值连接到前一层的一部分像素中。而这一层的结果的加权和会通过一个非线性函数,比如ReLU。所有的特征图中的单元共享一个滤波器,而同一层不同的特征图中的单元则使用不同的滤波器。使用这样的结构具有两个原因。首先,对于图像这种列表数据,图像中的数据具有高度的相关性,这些聚成组的数据组成了独特的图案,很容易被识别。第二,本地的图像数据和其他的信号和位置无关。换句话说,如果一个图案能够在一个图像的某一个位置出现,那么它就可能在图像的任何地方出现。因此才有了不同位置的单元共享相同的权重并且在数组的不同部分侦测相同的模式的想法。从数学的角度讲,这种通过特征图进行的滤波器操作是一种离散卷积操作,因此才有了卷积这个名字。
在这里插入图片描述

Fig2:卷积神经网络之内: 一个典型的卷积神经网络结果的每一层的输出(不是滤波器)被应用于一个萨摩耶犬的图片上(左下是原图片,右下一次是其RGB三个通道的图形。图中的每一个长方形图像都是一个特征图,每张特征图都代表着一个在图像的位置能学习到的特征。信息从下向上流动,低层次的特征扮演着边缘检测器的角色,而每一类图像的分数在输出和ReLU下被计算出来。)

卷积层的目的是为了检测前一层提取到的许多特征的组合,而池化层的目的则是将语义上类似的特征进行合并。因为组成图像的特征的相对位置能发生变化,因此可以通过标记每个特征及其位置来可靠的识别图案。一个典型的池化单元会计算一个特征图(或者是多个特征图)中一部分像素的最大值。临近的池化单元会将输入像素的范围移动一(多)行或一(多)列,因此这会减少表征数据的维度,并且为微小的变动和扭曲创造内在的不变性。在卷积层、非线性和池化层堆叠了两三个阶段后,更多的卷积层和全连接层被添加在了模型的后面。卷积神经网络的反向梯度传播算法和一般的深度神经网络一样简单,它允许所有的滤波器中的权重都得到训练。
深度神经网络发现了许多自然信号的等级特性,即高等级的特征常常可以通过低等级的特征组合得到。在图像中,各种边缘的组合构成了图像,图像构成了各种组成部分,而各种组成部分汇总成了物体。类似的等级特性还存在与音频和文本中。池化层允许当前一层的元素在位置和表现形式上发生改变时,表征数据只发生很小的变化。
卷积网络中卷积层和池化层的概念是被视觉神经科学中简单细胞和复杂细胞的概念启发而来的。其整体结构让人想起视觉皮层腹侧通路中的LGN–V1–V2–V4–IT层次结构。当卷积神经网络和猴子面前展示同一张图片,卷积神经网络中的高层次单元的活动能解释猴子颞叶皮层160个神经元随机集合的一半方差。卷积神经网络的根在神经认知科学,它的结构和神经甚至有很多相似性,除了神经没有诸如反向传播这种端到端的监督学习算法以外。一个早期的名为time-delay的一维卷积神经网络被用于识别音素和简单单词任务重。
回到1990年代早期,自从time-delay以来,有大量的卷积神经网络在语音识别、文献阅读方面的应用。其中的文献阅读系统将卷积神经网络和一个具有语言限制的概率模型一起训练。在1990年晚期,这个系统已经完成了美国超过10%的支票识别工作。在接下来,微软公司部属了很多基于卷积神经网络的光学字符识别和手写字符识别系统。1990年代早期,卷积神经网络还被应用在了自然图片中的物体识别任务中,包括手和脸的识别。卷积神经网络还被应用在了面部识别中。

使用卷积神经网络理解图片

自从2000年代早期,卷积神经网络就在检测、分割和识别物体的领域取得了成功。这些任务都是具有非常充足的打标数据的任务,比如交通信号的识别,特别是对于连接组学的生物图像的分割,脸部的识别等。最近卷积神经网络在实践上的主要突破则是人脸识别。
一个很重要的点是,图像能够在像素级别被打上标签,这在包括自动机器人和自动驾驶汽车等领域都有应用的可能。诸如Mobileye和NVIDIA这里的的公司就在将这种基于卷积神经网络的方法用在他们新的汽车系统上。其他的应用包括自然语言理解和音频识别等。
即使有这些成果,卷积神经网络还是被主流的计算机视觉和机器学习社区很大程度的忘记了,直到2012年的ImageNet比赛。当深度卷积神经网络被用于一个包含了1000类不同物品的上百万张图片时,模型展现出了惊人的效果,达到了之前最低误差的一半。这一巨大的成果来源于高效的GPU、ReLU函数、一种叫做dropout的新的规范化技巧,以及通过损毁当前样本来得到更多训练样本的技术。这次成功为计算机视觉领域带来了一次革命。当前,卷积神经网络已经成为了几乎所有识别和侦测任务的主流方案,并且在一些方案中效果逼近了人类的表现。最新的一个令人惊讶的工作是将卷积神经网络和递归网络模块结合,用于总结图片的内容(Fig3)。
在这里插入图片描述

Fig3.从图像到文本:
1.CNN网络从一张测试图片中提取数据表征,而RNN则用于将高等级的表征数据翻译成图片的内容摘要。经参考文献102许可复制。
2.当RNN在生成每个单词(粗体)时能够将注意力集中在输入图像中的不同位置(图中较亮的部分得到了更多的关注)时,我们发现它利用这一点可以更好地将图像“翻译”成图像的内容摘要。

当前的卷积神经网络结构拥有10到20层的ReLU函数,数以万计的权重,数以亿计的单元之间的连接。即使在两年前训练这样大的网络需要两周的事件,但是随着硬件的进步和软件算法的并行化,训练这种模型的时间已经缩短到了几个小时。
基于卷积神经网络的视觉系统已经使得包括谷歌、脸书、微软、IBM、雅虎、推特和Adobe等主要的科技企业和大量的初创企业开始发起研究并且构建项目,将基于卷积神经网络的图像理解产品和服务部属到业务中。
卷积神经网络很容易适用于芯片或现场可编程门阵列中的高效硬件实现。诸如NVIDIA、Mobileye、Intel、Qualcomm和三星等企业已经开始研究卷积神经网络芯片,从而支持智能手机、相机、机器人和自动驾驶汽车上的实时视觉应用。

分布式表示和语言处理

深度学习理论表示,相比起经典的不用分布式表示的学习算法,深度网络有两个指数型的优势。这些优势都来源于组合的力量,并且依赖于具有适当组件结构的底层数据生成分布(underlying data-generatingdistribution having an appropriate componential structure)。首先,学习分布式表示使得泛化到新的没见过的值的组合成为可能(例如, 2 n 2^n 2n个具有非二进制特征的组合是可能的)。其次,将网络中一层层表征进行组合带来了潜在的另一个指数型的优势(深度上的指数性质)。
多层神经网络的隐藏层学习如何用易于预测网络输出的方式表示网络的输入。通过训练一个多层神经网络来使用之前的文本序列预测下一个词,可以很好的证明这一点。每个文本中的单词都以一个 1 × N 1\times N 1×N的向量被放入网络中,向量中的值要么为1要么为0。在第一层,每个词语创造出不同的活动模式,或者说叫做词向量(Fig4)。在一个语言模型中,其他层的网络学习如何将输入的词向量转化为应该被预测的那个词语的词向量,这样就可以将模型用来预测词汇表中的任意一个词作为下一个词的概率了。该网络学习包含许多活跃成分的单词向量,每个活跃成分都可以被解释为单词的一个单独特征,正如在学习符号的分布式表示的文本中首次演示的那样。这些语义的特征并没有清晰的出现在输入中。它们是在学习过程中被发现的。这些特征是一个很好的方式,能够将输入数据和输出符号之间的关系用一种类似于“微规则”的方式总结出来。学习词向量在如下情况下仍然有效,即当词语序列从一个巨大的语料库中提取出来,并且一些特定的微规则不可靠时。举个例子,当被训练来预测一个新闻故事的下一个词语时,学习到的词向量中星期二和星期三都非常相似,瑞典和挪威也是这样。这种表示方式被叫做分布式表示,因为其元素(特征)并不是相互排斥的,并且它们的许多配置和可视数据中的许多变量相关。这些词向量由学习到的特征组成,它们并不是被专家决定的,而是由神经网络自己学习发现的。从文本中学习得到的词语的向量化表示在当前被广泛用于自然语言相关的应用中。
表征问题是逻辑启发和神经网络启发的认知范式之间争论的核心。逻辑启发认知范式中,,符号的一个实例是某种东西,其唯一性质是它与其他符号实例相同或不相同。它没有与其用途相关的内部结构。并且为了使用符号推理,它们必须被绑定到被明智选择的推理规则中的变量。与之相反,神经网络使用巨大的活动向量,巨大的权重矩阵和标量非线性函数来运行一种快速的“直觉”推理,这种推理为毫不费力的进行常识推理提供支撑。
在介绍神经语言模型前,标准的数值语言建模方法并不利用分布式表示。实际上它基于统计长度在N以内的短语的出现频率(这种方法也叫做N-gram)。因此在N-gram中可能的词语数量能达到 V N V^N VN,其中V是词汇表数量。因此为了计算一个较小的文本需要一个非常大的语料库。N-gram方法将每个词语看做一个不可分割的原子单元,因此它不能相关的短语和词汇之间进行语义上的泛化。而神经语言模型可以做到这点,因为它将每个词语通过一个真值化的特征向量联系起来,在语义上相似的词语会在向量空间中距离很近。(FIg4)
在这里插入图片描述

Fig4|训练得到的词向量的可视化: 左侧的图是对于语言建模模型的词汇可视化,为了展示方便实用了t-SNE算法对其非线性降维到了二维。右侧是使用循环神经网络训练的英语-法语翻译模型输出的词向量。可以发现,具有类似语义的词语或者短语被映射到了接近的位置。词汇的分布式表示通过反向传播算法学习,而此时模型实际上是在训练另外的词语表征任务,比如预测下一个词语或者翻译整段文本。

循环神经网络

当反向传播算法被发明后,其最令人激动的用途则是训练循环神经网络(RNN)。对于处理序列数据的任务,比如说语音或者语言,使用RNN常常是一个更好的选择。RNN会每次处理一个输入序列中的元素,并且保持其隐藏单元作为一个保存着历史元素信息的“状态向量”。当我们把不同时间节点的隐藏层输出看做一个深度神经网络中不同的神经元时,我们就明白对RNN应该如何使用梯度下降了(Fig5的右图)。
在这里插入图片描述

Fig5|一个循环神经网络和其在计算过程中前向传播的按时间展开: 这个人工神经元(举个例子,s中聚集的隐藏层,令其在时间t中具有值 s t s_t st)在上一时刻从其他的神经元中得到了输入(这在左边的图中用黑色的方形展示,代表着一步的时延)。通过这种方式,一个循环神经网络能将一个有着元素 x t x_t xt的输入序列映射到一个有着元素 o t o_t ot的输出序列,其中每一个 o t o_t ot基于前一个 x t ′ x_{t}^{'} xt。同样的参数矩阵 U   V   W U\ V\ W U V W在每一个时间点都被使用。许多其他的结构都是可能的,包括一种能够生成一个序列作为输出(比如词汇)的网络变体,其使用输出作为下一个时间节点的输入。反向传播算法(Fig1)能被直接用于右侧图中展开的网络的计算图中,计算关于所有状态 s i s_i si和所有参数总误差的导数(比如右侧输出序列的对数概率)。

RNN是非常强大的动态系统,但是训练它显得比较麻烦,因为反向传播的梯度会随着时间增长或者缩水,因此很多步以后这些梯度常常爆炸或者消失。
感谢在RNN的结构和训练方式上取得的突破,这使得RNN被发现非常擅长预测文本中的下一个字符或者预测序列中的下一个文本,但它也能够被用于更加复杂的任务。比如,在一词一词的阅读了一个英语句子后,一个英语编码器就能被训练出来,此时其隐藏层最后状态的向量则是一个很好的数据表征,能够表示句子所想表达的意思。这个思想向量能被用于另外一个法语解码器的初始隐藏层状态(或者额外的输入),而这个解码器能计算出第一个单词的法语翻译的词对应的概率分布。如果某个特定的首词被从这个分布中选出并且作为解码器网络的输入,这个解码器就能够输出下一个可能出现的词的概率分布,直到停止词汇被选中(full stop is chosen)。总的来说,这个过程使用基于英语句子的概率分布生成法语词汇序列。这种相当天真的机器翻译方法已经很快的变成了sota方法的竞争者,同时这也导致了一个问题,那就是是否理解一个句子一定需要一种基于推理规律的内在符号表达。一个更易接受的观点则是,每天的推理都包含了大量同时进行的推理,这些推理都有可能为最后的结论提供合理性。
和将法语句子翻译成英语句子不一样,模型能学习如何将一个图片的内容“翻译”成一个英语句子(Fig3)。这里的编码器是一个深度卷积网络,用于将像素转化成最后一层的活动向量。这里的解码器是类似于机器翻译中使用的那种RNN模型。当前业界对于这种系统的兴趣有着上升的趋势(参看ref86中的例子)。
当RNN被按照时间展开时,能够被看做是一个非常深的前馈神经网络,其中每一层共享相同的权重。即使其主要目的是学习长周期依赖性的数据,理论和实践都证明它很难学习非常长的故事信息。
为了纠正这个问题,一个想法是使用明确的记忆扩充网络。这种类型的第一个建议是使用特殊隐藏单元的长短期记忆(LSTM)网络,其自然行为是长时间记住输入信息。一个称为记忆细胞的特殊单元的作用就像一个累加器或一个门控漏神经元:它与自己有一个连接,其在下一个时间步长的权重为1,所以它复制自己的实值状态并累加外部信号,但这种自连接被另一个学习决定何时清除内存内容的单元多重门控。
LSTM 网络随后被证明比传统的 RNN 更有效,尤其是当它们在每个时间步都有几层时。基于LSTM可以实现整个语音识别系统,该系统将声音转录为字符序列。LSTM 网络或相关形式的门控单元也用于在机器翻译中表现良好的编码器和解码器网络。
在过去的一年中,一些作者提出了不同的建议来增强带有内存模块的 RNN。建议包括神经图灵机,其中 RNN 可以选择从或写入到一种“锥形”内存从而增强网络。除此以外还有记忆网络,由常规网络通过多种联想记忆而增强。记忆网络在标准问答基准测试中表现出色。在这种测试中模型被要求记住故事,在此之后模型需要回答故事的相关问题。
除了简单的记忆,神经图灵机和记忆网络正被用于通常需要推理和符号操作的任务。神经图灵机可以被教授“算法”。换句话说,当它们的输入由一个未排序的序列组成时,它们可以学习输出一个排序的符号列表,其中每个符号都伴随着一个实数值,表示它在列表中的优先级。可以训练记忆网络以在类似于文本冒险游戏和阅读故事的设置中跟踪世界的状态,他们可以回答需要复杂推理的问题。在一个测试示例中,输入指环王的15 句版本,网络能正确回答诸如“Frodo 现在在哪里?”之类的问题。

深度学习的未来

无监督学习促进了业界对于深度学习的兴趣,但其始终被纯监督学习的成功所掩盖。尽管我们在这篇评论中没有关注它,但我们预计无监督学习在未来会变得更加重要。人类和动物学习在很大程度上是无监督的:我们通过观察世界的结构,而不是被告知每个对象的名称来发现世界的结构。
人类视觉是一个主动的过程,它使用一个小的、高分辨率的中央凹和一个大的、低分辨率的环绕,以一种智能的、特定任务的方式依次对光学阵列进行采样。我们预计未来在愿景方面的大部分进展将来自端到端训练的系统,并将ConvNets与RNN相结合,使用强化学习来决定去哪里看。将深度学习和强化学习相结合的系统还处于起步阶段,但它们在分类任务上已经优于被动视觉系统,并在学习玩许多不同的视频游戏方面产生了令人印象深刻的结果。
自然语言理解是深度学习在未来几年将产生巨大影响的另一个领域。我们期望使用RNN来理解句子或整个文档的系统在学习一次选择性地处理一个部分的策略时会变得更好。
最终,人工智能的重大进展将通过将表示学习与复杂推理相结合的系统来实现。尽管深度学习和简单推理已被用于语音和手写识别很长一段时间,但仍需要新的范式来取代基于规则的符号表达操作,即对大向量的操作。

Received 25 February; accepted 1 May 2015.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值