Deep Learning

来源:互联网 发布:mac电脑防火墙设置 编辑:程序博客网 时间:2024/05/16 11:21

Deep learning

Yann LeCun, Yoshua Bengio & Geffrey Hinton

This REVIEW was received 25 February; accepted 1 May 2015.
Translated 1 Nov 2015.
说明
这篇REVIEW的翻译是在2015年11月份完成的,当时对深度学习的了解还很有限,所以翻译的有很多不到位甚至错误的地方,现在先贴出来,后续再根据这段时间的理解,修改并加入自己所理解的内容。这篇翻译

Deep learning allows computational models that are composed of multiple processing layers to learn representations of data with multiple levels of abstraction. These methods have dramatically improved the state-of-the-art in speech recognition, visual object recognition, object detection and many other domains such as drug discovery and genomics. Deep learning discovers intricate structure in large data sets by using the backpropagation algorithm to indicate how a machine should change its internal parameters that are used to compute the representation in each layer from the representation in the previous layer. Deep convolutional nets have brought about breakthroughs in processing images, video, speech and audio, whereas recurrent nets have shone light on sequential data such as text and speech.
深度学习允许由多个处理层组成计算模型,学习数据的多层次抽象的特征表达。这些方法可以显著地改进最先进的语音识别,视觉物体识别、目标检测和许多其他领域,诸如药物发现和基因组学等。深度学习在一个大型数据集中发现复杂结构

Supervised learning

有监督学习

有监督学习是机器学习的最普通的形式,无论是否深度。举个例子,我们想要建立一个可以对多类图像进行分类的系统,这些图像包含房子,车子,人和宠物等。首先,我们要采集一个包含这些类别的图片的大数据集每张图片被标注为一个类别。在训练阶段,给机器输入图片,输出的是向量形式的scores,这些score与类别一一对应。我们想要期望的那个类别得到最高的score,但这在经过训练之前是不可能发生的。我们计算一个目标函数用来衡量输出的score和实际得到的score之间的误差(或距离)。然后,机器通过修改内部可调参数来是误差降低。这些可调参数,常常被称为weights,是可以被看作“旋钮”的定义了机器输入输出函数的实际值。在一个典型的deep learning 系统中,这些可调的weights和带标签的训练样本的数量可能是数以亿计的。

为了合理地调整权重向量,训练算法计算了一个梯度向量用来表示当每个weight少量增加时误差的增减量。然后,权重向量将被朝着与梯度向量相反的方向调整。

平均所有的训练样本的目标函数可以看作是在高维空间的权值的丘陵景观。负梯度向量方向表示了丘陵景观中的梯度下降最速方向,此时输出误差平均最小。

实际中,大部分开发者采用一种称为随机梯度下降法(Stochastic gradient descent: SGD)的过程。这个过程包含显示一个由若干样本的得到的输入向量,计算输出和误差,并据此调整权重。这个过程在从大数据集中提取的小数据集中不断的重复直到平均目标函数不再下降为止。称之为随机是因为算法在遍历样本时,小数据集都给出平均梯度的一个噪声估计。与更为复杂的优化算法相比,这个简单的过程经常可以迅速找到一个权重的集合,并且速度出奇的快。训练后,系统的表现将通过由另外一组样本构成的测试集来测试。这是用来测试系统的一般性–在给系统输入未训练过的样本时系统能否给出合适的结果。

当前的许多的机器学习应用是对手工特征使用线性分类器。一个两类线性分类器计算一个特征向量组件的加权和。如果加权和超过一个阈值,则将输入分给一个特定的类别。

