深度学习

 

1 前言

机器学习技术推动了现代社会的许多方面:从网络搜索到社交网络上的内容过滤,再到电子商务网站上的推荐,它越来越多地出现在诸如相机和智能手机等消费品中。机器学习系统用于识别图像中的对象,将语音转换成文本,根据用户的兴趣匹配新闻条目、帖子或产品,并选择相关的搜索结果。这些应用程序越来越多地使用一种称为深度学习的技术。

传统的机器学习技术在处理原始形式的自然数据方面受到限制。几十年来,构造一个模式识别或机器学习系统需要仔细的工程设计和相当多的领域专业知识来设计一个特征提取器,将原始数据(如图像的像素值)转换成合适的内部表示或特征向量。学习子系统,通常是分类器,可以从中检测或分类输入中的模式。

表示学习是一组方法,允许机器输入原始数据,并自动发现检测或分类所需的表示。深度学习方法是具有多个表示层次的表示学习方法,通过组成简单但非线性的模块来获得,每个模块将一个层次上的表示(从原始输入开始)转换为一个更高、更抽象的层次上的表示。有了足够多这样的转换组合,就可以学习非常复杂的函数。对于分类任务,较高的表示层会放大输入的某些方面,这些方面对于区分和抑制不相关的变化非常重要。例如,图像以像素值数组的形式出现,第一层表示中的学习特征通常表示图像中特定方向和位置的边的存在或不存在。第二层通常通过定位边缘的特定排列来检测图案,而不考虑边缘位置的微小变化。第三层可以将图案组合成更大的组合,对应于熟悉对象的部分,随后的层将检测这些部分的组合对象。深度学习的关键是,这些特征层不是由人类工程师设计的:它们是使用通用学习过程从数据中学习的。

深度学习在解决多年来一直抵制人工智能社区最佳尝试的问题方面取得了重大进展。事实证明,它非常善于发现高维数据中复杂的结构,因此适用于科学、商业和政府的许多领域。除了在图像识别和语音识别中打破记录外,它还在预测潜在药物分子活动、分析粒子加速器数据、重建脑回路和预测非编码 DNA 突变对基因表达和疾病的影响方面击败了其他机器学习技术。也许更令人惊讶的是,深度学习为自然语言理解的各种任务,特别是专题分类、情感分析、答题和语言翻译产生了极具希望的结果。

我们认为,深度学习在不久的将来将有更多的成功,因为它需要的工程很少,因此它可以很容易地利用现有计算和数据数量的增加。目前正在为深层神经网络开发的新的学习算法和架构只会加速这一进展。

2 监督学习

机器学习最常见的形式,无论是否深度,都是监督学习。想象一下,我们想要建立一个系统,可以将图像分类,例如,包含一所房子、一辆汽车、一个人或一只宠物。我们首先收集了大量的数据,包括房屋、汽车、人和宠物的图像,每一个图像都标有其类别。在训练过程中,机器被给予一个图像,并以得分向量的形式生成输出,每个类别一个。们希望理想的类别在所有类别中得分最高,但在训练前不可能做到这一点。我们设计一个目标函数来测量输出分数和期望分数之间的误差(或偏差)。然后,机器修改其内部可调参数,以减少此误差。这些可调参数(通常称为权重)是实数,可以看作是定义机器输入-输出功能的“旋钮”。在一个典型的深度学习系统中,可能有数以亿计的可调重量和数以亿计的标记示例来训练机器。为了适当调整权值向量,学习算法计算了一个梯度向量,对于每个权值,该梯度向量指示如果权值增加少量,误差会增加或减少多少。然后按与梯度向量相反的方向调整权重向量。

目标函数在所有训练实例中取平均值,可以看作是高维权重空间中的一个山丘。负梯度向量指示该地形中最陡的下降方向,使目标函数更接近最小值,在这里的输出误差低于平均值。在实践中,大多数实践者使用一种称为随机梯度下降(sgd)的方法。这包括 x 给予几个样本的输入向量,计算输出和误差,计算这些样本的平均梯度,并相应地调整权重。这个过程对训练集中的许多小例子重复,直到目标函数的平均值停止下降。它之所以被称为随机,是因为每个小样本集都给出了所有样本平均梯度的噪声估计。在训练之后,系统的性能是通过另一组称为测试集的样本来测量的。这是为了测试机器的泛化能力,它能够在训练中从未见过的新输入上生成合理的答案。

