摘要
深度学习允许由多个处理层组成的计算模型学习具有多个抽象级别的数据表示。这些方法极大地改进了语音识别、视觉对象识别、对象检测以及药物发现和基因组学等许多其他领域的最新技术水平。深度学习通过使用反向传播算法指示机器应如何更改其内部参数来发现大型数据集中的复杂结构,这些参数用于根据前一层的表示计算每一层的表示。深度卷积网络在处理图像、视频、语音和音频方面带来了突破,而循环网络则在文本和语音等序列数据上大放异彩。
引言
机器学习技术为现代社会的许多方面提供动力:从网络搜索到社交网络上的内容过滤再到电子商务网站上的推荐,它越来越多地出现在相机和智能手机等消费产品中。机器学习系统用于识别图像中的对象,将语音转录为文本,将新闻条目、帖子或产品与用户的兴趣进行匹配,并选择相关的搜索结果。这些应用程序越来越多地使用一类称为深度学习的技术。
传统的机器学习技术在处理原始形式的自然数据方面的能力有限。几十年来,构建模式识别或机器学习系统需要仔细的工程设计和相当多的领域专业知识来设计特征提取器,将原始数据(例如图像的像素值)转换为合适的内部表示或特征向量,从中提取学习子系统,通常是一个分类器,可以检测或分类输入中的模式。
表示学习是一组方法,允许机器输入原始数据并自动发现检测或分类所需的表示。深度学习方法是具有多级表示的表示学习方法,通过组合简单但非线性的模块获得,每个模块将一个级别的表示(从原始输入开始)转换为更高、更抽象级别的表示.通过组合足够多的此类转换,可以学习非常复杂的函数。对于分类任务,更高层的表示放大了输入中对区分很重要的方面,并抑制了不相关的变化。例如,图像以像素值数组的形式出现,第一层表示中学习到的特征通常表示图像中特定方向和位置处是否存在边缘。第二层通常通过发现边缘的特定排列来检测图案,而不管边缘位置的微小变化。第三层可以将图案组装成更大的组合,与熟悉的物体的各个部分相对应,后续层会将物体检测为这些部分的组合。深度学习的关键方面是这些特征层不是由人类工程师设计的:它们是使用通用学习程序从数据中学习的。
深度学习在解决多年来一直抵制人工智能社区最佳尝试的问题方面取得了重大进展。事实证明,它非常擅长发现高维数据中的复杂结构,因此适用于科学、商业和政府的许多领域。除了在图像识别和语音识别中打破记录外,它还在预测潜在药物分子的活性、分析粒子加速器数据方面击败了其他机器学习技术、重建大脑回路以及预测非编码 DNA 突变对基因表达和疾病的影响。也许更令人惊讶的是,深度学习在自然语言理解的各种任务中产生了非常有前途的结果,特别是主题分类、情感分析、问答和语言翻译。
我们认为深度学习在不久的将来会取得更多成功,因为它需要很少的手工工程,所以它可以很容易地利用可用计算量和数据量的增加。目前正在为深度神经网络开发的新学习算法和架构只会加速这一进程。
监督学习
最常见的机器学习形式,无论深度与否,都是监督学习。想象一下,我们想要构建一个系统,可以将图像分类为包含房屋、汽车、人或宠物。我们首先收集大量房屋、汽车、人和宠物的图像数据集,每张图像都标有其类别。在训练期间,机器会看到一张图像,并以分数向量的形式产生输出,每个类别一个。我们希望期望的类别在所有类别中得分最高,但在训练之前这不太可能发生。我们计算一个目标函数来衡量输出分数与所需分数模式之间的误差(或距离)。然后机器修改其内部可调参数以减少此错误。这些可调参数,通常称为权重,是实数,可以看作是定义机器输入输出功能的“旋钮”。在一个典型的深度学习系统中,可能有数亿个可调整的权重,以及数亿个用于训练机器的标记示例。
为了正确调整权重向量,学习算法计算一个梯度向量,对于每个权重,如果权重增加很小的量,误差会增加或减少多少。然后在与梯度向量相反的方向上调整权重向量。
目标函数,对所有训练样例进行平均,可以看作是权重值高维空间中的一种丘陵景观。负梯度向量表示该景观中最陡下降的方向,使其更接近最小值,输出误差平均较低。
在实践中,大多数从业者使用称为随机梯度下降 (SGD) 的过程。这包括显示几个示例的输入向量,计算输出和误差,计算这些示例的平均梯度,并相应地调整权重。对训练集中的许多小样本集重复该过程,直到目标函数的平均值停止下降。之所以称为随机性,是因为每个小样本集都给出了所有样本平均梯度的噪声估计。与复杂得多的优化技术相比,这个简单的过程通常可以惊人地快速找到一组好的权重. 训练后,系统的性能在称为测试集的不同示例集上进行测量。这用于测试机器的泛化能力——它能够对训练期间从未见过的新输入产生合理的答案。
当前机器学习的许多实际应用都在手工设计的特征之上使用线性分类器。两类线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则输入被归类为属于特定类别。
自 1960 年代以来,我们就知道线性分类器只能将其输入空间划分为非常简单的区域,即由超平面分隔的半空间. 但是图像和语音识别等问题要求输入输出函数对输入的无关变化不敏感,例如物体的位置、方向或光照的变化,或者语音的音高或口音的变化,同时非常对特定的微小变化很敏感(例如,白狼和一种叫做萨摩耶的狼一样的白狗之间的区别)。在像素级别,两个萨摩耶犬在不同姿势和不同环境中的图像可能彼此非常不同,而萨摩耶犬和狼在相同位置和相似背景下的两个图像可能彼此非常相似。线性分类器或任何其他对原始像素进行操作的“浅层”分类器不可能区分后两者,同时将前两者归为一类。这就是为什么浅层分类器需要一个很好的特征提取器来解决选择性不变的困境——它产生的表征对图像中对区分很重要的方面具有选择性,但对不相关的方面(例如姿势)是不变的。动物。为了使分类器更强大,可以使用通用的非线性特征,就像内核方法一样,但是诸如高斯核所产生的通用特征不允许学习者在远离训练示例的地方很好地概括。传统的选择是手工设计好的特征提取器,这需要大量的工程技能和领域专业知识。但如果可以使用通用学习程序自动学习好的特征,这一切都可以避免。这是深度学习的关键优势。
深度学习架构是简单模块的多层堆栈,所有(或大部分)模块都需要学习,其中许多计算非线性输入-输出映射。堆栈中的每个模块都会转换其输入以增加表示的选择性和不变性。通过多个非线性层,比如深度为 5 到 20,系统可以实现其输入的极其复杂的功能,这些功能同时对微小细节敏感——将萨摩耶犬与白狼区分开来——并且对大的不相关变化不敏感,例如背景,姿势,灯光和周围的物体。
反向传播训练多层架构
从模式识别的早期开始,研究人员的目标就是用可训练的多层网络取代手工设计的特征,但尽管它很简单,但直到 1980 年代中期,该解决方案才得到广泛理解。事实证明,多层架构可以通过简单的随机梯度下降来训练。只要模块是其输入及其内部权重的相对平滑的函数,就可以使用反向传播过程计算梯度。在 70 年代和 80年代期间,几个不同的小组独立发现了可以做到这一点并且行之有效的想法。
计算目标函数相对于多层模块权重的梯度的反向传播过程只不过是导数链式法则的实际应用。关键的见解是,目标相对于模块输入的导数(或梯度)可以通过相对于该模块输出(或后续模块输入)的梯度反向计算(图. 1). 可以重复应用反向传播方程来通过所有模块传播梯度,从顶部的输出(网络产生预测的地方)开始一直到底部(外部输入被馈送的地方)。一旦计算出这些梯度,就可以直接计算关于每个模块权重的梯度。
a,多层神经网络(由连接的点显示)可以扭曲输入空间,使数据类别(其示例在红色和蓝色线上)线性可分。请注意输入空间中的规则网格(显示在左侧)如何被隐藏单元转换(显示在中间面板)。这是一个只有两个输入单元、两个隐藏单元和一个输出单元的说明性示例,但用于对象识别或自然语言处理的网络包含数万或数十万个单元。经 C. Olah ( http://colah.github.io/ )许可转载。b,导数的链式法则告诉我们两个小的影响(x对y的小变化,以及y的小变化)在z ) 上组成。通过乘以 ∂ y/ ∂ x(即偏导数的定义),x中的小变化 Δ x首先被转换为 y 中的小变化Δ y 。类似地,变化 Δ y在 z 中产生变化 Δ z。将一个方程代入另一个方程给出导数的链式法则——Δx如何通过乘以∂y/∂x和∂z/∂x的乘积变成Δz 。它也适用于x , y和z是向量(导数是雅可比矩阵)。c,用于计算具有两个隐藏层和一个输出层的神经网络中的前向传递的方程式,每个构成一个模块,通过它可以反向传播梯度。在每一层,我们首先计算每个单元的总输入z,它是下一层单元输出的加权和。然后将非线性函数f (.) 应用于z以获得单元的输出。为简单起见,我们省略了偏置项。神经网络中使用的非线性函数包括整流线性单元 (ReLU) f ( z ) = max(0, z), 以及比较常规的sigmoids, 比如双曲正切, f ( z ) = (exp( z ) − exp(− z ))/(exp( z ) + exp(− z )) 和逻辑函数 logistic,f ( z ) = 1/(1 + exp(−z))。d, 用于计算后向传播的方程式。在每个隐藏层,我们计算关于每个单元输出的误差导数,它是关于上层单元总输入的误差导数的加权和。然后,我们将关于输出的误差导数乘以f ( z ) 的梯度,将其转换为关于输入的误差导数。在输出层,通过对成本函数进行微分来计算关于单元输出的误差导数。如果单元l的成本函数为0.5 ( y l − t l) 2,其中t l是目标值。一旦 ∂ E /∂ z k已知,下层单元j连接上的权重w jk的误差导数就是y j ∂ E /∂ z k。
深度学习的许多应用都使用前馈神经网络架构(图 1),它学习将固定大小的输入(例如,图像)映射到固定大小的输出(例如,几个类别中每个类别的概率) . 为了从一层到下一层,一组单元计算其前一层输入的加权和,并将结果传递给非线性函数。目前最流行的非线性函数是整流线性单元(ReLU),简单来说就是半波整流器f ( z ) = max( z , 0)。在过去的几十年中,神经网络使用更平滑的非线性,例如 tanh( z) 或 1/(1 + exp(−z)),但 ReLU 通常在多层网络中学习得更快,允许在没有无监督预训练的情况下训练深度监督网络。不在输入或输出层中的单元通常称为隐藏单元。隐藏层可以被视为以非线性方式扭曲输入,因此类别变得可由最后一层线性分离(图 1)。
在 20 世纪 90 年代后期,神经网络和反向传播在很大程度上被机器学习社区抛弃,并被计算机视觉和语音识别社区所忽视。人们普遍认为,在几乎没有先验知识的情况下学习有用的、多阶段的特征提取器是不可行的。特别是,人们普遍认为简单的梯度下降会陷入糟糕的局部极小值——权重配置的微小变化不会降低平均误差。
在实践中,糟糕的局部最小值很少成为大型网络的问题。无论初始条件如何,系统几乎总能得出质量非常相似的解。最近的理论和实证结果强烈表明,局部最小值通常不是一个严重的问题。取而代之的是,地形充满了梯度为零的大量组合鞍点,并且表面在大多数维度上向上弯曲,在其余上向下弯曲。分析似乎表明,只有少数向下弯曲方向的鞍点数量非常多,但几乎所有鞍点都具有非常相似的目标函数值。因此,算法卡在这些鞍点中的哪一个并不重要。
对深度前馈网络的兴趣在 2006 年左右重新燃起由加拿大高级研究所 (CIFAR) 召集的一组研究人员完成。研究人员引入了无监督学习程序,可以在不需要标记数据的情况下创建特征检测器层。学习每一层特征检测器的目的是能够重建或建模下一层特征检测器(或原始输入)的活动。通过使用此重建目标“预训练”几层逐渐复杂的特征检测器,可以将深度网络的权重初始化为合理的值。然后可以将最后一层输出单元添加到网络的顶部,并且可以使用标准反向传播对整个深度系统进行微调. 这对于识别手写数字或检测行人非常有效,尤其是在标记数据量非常有限的情况下。
这种预训练方法的第一个主要应用是在语音识别中,它是由于快速图形处理单元 (GPU) 的出现而成为可能的,GPU 便于编程并允许研究人员以 10 或 20 倍的速度训练网络。2009 年,该方法被用于将从声波中提取的系数的短时间窗口映射到一组可能由窗口中心的帧表示的各种语音片段的概率。它在使用小词汇量的标准语音识别基准测试中取得了破纪录的结果,并迅速开发为在大词汇量任务中取得了破纪录的结果到 2012 年,许多主要语音组正在开发 2009 年的深度网络版本,并且已经部署在 Android 手机中。对于较小的数据集,无监督预训练有助于防止过度拟合,当标记示例的数量较少时,或者在迁移设置中,我们有很多示例用于某些“源”任务但很少有用于一些“目标”任务。深度学习恢复后,事实证明只有小数据集才需要预训练阶段。
然而,有一种特殊类型的深度前馈网络比相邻层之间具有完全连接的网络更容易训练和泛化。这就是卷积神经网络 (ConvNet)。它在神经网络失宠的时期取得了许多实际成功,最近被计算机视觉社区广泛采用。
卷积神经网络
ConvNets 旨在处理以多个数组形式出现的数据,例如由三个二维数组组成的彩色图像,其中包含三个颜色通道中的像素强度。许多数据模态采用多个数组的形式:一维用于信号和序列,包括语言;图像或音频频谱图的 2D;和 3D 视频或体积图像。ConvNets 背后有四个利用自然信号特性的关键思想:局部连接、共享权重、池化和多层的使用。
典型 ConvNet 的架构(图 2) 被构造为一系列阶段。前几个阶段由两种类型的层组成:卷积层和池化层。卷积层中的单元组织在特征图中,其中每个单元通过一组称为滤波器组的权重连接到前一层特征图中的局部补丁。然后将这个局部加权和的结果传递给非线性函数,例如 ReLU。特征图中的所有单元共享相同的过滤器组。一层中的不同特征图使用不同的滤波器组。这种架构的原因是双重的。首先,在图像等阵列数据中,局部值组通常高度相关,形成易于检测的独特局部图案。其次,图像和其他信号的局部统计不随位置变化。换一种说法,如果一个主题可以出现在图像的一个部分,它可以出现在任何地方,因此不同位置的单元共享相同的权重并在阵列的不同部分检测相同的模式。在数学上,特征图执行的过滤操作是离散卷积,因此得名。
应用于萨摩耶犬图像(左下;RGB(红、绿、蓝)输入,右下)的典型卷积网络架构的每一层(水平方向)的输出(不是过滤器)。每个矩形图像都是一个特征图,对应于在每个图像位置检测到的其中一个学习特征的输出。信息自下而上流动,较低级别的特征充当定向边缘检测器,并为输出中的每个图像类别计算分数。ReLU,整流线性单元。
虽然卷积层的作用是检测上一层特征的局部连接,但池化层的作用是将语义相似的特征合并为一个。由于形成图案的特征的相对位置可能会有所不同,因此可以通过对每个特征的位置进行粗粒度化来可靠地检测图案。一个典型的池化单元计算一个特征图(或几个特征图)中局部单元块的最大值。相邻的池化单元从移动了不止一行或一列的补丁中获取输入,从而减少了表示的维度并为小的移动和失真创造了不变性。卷积、非线性和池化的两个或三个阶段堆叠在一起,然后是更多的卷积层和全连接层。
深度神经网络利用了许多自然信号是组合层次结构的特性,其中高级特征是通过组合低级特征获得的。在图像中,边缘的局部组合形成图案,图案组装成部分,部分形成物体。类似的层次结构存在于语音和文本中,从声音到音素、音素、音节、单词和句子。当前一层中的元素在位置和外观上发生变化时,池化允许表示变化很小。
ConvNets 中的卷积层和池化层直接受到视觉神经科学中简单细胞和复杂细胞经典概念的启发,整体架构让人想起视觉皮层腹侧通路中的 LGN-V1-V2-V4-IT 层级. 当向 ConvNet 模型和猴子展示相同的图片时,ConvNet 中高级单元的激活解释了猴子颞下皮层中 160 个神经元的随机集合的一半方差。卷积神经网络起源于新认知机46,其架构有些相似,但没有端到端的监督学习算法,例如反向传播。称为时延神经网络的原始一维 ConvNet 用于识别音素和简单单词。
回溯到 1990 年代初期,卷积网络已有大量应用,从用于语音识别和文档阅读的时间延迟神经网络开始。文档阅读系统使用与实现语言约束的概率模型联合训练的 ConvNet。到 1990 年代后期,该系统读取了美国所有支票的 10% 以上。许多基于 ConvNet 的光学字符识别和手写识别系统后来被 Microsoft 部署。在 1990 年代初期,ConvNets 也被用于自然图像中的对象检测,包括面部和手部,以及面部识别。
使用深度卷积网络进行图像理解
自 2000 年代初以来,ConvNets 已成功应用于图像中对象和区域的检测、分割和识别。这些都是标记数据相对丰富的任务,例如交通标志识别,生物图像分割特别是连接组学,以及自然图像中人脸、文本、行人和人体的检测。ConvNets 最近取得的一项重大实际成功是人脸识别。
重要的是,图像可以在像素级别进行标记,这将在技术上得到应用,包括自主移动机器人和自动驾驶汽车。Mobileye 和 NVIDIA 等公司正在他们即将推出的汽车视觉系统中使用这种基于 ConvNet 的方法。其他越来越重要的应用涉及自然语言理解和语音识别。
尽管取得了这些成功,但在 2012 年的 ImageNet 竞赛之前,主流计算机视觉和机器学习社区基本上放弃了 ConvNets。当深度卷积网络应用于包含 1000 个不同类别的网络中约 100 万张图像的数据集时,他们取得了惊人的成果,将最佳竞争方法的错误率几乎减半。这一成功来自于 GPU、ReLU、一种称为 dropout的新正则化技术的有效使用,以及通过变形现有示例来生成更多训练示例的技术。这一成功带来了计算机视觉的革命;ConvNets 现在是几乎所有识别和检测任务的主要方法,并接近人类在某些任务上的表现。最近一个令人惊叹的演示结合了 ConvNets 和循环网络模块来生成图像说明(图 3)。
由递归神经网络 (RNN) 生成的字幕作为额外输入,由深度卷积神经网络 (CNN) 从测试图像中提取表示,RNN 被训练为将图像的高级表示“翻译”为字幕(最佳)。当 RNN 能够在生成每个单词(粗体)时将注意力集中在输入图像中的不同位置(中间和底部;较浅的补丁得到更多关注)时,我们发现个它利用这一点来实现更好地将图像“翻译”成字幕。
最近的 ConvNet 架构有 10 到 20 层的 ReLU、数亿个权重和单元之间的数十亿个连接。仅在两年前,训练如此大型的网络可能只需要数周时间,而硬件、软件和算法并行化方面的进步已将训练时间缩短至几个小时。
基于 ConvNet 的视觉系统的性能已经引起大多数主要技术公司,包括谷歌、Facebook、微软、IBM、雅虎、推特和 Adobe,以及数量迅速增长的初创企业启动研发项目并部署基于 ConvNet 的图像理解产品和服务。
ConvNet 很容易在芯片或现场可编程门阵列中采用高效的硬件实现。NVIDIA、Mobileye、英特尔、高通和三星等多家公司正在开发 ConvNet 芯片,以实现智能手机、相机、机器人和自动驾驶汽车中的实时视觉应用。
分布式表示和语言处理
深度学习理论表明,与不使用分布式表示的经典学习算法相比,深度网络具有两个不同的指数优势。这两个优点都源于组合的力量,并取决于具有适当组件结构的底层数据生成分布。首先,学习分布式表示可以泛化到学习特征值的新组合,超出训练期间看到的特征值(例如,2 n 个组合可能具有n 个二元特征)。其次,在深度网络中组合表示层带来了另一个指数优势的潜力(深度指数)。
多层神经网络的隐藏层学习以一种易于预测目标输出的方式来表示网络的输入。通过训练多层神经网络从较早单词的局部上下文预测序列中的下一个单词,可以很好地证明这一点。上下文中的每个词都作为 N 个向量之一呈现给网络,也就是说,一个分量的值为 1,其余为 0。在第一层中,每个词创建不同的激活模式,或者词向量(图4). 在语言模型中,网络的其他层学习将输入词向量转换为预测下一个词的输出词向量,可用于预测词汇表中任何词作为下一个词出现的概率。网络学习包含许多活动成分的词向量,每个成分都可以解释为单词的一个单独特征,正如首次展示的那样在学习符号的分布式表示的背景下。这些语义特征没有明确出现在输入中。学习过程发现它们是将输入和输出符号之间的结构化关系分解为多个“微规则”的好方法。当单词序列来自大量真实文本并且个别微规则不可靠时,学习单词向量也非常有效. 例如,当训练预测新闻故事中的下一个单词时,学习到的星期二和星期三的词向量非常相似,瑞典和挪威的词向量也是如此。这种表示被称为分布式表示,因为它们的元素(特征)不是相互排斥的,并且它们的许多配置对应于观察到的数据中看到的变化。这些词向量由学习到的特征组成,这些特征不是由专家提前确定的,而是由神经网络自动发现的。从文本中学习的单词的向量表示现在在自然语言应用中得到非常广泛的使用
左边是为建模语言学习的单词表示的图示,非线性投影到 2D 以使用 t-SNE 算法进行可视化。右边是英语到法语编码器-解码器递归神经网络学习的短语的二维表示。人们可以观察到语义相似的单词或单词序列被映射到附近的表示。单词的分布式表示是通过使用反向传播共同学习每个单词的表示和预测目标数量的函数来获得的,例如序列中的下一个单词(用于语言建模)或整个翻译单词序列(用于机器翻译) )
递归神经网络
首次引入反向传播时,其最令人兴奋的用途是训练递归神经网络 (RNN)。对于涉及顺序输入的任务,例如语音和语言,通常最好使用 RNN(图 5)。RNN 一次处理一个输入序列的一个元素,在它们的隐藏单元中维护一个“状态向量”,隐含地包含有关序列所有过去元素的历史信息。当我们将隐藏单元在不同离散时间步长的输出视为深度多层网络中不同神经元的输出时(图 5,右),我们如何应用反向传播来训练 RNN 就变得很清楚了。
人工神经元(例如,隐藏单元在节点s下分组,在时间t的值为s t)在先前的时间步长从其他神经元获取输入(这用黑色方块表示,代表一个时间步长的延迟,在左侧). 通过这种方式,循环神经网络可以将具有元素 xt 的输入序列映射到具有元素ot的输出序列,其中每个ot取决于所有先前的xt ' (对于t'≤t )。相同的参数(矩阵U、V、W) 在每个时间步使用。许多其他架构也是可能的,包括网络可以生成一系列输出(例如单词)的变体,每个输出都用作下一个时间步的输入。反向传播算法(图 1)可以直接应用于右侧展开网络的计算图,计算总误差的导数(例如,生成正确输出序列的对数概率)所有状态s t和所有参数。
RNN 是非常强大的动态系统,但训练它们已被证明是有问题的,因为反向传播的梯度在每个时间步长都会增加或缩小,因此在许多时间步长后它们通常会爆炸或消失。
由于其架构和训练方式的进步,RNN 被发现非常擅长预测文本中的下一个字符或序列中的下一个单词, 但它们也可以用于更复杂的任务。例如,在一次读完一个英语句子后,可以训练一个英语“编码器”网络,使其隐藏单元的最终状态向量很好地表示句子所表达的思想。这个思维向量然后可以用作联合训练的法语“解码器”网络的初始隐藏状态(或作为额外输入),该网络输出法语翻译的第一个单词的概率分布。如果从这个分布中选择一个特定的第一个单词并将其作为输入提供给解码器网络,它将输出翻译的第二个单词的概率分布,依此类推,直到选择句号. 总的来说,这个过程根据取决于英语句子的概率分布生成法语单词序列。这种执行机器翻译的相当幼稚的方式很快就与最先进的技术相媲美,这引起了人们的严重怀疑,即理解一个句子是否需要使用推理规则操纵的内部符号表达之类的东西。它更符合这样一种观点,即日常推理涉及许多同时发生的类比,每个类比都有助于得出结论的合理性。
人们可以学习将图像的含义“翻译”成英语句子,而不是将法语句子的意思翻译成英语句子(图 3)。这里的编码器是一个深度 ConvNet,它在其最后一个隐藏层中将像素转换为活动向量。解码器是类似于用于机器翻译和神经语言建模的 RNN。最近对此类系统的兴趣激增(参见参考文献中提到的示例)。
RNN,一旦及时展开(图 5),可以被视为非常深的前馈网络,其中所有层共享相同的权重。尽管它们的主要目的是学习长期依赖关系,但理论和经验证据表明,很难学习长期存储信息。
为了纠正这个问题,一个想法是用显式记忆来扩充网络。这种类型的第一个建议是使用特殊隐藏单元的长短期记忆 (LSTM) 网络,其自然行为是长时间记住输入。一个称为记忆细胞的特殊单元就像一个累加器或门控泄漏神经元:它在下一个时间步与自身建立连接,权重为 1,因此它复制自己的实值状态并累积外部信号,但是这种自我连接是由另一个学习决定何时清除内存内容的单元乘法门控的。
LSTM 网络随后被证明比传统的 RNN 更有效,尤其是当它们在每个时间步有多个层时,使整个语音识别系统能够从声学一直到转录中的字符序列。LSTM 网络或相关形式的门控单元目前也用于编码器和解码器网络,它们在机器翻译中表现出色。
在过去的一年里,几位作者提出了不同的建议,用记忆模块来增强 RNN。提案包括神经图灵机,其中网络由 RNN 可以选择读取或写入的“类磁带”存储器增强,以及记忆网络,其中常规网络由一种关联存储器增强。记忆网络在标准问答基准测试中表现出色。记忆用于记住稍后要求网络回答问题的故事。
除了简单的记忆之外,神经图灵机和记忆网络也被用于通常需要推理和符号操作的任务。可以教授神经图灵机“算法”。除其他事项外,当他们的输入由一个未排序的序列组成时,他们可以学习输出一个排序的符号列表,其中每个符号都带有一个表示其在列表中的优先级的真实值。可以训练记忆网络在类似于文本冒险游戏的设置中跟踪世界的状态,并且在阅读故事后,它们可以回答需要复杂推理的问题。在一个测试示例中,向网络展示了 15 个句子版本的指环王并正确回答诸如“Frodo 现在在哪里?”之类的问题。
深度学习的未来
无监督学习对重振人们对深度学习的兴趣具有催化作用,但此后一直被纯监督学习的成功所掩盖。虽然我们没有在本次评论中重点关注它,但我们预计无监督学习从长远来看会变得更加重要。人类和动物的学习在很大程度上是不受监督的:我们通过观察来发现世界的结构,而不是通过被告知每个物体的名称。
人类视觉是一个主动过程,它使用具有大而低分辨率环绕的小型高分辨率中央凹以智能的、特定于任务的方式对光学阵列进行顺序采样。我们预计未来视觉方面的大部分进展将来自经过端到端训练的系统,并将 ConvNets 与使用强化学习来决定在哪里看的 RNNs 相结合。结合深度学习和强化学习的系统还处于起步阶段,但它们在分类任务上的表现已经优于被动视觉系统,并在学习玩许多不同的视频游戏方面产生了令人印象深刻的结果。
自然语言理解是深度学习有望在未来几年产生巨大影响的另一个领域。我们期望使用 RNN 来理解句子或整个文档的系统在学习一次有选择地关注一个部分的策略时会变得更好。
最终,人工智能的重大进步将通过将表征学习与复杂推理相结合的系统来实现。尽管深度学习和简单推理长期以来一直用于语音和手写识别,但仍需要新的范例来通过对大向量的操作来取代基于规则的符号表达式操作。