借助深度学习,多处理层组成的计算模型可经过多层抽象来学习数据表征( representations)。这些方法显著推进了语音识别、视觉识别、目标检测以及许多其余领域(好比,药物发现以及基因组学)的技术发展。利用反向传播算法(backpropagation algorithm)来显示机器将会如何根据前一层的表征改变用以计算每层表征的内部参数,深度学习发现了大数据集的复杂结构。深层卷积网络(deep convolutional nets)为图像、视频和音频等数据处理上带来突破性进展,而递归网络(recurrent nets )也给序列数据(诸如文本、语言)的处理带来曙光。
机器学习为现代生活诸多方面带来巨大动力:从网页搜索到社交网络内容过滤再到电商网商推荐,在相机、智能手机等消费品中也愈来愈多见。机器学习系统被用来识别图像中的物体、将语音转为文本,根据用户兴趣自动匹配新闻、消息或产品,挑选相关搜索结果。这类被应用程序愈来愈多地采用的技术,叫作深度学习。
传统机器学习技术在处理原始输入的天然数据方面能力有限。几十年来,建构模式识别或机器学习系统须要利用严谨的工程学和至关丰富的专业知识设计出一个特征提取器,它能将原始数据(例如图像像素值)转化成适于内部描述或表征的向量( vector ),在提取器中,学习子系统(一般是一个分类器)能够检测或分类输入模式。
表征学习(representation learning)是这样一套学习方法:输入原始数据后,机器可以自动发现检测或分类所需的表征信息。深度学习是一种多层描述的表征学习,经过组合简单、非线性模块来实现,每一个模块都会将最简单的描述(从原始输入开始)转变成较高层、较为抽象的描述。经过积累足够多的上述表征转化,机器能学习很是复杂的函数。就分类任务来讲,更高层的表征会放大输入信号的特征,而这对区分和控制不相关变量很是关键。好比,图片最初以像素值的方式出现,第一特征层级中,机器习得的特征主要是图像中特定方位、位置边沿之有无。第二特征层级中,主要是经过发现特定安排的边缘来检测图案,此时机器并不考虑边沿位置的微小变化。第三层中会将局部图像与物体相应部分匹配,后续的层级将会经过把这些局部组合起来从而识别出整个物体。深度学习的关键之处在于:这些特征层级并不是出自人类工程师之手;而是机器经过一个通用(general-purpose)学习程序,从大量数据中自学得出。
某些根深蒂固的问题困扰了人工智能从业者许多年,以致于人们最出色的尝试都无功而返。而深度学习的出现,让这些问题的解决迈出了相当重要的步伐。深度学习善于在高维度的数据中摸索出错综复杂的结构,所以能应用在许多不一样的领域,好比科学、商业和政府。此外,除了图像识别和语音识别,它还在许多方面击败了其余机器学习技术,好比预测潜在药物分子的活性、分析粒子加速器的数据、重构大脑回路、预测非编码DNA的突变对基因表达和疾病有何影响等。也许,最让人惊讶的是,在天然语言理解方面,特别是话题分类、情感分析、问答系统和语言翻译等不一样的任务上,深度学习都展示出了无限光明的前景。
在不久的未来,咱们认为深度学习将取得更多成就,由于它只须要极少的人工参与,因此它能垂手可得地从计算能力提高和数据量增加中得到裨益。目前正在开发的用于深层神经网络的新型学习算法和体系结构必将加速这一进程。
监督式学习
无论深度与否,机器学习最广泛的形式都是监督式学习(supervised learning)。好比说,咱们想构造一个系统,它能根据特定元素对图片进行分类,例如包含一栋房子、一辆车、一我的或一只宠物。首先,咱们要收集大量包含有房子、车、人或宠物的图片,组成一个数据集(data set),每张图片都标记有它的类别。在训练时,每当咱们向机器展现一张图片,机器就会输出一个相应类别的向量。咱们但愿的结果是:指定类别的分数最高,高于其余全部类别。然而,若是不通过训练,这将是不可能完成的任务。为此,咱们经过一个目标函数来计算实际输出与指望输出之间的偏差或距离。接下来,为了减少偏差,机器会对其内部可调参数进行调整。这些可调参数常被称为「权重」(weight),是实数,可看作定义机器输入-输出功能的「门把手」。在一个典型的深度学习系统中,可能存在着成千上亿的可调权重及用以训练机器的标记样本。
为了正确地调整权重矢量( weight vector),学习算法会计算出一个梯度矢量( gradient vector)。对每个权重,这个梯度矢量都能指示出,当权重略微增减一点点时,偏差会随之增减多少许。接着,权重矢量就会往梯度矢量的反方向进行调整。
从全部训练范例之上,平均看来,目标函数( objective function)可被视为一片崎岖的山地,坐落于由权重组成的高维空间。梯度矢量为负值的地方,意味着山地中最陡峭的下坡方向,一路接近最小值。这个最小值,也就是平均输出偏差最小之处。
在实践中,大多数业内人士都是用一种被称为「随机梯度降低」(SGD - Stochastic Gradient Descent)的算法(梯度降低Grident Descent 是「最小化风险函数」以及「损失函数」的一种经常使用方法,「随机梯度降低」是此类下的一种经过迭代求解的思路——译者注)。每一次迭代包括如下几个步骤:获取一些样本的输入矢量( input vector),计算输出结果和偏差,计算这些样本的平均梯度,根据平均梯度调整相应权重。这个过程在各个从整个训练集中抽取的小子集之上重复,直到目标函数的平均值中止降低。它被称作随机(Stochastic)是由于每一个样本组都会给出一个对于整个训练集( training set)的平均梯度(average gradient)的噪音估值(noisy estimate)。较于更加精确的组合优化技术,这个简单的方法一般能够神奇地快速地找出一个权重适当的样本子集。训练事后,系统的性能将在另一组不一样样本(即测试集)上进行验证,以期测试机器的泛化能力( generalization ability) ——面对训练中从未遇过的新输入,机器可以给出合理答案。
不少当今机器学习的实际应用都在人工设定的特征上使用「线性分类」(linear classifiers)。一个「二元线性分类器」(two-class linear classifier)能够计算出特征向量的「加权和」(weighted sum)。若是「加权和」高于阈值,该输入样本就被归类于某个特定的类别。
二十世纪六十年代以来,咱们就知道线性分类只能将输入样本划分到很是简单的区域中,即被超平面切分的半空间。可是,对于相似图像及语音识别等问题,要求「输入-输出函数」(input–output function)必须对输入样本的无关变化不敏感,好比,图片中物体的位置,方向或者物体上的装饰图案,又好比,声音的音调或者口音;与此同时「输入-输出函数」又须要对某些细微差别特别敏感(好比,一匹白色的狼和一种长得很像狼的被称做萨摩耶的狗)。两只萨摩耶在不一样的环境里摆着不一样姿式的照片从像素级别来讲极可能会很是地不同,然而在相似背景下摆着一样姿式的一只萨摩耶和一只狼的照片在像素级别来讲极可能会很是相像。一个「线性分类器」(linear classifier),或者其余基于原始像素操做的「浅层(shallow)」分类操做是不管如何也没法将后者中的两只区分开,也没法将前者中的两只分到一样的类别里的。这也就是为何「浅层」「分类器(classifiers)」须要一个能够出色地解决「选择性-恒常性困境」( selectivity–invariance dilemma)的「特征提取器」(feature extractor)—— 提取出对于辨别图片内容有意义的信息,同时忽略不相关的信息,好比,动物的姿式。咱们能够用一些常规的非线性特征来加强「分类器」(classifiers)的效果,好比「核方法」(kernel methods),可是,这些常规特征,好比「高斯核」(Gaussian Kernel)所找出来的那些,很难泛化( generalize )到与训练集差异别较大的输入上。传统的方法是人工设计好的「特征提取器」,这须要至关的工程技巧和问题领域的专业知识。可是,若是好的「特征提取器」能够经过「通用学习程序(General-Purpose learning procedure)」完成自学习,那么这些麻烦事儿就能够被避免了。这就是深度学习的重要优点。
![]()
图1| 多层神经网路和反向传播。
a. 一个多层神经网络(如图所示相互链接的点)可以整合(distort)输入空间(图中以红线与蓝线为例)让数据变得线性可分。注意输入空间的规则网格(左侧)如何转被隐藏单元(中间)转换的。例子只有两个输入单元、两个隐藏单元和一个输出单元,但事实上,用于对象识别和天然语言处理的网络一般包含了数十或成千上万个单元。(本节引用改写自 C. Olah (http://colah.github.io/).)
b. 导数的链式法则告诉咱们,两个微小增量(即x关于y的增量,以及y关于z的增量)是如何构成的。x的增量Δx致使了y的增量Δy,这是经过乘以∂y/∂x来实现的(即偏导数的定义)。一样,Δy的变化也会引发Δz的变化。用一个方程代替另外一个方程引出了导数的链式法则( the chain rule of derivatives),即增量Δx如何经过与∂y/∂x及 ∂z/∂x相乘使得z也发生增量Δz。当x,y 和 z都是向量时这一规律也一样适用(使用雅克比矩阵)。
c. 这个公式用于计算在包含着两个隐层和一个输出层的神经网络中的前向传输,每一个层面的逆向传递梯度都构成了一个模组。在每一层,咱们首先计算面向每一个单元的总输入值z,即上一层的输出单元的加权和;而后,经过将一个非线性函数f(.)应用于z来得出这个单元的输出。为了简化流程,咱们忽略掉一些阈值项(bias terms)。在神经网络中使用的非线性函数包含了近些年较为经常使用的校订线性单元(ReLU) f(z) = max(0,z),以及更传统的 sigmoid函数,好比,双曲线正切函数, f(z) = (exp(z) − exp(−z))/(exp(z) + exp(−z)) 和 逻辑函数f(z) = 1/(1 + exp(−z)).
d. 该公式用于计算反向传递。在每个隐藏层中,咱们都会计算每一个单元输出的导数偏差,即上述层中上一层全部单元输入的导数偏差的加权总和。 而后,将关于输出的导数偏差乘以函数f(z)的梯度(gradient),获得关于输入的导数偏差。 在输出层中,经过对成本函数进行微分计算,求得关于输出单元的偏差导数。所以咱们得出结论 yl - tl 若是对应于单元l的成本函数是 0.5(yl - tl) 2 (注意tl是目标值)。一旦∂E/∂zk已知,那么,就能经过yj ∂E/∂zk调整单元j的内星权向量wjk。
![]()
图2 | 卷积网络的内部。一个典型的卷积网络架构的每一层(水平)输出(不是过滤器)应用到一个萨摩耶犬的图像(图2左下方,RGB输入(红绿蓝),下方右侧)。 每个长方形图片都是一张对应于学习到的输出特征的特征地图,这些特征能够在图片的各个位置被侦测到。信息流是从下往上的,低级的特征充做导向性边际检测因子( edge detectors),每一个输出图像类都会被计算出一个分值。ReLU,整流线性单元。
深度学习架构由简单模组多层堆叠而成,所有(或绝大部分)模组都从事学习,大部分会计算非线性的输入输出映射。堆叠架构中的每一个模组都会转换它的输入,同时加强可选择性和所呈现状态的一致性。 经过多个非线性层面(例如,深度5-20层),系统能够实现对于输入数据的极其微小细节的敏感性功能 --- 例如,区别开白色的狼和萨摩耶犬 --- 而且对于较大的无关变量会不敏感(例如,主体周围的环境、姿式、光照条件和周围物体。)
训练多层架构的反向传播算法
从最先的模式识别开始,研究者们就一直试图用可训练的多层网络代替人工设计特征,尽管这种解决方案很简单,直到20世纪80年代中期,它才获得人们的普遍承认。事实证实,多层架构能够经过简单的随机梯度降低法得以训练。只要模组是由它们的输入值及其内部权重构成的相对平滑的函数(relatively smooth functions),人们就可使用反向传播算法来计算梯度。20世纪70至80年代,几个不一样的研究小组分别发现这一方法确实可行、有用。
计算一个目标函数关于一个多层堆叠模组的权重梯度的反向传播过程,只不过是导数链式法则的一个实际应用。其中关键之处在于,关于模组输入值的函数的导数(或梯度),能够借助关于该模组的输出值(或序列模组的输入值)的梯度反向计算出来(图1)。反向传播方程可在全部模组中传播梯度时被反复应用,从顶部(top)(神经网络产生预测的那一层)输出开始,一直到底部(bottom)(被接收外部输入的那一层)。这些梯度一经计算,就可直接计算出关于每一个模组权重的梯度。
深度学习的许多应用,都会使用前馈神经网络架构( feedforward neural network architectures)(图1)——该架构可学习将一个固定大小的输入映射到(例如,一幅图像)到一个固定大小的输出上(例如,每种分类的几率)。从一层到下一层,单元组计算其前一层输入的加权总和,并经过一个非线性函数输出结果。目前,最受欢迎的非线性函数是整流线性单元(ReLU),一个简单的半波整流器f(z) = max(z, 0)。在过去的几十年里,神经网络使用的是更平滑的非线性,好比,tanh(z)或1 /(1 + exp(−z)),但ReLU在多层网络中的学习速度一般更快,可容许在没有无监督预训练(without unsupervised pre-training)的状况下进行深度监督网络训练。不在输入或输出层中的单元一般被称为隐层单元(hidden units)。隐层可被看做是以非线性方式变换输入,从而使全部类别在最后一层变得线性可分( linearly separable by the last layer)(图1)。
20世纪90年代末,神经网络和反向传播被机器学习社区大量遗弃,同时也被计算机视觉和语音识别领域忽略。人们广泛认为,学习有用的、多层级的、几乎不靠先验知识的特征提取器并不现实可行。尤为是,人们一般认为简单的梯度降低法会深陷局部极小的泥潭——在这种权重配置当中,除非进行大的改动,不然很难下降平均偏差。
实践中,对大型网络而言,局部极小几乎不构成问题。不管初始条件如何,系统基本总能获得质量很是类似的解决方案。最近的理论和实证研究结果均有力地代表,总的来讲,局部极小不是一个严重问题。相反,解空间( landscape)充满了大量梯度为0的鞍点( saddle points ),且在多数维度中表面向上弯曲,少数维度中表面向下弯曲。分析结果彷佛代表,向下弯曲的鞍点在总体中占比相对较小,但这些鞍点的目标函数值大多相近。所以,算法陷入这些鞍点(不能继续寻优),可有可无。
2006年先后,加拿大高级研究所(CIFAR)汇集了一批研究人员,他们重燃了人们对深度前馈网络的兴趣。这些研究人员引入无监督学习程序——无需标记数据即可建立特征检测器层。各层特征检测器的学习目标即是在下一层重构或模拟特征检测器(或原始输入)的活动。利用这种重构学习目标来「预训练(pre-training)」几层复杂度递增的特征检测器,深层网络的权重能够被初始化为合理值。接着,最终层的输出单元可被添加到网络顶端,整个深度系统可被微调至使用标准的反向传播。在识别手写数字或检测行人时,特别是当标记的数据量很是有限的时候,这一程序很是有效。
这种预训练的方法的首次重要应用是在语音识别上,这之因此可行归功于便于编程的GPUs的诞生,它让研究人员能够用10到20倍的速度训练神经网络。2009年,这个方法被用来计算一段声音采样中提取短时系数窗口对应的一系列几率值,这些几率值反映出由窗口中帧表示语音各个段落的可能性。在小词汇表的标准语音识别测试上,这种方法的训练效果打破纪录,很快它又发展到打破大词汇表的标准语音测试纪录。
到2012年,2009年以来的各类深度网络一直的获得多个主要语音研究小组持续开发并被布局在安卓手机上。对于较小数据集来讲,无监督预训练有助于防止过拟合( overfitting), 当标注数据样本小( number of labelled examples is small)或须要迁移( in a transfer setting )——有不少源领域的标注数据样本但缺乏目标领域的标注数据样本——的时候,深度网络的泛化( generalization)效果显著提高。深度学习从新得到认识,人们发现,预训练阶段只是小规模数据集的必需品。
然而,还有一种特殊类型的深度前馈网络( deep feedforward network),不只更易训练并且泛化能力要比那些相邻两层彻底相连的神经网络强大不少。这就是卷积神经网络 (ConvNet)。 在神经网络「失宠 」的日子里,卷积神经网络在实践运用中得到许多成功,最近已被计算机视觉领域普遍采用。
卷积神经网络
卷积神经网络最初是用来处理多维数组数据,好比,一张由三个2D数组组成、包含三个彩色通道像素强度的彩色图像。大量的数据模式都是多个数组形式:1D用来表示信号和序列信号包括人类语言;2D用来表示图片或声音;3D表明视频或有声音的图像。卷积神经网络利用天然信号特征的核心理念是:局部链接(local connections),权重共享,池化(pooling)和多网络层的使用。
典型的卷积神经网络的架构(图二)包括一系列阶段:最初的几个阶段由卷积层和池化层组成,卷积层的单元被组织到特征图(feature map)中,每一个单元经过一组被称做滤波器(filter bank)的权值被链接到前一层的特征图的局部数据块。接下来,获得的局部加权和会传递至一个非线性函数,例如ReLU。同一个特征图中的全部单元共享相同的滤波器,不一样特征图使用不一样滤波器。采用这种架构有两方面的缘由。首先,在诸如图像这样的数组数据中,数值与附近数值之间一般是高度相关的,容易生成易被探测到的局部特征(motif)。其次,图像和其余相似信号的局部统计特征一般又与位置无关,易言之,出如今某处的某个特征也可能出如今其余任何地方,所以,不一样位置的单元会共享一样的权值而且能够探测相同模式。数学上,由一个特征图完成的过滤操做是一个离线的卷积,卷积神经网络由此得名。
和卷积层用来探测前一层中特征之间的局部链接不一样,池化层的做用则是对语义类似的特征进行合并。因为构成局部主题的特征之间的相对位置关系不是一成不变的,能够经过粗粒度检测每一个特征的位置来实现较可靠的主题识别。一个池化层单元一般会计算一个或几个特征图中一个局部块的最大值,相邻的池化单元则会移动一列或一行从小块读取输入,这种设计不只减小了数据表征须要的维数,并且也能对数据小规模的偏移、扭曲保持不变。两到三个卷积层,非线性层和池化层被叠加起来,后面再加上更多的卷积和全链接层。在卷积神经网络的反向传播算法和在通常深度网络上同样简单,能让全部滤波器中的权值获得训练。
多数天然信号都是分级组合而成,经过对较低层信号组合可以得到较高层的信号特征,而深度神经网络充分利用了上述特性。在图像中,线条组合造成图案,图案造成部件,部件组成物体。相似的层次结构存在于由声音到电话中的语音及文本造成过程,音素组成音节,音节组成单词,单词组成句子。当输入数据在前一层中的位置有变化的时候,池化操做让这些特征表示对变化具备鲁棒性。
卷积神经网络中的层次的卷积和汇聚的灵感直接来源于视觉神经科学中的简单细胞和复杂细胞的经典概念,而且其总体架构让人想起视觉皮层腹侧通路的LGN-V1-V2-V4-IT层次结构。当向卷积神经网络模型和猴子同时展现相同的画面时,卷积神经网络的高级单元被激活,解释了猴子颞下皮层随机设置的160个神经元的变化。卷积神经网络有着神经认知机的基础,二者的体系结构有些相似,可是,卷积神经网络没有诸如反向传播的那种端对端的监督学习算法。原始的1D卷积神经网络被称为「延时神经网络(time-delay neural net )」,用于识别语音和简单的单词。
早在20世纪90年代初,卷积网络就已有很是普遍的应用 ,最开始延时神经网络被用在语音识别和文档阅读上。文本阅读系统使用了受过训练的延时神经网络以及一个实现了语言约束的几率模型。到20世纪90年代末,该系统可以读取美国超过十分之一的支票。随后,微软发明了许多基于卷积神经网络的光学字符识别和手写识别系统。卷积神经网络在20世纪90年代初就被尝试用于包括脸、手、面部识别的天然图像目标检测中。
使用深层卷积网络进行图像识别
从21世纪初开始,卷积神经网络就被成功用于检测、分割和物体识别以及图像各区域。这些应用都使用了丰富的标签数据,好比,交通标志识别、生物图像(特别是神经连接组学方面)分割、面部探测、文本、行人和天然图像中的人体的检测。近些年来,卷积神经网络的一项重要成功应用就是人脸识别。
值得注意的是,图像能够在像素级别上被标记,这样就能被用于诸如自主移动机器人(autonomous mobile robots)和无人驾驶汽车等技术中。像Mobileye和NVIDIA 这些公司正在将这些基于卷积神经网络的方法应用于即将面世的汽车视觉系统中。其余重要的应用程序涉及到天然语言理解和语音识别。
尽管取得了这些成就,但在2012年ImageNet竞争以前,卷积神经网络在很大程度上并未得到主流计算机视觉和机器学习团体的青睐。当深层卷积网络被应用于来源于包含1000个不一样类型约100万个图像的数据集中,它们取得了惊人的成果,错误率仅是当时最佳方法的一半。该成功源于高效利用了GPUs和ReLUs、一项新的被称为「dropout 」的正规化技术( regularization technique )以及分解现有样本产生更多训练样本的技术。成功给计算机视觉领域带来一场革命。现在,卷积神经网络几乎覆盖全部识别和探测任务,在有些任务中,其表现接近人类水平。最近一个使人震惊的例子,利用卷积神经网络结合递归网络模块来生成图像标题( image captions )(如图3)。
![]()
图3 |从图像到文本。将递归神经网络(RNN)生成的标题做为额外输入,深度卷积神经网络(CNN)会从测试图片中提取表征,再利用训练好的RNN将图像中高级( high-level )表征「翻译成 」标题(上图)。当RNN一边生成单词(黑体所示),一边能将注意力集中在输入图像的不一样位置(中间和底部;块状越亮,给予的注意力越多)的时候,咱们发现,它能更好地将图像「翻译成」标题。
当前的卷积神经网络由10~20层ReLUs,数百万个权值及数十亿个链接组成。两年前,训练如此庞大的网络可能须要数周时间,而随着硬件、软件和算法并行化(algorithm parallelization)的进步,训练时间已经缩短至几个小时。
卷积神经网络的视觉系统良好表现促使包括谷歌、Facebook、微软、IBM、雅虎、推特和Adobe在内的多数主要科技公司以及数量激增的创业公司开始启动研发项目,部署基于卷积神经网络的图像识别产品和服务。
卷积神经网络易于在芯片或现场可编程门列阵(FPGA)中得以高效实现。为了实现智能手机、相机、机器人和无人驾驶汽车上的实时视觉应用,NVIDIA、Mobileye、因特尔、高通和三星等许多公司都正在开发卷积神经网络芯片。
分布式表征和语言处理
深度学习理论显示,与不适用分布式表征的经典学习算法相比,深度网络有两处异常明显的优点。这些优点源于节点权重(the power of composition)以及底层数据生成分布具备适当的组成结构。第一,学习分布式表征可以将经过训练而学习得到的特性值泛化为新的组合(例如,n元特征有2n 组合可能)。第二,深度网络中的表征层相互组合带来了另外一个指数级优点的潜力(指数性的深度)。
多层神经网络的隐藏层学会以一种易于预测目标输出的方式来再现网络输入。一个很好的示范就是训练多层神经网络根据局部文本中的前述语句预测下一个词。文本的每一个词表示成网络中的N分之一贯量,也就是说,每一个成分的值为1,余下的为0。在第一层中,每一个字建立一个不一样模式的激活或单词向量(如图4所示)。在语言模型中,网络中的其余层学习如何将输入的单词向量转化成输出单词向量来预测下一个单词,也能用来预测词汇表中单词做为文本中下一个单词出现的几率。正如学习分布表征符号文本最初展现的那样,网络学习了包含许多激活节点(active components )、且每个节点均可被解释成一个单词独立特征的单词向量。这些语义学特征并无在输入时被清晰表现出来。而是在学习过程当中被发现的,并被做为将输入与输出符号结构化关系分解为微规则(micro-rules)的好方法。当词序列来自一个大的真实文本语料库,单个微规则并不可靠时,学习单词向量也同样表现良好。当网络被训练用于预测新文本中的下一个词时,一些单词向量很是类似,好比Tuesday和Wednesday,Sweden和Norway 。这种表征被称为分布式表征,由于它们的元素(特性)并不是相互排斥,且它们构造信息与观测到的数据变化相对应。这些单词向量由所习得的特性组成,这些特性并不是由科学家们事先决定而是由神经网络自动发现。如今,从文本中习得的单词向量表征被很是普遍地使用于天然语言应用。
表征问题是逻辑启发与神经网络启发认知范式争论的核心问题。在逻辑启发范式中,一个符号实体表示某一事物,由于其惟一的属性与其余符号实体相同或者不一样。它并不包含与使用相关的内部结构,并且为理解符号含义,就必须与审慎选取的推理规则的变化相联系。相比之下,神经网络使用大量活动载体( big activity vectors)、权重矩阵和标量非线性,实现一种快速「直觉 」推断,它是轻松常识推理的基础。
在介绍神经语言模型前,语言统计模型的标准方法并无使用分布式表征:它是基于计算短符号序列长度N(称为N-grams,N元文法)出现的频率。N-grams可能出现的次数与VN一致,这里的V指的是词汇量的大小,考虑到词汇量大的文本,所以须要更庞大的一个语料库。N-grams把每个词做为一个原子单位,所以它不能在语义紧密相关的单词序列中,一律而论,可是,神经语言模型能够实现上述功能,由于它们将每一个单词与真实特征值的向量关联起来,而且语义相关的单词在该向量空间中更为贴近。(如图4)。
![]() ![]()
图4|已完成学习的单词向量的可视化展示。左边介绍了为了建模语言而习得的词汇表征,经过使用 t-SNE算法[103]非线性映射至二维空间中以便于观察。右边是一个由实现英-法互翻的递归神经网络学习短语的二维空间表示。由图可知,语义或排序类似的单词表征映射较为接近 。词汇的分布式表征经过使用反向传播得到,以此来学习每一个单词的表征形式及预测目标数量的功能,好比序列中的后续单词(如语言建模)或者翻译文字的所有序列(机器翻译)。
递归神经网络
最初引入反向传播时,最使人激动的应用即是训练递归神经网络(简称RNNs)。对于那些须要序列连续输入的任务(好比,语音和语言),RNNs是上乘之选(图5)。RNNs一次处理一个输入序列元素,同时维护隐式单元中隐含着该序列过去全部元素的历史信息的「状态向量」。当咱们考虑隐式单元在不一样的离散时间步长的输出,就好像它们是在多层网络深处的不一样神经元的输出(图五,右)如何利用反向传播训练RNNs,一目了然。
RNNs是很是强大的动力系统,但训练它们也被证明存在一些问题,由于反向传播梯度在每一个时间间隔内或增加或降低,所以,一段时间以后一般会致使结果激增或者降为零。
因先进的架构和训练的方式,RNNs不只被证明擅长预测文本中下一个字符或句子中下一个单词,还可应用于更加复杂的任务。例如,某时刻阅读英文句子中的单词后,一个英语的「编码器」网络将被生成,从而帮助隐式单元的最终状态向量很好地表征句子所传达的思想。这种「思想向量(thought vector)」能够做为一个集大成的法语「编码器」网络的初始化隐式状态(或额外的输入),其输出为法语翻译首单词的几率分布。若是从几率分布中选择一个特定首单词做为编码网络的输入,将会输出翻译句子中第二个单词的几率分布,依此类推,直到中止选择为止。整体而言,这一过程是根据英语句子的几率分布而生成的法语单词序列。这种近乎直接的机器翻译方法的表现很快和最早进(state-of-the-art)的方法不相上下,同时引起人们对于理解句子是否须要使用推理发掘内部符号表示质疑。这与平常推理中涉及到根据合理结论类推的观点是匹配的。
除了将法语句子翻译成英语句子,还能够学习将图片内容「翻译」为英语句子(如图3)。编码器是一种在最后隐层将像素转换为活动向量的深度卷积网络。解码器是一种相似机器翻译和神经网络语言模型的递归神经网络。近年来,引起了人们对深度学习该领域的热议。RNNs一旦展开(如图5),可被视做是全部层共享一样权值的深度前馈神经网络。虽然它们的主要目的是长期学习的依赖性,但有关理论和经验的例证代表很难学习并长期储存信息。
为了解决这一问题,一个扩展网络存储的想法出现。第一种方案是采用了特殊隐式单元的LSTM,该天然行为即是长期的保存输入。一种相似累加器和门控神经元的称做记忆细胞的特殊单元:它经过在下一个时间步长拥有一个权值并联接到自身,从而拷贝自身状态的真实值和累积外部信号,但这种自联接是另外一个学习并决定什么时候清除记忆内容的单元的乘法门所操控。
LSTM网络最终被证实比传统的递归神经网络(RNNs)更为有效,尤为是,每个时间步长内有若干层时,整个语音识别系统可以彻底一致地将声学转录为字符序列。目前,LSTM网络及其相关形式的门控单元一样也用于编码与解码网络,并在机器翻译中表现良好。
过去几年里,几位学者提出一些不一样的方案来加强RNNs存储器模块。这些建议包括,神经图灵机——经过加入RNNs可读可写的“相似磁带”的存储来加强网络,而记忆网络中的常规网络经过联想记忆来加强。记忆网络在标准的问答基准测试中表现良好,记忆是用来记住稍后要求回答问题的事例。
除了简单记忆化、神经图灵机和记忆网络被用于一般须要推理和符号操做的任务之外,还能够教神经图灵机「算法」。除此之外,他们能够从未排序的输入符号序列(其中每一个符号都有与其在列表中对应的代表优先级的真实值)中,学习输出一个排序的符号序列。能够训练记忆网络用来追踪一个设定与文字冒险游戏和故事的世界的状态,回答一些须要复杂推理的问题。在一个测试例子中,网络可以正确回答15句版的《指环王》中诸如「Frodo如今在哪?」的问题。
![]()
图5 |一个递归神经网络在时间中展开的计算和涉及的相关计算。人工神经元(例如,隐式样单元分组节点在时间t的标准值下)得到其余神经元的输入——在以前的步骤中(黑色区域呈现,表明一步延迟,如左)。这样,一个递归神经网络可由xt的输入序列元素,映射到一个输出序列与元素ot,每次ot值取决于全部前面的xtʹ(tʹ≤t)。相同的参数(U,V矩阵W)在每步中使用。许多其余结构是可行的,包括一个变体的网络能够生成的输出序列(例如,词语),每个都做为下次的输入步骤。反向传播算法(图1)能够直接应用于计算机图形展开网络,并对全部的标准陈述和参数,计算其总偏差的导数(例如,生成正确的输出序列的对数几率)。
深度学习的将来
无监督学习促进了人们重燃对深度学习的兴趣,可是,有监督学习的成功盖过了无监督学习。虽然咱们没有关注这方面的评论,可是,从长远来看,咱们仍是指望无监督学习可以变得更加剧要。(由于)人类和动物的学习方式大多为无监督学习:咱们经过观察世界来发现它的结果,而不是被告知每一个对象的名称。
人类视觉是一个智能的、基于特定方式的利用小或大分辨率的视网膜中央窝与周围环绕区域对光线采集成像的活跃的过程。咱们但愿机器视觉可以在将来得到巨大进步,这些进步来自于那些端对端的训练系统,并集合卷积神经网络(ConvNets)和递归神经网络(RNNs),利用强化学习来决定走向。结合了深度学习和强化学习的系统尚处在婴儿期,可是,在分类任务上,它们已经超越了被动视觉系统,并在尝试学习操做视频游戏方面,产生了使人印象深入的结果。
将来几年,理解天然语言会是深度学习产生巨大影响的另外一个领域。咱们预测,当它们学习了某时刻选择性地加入某部分的策略,那些使用递归神经网络(RNNs)的系统将会更好地理解句子或整个文档。
最终,人工智能的重大进步未来自将表征学习与复杂推理结合起来的系统。尽管深度学习和简单推理已经用于语音和手写识别很长一段时间了,咱们仍须要经过大量向量操做的新范式替换基于规则的字符表达操做。
|