目前机器学习的许多实际应用都是在手工设计的特征之上使用线性分类器。一个二级线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则将输入分类为特定类别。自 20 世纪 60 年代以来,我们知道线性分类器仅仅通过一个超平面将输入空间分成几个简单的区域。它们需要的输入-输出函数要对输入样本中不相关因素的变化不要过于的敏感,如位置的变化,目标的方向或光照,或者语音中音调或语调的变化等,但是需要对于一些特定的微小变化非常敏感(例如,一只白色的狼和跟狼类似的白色狗——萨莫耶德犬之间的差异)。在像素这一级别上,两条萨莫耶德犬在不同的姿势和在不同的环境下的图像可以说差异是非常大的,然而,一只萨摩耶德犬和一只狼在相同的位置并在相似背景下的两个图像可能就非常类似。

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

  • 一个多层神经网络(由连接的点表示)可以扭曲输入空间,使数据类(例如在红蓝线上)线性分离。请注意,输入空间中的规则网格(如左图所示)是如何被隐藏单元转换的(如中间图片所示)。这是一个只有两个输入单元、两个隐藏单元和一个输出单元的示例,但是用于图像识别或自然语言处理的网络包含几万或几十万个单元
  • 导数的链式法则告诉我们如何组成两个小效应(x 对 y 的小变化和 y 对 z 的小变化)。通过乘以 ∂y/∂x(即偏导数的定义),x 中的微小变化 Δx 首先转化为 y 中的微小变化 Δy。类似地,变化 Δy 在 z 中产生变化 Δz。将一个方程代入另一个方程给出了导数的链式规则-如何通过乘以 ∂y/∂x 和 ∂z/∂x 的乘积将 Δx 转化为 z。当 x,y 和 z 是向量(导数是雅可比矩阵)时,它也可以工作。
  • 用于计算神经网络中正向通过的方程,其中有两个隐藏层和一个输出层,每个输出层构成一个模块,通过该模块可以反向传播梯度。在每一层,我们首先计算每个单元的总输入 z,这是低一层单元输出的加权和。然后将非线性函数 f(.) 应用于 z,得到单元的输出。为了简单起见,我们省略了偏置项。神经网络中使用的非线性函数包括近年来常用的整流线性单元(ReLU)$f(z) = max(0, z)$ ,以及更为常规的 $sigmoid$ ,还有混合切线 $f(z) = (e^z − e^{−z})/(e^z + e^{−z})$ , logistic 函数 $f(z) = 1/(1 + exp(−z))$。
  • 计算反向传播的公式。 在隐层,我们计算每个输出单元产生的误差,这是由上一层产生的误差的加权和。然后我们将输出层的误差通过乘以梯度 f(z)转换到输入层。在输出层上,每个节点的误差会用成本函数的微分来计算。如果节点 l 的成本函数是 $0.5*(y_l-t_l)^2$ ,那么节点的误差就是 $y_l- t_l$,其中 $t_l$ 是期望值。一旦知道了 $\dfrac{∂E}{∂z_k}$ 的值,节点 j 的权向量 $w_{jk}$ 就可以通过 $y_j \dfrac{∂E}{∂z_k}$ 来进行调整。

一个线性分类器或者其他操作在原始像素上的浅层分类器不能够区分后两者,虽然能够将前者归为同一类。这就是为什么浅分类要求有良好的特征提取器用于解决选择性不变性困境——提取器会挑选出图像中能够区分目标的那些重要因素,但是这些因素对于分辨动物的位置就无能为力了。为了加强分类能力,可以使用泛化的非线性特性,如核方法,但这些泛化特征,比如通过高斯核得到的,并不能够使得学习器从学习样本中产生较好的泛化效果。传统的方法是手工设计良好的特征提取器,这需要大量的工程技术和专业领域知识。但是如果通过使用通用学习过程而得到良好的特征,那么这些都是可以避免的了。这就是深度学习的关键优势。