自从1960年代,我们知道线性分类器只能将输入空间分成非常简单的区域,即由超平面分开的半空间。但图像和语音识别等问题,要求输入输出函数对与输入无关的因素不敏感(如位置的变化,或物体的朝向和亮度,或音高的变化,或说话的口音),而对特定的微小变化非常敏感(如一匹白狼和一条长得像白狼的撒莫依犬的区别) 。在像素级,图片中不同姿势和不同环境中的两条撒莫依犬可能非常不同, 而图片中的相同姿势和相似背景的一条撒莫依犬和一条白狼可能会很相似。一个线性分类器或者浅层分类器操作原始像素几乎不可能区分后两者,而把前两者归为同一类。这就是为什么浅层分类器都需要一个好的特征提取器,用于解决选择不变性的困难—-一个好的特征提取器可以产生一个特征:对于区分十分重要的图像因素具有选择性,而对于诸如动物的姿势等不相关的因素具有不变性。为了是分类器更强大,可以使用非线性特性,比如使用核方法,但是通用的方法如采用高斯核函数的方法不允许学习者远离训练样本来归纳。传统的(约定俗成的)方法是手工设计一个特征提取器,这就要求大量的工程技巧和专业知识。但是如果使用一个通用目标的学习过程可以得到一个好的特征,则这些可以完全避免。这就是深度学习的优势所在。

一个深度学习结构是大量简单模块的多层堆叠,它们当中的所有(或者大部分)都是受学习的,并且它们中的许多要计算非线性的输入输出映射。堆叠中的每个模块通过改变输入来提高特征的选择性和不变性。应用多层非线性层,如深度为5-20层,一个系统可以对输入应用极其复杂的函数,同时实现对微小细节敏感(区分撒莫依犬和白狼),而对不相关的因素的较大变化不敏感,如背景,姿势,光照和周围物体。

Backpropagation to train multilayer architectures

反向传播训练多层结构

从模式识别早期开始,研究人员就将研究目的从手工提取特征转成可训练的多层网络。尽管这种解决方案很简单,但直到1980年代才被广泛理解。事实证明,多层结构可以用简单的梯度下降法训练。只要模块是关于输入和内部权重的相对平滑的函数,我们就可以用反向传播过程(BP)计算梯度。1970年代到1980年代之间数个不同的组织独立发现了这种观点是可实现的并且是有效的。

反向传播过程计算目标函数的梯度无非是导数的链式法则的实际应用,该梯度与多层堆叠的模块的权重有关。一个关键的点,目标的相对于模块的输入的梯度可以由模块的输出(或是后续模块的输入)通过反向操作来计算(Fig.1)。反向传播方程可以重复在所有模块上传播梯度,从在顶层的输出开始,经过所有路径到达底层。其中,顶层用于网络输出预测,底层是外部输入层。一旦这些梯度被计算,就可以直接计算相对于每个模块权重的梯度。

深度学习的许多应用采用前馈神经网络结构(Fig.1),这种结构学习将固定大小的输入(如,图片)映射为固定大小的输出(如,多类中单个类别的概率)。从一层到下一层的过程中,一个单元的集合计算一个上层输入的加权和并将结果通过一个非线性函数传播。目前,最著名的非线性函数是修正线性函数(rectified linear unit: ReLU),就是简单的半波整流器 f(z) = max(z, 0)。在过去的几十年里,神经网络使用更平滑的非线性函数,如tanh(z)或1/(1+exp(-z)),但是在特定的多层网络中,ReLU单元速度要快的多,并且允许训练一个未经预训练的深层有监督网络。输入层和输出层中的单元通常被称为隐单元。隐层可以认为是将输入以非线性方式扭曲,使类别在最后一层线性可分(Fig.1)。
这里写图片描述
这里写图片描述
这里写图片描述

在1990年代后期,神经网络和反向传播很大程度上被机器学习社区背弃,并被计算器视觉和语音识别社区忽略。人们普遍认为,学习有用的,多阶段的,缺乏先验知识的特征提取器是不可行的。尤其是,大家普遍认为简单的梯度下降法在较差的局部极小值时会遭遇瓶颈,因为该处的权值配置为:没有小的变化会导致平均误差的减小。

实际上,较差的局部极小值几乎不会成为大型网络的一个问题。无论初始条件是什么,系统几乎总能达到相似质量的解决方案。最近的理论和实际研究表明,总体来说局部极小不是一个严重问题。相反的,景观图上挤满了大量的梯度为0的鞍点,并且景观图表面在大多数维度上是上升的,剩下的是下降的。分析表明,极少数向下弯曲的方向中存在着大量的鞍点,但是这些鞍点大多有着极相似的目标函数值。因此,算法在哪个鞍点处被卡主并不重要。

