社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

Deep learning 深度学习

CreateAMind • 昨天 • 22 次点击  

深度学习 Deep learning

https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf

深度学习使得由多个处理层组成的计算模型能够学习具有多层抽象的数据表示。这些方法极大地提升了语音识别、视觉目标识别、目标检测以及药物发现和基因组学等众多领域的最先进水平。深度学习利用反向传播算法来发现大型数据集中的复杂结构,该算法指明了机器应如何调整其内部参数,以便根据前一层的表示来计算每一层的表示。深度卷积网络在图像、视频、语音和音频处理方面取得了突破,而循环网络则在文本和语音等序列数据的处理上取得了显著进展。

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

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

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

深度学习在解决多年来人工智能界竭尽所能也难以解决的问题上取得了重大进展。事实证明,它非常擅长发现高维数据中的复杂结构,因此适用于科学、商业和政府的许多领域。除了在图像识别1-4和语音识别5-7方面打破纪录外,它在预测潜在药物分子的活性8、分析粒子加速器数据9,10、重建大脑回路11,以及预测非编码DNA突变对基因表达和疾病的影响12,13方面,也击败了其他机器学习技术。或许更令人惊讶的是,深度学习在自然语言理解14的各种任务中取得了极其有前景的结果,特别是主题分类、情感分析、问答15和语言翻译16,17。

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


监督学习

机器学习最常见的形式,无论是否属于深度学习,都是监督学习。假设我们想构建一个系统,能够将图像分类为包含房屋、汽车、人物或宠物等。我们首先收集一个包含房屋、汽车、人物和宠物图像的大型数据集,每个图像都标有其类别。在训练期间,向机器展示一张图像,它会以分数向量的形式产生一个输出,每个类别对应一个分数。我们希望目标类别在所有类别中获得最高分,但在训练之前这不太可能发生。我们计算一个目标函数,用于衡量输出分数与期望分数模式之间的误差(或距离)。然后,机器会修改其内部可调节的参数以减少这种误差。这些可调节的参数通常被称为权重,它们是实数,可以看作是定义机器输入-输出函数的“旋钮”。在一个典型的深度学习系统中,可能有数以亿计的可调节权重,以及数以亿计的带标签样本来训练机器。

为了正确调整权重向量,学习算法会计算一个梯度向量,对于每个权重,该向量指示如果将该权重增加一个微小量,误差会增加或减少多少。然后,权重向量会沿着与梯度向量相反的方向进行调整。

在所有训练样本上平均的目标函数,可以看作是权重值高维空间中的一种起伏的地形。负梯度向量指示了该地形中最陡峭的下降方向,使其更接近最小值,在此处平均输出误差较低。

在实践中,大多数从业者使用一种称为随机梯度下降(SGD)的过程。这包括展示少量样本的输入向量,计算输出和误差,计算这些样本的平均梯度,并相应地调整权重。对训练集中的许多小样本集重复此过程,直到目标函数的平均值停止下降。它被称为“随机”的,因为每个小样本集都会对所有样本的平均梯度给出一个带有噪声的估计。与复杂得多的优化技术18相比,这种简单的过程通常能以惊人的速度找到一组良好的权重。训练完成后,系统的性能会在另一组称为测试集的样本上进行测量。这用于测试机器的泛化能力——即它在训练期间从未见过的新输入上产生合理答案的能力。

当前许多机器学习的实际应用都在手工设计的特征之上使用线性分类器。一个二分类线性分类器计算特征向量分量的加权和。如果加权和超过某个阈值,则将该输入分类为属于特定类别。

自20世纪60年代以来,我们就知道线性分类器只能将其输入空间划分为非常简单的区域,即由超平面分隔的半空间19。但是,图像和语音识别等问题要求输入-输出函数对输入的不相关变化(如物体位置、方向或光照的变化,或语音音高或口音的变化)不敏感,同时对特定的微小变化非常敏感(例如,白狼与一种名为萨摩耶的类似狼的白色犬种之间的区别)。在像素级别,两只处于不同姿势和不同环境中的萨摩耶的图像可能彼此差异很大,而处于相同位置和相似背景下的萨摩耶和狼的图像可能彼此非常相似。线性分类器或任何其他在原始像素上运行的“浅层”分类器,都不可能区分后两者,同时将前两者归入同一类别。这就是为什么浅层分类器需要一个良好的特征提取器来解决选择性-不变性困境——该提取器产生的表示对图像中用于区分的重要方面具有选择性,但对动物姿势等不相关方面具有不变性。

