Deep learning(自然杂志文章)
原文链接:https://www.nature.com/articles/nature14539
作者:Yann LeCun 1,2 , Yoshua Bengio 3 & Geoffrey Hinton
深度学习是通过多层处理的计算模型,用来学习具有多个抽象级别的数据表达(分布式表达)。这些方法已经在图像,语音,物品检测和其他领域上运用。深度学习可以通过反向传播算法发现大型数据中的复杂结构,以指示机器如何改变内部参数,以用于根据上一层的表示计算当前层的表示。
深度卷积网络在图像,视频,语音和音频领域取得了突破,而且,RNN网络已经显示了在序列型数据,如文本,闪耀着曙光。
正文内容
机器学技术为现代社会提供了动力:从网络搜索到社交网络内容的过滤,在到电子商务网站的推荐,并越来越多地出现在相机和智能手机等消费类产品中。 机器学习系统用于识别图像中的对象,将语音转换为文本,将新闻项目,帖子或产品与用户兴趣相匹配,并选择相关的搜索结果。 这些应用程序越来越多地使用一类称为深度学习的技术。
传统的机器学习技术在处理原始形式的自然数据的能力方面受到限制。数十年来,构建模式识别或机器学习系统需要仔细的工程设计和相当的领域专业知识来设计一个特征提取器,将原始数据(如图像的像素值)转换为合适的内部表示或特征向量学习子系统(通常是分类器)可以检测或分类输入中的模式。
表示学习是一组方法,它允许机器获得原始数据并自动发现检测或分类所需的表示。深度学习方法是具有多层次表示的表示学习方法,通过组合简单但非线性的模块获得,每个模块都将较低级别的表示(从原始输入开始)转换为更高级别的表示抽象层次。有了足够的这种转换的组合,就可以学习非常复杂的功能。对于分类任务,更高层次的表示扩大了对歧视很重要并抑制不相关变化的输入方面。例如,图像以像素值阵列的形式出现,并且第一表示层中的学习特征通常代表图像中特定取向和位置处存在或不存在边缘。第二层通常通过识别特定的边缘布置来检测图案,而不管边缘位置的小变化。第三层可将图案组装成对应于熟悉对象的部分的较大组合,并且后续层将检测对象作为这些部分的组合。深度学习的关键方面是这些特征层不是由人类工程师设计的:他们是通过使用通用学习程序从数据中学习的。
深度学习在解决多年来困扰人工智能社区的问题方面取得了重大进展。事实证明,他们擅长发现高维数据中错综复杂的结构,因此可应用于科学,商业和政府等众多领域。除了在图像识别和语音识别中打破记录之外,它在预测潜在药物分子的活性,分析粒子加速器数据,重建脑电路以及预测非编码DNA突变对基因表达和疾病的影响。也许更令人惊讶的是,深度学习对自然语言理解1中的各种任务,特别是主题分类,情感分析,回答系统和语言翻译,产生了极其有希望的结果。
我们认为深度学习在不久的将来会有更多的成功,因为它只需要很少的手工设计,所以它可以很容易地利用可用计算和数据量的增加。目前深度学习领域不断出现的新的学习算法和架构将会加速这一进程。
监督学习
机器学习最常见的形式,无论是否deep,都是监督学习。想象一下,我们想要建立一个可以将图像分类为包含房屋,汽车,人或宠物的系统。我们首先收集房屋,汽车,人和宠物图像的大型数据集,每个数据都贴上对应的标签。在训练过程中,机器会输入一张图像,并以分数向量形式输出,每个分类一个数值。我们希望所需类别具有所有类别中的最高分数,但这在训练之前不太可能发生。我们计算一个目标函数,用于度量输出分数与原始标签之间的误差(或距离)。机器然后修改其内部可调节参数以减少此错误。这些可调参数通常称为权值,它们是可以看作是定义机器输入输出功能的“旋钮”的实数。在一个典型的深度学习系统中,可能有数以百万计的这些可调权重,以及数亿个用于训练机器的有标签样本。
为了适当地调整权重向量,学习算法计算梯度向量,对于每个权重,梯度表示错误增加减少的最快方向。然后向与梯度向量相反的方向调整
在所有训练样本上平均的目标函数可以看作是权值的高维空间中的一种丘陵景观。负梯度矢量表示该景观中最陡下降的方向,使其接近最小值,其中输出误差平均较低。
实践中,大多数从业人员使用称为随机梯度下降(SGD)的方法。这包括显示几个样本(batch)的输入向量,计算输出和错误,计算这些示例的平均梯度,以及相应地调整权重。从训练集中重复许多批次的过程直到目标函数的平均值停止下降。它被称为随机因为每个小例子集都给出了所有例子中平均梯度的有噪音的估计。与更复杂的优化技术相比,这个简单的过程通常会出人意料地快速找到一组好的权重。在训练之后,系统的性能是通过称为测试集的一组不同的例子来测量的。这用于测试机器的泛化能力 - 它能够对训练期间从未见过的新输入产生合理的答案。
机器学习的许多当前实际应用都使用线性分类器,适用在手工设计的特征。二元线性分类器计算特征向量分量的加权和。如果加权总和高于阈值,则输入被分类为属于特定类别。
自20世纪60年代以来,我们已经知道,线性分类器只能将其输入空间划分为非常简单的区域,即由超平面分隔的半空间。但是,诸如图像和语音识别之类的问题需要输入 - 输出功能对输入的无关变化(诸如对象的位置,方向或照明的变化,或者语音的音高或口音的变化)不敏感,而非常对特定的微小变化敏感(例如,白狼和一种叫做萨摩耶的狼类白色狗的区别)。在像素级别,不同姿势和不同环境中的两个萨摩耶犬的图像可能彼此非常不同,而萨摩耶犬和狼在相同位置和相似背景下的两幅图像可能彼此非常相似。线性分类器或任何其他“浅”分类器在原始像素上运行时,无法区分后两者,而将前两者归入同一类别。这就是为什么浅的分类器需要一个好的特征提取器来解决选择性不变的困境 —— 一个产生对图像方面有选择性的,对辨别很重要的表示的方法,但它对不相关的方面是不变的,例如动物。为了使分类器更强大,可以像使用核方法解决非线性特征的问题,但是像高斯内核那样的通用特征不允许学习者远离训练例子。传统的选择是手工设计好的特征提取器,这需要大量的工程技术和领域专业知识。但如果使用通用学习算法可以自动学习好的特征,就可以避免这种情况。这是深度学习的关键优势。
深度学习体系结构是一个简单模块的多层栈,所有(或大部分)这些模块都需要学习,其中许多模块计算非线性输入输出映射。堆栈中的每个模块转换其输入以增加表示的选择性和不变性。对于多个非线性图层,例如5到20的深度,系统可以实现其输入的极其复杂的功能,这些功能同时对细微的细节(区分萨摩耶和白狼)敏感,并且对大量不相关的变化(如背景,姿势,照明和周围的物体不敏感。
图1: 多层神经网络和反向传播。
深度学习的许多应用都使用前馈神经网络体系结构(图1),该体系结构学习将固定大小的输入(例如图像)映射到固定大小的输出(例如,几个类别中的每一个的概率) 。为了从一层到下一层,一组单元计算来自前一层的输入的加权和,并通过非线性函数传递结果。目前,最流行的非线性函数是整流线性单元(ReLU),它只是半波整流器f(z)= max(z,0)。在过去的几十年中,神经网络使用更平滑的非线性,例如tanh或sigmoid,但ReLU通常在多层网络中学习速度更快,允许训练深度监督网络没有无监督的预训练。不在输入或输出层中的单位通常称为隐藏单位。隐藏层可以看作是以非线性方式扭曲输入,使得类别在最后一层可以线性分离(图1)。
在20世纪90年代后期,神经网络和反向传播很大程度上被机器学习社区所遗弃,并被计算机视觉和语音识别社群所忽视。人们普遍认为,学习有用的,多阶段的,特征提取器,但很少有先验知识是不可行的。特别是,人们普遍认为简单的梯度下降会困在局部最优解中,对于这种情况下,不会有小的变化会降低平均误差(梯度更新停止)。
实际上,局部最优解很少是大型网络的问题。无论初始条件如何,该系统几乎总能达到非常类似的好的解决方案。最近的理论和实证结果强烈表明局部最小值一般不是一个严重问题。相反,优化曲面上总是充满了大量的鞍点,其中梯度为零,并且曲面在大多数维度上向上弯曲,并在剩下的位置向下弯曲。分析似乎表明,在非常多的情况下,只有很少的向下弯曲方向的鞍点出现,但几乎所有鞍点位置的目标函数值都非常相似。因此,算法卡住哪个鞍点并不重要。
一些由加拿大高级研究所(CIFAR)召集的研究人员在2006年左右恢复了对深前馈网络的兴趣。研究人员介绍了无监督学习过程,可以创建特征检测器层而不需要标记数据。学习每层特征检测器的目的是为了能够重建或模拟下面图层中的特征检测器(或原始输入)的活动。通过使用这个重建目标对多个逐渐更复杂的特征检测器进行“预先训练”,深度网络的权重可以初始化为合理的值。然后可以将最后一层输出单元添加到网络顶部,并且可以使用标准反向传播对整个深层系统进行微调。这对识别手写数字或检测行人非常有效,特别是当标签数据量非常有限情况下。
这种预训练方法的第一个主要应用是语音识别,它可以通过快速图形处理单元(GPU)的出现而实现,这些单元便于编程并且允许研究人员以10或20倍的速度训练网络。在2009年,该方法被用来将从声波中提取的系数的短时间窗口映射到可能由窗口中心的帧表示的各种语音片段的一组概率。它在标准语音识别基准测试上取得了创纪录的成绩,该基准测试使用了一个小词汇表,并且很快开发出来,可以在大型词汇表上创造破记录的结果。到2012年,许多主要演讲组织正在开发2009年以来的deep net版本,并且已经部署在Android手机中。对于较小的数据集,无监督的预训练有助于防止过拟合,从而在标记示例的数量很少时导致显着更好的泛化,或者在传输设置中我们有许多“源”任务的示例,但很少一些“目标”任务。一旦深度学习得到修复,事实证明,预训练阶段只需要小数据集。
但是,有一种特殊类型的深层前馈网络比相邻层之间具有完全连接性的网络更容易训练和推广。这是卷积神经网络(ConvNet)。它在神经网络不受欢迎的时期取得了许多实际成功,并且最近已被计算机视觉社区广泛采用。
Convolution neural networks
ConvNets被设计为处理以多个阵列形式出现的数据,例如由三个包含三个颜色通道中的像素强度的二维阵列组成的彩色图像。许多数据模式都是以多个数组的形式存在的:1D用于信号和序列,包括语言; 2D用于图像或音频频谱图;和3D用于视频或体图像。 ConvNets背后有四个关键思想,它们充分利用自然信号的特性:局部连接,共享权重,池化操作和多层结构。
典型的ConvNet的架构(图2)被构建为一系列阶段。前几个阶段由两种类型的层组成:卷积层和池化层。卷积层中的单元输出被组织在特征映射中,其中每个单元通过一组称为滤波器组的权重连接到前一层的特征映射中的局部片。这个局部加权和的结果之后通过诸如ReLU的非线性函数。feature map中的所有单元共享同一个滤波器组。同一层中的不同特征映射使用不同的滤波器得到的。这种架构的原因是双重的。首先,在图像等阵列数据中,局部值组通常高度相关,形成易于检测的独特局部图案。其次,图像和其他信号的本地统计数据对位置不变。换句话说,如果一个图案可以出现在图像的一个部分,它可能出现在任何地方,因此不同位置的单元共享相同的权重,并在阵列的不同部分可以检测到相同的图案。在数学上,由特征映射执行的过滤操作是离散卷积,因此是名称。
尽管卷积层的作用是检测来自前一层的特征的局部连接,但是池化层的作用是将语义相似的特征合并成一个特征。因为形成图案的特征的相对位置可能有所不同,所以可通过检测图案粗纹理化的每个特征的位置来完成。典型的池化单元计算一个特征地图(或几个特征地图)中局部区域单元的最大值。相邻的池化单元从多于一行或一列移动的块中获取输入,从而减少该表示的维度并创建小变化和扭曲的不变性。卷积,非线性和池化的两个或三个阶段被堆叠,然后是更多的卷积和完全连接的层。通过ConvNet反向传播梯度与通过常规深层网络一样简单,从而允许对所有滤波器组中的所有权重进行训练。
深层神经网络利用了许多自然信号是层次化结构的属性,其中更高层次的功能是通过组合较低层次的功能获得的。在图像中,边缘的局部组合形成图案,图案组装成部分,并且部分形成目标。从声音,音素,音节,单词和句子的语音和文本中存在类似的层次结构。当前一层中的元素在位置和外观上有所不同时,池化操作可以使得到的表示变化很小。
ConvNets中的卷积和池化层直接受到视觉神经科学中简单细胞和复杂细胞的经典概念的启发[43],整体结构让人联想到视觉皮质腹侧通路中的LGN-V1-V2-V4-IT层次 。当ConvNet模型和猴子显示相同的图像时,ConvNet中高级单元的激活解释了猴子颞颞叶皮质中随机160个神经元的一半方差。 ConvNets的根源在于可识别,其架构有点类似,但没有端到端的监督学习算法,如反向传播。被称为时间延迟神经网络的原始1D ConvNet被用于识别音素和简单单词。
回溯到20世纪90年代早期的卷积网络有许多应用,从用于语音识别文档阅读的时间延迟神经网络开始。文件阅读系统使用ConvNet与实施语言约束的概率模型共同训练。到20世纪90年代后期,这个系统读取了美国所有支票的10%以上。 Microsoft 后来部署了一些基于ConvNet的光学字符识别和手写识别系统。 ConvNets在20世纪90年代早期还对自然图像中的物体检测进行了试验,包括脸部和手部以及脸部识别。
Image understanding with deep convolutional networks
自21世纪初以来,ConvNet已经在图像中的物体和区域的检测,分割和识别方面取得了巨大的成功。这些都是标记数据相对充足的任务,例如交通标志识别,尤其是连接组学的生物图像的分割,以及自然图像中人脸,文本,行人和人体的检测。 ConvNets最近取得的一项重大成就是人脸识别。
重要的是,图像可以在像素级进行标记,这将在技术上得到应用,包括自主移动机器人和自动驾驶汽车。 Mobileye和NVIDIA等公司正在即将推出的汽车视觉系统中使用这种基于ConvNet的方法。其他重要的应用涉及自然语言理解和语音识别。
尽管取得了这些成功,但ConvNets在2012年ImageNet竞赛之前一直被主流计算机视觉和机器学习社区所抛弃。当深度卷积网络应用于包含1,000个不同类别,大约100万张图像的数据集时,他们取得了令人瞩目的成果,几乎将之前最好的方法的误差率减半。这种成功来源于GPU的高效使用,ReLU,一种新正则化技术Dropout,以及通过变形现有技术来生成更多训练样例的技术。这一成功带来了计算机视觉方面的革命; ConvNets现在是几乎所有识别和检测任务的主要方法,并且在某些任务上接近人的表现。最近的一个惊人的演示结合了ConvNet和经常性网络模块来生成图像标题(图3)。
最近的ConvNet体系结构具有10到20层,数以亿计的权重和单单元之间数十亿的连接。 尽管训练这种大型网络可能需要两周时间,但硬件,软件和算法并行化的进展已将训练时间缩短到几个小时。
基于ConvNet的视觉系统的性能已经导致包括Google,Facebook,微软,IBM,雅虎,Twitter和Adobe在内的大多数主要科技公司,以及数量迅速增加的初创公司启动研发项目,并且部署基于ConvNet的图像理解产品和服务。
ConvNets很容易在芯片或现场可编程门阵列66,67中实现高效的硬件实现。 许多公司如NVIDIA,Mobileye,Intel,Qualcomm和三星正在开发ConvNet芯片,以实现智能手机,相机,机器人和自动驾驶汽车的实时视觉应用。
Distributed representations and language processing(分布式表示和预言过程)
深度学习理论表明,与不使用分布式表示的传统机器学习的算法相比,深度网络具有两种不同的指数级优势。
- 通过分布式表示,可以对训练过程学习特征进行新的组合。(例如,n个二元特征可能有2 n个组合)
- 在深度学习中的层次化表示
多层神经网络的隐藏层学会以一种方式来表示网络的输入,以便于预测目标输出。通过训练一个多层神经网络来预测下一个词的顺序,从早期单词的本地语境中可以很好地证明这一点。上下文中的每个单词作为one hot 向量传递给给网络,即一个位置的值为1,其余为0.在第一层中,每个单词创建不同的激活模式,或者单词向量(图4)。在语言模型中,网络的其他层学习将输入的单词向量转换为预测的下一个单词的输出单词向量,这可以用来预测词汇表中任何单词出现为下一个单词的概率。网络学习包含许多激活部分的单词向量,每个单词部分都可以被解释为单词的区分特征,正如在学习符号的分布式表示的上下文中首先证明的那样。这些语义特征在输入中没有明确表示。学习过程发现它们是将输入和输出符号之间的结构化关系分解为多个“微观规则”的好方法。当单词序列来自大量真实文本并且单个微观规则不可靠时,学习单词向量也表现得很好。例如,在训练预测新闻报道中的下一个单词时,周二和周三的学习单词向量与瑞典和挪威的单词向量非常相似。这种表示称为分布式表示,因为它们的元素(特征)不是相互排斥的,它们的许多配置对应于观察数据中看到的变化。这些词向量可学习到的特征,这些恩正不是由专家提前确定的,而是由神经网络自动发现的。从文本中学习的单词的向量表示现在在自然语言应用中被广泛使用。
representation 表示
问题是逻辑启发式和神经网络启发式认知范式之间争论的核心。在逻辑启发范例中,符号的一个实例是唯一的属性,它与其他符号实例相同或不相同。它没有与其使用相关的内部结构;并用符号来推理,它们必须在明确选择的推理规则中与变量绑定。相比之下,神经网络只是使用大的激活向量,大权重矩阵和非线性函数来执行快速“直观”推断,这是支持毫不费力的常识推理的基础。
在引入神经语言模型之前,语言统计建模的标准方法没有利用分布式表示:它基于对长度最大为N(称为N-gram)的短符号序列的出现频率进行计数。可能的N-gram的数量约为$V^N$,其中V是词汇量大小,因此考虑到少数词汇的背景需要非常大的训练语料库。 N-gram将每个单词视为一个原子单位,因此它们不能在语义上相关的单词序列间进行概括,而神经语言模型可以因为它们将每个单词与实值特征向量相关联,并且语义相关单词彼此在向量空间中靠近(图4)。
Recurrent neural networks
第一次引入反向传播时,其最令人兴奋的用途是训练递归神经网络(RNN)。对于涉及顺序输入的任务,如语音和语言,通常使用RNN更好(图5)。 RNN一次处理一个输入序列的一个元素,在它们的隐藏单元中保持一个“状态向量”,隐含地包含关于该序列的所有过去元素的历史的信息。当我们考虑不同离散时间步的隐藏单元的输出,就好像它们是深层多层网络中不同神经元的输出一样(图5,右),我们很清楚如何应用反向传播来训练RNN。
RNN是非常强大的动态系统,但是训练它们已被证明是有问题的,因为反向传播的梯度在每个时间步长都会增长或缩小,所以在很多时间步骤中它们通常会爆炸或消失。
由于他们的体系结构以及训练方式的进步,已发现RNN非常善于预测文本中的下一个字符或序列75中的下一个字词,但它们也可以用于为更复杂的任务。例如,一次读一个英文句子一个单词后,可以训练一个英文“编码器”网络,以便其隐藏单元的最终状态向量能很好地表示该句子分布式表达的thought向量。这个thought向量然后可以用作共同训练的法语“解码器”网络的初始隐藏状态(或作为额外输入),其输出法语翻译的第一个词的概率分布。如果从这个分布中选择一个特定的第一个单词并作为输入提供给解码器网络,那么它将输出翻译的第二个单词的概率分布,依此类推,直到选择完全停止。总的来说,这个过程根据依赖于英语句子的概率分布生成法语单词序列。这种看起来相当幼稚的机器翻译的方式很快就成为state-of-the-art的方法,并且这对于理解一个句子是否需要像使用推理规则操纵的内部符号表达式这样的任西引起了严重的怀疑。
它与日常推理涉及许多同时进行类比的观点更相容,每种类比都有助于得出结论的合理性。
可以学会将图像的含义“翻译”为英语句子(图3),而不是将法语句子的含义翻译成英语句子。这里的编码器是一个深层Con-vNet,它将像素转换成最后隐藏层中的活动向量。解码器是一种类似于用于机器翻译和神经语言建模的RNN。近来对这种系统的兴趣激增(参见参考文献86中提到的例子)。
RNN一旦在时间上展开(图5),可以被看作是非常深的前馈网络,其中所有层共享相同的权重。虽然他们的主要目的是学习长期依赖性,但理论和实证证据表明,很难学习长时间存储信息。
为了纠正这一点,一个想法是用明确的存储来扩充网络。这种第一种建议是使用特殊隐藏单元的长期短期记忆(LSTM)网络,其自然行为是长时间记忆输入。一个称为存储单元的特殊单元就像一个累加器或一个门控衰减神经元:它在下一个时间步有一个权重为1的自身连接,因此它复制自己的实值状态并累积外部信号,但是这个自连接被另一个学习决定何时清除内存内容的单元乘上门控值。
随后证明LSTM网络比传统的RNN更有效,特别是当它们在每个时间步上多层处理输入,使得整个语音识别系统从声学到转录中的字符序列在一条流程中完成(end2end)。 LSTM网络或相关形式的门控单元目前也用于在机器翻译上表现如此出色的编码器和解码器网络。
在过去的一年中,一些作者提出了不同的建议,用存储器模块来扩充RNN。提案包括神经图灵机,其中网络通过RNN可以选择从中读取或写入的“磁带”存储器来增强,以及存储器网络,其中常规网络通过一种联想存储器。内存网络在标准问题回答基准测试中表现出色。记忆用于记住后来要求网络回答问题的故事。
除了简单记忆之外,神经图灵机和记忆网络正用于通常需要推理和符号操作的任务。 神经图灵机可以被教授’算法’。 除此之外,当他们的输入由未分类的序列组成时,他们可以学习输出分类的符号列表,其中每个符号伴随有指示其在列表中的优先级的实际值。 记忆网络可以被训练以在类似于文本冒险游戏的设置中跟踪世界的状态,并且在阅读故事之后,他们可以回答需要复杂推断的问题。 在一个测试示例中,网络显示了“指环王”的15个句子版本,并正确回答了诸如“现在佛罗多在哪里?”等问题。
The future of deep learning
无监督学习对恢复对深度学习的兴趣具有促进作用,但后来被纯监督学习的成功所掩盖。虽然我们在本文中没有关注它,但我们预计无监督学习在长期内变得更加重要。人类和动物的学习在很大程度上是无人监督的:我们通过观察世界来发现世界的结构,而不是通过被告知每个对象的名称。
人类视觉是一个活跃的过程,它以一种智能的,特定任务的方式使用具有大型低分辨率环绕的小型高分辨率凹孔依次对光学阵列进行采样。我们期望未来远景的许多进展来自端到端训练的系统,并将ConvNets与RNN结合使用,并使用强化学习来决定在哪里寻找。结合深度学习和强化学习的系统还处于初级阶段,但它们在分类任务时已经胜过被动式视觉系统,并在学习玩许多不同的视频游戏时产生令人印象深刻的结果。
自然语言理解是深度学习在未来几年内将会产生巨大影响的另一个领域。我们预计,使用RNNs理解句子或整个文档的系统在学习策略时可以更好地选择性地参与一个部分。
最终,人工智能的重大进展将通过结合表示学习和复杂推理的系统来实现。虽然深度学习和简单推理已经用于语音和手写识别很长一段时间,但是需要新的范例来替代通过对大型向量进行操作的符号表达式的基于规则的操纵。