对前馈神经网络的兴趣是在2006年左右随着一个由CIFAR组建起来的研究人员组织而恢复的。研究人员介绍了无监督学习的程序,可以创建特征检测层,二不需要标定好的数据。学习特征检测器每一层的目的是能够实现对下一层的特征检测器(或原始输入)的重构或建模。用这个重建目标,经过几层越来越复杂的“预训练”(pre-training),深层网络的权重可被初始化为一个合理值。随后,输出单元的最后一层将被添加到网络的顶端,则整个网络可以用标准的反向传播算法进行微调(fine-turn)。这个工作应用在手写体数字识别和行人检测效果非常好,尤其是当标签数据量非常有限时。

pre-training方法的第一个主要应用是在语音识别领域,并且使用了GPU使其应用成为可能。研究人员可以方便地用GPU编程,并且训练网络的速度得到10-20倍的提升。2009年,该方法被用来将提取自声波的系数的短时间窗到一个各种语音片段的概率集合,这些语音片段可能是用窗口中心框架来表示的。它在一个标准语音识别数据集上测试取得破纪录的结果,从测试小词汇量迅速发展到测试大词汇量并破纪录的结果。到了2012年,从2009年开始深层网络的版本被各大主要的语音识别研究组发展,并成功应用到安卓手机上。对于小的数据集,无监督pre-training可以避免过拟合,并且对于少量的带标签的样本,或在一个传输设定有显著更好的通用性。对于传输设定,我们有大量的用于“源”任务的样本,但极少量的“目标”任务的样本。一旦深度学习得到平反,事实证明,只有小数据集才需要pre-training。

然而,有一种比相邻层之间的全连接网络更容易训练和更好的一般化的深度,前馈网络。这就是卷积神经网络(ConvNet)。它在神经网络失宠时期,取得了许多实际的成功,并且最近在计算机视觉社区得到了广泛采用。

Convolutional neural networks

卷积神经网络

ConvNets被设计用来处理以多个阵列形式输入的数据,例如,一张彩色图片由三个分别包含三个颜色通道的像素强度的2D阵列组成。许多数据模式都是多这列形式:1D表示信号或序列,包括语言序列;2D表示图像或音频频谱;3D表示视频或立体图像(volumetric images)。ConvNets利用自然信号的属性的背后有四个关键思想:本地连接,共享权值,池化和多层的使用。

一个典型的ConvNets(Fig.2)是有一些列的阶段构成的。最开始的两个阶段包含两种类型:卷积层和池化层。卷积层的单元是由特征图组成成的,在其内部,每个单元都通过一个被称为滤波器组(filter bank)的权重集合被连接到上层特征图的局部patch。然后,局部加权和通过非线性函数(如,ReLU)进行传递。一个特征图中的所有的单元共享相同的滤波器组。同一层的不同的特征图使用不同的滤波器组。这种架构的原因是双重的。第一,阵列数据(如,图片)的局部组织通常是高度相关的,形成很容易被检测出来的局部图案(motif)。第二,图像或信号的局部统计数据与位置无关。换句话说,如果一个图案会出现在一张图片的一个组件,那么它可能会出现在任何地方,因此出现了操作单元的思想:在不同的位置共享相同的权重,在一个阵列的不同的组件使用相同的检测模式。数学上,对一个特征图进行滤波操作实际上是离散卷积,因此得名。

虽然卷积层的作用是检测前一层特征的局部连接,池化层的作用是将语义上相似的特征合并成一个。由于形成了图案的特征的相对位置可以稍微变化,可以通过粗粒化每个特征的位置来实现图案的可靠检测。一个典型的池化单元,计算一个特征图(或几个特征图)的局部patch的最大值。邻近的池化单元采用由一个或以上的行或列偏移的patch作为输入,从而降低了特征的维度,并且得到了小变化和失真的不变性。两个或三个阶段的卷积,非线性和池化的堆叠,紧接着是更多的卷积和全连接层。BP梯度通过ConvNet和通过一个常规的深层网络一样简单,允许所有滤波器组的所有权重被训练。

深层神经网络利用的这样一种属性,许多自然信号由层次结构组成,结构中,高层特征包含许多低层特征。在图像中,边缘的局部组合形成图案,图案集合成组件,组件组成物体。在语音和文本中存在类似的层次结构,从声音到手机、音素、音节、单词和句子。池化层允许当上一层的元素在位置和外观上不同的时候特征有少量改变。