深度学习的体系结构是简单模块的多层堆叠,所有(或大部分)模块的目标是学习,其中许多模块用来计算非线性输入输出的映射。栈中的每个模块将其输入进行转换,以增加表达的可选择性和不变性。比如说,具有一个 5 到 20 层的非线性多层系统能够实现非常复杂的功能,比如对输入数据的细节非常敏感——能够区分白狼和萨莫耶德犬,同时又具有强大的抗干扰能力,比如可以忽略掉不同的背景、姿势、光照和周围的物体等。

3 反向传播来训练多层神经网络

在最早期的模式识别任务中,研究者的目标一直是使用可以训练的多层网络来替代经过人工选择的特征,虽然使用多层神经网络很简单,但是得出来的解很难理解。直到 20 世纪 80 年代,使用简单的随机梯度下降来训练多层神经网络,这种糟糕的情况才有所改变。只要网络的输入和内部权值之间的函数相对平滑,使用梯度下降就凑效,梯度下降方法是在 70 年代到 80 年代期间由不同的研究团队独立发明的。

用来求解目标函数关于多层神经网络权值梯度的反向传播算法(BP)只是一个用来求导的链式法则的具体应用而已。 反向传播算法的核心思想是:目标函数对于某层输入的导数(或者梯度)可以通过输出导数的反向传播求得(如图 1)。反向传播算法可以被重复的用于将梯度传过多层神经网络的每一层:从该多层神经网络的最顶层的输出(也就是网络产生预测的那一层)一直到该多层神经网络的最底层(也就是给予外部输入的那一层),一旦这些导数求解完,我们就可以求解每一层上面的(目标函数对)权值的梯度了。

很多深度学习的应用都是使用前馈式神经网络(如图 1),该神经网络学习一个从固定大小输入(比如输入是一张图)到固定大小输出(例如,到不同类别的概率)的映射。从第一层到下一层,计算前一层神经元输入数据的权值的和,然后把这个和传给一个非线性激活函数。当前最流行的非线性激活函数是 rectified linear unit(ReLU),函数形式:f(z)=max(z,0)。过去的几十年中,神经网络使用一些更加平滑的非线性函数,比如 tanh(z)和 1/(1+exp(-z)),但是 ReLU 通常会让一个多层神经网络学习的更快,也可以让一个深度网络不需要非监督的预训练,达到之前那种有 pre-train 的效果。通常情况下,输入层和输出层以外的神经单元被称为隐藏单元。隐藏层的作用可以看成是使用一个非线性的方式打乱输入数据,来让输入数据对应的类别在最后一层变得线性可分。

在 20 世纪 90 年代晚期,神经网络和反向传播算法被大多数机器学习团队抛弃,同时也不受计算机视觉和语音识别团队的重视。人们普遍认为,使用较少先验知识学到有用的、多级层次结构的特征提取器不靠谱。确切的说是因为简单的梯度下降会让整个优化陷入到不好的局部最小解

实践中,如果在大的网络中,不管使用什么样的初始化条件,局部最小解并不算什么大问题,系统总是得到效果差不多的解。最近的理论和实验表明,局部最小解还真不是啥大问题。相反,解空间中充满了大量的鞍点(梯度为 0 的点),同时鞍点周围大部分曲面都是往上的。所以这些算法就算是陷入了这些局部最小值,关系也不太大。

2006 年前后,CIFAR(加拿大高级研究院)把一些研究者聚集在一起,人们对深度前馈式神经网络重新燃起了兴趣。研究者们提出了一种非监督的学习方法,这种方法可以创建一些网络层来检测特征而不使用带标签的数据,学习每一层特征探测器的目的是能够重建或构建上一层特征探测器的活动(行为)。通过预训练更加复杂的若干层,网络的权重可以被初始化为合适的值。然后一个输出层被添加到该网络的顶部,并且使用标准的反向传播算法进行微调。这个工作对手写体数字的识别以及行人预测任务产生了显著的效果,尤其是带标签的数据非常少的时候。