为了使分类器更强大,可以使用通用的非线性特征,如核方法20,但诸如高斯核产生的通用特征不允许学习者在远离训练样本的情况下具有良好的泛化能力21。传统的选择是手工设计良好的特征提取器,这需要大量的工程技能和领域专业知识。但是,如果使用通用学习过程可以自动学习良好的特征,就可以完全避免这种情况。这是深度学习的关键优势。

深度学习架构是简单模块的多层堆栈,所有(或大多数)模块都参与学习,其中许多模块计算非线性的输入-输出映射。堆栈中的每个模块都会转换其输入,以提高表示的选择性和不变性。通过多个非线性层(例如5到20层的深度),系统可以实现对其输入的极其复杂的功能,这些功能同时对微小细节敏感(区分萨摩耶和白狼),并且对背景、姿势、光照和周围物体等大的不相关变化不敏感。


通过反向传播训练多层架构

从模式识别的早期22,23开始,研究人员的目标就是用可训练的多层网络来取代手工设计的特征,但尽管这种方法很简单,直到20世纪80年代中期,这一解决方案才被广泛理解。事实证明,多层架构可以通过简单的随机梯度下降来进行训练。只要模块是其输入和内部权重的相对平滑的函数,就可以使用反向传播过程来计算梯度。关于可以做到这一点并且它确实有效的想法,是在20世纪70年代和80年代由几个不同的研究小组独立发现的24–27。

计算目标函数相对于多层模块堆栈权重的梯度的反向传播过程,无非是导数链式法则的实际应用。关键的洞见在于,可以通过从该模块输出(或后续模块的输入)的梯度反向推导,来计算目标函数相对于该模块输入的导数(或梯度)(图1)。反向传播方程可以反复应用,将梯度传播通过所有模块,从顶部的输出(网络产生预测的地方)一直到底部(输入外部数据的地方)。一旦计算出这些梯度,计算相对于每个模块权重的梯度就很简单了。

深度学习的许多应用使用前馈神经网络架构(图1),它学习将固定大小的输入(例如,一张图像)映射到固定大小的输出(例如,几个类别中每个类别的概率)。为了从一层到下一层,一组单元计算它们从前一层接收的输入的加权和,并将结果通过一个非线性函数。目前,最流行的非线性函数是整流线性单元(ReLU),它仅仅是半波整流器 f(z) = max(z, 0)。在过去的几十年里,神经网络使用更平滑的非线性函数,如 tanh(z) 或 1/(1 + exp(−z)),但 ReLU 在具有多层的网络中通常学习得快得多,从而允许在没有无监督预训练的情况下训练深度监督网络28。不在输入层或输出层中的单元通常被称为隐藏单元。隐藏层可以被视为以非线性方式扭曲输入,使得各个类别在最后一层变得线性可分(图1)。

在20世纪90年代末,神经网络和反向传播在很大程度上被机器学习界所抛弃,并被计算机视觉和语音识别界所忽视。人们普遍认为,在几乎没有先验知识的情况下学习有用的、多阶段的特征提取器是不可行的。特别是,人们通常认为简单的梯度下降会陷入糟糕的局部极小值——在这种权重配置下,任何微小的改变都不会降低平均误差。

在实践中,糟糕的局部极小值在大型网络中很少成为问题。无论初始条件如何,系统几乎总能达到质量非常相似的解。最近的理论和实证结果强烈表明,局部极小值总体上并不是一个严重的问题。相反,该地形中充满了组合数量巨大的鞍点,在这些点上梯度为零,曲面在大多数维度上向上弯曲,仅在少数几个维度上向下弯曲。具有许多向下弯曲方向的鞍点数量极其庞大,但几乎所有这些鞍点的目标函数值都非常相似。因此,算法卡在哪个鞍点上并不重要。