ConvNets中的卷积层和池化层的灵感直接来自于视觉神经科学的简单细胞到复杂细胞的经典概念。而整个网络的结构让人联想到LGN-V1-V2-V4-IT视觉皮层腹侧通路中的层次结构。当ConvNet和猴子被给予相同的图片时,ConvNet中的高层单元的激活程度达到了猴子的颞下皮质160 神经元随机集的方差的一半。
神经认知机和ConvNet的结构是类似的,但它没有一个端到端的监督学习算法,如BP算法。一个原始的1D ConvNet被称为时延神经网络,被用于音素和简单单词的识别。

从1990年代初期开始,已经存在了大量的卷积网络的应用,始于用于语音识别和文档阅读的时延神经网络。文档阅读系统使用了ConvNet和一个实施了语言约束的概率模型的结合来共同训练。到了1990年代末期,这个系统读了美国10%的支票。后来微软部署了大量的基于ConvNet的光学字符识别系统和手写识别系统。在1990年代早起,ConvNet也进行了在自然图片中的目标检测实验,包括人脸和手,用于人脸识别。
这里写图片描述

Image understanding with deep convolutional networks

深度卷积网络用于图像理解

21世纪早起,ConvNet已经被成功应用于图像中目标和区域的检测、分割和识别。这些任务的标签数据都相对丰富,如,交通标志识别,生物图像(特别是对于神经)的分割,以及自然图片中人脸、文本、行人和人体的检测。人脸识别是ConvNet近期的主要成功实践。

重要的是,可以对图像进行像素级标注,这将导致技术的实际应用,包括自主移动机器人和自动驾驶汽车。Mobileye和NVIDIA等公司正在他们即将到来的汽车视觉系统中使用基于ConvNet的技术。其它实际应用也越来越重要,包括自然语言理解和语音识别 。

尽管取得了这些成就,直到2012年ImageNet比赛之前,ConvNet很大程度上还是被主流计算机视觉和机器学习社区遗弃。当深度卷积神经网络被应用于网上获取的包含1000个不同类别,大约一百万张图片的大数据集上,并取得了惊人的成绩,错误率比竞赛中最好的方法降低了几乎一半。这一成功来自于有效地使用GPU,ReLUs,被称为dropout的一个新的正则化方法(regularization),以及通过对已存在样本的变形得到更多的训练样本的技术。这一成功带来了计算机视觉的一个革命,ConvNet现在几乎是所有的识别和检测任务的主要方法,在某些任务中甚至逼近人类的表现。最近一个几号的示范是结合ConvNet和递归网络模块实现图像字幕生成(Fig.3)。

最新的ConvNet架构的单元(unit)之间有着10到20层的ReLUs,数以亿计的权重(weight)和数十亿的连接。而训练如此庞大的网络,若在两年前需要耗费数周时间,软硬件的进步以及算法并行化的实现将训练时间降低到几小时内。

基于ConvNet的视觉系统的表现已经引起大多数的主要科技公司,包括Google,Facebook,Microsoft,IBM,Yahoo!,以及数量迅速增加的初创公司开始研究和开发项目,并部署基于ConvNet的图像理解产品和服务。

ConvNet很容易适合高效的芯片或现场可编程逻辑门阵列的实现。一些公司如NVIDIA,Mobileye,Intel,高通和三星都在研发ConvNet芯片,以便在智能手机、相机、机器人和自动驾驶汽车上实现实时的视觉应用。
这里写图片描述
这里写图片描述

Distributed representations and language processing

分布式特征表示和语言处理

深度学习理论表明,使用了分布式特征表示的深层网络相对于经典的学习算法来说,有两个不同指数优势(exponential advantage)。这两种优势产生于组合能力,并且取决于具有合适组件化结构的底层数据生成分布。第一,学习分布式特征表示可以推广到训练过程中已学得的特征之外的新组合(例如,n个二进制特征可能有2^n个组合)。第二,一个深层网络中的特征构成层带来另一个潜在的指数优势(深度指数)。