使用这种与训练方法做出来的第一个比较大的应用是关于语音识别的,并且是在 GPU 上做的,这样做是因为写代码很方便,并且在训练的时候可以得到 10 倍或者 20 倍的加速。2009 年,这种方法被用来映射短时间的系数窗口,该系统窗口是提取自声波并被转换成一组概率数字。它在一组使用很少词汇的标准的语音识别基准测试程序上达到了惊人的效果,然后又迅速被发展到另外一个更大的数据集上,同时也取得惊人的效果。从 2009 年到到 2012 年底,较大的语音团队开发了这种深度网络的多个版本并且已经被用到了安卓手机上。对于小的数据集来说,无监督的预训练可以防止过拟合,同时可以带来更好的泛化性能,当有标签的样本很小的时候。一旦深度学习获得恢复,这种预训练只有在数据集合较少的时候才需要。

然后,还有一种深度前馈式神经网络,这种网络更易于训练并且比那种全连接的神经网络的泛化性能更好。这就是卷积神经网络(CNN)。当人们对神经网络不感兴趣的时候,卷积神经网络在实践中却取得了很多成功,如今它被计算机视觉团队广泛使用。

4 卷积神经网络

卷积神经网络被设计用来处理多维数组数据,比如一个有 3 个包含了像素值 2-D 图像组合成的一个具有 3 个颜色通道的彩色图像。很多数据形态都是这种多维数组的:1D 用来表示信号和序列包括语言,2D 用来表示图像或者声音,3D 用来表示视频或者有声音的图像。卷积网络利用 4 个关键点来利用自然信号的属性:局部连接,权值共享,池化和多层结构。

一个典型的卷积神经网络结构(如图 2)是由一系列的过程组成的。最初的几个阶段是由卷积层和池化层组成,卷积层的单元被组织在特征图中,在特征图中,每一个单元通过一组叫做滤波器的权值连接到上一层的特征图的一个局部块,然后这个局部加权和被传给一个非线性函数,比如 ReLU。在一个特征图中的全部单元享用相同的过滤器,不同层的特征图使用不同的过滤器。使用这种结构处于两方面的原因。首先,在数组数据中,比如图像数据,一个值的附近的值经常是高度相关的,可以形成比较容易被探测到的有区分性的局部特征。其次,不同位置局部统计特征不太相关的,也就是说,在一个地方出现的某个特征,也可能出现在别的地方,所以不同位置的单元可以共享权值以及可以探测相同的样本(因此可以实现权值共享并且检测到相同模式在矩阵的不同部分)。在数学上,这种由一个特征图执行的过滤操作是一个离散的卷积,卷积神经网络也是这么得名来的。

卷积层的作用是探测上一层特征的局部连接,然而池化层的作用是在语义上合并特征相似的地方,这是因为形成一个主题的特征的相对位置不太一样。一般地,池化单元计算特征图中的一个局部块的最大值,邻近的池化单元按照一行或一列或者更多的移动方式从局部块中获取数据,从而减少了维数,增加了移动或扭曲的不变性。两三个这种的卷积、非线性变换以及池化被串起来,后面再加上一个更多卷积和全连接层。在卷积神经网络上进行反向传播算法和在一般的深度网络上是一样的,可以让所有的在过滤器中的权值得到训练。

深度神经网络利用的很多自然信号是层级组成的属性,在这种属性中高级的特征是通过对低级特征的组合来实现的。在图像中,局部边缘的组合形成基本图案,这些图案形成物体的局部,然后再形成物体。这种层级结构也存在于语音数据以及文本数据中,如电话中的声音,因素,音节,文档中的单词和句子。当输入数据在前一层中的位置有变化的时候,池化操作让这些特征表示对这些变化具有鲁棒性。

卷积神经网络中的卷积和池化层灵感直接来源于视觉神经科学中的简单细胞和复杂细胞。这种细胞的是以 LNG-V1-V2-V4-IT 这种层级结构形成视觉回路的。当给一个卷积神经网络和猴子一副相同的图片的时候,卷积神经网络展示了猴子下颞叶皮质中随机 160 个神经元的变化。卷积神经网络有神经认知的根源,他们的架构有点相似,但是在神经认知中是没有类似反向传播算法这种端到端的监督学习算法的。一个比较原始的 1D 卷积神经网络被称为时延神经网络,可以被用来识别语音以及简单的单词。