大约在2006年,由加拿大高等研究院(CIFAR)召集的一组研究人员重新激发了人们对深度前馈网络的兴趣(参考文献31–34)。这些研究人员引入了无监督学习过程,该过程可以在不需要标记数据的情况下创建多层特征检测器。学习每一层特征检测器的目标是能够重建或模拟下一层中特征检测器(或原始输入)的活动。通过使用这种重建目标对几层逐渐更复杂的特征检测器进行“预训练”,深度网络的权重可以被初始化为合理的值。然后可以在网络顶部添加一层最终的输出单元,并且可以使用标准的反向传播对整个深度系统进行微调33–35。这在识别手写数字或检测行人方面表现出色,尤其是在标记数据量非常有限的情况下36。

这种预训练方法的第一个主要应用是在语音识别领域,这得益于快速图形处理单元(GPU)的出现,这些GPU易于编程37,并允许研究人员将网络训练速度提高10到20倍。2009年,该方法被用于将从声波中提取的系数的短时间窗口映射到一组概率上,这些概率表示窗口中心的帧可能代表的各种语音片段。它在使用小词汇表的标准语音识别基准测试中取得了破纪录的结果38,并很快被开发应用于大词汇量任务,同样取得了破纪录的结果39。到2012年,2009年深度网络的版本正由许多主要的语音研究小组开发6,并且已经部署在Android手机中。对于较小的数据集,无监督预训练有助于防止过拟合40,从而在标记样本数量较少时,或在某些“源”任务有大量样本而某些“目标”任务样本极少的迁移学习设置中,实现显著更好的泛化能力。一旦深度学习重新得到认可,事实证明,预训练阶段仅对小数据集是必需的。

然而,有一种特定类型的深度前馈网络比相邻层之间全连接的网络更容易训练,并且泛化能力要好得多。这就是卷积神经网络(ConvNet)41,42。在神经网络不受青睐的时期,它取得了许多实际的成功,并且最近已被计算机视觉界广泛采用。


卷积神经网络

卷积神经网络(ConvNets)旨在处理以多维数组形式出现的数据,例如由包含三个颜色通道像素强度的三个二维数组组成的彩色图像。许多数据模态都以多维数组的形式存在:一维(1D)用于信号和序列(包括语言);二维(2D)用于图像或音频频谱图;三维(3D)用于视频或体积图像。卷积神经网络背后有四个利用自然信号特性的关键思想:局部连接、共享权重、池化以及使用多层网络。

典型卷积神经网络的架构(图2)被构建为一系列阶段。最初的几个阶段由两种类型的层组成:卷积层和池化层。卷积层中的单元被组织在特征图中,其中每个单元通过一组称为滤波器组(filter bank)的权重,与前一层特征图中的局部区块相连接。然后,这个局部加权和的结果会通过一个非线性函数(如 ReLU)进行处理。特征图中的所有单元共享同一个滤波器组。同一层中的不同特征图使用不同的滤波器组。这种架构的原因有两个方面。首先,在图像等数组数据中,局部数值组通常高度相关,形成易于检测的独特局部基元(motifs)。其次,图像和其他信号的局部统计特性具有位置不变性。换句话说,如果一个基元可以出现在图像的某一部分,它就可能出现在任何地方,因此产生了不同位置的单元共享相同权重并在数组不同部分检测相同模式的想法。在数学上,特征图执行的滤波操作是一种离散卷积,这也是其名称的由来。

尽管卷积层的作用是检测来自前一层的特征的局部组合,但池化层的作用是将语义上相似的特征合并为一个。因为构成基元的特征的相对位置可能会有所变化,所以可以通过对每个特征的位置进行粗粒度化(coarse-graining)来可靠地检测该基元。一个典型的池化单元会计算一个特征图(或几个特征图)中局部区块单元的最大值。相邻的池化单元从平移超过一行或一列的区块获取输入,从而降低表示的维度,并产生对微小平移和失真的不变性。两到三个阶段的卷积、非线性和池化被堆叠起来,随后是更多的卷积层和全连接层。通过卷积神经网络反向传播梯度与通过常规深度网络一样简单,这使得所有滤波器组中的所有权重都能得到训练。

深度神经网络利用了这样一个特性:许多自然信号是组合层次结构,其中高层特征是通过组合低层特征获得的。在图像中,边缘的局部组合形成基元,基元组装成部分,部分再形成物体。在语音和文本中也存在类似的层次结构,从声音到音素(phones)、音位(phonemes)、音节、单词和句子。池化使得当前一层的元素在位置和外观上发生变化时,其表示的变化非常小。