多层神经网络的隐层以一种方式来学习网络的输入的特征表示,使其易于预测目标输出。这在一个从已有的单词的局部上下文来预测序列中的下一个单词的多层神经网络中得到了很好的证明。上下文中的每个单词都在网络中被表示成一个one-of-N向量,即,一个component的值为1,其它的为0。在第一层,每个单词产生不同模式的激活(activitions),或一个词向量(Fig.4)。在语言模型中,网络的其它层学习将输入的词向量转化成一个用于预测下一个单词的词向量,这可以用来预测词汇(vocabulary)中任何一个可能成为下一个单词的概率。网络学习包含很多激活成分(还是词向量?)的词向量,每个激活成分都可以被表示成一个单词的独立的特征,第一次在符号的分布式特征学习的上下文中得到了证明。这些予以特征没有在输入时明显地显示出来。这些特征通过学习过程被发现,是将输入和输出符号间的结构化关系因式分解为多个“micro-rule”的一种很好的方式。当单词序列来自于真实文本大型语料库,独立的micro-rule是不可靠的时候,词向量学习方法被证明仍然可以很好的工作。当训练来预测一个新闻故事中的下一个单词时,例如,周二和周三的词向量会非常相似,就像瑞典和挪威。这样的表示被称为分布式表示,因为它的元素(或特征)并不互相排斥,并且它们的许多配置(configuration?)与可观测数据的变化相对应。这些词向量组成的特征不是由专家提前决定的,而是由神经网络自动发现的。从文本中学习单词的向量表示,现在已经被广泛使用在自然语言处理应用。

特征表示的问题在于逻辑启发的和神经网络启发的认知模式之间的辩论核心。逻辑启发模式中,符号的一个实例是判断它与其他符号实例相同或不同的唯一属性。它没有任何与使用相关的内部结构,并且推论符号时,它们必须被绑定到明智的选择的推理规则中的变量。相比之下,神经网络只使用大的激活向量,大的权重矩阵和标量非线性来执行快速直观的推断的类型支撑轻松常识推理。

在介绍神经语言模型之前,标准的语言的统计建模并没有使用分布式特征表示:它是基于对长度到N的短符号序列(称为N-gram) 出现的频率计数。可能的N-gram的数量是V^N的量级,其中V是词汇尺寸,所以若将超过几个单词的上下文考虑在内的话将需要非常大的语料库。N-gram把每个单词单做一个原子单元,因此它们不能一般化到单词的语义相关序列。但是神经语言模型却可以做到,因为它把每个单词和一个实际值向量关联,并且在向量空间中语义上相关的单词最终会接近对方(Fig.4)。
这里写图片描述

Recurrent neural networks

递归神经网络

当首次引入BP算法时,它最有意思的应用就是用于训练递归神经网络(RNNs)。对于序列输入的任务,如语音和语言,使用RNNs往往有更好的效果(Fig.5)。RNNs一次处理输入序列中的一个元素,在隐单元中保持一个“状态向量”,状态向量中隐含地包含了序列中的旧的元素的所有历史信息。当我们考虑隐单元以不同的时间步长输出时,就像它们是深层的多层神经网络的不同神经元的输出一样(Fig.5 right),我们如何应用BP算法来训练RNNs就变得十分清楚。

RNNs是非常强大的动态系统,但是训练它们是个问题,因为反向梯度在每个时间步长要么扩大要么缩小,因此,经过若干时间步长后它们要么爆发要么消失。

得益于他们在结构上的改进,RNNs可以非常好地估计文本中的下一个字符或序列中的下一个单词,但是它们也可以被用于更加复杂的任务。例如,在一次读一个单词读完一个英语句子后,可以训练一个英语编码器网络,以便隐单元的最后的状态向量可以很好的表示句子的思想。然后,这个思想向量可以被用来作为(或作为额外输入到)一个共同训练的法语解码器的一个隐单元的初始状态,这个解码器输出法语翻译中的第一个单词的概率分布。如果从该分布中选出一个特定的第一个单词并作为译码器网络的输入,网络将输出翻译中第二个单词的概率分布,以此类推直到全部停止。总的来说,此过程产生单词序列是根据一个依赖于英语序列的概率分布。这种十分幼稚的机器翻译方式迅速发展成为与最先进成果具有竞争力,这引起了人们对理解一个句子是否需要由推理规则操作的内部符号表达这样的东西的怀疑。更通用的观点认为日常推理涉及很多提供合理性结论的同时对比。