20 世纪 90 年代以来,基于卷积神经网络出现了大量的应用。最开始是用时延神经网络来做语音识别以及文档阅读。这个文档阅读系统使用一个被训练好的卷积神经网络和一个概率模型,这个概率模型实现了语言方面的一些约束。20 世纪 90 年代末,这个系统被用来美国超过 10%的支票阅读上。后来,微软开发了基于卷积神经网络的字符识别系统以及手写体识别系统。20 世纪 90 年代早期,卷积神经网络也被用来自然图形中的物体识别,比如脸、手以及人脸识别(face recognition )。

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

21 世纪开始,卷积神经网络就被成功的大量用于检测、分割、物体识别以及图像的各个领域。这些应用都是使用了大量的有标签的数据,比如交通信号识别,生物信息分割,面部探测,文本、行人以及自然图形中的人的身体部分的探测。近年来,卷积神经网络的一个重大成功应用是人脸识别。

值得一提的是,图像可以在像素级别进行打标签,这样就可以应用在比如自动电话接听机器人、自动驾驶汽车等技术中。像 Mobileye 以及 NVIDIA 公司正在把基于卷积神经网络的方法用于汽车中的视觉系统中。其它的应用涉及到自然语言的理解以及语音识别中。

尽管卷积神经网络应用的很成功,但是它被计算机视觉以及机器学习团队开始重视是在 2012 年的 ImageNet 竞赛。在该竞赛中,深度卷积神经网络被用在上百万张网络图片数据集,这个数据集包含了 1000 个不同的类。该结果达到了前所未有的好,几乎比当时最好的方法降低了一半的错误率。这个成功来自有效地利用了 GPU、ReLU、一个新的被称为 dropout 的正则技术,以及通过分解现有样本产生更多训练样本的技术。这个成功给计算机视觉带来一个革命。如今,卷积神经网络用于几乎全部的识别和探测任务中。最近一个更好的成果是,利用卷积神经网络结合回馈神经网络用来产生图像标题。

如图 3 从图像到文本

如今的卷积神经网络架构有 10-20 层采用 ReLU 激活函数、上百万个权值以及几十亿个连接。然而训练如此大的网络两年前就只需要几周了,现在硬件、软件以及算法并行的进步,又把训练时间压缩到了几小时。

基于卷积神经网络的视觉系统的性能已经引起了大型技术公司的注意,比如 Google、Facebook、Microsoft、IBM,yahoo!、Twitter 和 Adobe 等,一些快速增长的创业公司也同样如是。

卷积神经网络很容易在芯片或者现场可编程门阵列(FPGA)中高效实现,许多公司比如 NVIDIA、Mobileye、Intel、Qualcomm 以及 Samsung,正在开发卷积神经网络芯片,以使智能机、相机、机器人以及自动驾驶汽车中的实时视觉系统成为可能。

6 分布式特征表示与语言处理

与不使用分布式特征表示(distributed representations )的经典学习算法相比,深度学习理论表明深度网络具有两个不同的巨大的优势。这些优势来源于网络中各节点的权值,并取决于具有合理结构的底层生成数据的分布。首先,学习分布式特征表示能够泛化适应新学习到的特征值的组合(比如,n 元特征就有 $2^n$ 种可能的组合)。其次,深度网络中组合表示层带来了另一个指数级的优势潜能(指数级的深度)。

多层神经网络中的隐层利用网络中输入的数据进行特征学习,使之更加容易预测目标输出。下面是一个很好的示范例子,比如将本地文本的内容作为输入,训练多层神经网络来预测句子中下一个单词。内容中的每个单词表示为网络中的 N 分之一的向量,也就是说,每个组成部分中有一个值为 1 其余的全为 0。在第一层中,每个单词创建不同的激活状态,或单词向量(如图 4)。