卷积神经网络中的卷积层和池化层直接受到视觉神经科学中简单细胞和复杂细胞经典概念的启发43,其整体架构让人联想到视觉皮层腹侧通路中的 LGN–V1–V2–V4–IT 层次结构44。当向卷积神经网络模型和猴子展示相同的图片时,卷积神经网络中高层单元的激活可以解释猴子下颞叶皮层中160个随机神经元集合的一半方差45。卷积神经网络起源于新认知机(neocognitron)46,其架构有些相似,但没有像反向传播那样的端到端监督学习算法。一种称为时延神经网络(time-delay neural net)的原始一维卷积神经网络曾被用于音素和简单单词的识别47,48。

早在20世纪90年代初,卷积网络就有了大量的应用,从用于语音识别47和文档阅读42的时延神经网络开始。该文档阅读系统使用了一个与实现语言约束的概率模型联合训练的卷积神经网络。到20世纪90年代末,该系统读取了美国所有支票的10%以上。随后,微软部署了多个基于卷积神经网络的光学字符识别和手写识别系统49。在20世纪90年代初,卷积神经网络也被实验性地用于自然图像中的物体检测(包括面部和手部50,51)以及面部识别52。


基于深度卷积网络的图像理解

自21世纪初以来,卷积网络(ConvNets)已被成功应用于图像中物体和区域的检测、分割与识别。这些任务的共同点是标注数据相对丰富,例如交通标志识别[53]、生物图像分割[54](尤其是连接组学[55]),以及自然图像中的人脸、文本、行人和人体检测[36,50,51,56–58]。卷积网络近期取得的一项重大实际成功是人脸识别[59]。

重要的是,图像可以在像素级别进行标注,这将在技术领域得到应用,包括自主移动机器人和自动驾驶汽车[60,61]。Mobileye和NVIDIA等公司正在其即将推出的汽车视觉系统中使用这种基于卷积网络的方法。其他日益重要的应用领域包括自然语言理解[14]和语音识别[7]。

尽管取得了这些成功,但在2012年ImageNet竞赛之前,卷积网络在很大程度上被主流计算机视觉和机器学习界所冷落。当深度卷积网络被应用于一个包含约100万张来自网络图像(涵盖1000个不同类别)的数据集时,它们取得了惊人的成果,几乎将最佳竞争方法的错误率降低了一半[1]。这一成功源于对GPU的高效利用、ReLU(线性整流函数)、一种名为Dropout(丢弃法)的新型正则化技术[62],以及通过变形现有图像来生成更多训练样本的数据增强技术。这一成功引发了计算机视觉领域的革命;如今,卷积网络已成为几乎所有识别和检测任务的主导方法[4,58,59,63–65],并在某些任务上接近人类的表现。最近一项令人惊叹的演示将卷积网络与循环网络模块相结合,用于生成图像描述(图3)。

近期的卷积网络架构包含10到20层ReLU、数以亿计的权重,以及单元之间数十亿个连接。尽管在短短两年前,训练如此庞大的网络可能需要数周时间,但硬件、软件和算法并行化方面的进步已将训练时间缩短至几个小时。

基于卷积网络的视觉系统的卓越表现,促使包括谷歌、Facebook、微软、IBM、雅虎、Twitter和Adobe在内的大多数主要科技公司,以及数量快速增长的初创企业,纷纷启动研发项目,并部署基于卷积网络的图像理解产品和服务。

卷积网络很容易在芯片或现场可编程逻辑门阵列(FPGA)中实现高效的硬件部署[66,67]。NVIDIA、Mobileye、英特尔、高通和三星等多家公司正在开发卷积网络专用芯片,以在智能手机、相机、机器人和自动驾驶汽车中实现实时视觉应用。


分布式表示与语言处理

深度学习理论表明,与不使用分布式表示的经典学习算法相比,深度网络具有两种不同的指数级优势。这两种优势都源于组合(composition)的力量,并依赖于底层数据生成分布具有适当的成分结构。首先,学习分布式表示能够泛化到训练期间未见过的所学特征值的新组合(例如,n个二元特征可以产生种组合)。其次,在深度网络中组合多层表示,带来了另一种指数级优势的潜力(相对于网络深度呈指数级)。