我们可以不将一个法语句子翻译成一个英语句子,而是学着将一张图片所表达的意思“翻译”成一个英语句子(Fig.3)。这里用到的编码器是一个深层的ConvNet,可以在最后一个隐层中将像素转变成一个活动向量(activity vector)。解码器用的是一个类似于机器翻译和自然语言建模中使用的RNN。最近,这类系统引发了洪水般的兴趣(见ref.86中的例子)。

RNNs,一旦按时间展开(Fig.5),可以被看作是一个非常深的前馈网络,网络中所有层共享相同的权值。虽然,它们的主要目的是学习长期依赖,但是,理论和实际证据表明过长地储存信息是非常困难的。

为了改进这一点,一个想法是用一个显式的存储器(memory)来增强网络。这个想法的第一个提议是使用特殊隐层的LSTM网络(Long Short-term Memory),长期记忆输入是该网络的自然行为。这个特殊的隐单元被称为记忆细胞(memory cell),它的功能就像一个蓄电池或门控的渗漏神经元:它在下一个时间步时有一个权值为1的自连接,因此,它复制了自己的实值状态并记录了外来信号,但是,该自连接是由另一个单元门控乘法的,它决定着何时清空存储器的内容。

LSTM网络随后被证明比传统的RNNs更加高效,尤其是当每一个时间步有若干层,可以实现一个从声学到自字符序列转录的一个完整的语音识别系统。LSTM网络或相关的门控单元,目前在机器翻译中的编码器和译码器网络中也有很好的表现。

过去的一年里,许多作者对用存储器模块增强RNN网络这个问题提出了不同建议。提议包括神经图灵机(Neural Turing Machine),该网络用一个“带状”的存储器和来增强,RNN可以选择读或写存储器;以及存储器网络(memory network),一个常规网络可以用一种联想存储器来增强。存储器网络在问题回答标准数据集上取得了优秀表现。存储器用来记忆一个故事(story),即网络随后被要求回答问题。

除了简单的记忆之外,神经图灵机和存储器网络也被应用于通常要求推论和符号处理的任务。神经图灵机可以学“算法”。除了其他事项外,当输入一个无序的符号序列时,它们可以输出一个符号的有序列表。无需序列中,每个符号都伴随一个表明符号在列表中的优先级的真实数值。存储器网络可以被训练来跟踪世界上类似于文字冒险游戏的设置,并且在阅读完一个故事后,它们可以回答需要复杂推理的问题。在一个测试案例中,给网络输入15句版本的《魔戒》,并正确地回答了类似“佛罗多在哪里?”这样的问题。
这里写图片描述

The future of deep learning

深度学习的未来

无监督学习在振兴深度学习的研究兴趣上起到催化剂作用,但已经被纯监督学习取得的成功盖住了。虽然在这篇Review中,我们并没有关注它,从长远来看,我们仍然期望务监督学习变得更重要。人类和动物的学习很大程度上是无监督的:我们通过观察来发现这个世界的结构,而不是被告知每个物体的名字。

人类的视觉是一个活跃的过程,用一个带有大范围低分辨环绕的小区域高分辨的视网膜中凹,以一种智能的、特定任务的方式持续采样光学阵列。我们期望将来大部分的视觉处理来自于端到端训练的系统,并结合了ConvNet和由强化学习(reinforcement learning)决定走向的RNNs。结合深度学习和强化学习的系统还处于起步阶段,但它们已经在分类任务上超过被动学习系统,并在学习玩许多不同游戏方面产生了令人印象深刻的结果。

自然语言理解是未来几年将被深度学习影响巨大的又一领域。我们期望使用RNNs来理解句子或整个文档的系统,在采用一次有选择地添加一个部分的学习策略后将会变得更好。

最终,人工智能的主要进步将通过结合了表达学习(representation learning)和复杂推论(complex reasoning)的系统来实现。虽然,深度学习和简单的推论已被用在语音和手写体识别中很久了,仍然需要一个新的模式(paradigm)来替代原来通过操作大型向量的基于规则的操作。

0 0
原创粉丝点击