左侧是学习单词的模型化语言表示的一个例证,使用 t-SNE 算法非线性投射到 2D 空间;右侧是通过 English-to-French encoder–decoder 递归神将网络学习的短语的 2D 表示。我们观察到语义相近的词或序列中的单词被映射到附近的表征。分布式表示的单词通过使用反向传播学习每个词的表示和预测目标数量的函数,如序列中下一个单词(用于语言模型)或整个序列(用于机器翻译)

在语言模型中,网络中其余层学习并转化输入的单词向量为输出单词向量来预测句子中下一个单词,可以通过预测词汇表中的单词作为文本句子中下一个单词出现的概率。网络学习包含许多激活单元(active components 活动组件)的词向量,每个组件都可以解释为词的单独特征,这在学习符号的分布式表示的上下文中首先得到了证明。这些语义特征在输入中并没有明确的表征。而是在利用“微规则”(‘micro-rules’,本文中直译为:微规则)学习过程中被发掘,并作为一个分解输入与输出符号之间关系结构的好的方式。当句子是来自大量的真实文本并且个别的微规则不可靠的情况下,学习单词向量也一样能表现得很好。利用训练好的模型预测新的事例时,一些概念比较相似的词容易混淆,比如星期二(Tuesday)和星期三(Wednesday),瑞典(Sweden)和挪威(Norway)。这样的表示方式被称为分布式特征表示,因为他们的元素之间并不互相排斥,并且他们的构造信息与观测到的数据的变化一致。这些单词向量是通过学习得到的特征构造的,这些特征不是由专家决定的,而是由神经网络自动发掘的。从文本中学习得单词向量表示现在广泛应用于自然语言中。

特征表示问题的争论中心在于逻辑启发和神经网络启发对于范例识别的差异。在逻辑启发的范式中,一个符号实体表示某一事物,因为其唯一的属性与其他符号实体相同或者不同。该符号实例没有内部结构,并且结构与使用是相关的,至于理解符号的语义,就必须与变化的推理规则合理对应。相反地,神经网络利用了大量活动载体、权值矩阵和标量非线性化,来实现能够支撑简单容易的、具有常识推理的快速“直觉”功能。

在介绍神经语言模型前,简述下标准方法,其是基于统计的语言模型,该模型没有使用分布式特征表示。而是基于统计简短符号序列出现的频率增长到 N(N-grams,N 元文法)。可能的 N-grams 的数字接近于$V^N$,其中 V 是词汇表的大小,考虑到文本内容包含成千上万个单词,所以需要一个非常大的语料库。N-grams 将每个单词看成一个原子单元,因此不能在语义相关的单词序列中一概而论,然而神经网络语言模型可以,是因为他们关联每个词与真是特征值的向量,并且在向量空间中语义相关的词彼此靠近(图 4)。

7 递归神经网络

首次引入反向传播算法时,最令人兴奋的便是使用递归神经网络(recurrent neural networks,下文简称 RNNs)训练。对于涉及到序列输入的任务,比如语音和语言,利用 RNNs 能获得更好的效果。RNNs 一次处理一个输入序列元素,同时维护网络中隐式单元中隐式的包含过去时刻序列元素的历史信息的“状态向量”。如果是深度多层网络不同神经元的输出,我们就会考虑这种在不同离散时间步长的隐式单元的输出,这将会使我们更加清晰怎么利用反向传播来训练 RNNs(如图 5,右)。

RNNs 是非常强大的动态系统,但是训练它们被证实存在问题的,因为反向传播的梯度在每个时间间隔内是增长或下降的,所以经过一段时间后将导致结果的激增或者降为零。

由于先进的架构和训练方式,RNNs 被发现可以很好的预测文本中下一个字符或者句子中下一个单词,并且可以应用于更加复杂的任务。例如在某时刻阅读英语句子中的单词后,将会训练一个英语的“编码器”网络,使得隐式单元的最终状态向量能够很好地表征句子所要表达的意思或思想。这种“思想向量”(thought vector)可以作为联合训练一个法语“编码器”网络的初始化隐式状态(或者额外的输入),其输出为法语翻译首单词的概率分布。如果从分布中选择一个特殊的首单词作为编码网络的输入,将会输出翻译的句子中第二个单词的概率分布,并直到停止选择为止。总体而言,这一过程是根据英语句子的概率分布而产生的法语词汇序列。这种简单的机器翻译方法的表现甚至可以和最先进的(state-of-the-art)的方法相媲美,同时也引起了人们对于理解句子是否需要像使用推理规则操作内部符号表示质疑。这与日常推理中同时涉及到根据合理结论类推的观点是匹配的。