多层神经网络的隐藏层学习以一种易于预测目标输出的方式来表示网络的输入。这在训练多层神经网络以根据早期单词的局部上下文来预测序列中的下一个单词时,得到了很好的证明。上下文中的每个单词都以“N选一”(one-of-N,即独热编码)向量的形式输入网络,即一个分量的值为1,其余为0。在第一层中,每个单词都会产生不同的激活模式,即词向量(图4)。在语言模型中,网络的其他层学习将输入词向量转换为用于预测下一个单词的输出词向量,该向量可用于预测词汇表中任何单词作为下一个单词出现的概率。网络学习到的词向量包含许多活跃的分量,每个分量都可以被解释为单词的一个独立特征,正如最初在学习符号的分布式表示时所证明的那样。这些语义特征并未明确存在于输入中。它们是由学习过程发现的,作为一种将输入和输出符号之间的结构化关系分解为多个“微规则”的有效方式。当词序列来自真实文本的大型语料库,且各个微规则并不可靠时,学习词向量也被证明非常有效。例如,当网络被训练来预测新闻报道中的下一个单词时,学习到的“Tuesday”(星期二)和“Wednesday”(星期三)的词向量非常相似,“Sweden”(瑞典)和“Norway”(挪威)的词向量也是如此。这种表示被称为分布式表示,因为它们的元素(特征)不是互斥的,并且它们的许多配置对应于在观察到的数据中看到的各种变化。这些词向量由学习到的特征组成,这些特征不是由专家提前确定的,而是由神经网络自动发现的。从文本中学习到的词向量表示现在已被广泛应用于自然语言应用中。

表示(representation)问题是认知领域逻辑启发范式和神经网络启发范式之间争论的核心。在逻辑启发范式中,符号实例的唯一属性是它与其他符号实例相同或不同。它没有与其使用相关的内部结构;并且要使用符号进行推理,必须将它们绑定到精心选择的推理规则中的变量上。相比之下,神经网络仅使用大型活动向量、大型权重矩阵和标量非线性函数,来执行支撑轻松常识推理的快速“直觉”推理。

在引入神经语言模型之前,语言统计建模的标准方法并未利用分布式表示:它基于计算长度最多为N的短符号序列(称为N元语法,N-grams)的出现频率。可能的N元语法数量约为V^N量级(其中V是词汇表大小),因此若要考虑超过少数几个单词的上下文,将需要极其庞大的训练语料库。N元语法将每个单词视为原子单位,因此它们无法在语义相关的单词序列之间进行泛化;而神经语言模型可以做到这一点,因为它们将每个单词与一个实值特征向量相关联,并且语义相关的单词在该向量空间中会彼此靠近(图4)。


循环神经网络

当反向传播算法首次被引入时,其最令人兴奋的应用是训练循环神经网络(RNNs)。对于涉及序列输入的任务(如语音和语言),使用RNNs通常效果更好(图5)。RNNs每次处理输入序列中的一个元素,并在其隐藏单元中维持一个“状态向量”,该向量隐式地包含了序列中所有过去元素的历史信息。当我们把隐藏单元在不同离散时间步的输出看作是深度多层网络中不同神经元的输出时(图5,右侧),我们就能清楚地知道如何应用反向传播来训练RNNs。

RNNs是非常强大的动态系统,但训练它们已被证明存在困难,因为反向传播的梯度在每个时间步都会放大或缩小,因此在经过多个时间步后,它们通常会发生梯度爆炸或梯度消失。

得益于其架构的进步以及训练方法的改进,RNNs已被发现在预测文本中的下一个字符或序列中的下一个单词方面表现出色,但它们也可用于更复杂的任务。例如,在逐词阅读一个英语句子后,可以训练一个英语“编码器”网络,使其隐藏单元的最终状态向量成为该句子所表达思想的良好表示。然后,这个“思想向量”可以被用作联合训练的法语“解码器”网络的初始隐藏状态(或作为额外输入),该网络会输出法语翻译中第一个单词的概率分布。如果从这个分布中选择一个特定的单词并将其作为输入提供给解码器网络,它将输出翻译中第二个单词的概率分布,依此类推,直到生成一个句号。总体而言,这个过程根据依赖于英语句子的概率分布生成法语单词序列。这种看似简单的机器翻译方法已迅速达到与最先进技术相竞争的水平,这引发了严重的疑问:理解一个句子是否真的需要像使用推理规则去操纵内部符号表达式那样的过程。这与另一种观点更加兼容,即日常推理涉及许多同时发生的类比,每个类比都为结论提供一定的合理性。

与其将法语句子的意义翻译成英语句子,我们也可以学习将图像的意义“翻译”成英语句子(图3)。这里的编码器是一个深度卷积网络(ConvNet),它将像素转换为其最后隐藏层中的活动向量。解码器则是一个类似于用于机器翻译和神经语言建模的RNN。最近,人们对这类系统产生了浓厚的兴趣(参见文献86中提到的例子)。

RNNs一旦在时间上展开(图5),就可以被视为非常深的前馈网络,其中所有层共享相同的权重。尽管它们的主要目的是学习长期依赖关系,但理论和实证证据表明,学习长时间存储信息是非常困难的。

为了解决这个问题,一个想法是用显式记忆来增强网络。这类想法的首个提议是长短期记忆(LSTM)网络,它使用特殊的隐藏单元,其自然行为是长时间记住输入。一个被称为“记忆单元”(memory cell)的特殊单元就像一个累加器或门控漏神经元:它在下一个时间步有一个权重为1的自连接,因此它会复制自己的实值状态并累加外部信号,但这个自连接受到另一个单元的乘法门控,该单元学习决定何时清除记忆的内容。

随后,LSTM网络被证明比传统的RNNs更有效,尤其是当它们在每个时间步包含多个层时,这使得构建一个从声学特征一直延伸到转录字符序列的完整端到端语音识别系统成为可能。LSTM网络或相关形式的门控单元目前也被广泛用于在机器翻译中表现优异的编码器和解码器网络。

在过去的一年里,几位研究者提出了不同的方案,用记忆模块来增强RNNs。这些提议包括神经图灵机(Neural Turing Machine),其中网络通过一种“类似磁带”的记忆进行增强,RNN可以选择从中读取或写入数据;以及记忆网络(Memory Networks),其中常规网络通过一种联想记忆进行增强。记忆网络在标准的问答基准测试中取得了优异的性能。该记忆被用来记住故事的内容,以便网络随后被问及关于该故事的问题时能够作答。

除了简单的记忆之外,神经图灵机和记忆网络正被用于通常需要推理和符号操作的任务。神经图灵机可以被教授“算法”。除其他外,当它们的输入是一个未排序的序列(其中每个符号都附有一个实数值,指示其在列表中的优先级)时,它们可以学习输出一个已排序的符号列表。记忆网络可以被训练来在类似于文字冒险游戏的环境中跟踪世界状态,并且在阅读一个故事后,它们可以回答需要复杂推理的问题。在一个测试示例中,网络被输入了一个15句话版本的《指环王》,并正确回答了诸如“弗罗多现在在哪里?”这样的问题。


深度学习的未来

无监督学习[91–98]在重新激发人们对深度学习的兴趣方面起到了催化作用,但此后它一直被纯监督学习的成功所掩盖。尽管我们在本综述中没有将重点放在无监督学习上,但我们预计从长远来看,它将变得重要得多。人类和动物的学习在很大程度上是无监督的:我们通过观察来发现世界的结构,而不是通过被告知每个物体的名称。

人类视觉是一个主动的过程,它利用一个高分辨率的小中央凹(fovea)和一个低分辨率的大周边区域,以智能的、特定于任务的方式对光学阵列(optic array)进行顺序采样。我们预计,未来视觉领域的许多进展将来自于端到端训练的系统,这些系统将卷积网络(ConvNets)与循环神经网络(RNNs)结合起来,并利用强化学习来决定注视的位置。结合深度学习和强化学习的系统仍处于起步阶段,但它们在分类任务上已经超越了被动视觉系统[99],并在学习玩多种不同电子游戏方面取得了令人瞩目的成果[100]。

自然语言理解是另一个深度学习有望在未来几年产生重大影响的领域。我们预计,当使用RNN来理解句子或整篇文档的系统学会每次选择性地关注一部分的策略时[76,86],它们的表现将大幅提升。

最终,人工智能的重大进展将通过将表示学习与复杂推理相结合的系统来实现。尽管深度学习和简单推理早已用于语音和手写识别,但仍需要新的范式,用对大型向量的操作来取代基于规则的符号表达式操作[101]。■


https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/202673