类比于将法语句子的意思翻译成英语句子,同样可以学习将图片内容“翻译”为英语句子(如图 3)。这种编码器是可以在最后的隐层将像素转换为活动向量的深度卷积网络(ConvNet)。解码器与 RNNs 用于机器翻译和神经网络语言模型的类似。近来,已经掀起了一股深度学习的巨大兴趣热潮(参见文献[86]提到的例子)。

RNNs 一旦展开(如图 5),可以将之视为一个所有层共享同样权值的深度前馈神经网络。虽然它们的目的是学习长期的依赖性,但理论的和经验的证据表明很难学习并长期保存信息。

为了解决这个问题,一个增大网络存储的想法随之产生。采用了特殊隐式单元的 LSTM(long short-termmemory networks)被首先提出,其自然行为便是长期的保存输入。一种称作记忆细胞的特殊单元类似累加器和门控神经元:它在下一个时间步长将拥有一个权值并联接到自身,拷贝自身状态的真实值和累积的外部信号,但这种自联接是由另一个单元学习并决定何时清除记忆内容的乘法门控制的。

LSTM 网络随后被证明比传统的 RNNs 更加有效,尤其当每一个时间步长内有若干层时,整个语音识别系统能够完全一致的将声学转录为字符序列。目前 LSTM 网络或者相关的门控单元同样用于编码和解码网络,并且在机器翻译中表现良好。

过去几年中,几位学者提出了不同的提案用于增强 RNNs 的记忆模块。提案中包括神经图灵机,其中通过加入 RNNs 可读可写的“类似磁带”的存储来增强网络,而记忆网络中的常规网络通过联想记忆来增强。记忆网络在标准的问答基准测试中表现良好,记忆是用来记住稍后要求回答问题的事例。

除了简单的记忆化,神经图灵机和记忆网络正在被用于那些通常需要推理和符号操作的任务,还可以教神经图灵机“算法”。除此以外,他们可以从未排序的输入符号序列(其中每个符号都有与其在列表中对应的表明优先级的真实值)中,学习输出一个排序的符号序列。可以训练记忆网络用来追踪一个设定与文字冒险游戏和故事的世界的状态,回答一些需要复杂推理的问题。在一个测试例子中,网络能够正确回答 15 句版本的《指环王》中诸如“Frodo 现在在哪?”的问题。

8 深度学习的未来展望

无监督学习对于重新点燃深度学习的热潮起到了促进的作用,但是纯粹的有监督学习的成功盖过了无监督学习。在本篇综述中虽然这不是我们的重点,我们还是期望无监督学习在长期内越来越重要。无监督学习在人类和动物的学习中占据主导地位:我们通过观察能够发现世界的内在结构,而不是被告知每一个客观事物的名称。

人类视觉是一个智能的、基于特定方式的利用小或大分辨率的视网膜中央窝与周围环绕区域对光线采集成像的活跃的过程。我们期望未来在机器视觉方面会有更多的进步,这些进步来自那些端对端的训练系统,并结合 ConvNets 和 RNNs,采用增强学习来决定走向。结合了深度学习和增强学习的系统正处在初期,但已经在分类任务中超过了被动视频系统,并在学习操作视频游戏中产生了令人印象深刻的效果。

在未来几年,自然语言理解将是深度学习做出巨大影响的另一个领域。我们预测那些利用了 RNNs 的系统将会更好地理解句子或者整个文档,当它们选择性地学习了某时刻部分加入的策略。

最终,在人工智能方面取得的重大进步将来自那些结合了复杂推理表示学习(representation learning )的系统。尽管深度学习和简单推理已经应用于语音和手写字识别很长一段时间了,我们仍需要通过操作大量向量的新范式来代替基于规则的字符表达式操作。