最新的《Nature》杂志专门为“人工智能 + 机器人”开辟了一个专题 ,发表多篇相关论文,其中包括了 LeCun、Bengio 和 Hinton 首次合作的这篇综述文章“Deep Learning”。本文为该综述文章中文译文的上半部分。
三大牛 Yann LeCun、Yoshua Bengio 和 Geoffrey Hinton 在深度学习领域的地位无人不知。为纪念人工智能提出 60 周年,最新的《Nature》杂志专门开辟了一个“人工智能 + 机器人”专题 ,发表多篇相关论文,其中包括了 Yann LeCun、Yoshua Bengio 和 Geoffrey Hinton 首次合作的这篇综述文章“Deep Learning”。本文为该综述文章中文译文的上半部分,深入浅出地介绍了深度学习的基本原理和核心优势。
原文摘要:深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示。这些方法在许多方面都带来了显著的改善,包括最先进的语音识别、视觉对象识别、对象检测和许多其它领域,例如药物发现和基因组学等。深度学习能够发现大数据中的复杂结构。它是利用 BP 算法来完成这个发现过程的。BP 算法能够指导机器如何从前一层获取误差而改变本层的内部参数,这些内部参数可以用于计算表示。深度卷积网络在处理图像、视频、语音和音频方面带来了突破,而递归网络在处理序列数据,比如文本和语音方面表现出了闪亮的一面。
机器学习技术在现代社会的各个方面表现出了强大的功能:从 Web 搜索到社会网络内容过滤,再到电子商务网站上的商品推荐都有涉足。并且它越来越多地出现在消费品中,比如相机和智能手机。
机器学习系统被用来识别图片中的目标,将语音转换成文本,匹配新闻元素,根据用户兴趣提供职位或产品,选择相关的搜索结果。逐渐地,这些应用使用一种叫深度学习的技术。传统的机器学习技术在处理未加工过的数据时,体现出来的能力是有限的。几十年来,想要构建一个模式识别系统或者机器学习系统,需要一个精致的引擎和相当专业的知识来设计一个特征提取器,把原始数据(如图像的像素值)转换成一个适当的内部特征表示或特征向量,子学习系统,通常是一个分类器,对输入的样本进行检测或分类。特征表示学习是一套给机器灌入原始数据,然后能自动发现需要进行检测和分类的表达的方法。**深度学习就是一种特征学习方法,把原始数据通过一些简单的但是非线性的模型转变成为更高层次的,更加抽象的表达。通过足够多的转换的组合,非常复杂的函数也可以被学习。**对于分类任务,高层次的表达能够强化输入数据的区分能力方面,同时削弱不相关因素。比如,一副图像的原始格式是一个像素数组,那么在第一层上的学习特征表达通常指的是在图像的特定位置和方向上有没有边的存在。第二层通常会根据那些边的某些排放而来检测图案,这时候会忽略掉一些边上的一些小的干扰。第三层或许会把那些图案进行组合,从而使其对应于熟悉目标的某部分。随后的一些层会将这些部分再组合,从而构成待检测目标。深度学习的核心方面是,上述各层的特征都不是利用人工工程来设计的,而是使用一种通用的学习过程从数据中学到的。
深度学习正在取得重大进展,解决了人工智能界的尽最大努力很多年仍没有进展的问题。它已经被证明,它能够擅长发现高维数据中的复杂结构,因此它能够被应用于科学、商业和政府等领域。除了在图像识别、语音识别等领域打破了纪录,它还在另外的领域击败了其他机器学习技术,包括预测潜在的药物分子的活性、分析粒子加速器数据、重建大脑回路、预测在非编码 DNA 突变对基因表达和疾病的影响。也许更令人惊讶的是,深度学习在自然语言理解的各项任务中产生了非常可喜的成果,特别是主题分类、情感分析、自动问答和语言翻译。我们认为,在不久的将来,深度学习将会取得更多的成功,因为它需要很少的手工工程,它可以很容易受益于可用计算能力和数据量的增加。目前正在为深度神经网络开发的新的学习算法和架构只会加速这一进程。
监督学习
机器学习中,不论是否是深层,最常见的形式是监督学习。试想一下,我们要建立一个系统,它能够对一个包含了一座房子、一辆汽车、一个人或一个宠物的图像进行分类。我们先收集大量的房子,汽车,人与宠物的图像的数据集,并对每个对象标上它的类别。在训练期间,机器会获取一副图片,然后产生一个输出,这个输出以向量形式的分数来表示,每个类别都有一个这样的向量。我们希望所需的类别在所有的类别中具有最高的得分,但是这在训练之前是不太可能发生的。通过计算一个目标函数可以获得输出分数和期望模式分数之间的误差(或距离)。然后机器会修改其内部可调参数,以减少这种误差。这些可调节的参数,通常被称为权值,它们是一些实数,可以被看作是一些“旋钮”,定义了机器的输入输出功能。在典型的深学习系统中,有可能有数以百万计的样本和权值,和带有标签的样本,用来训练机器。为了正确地调整权值向量,该学习算法计算每个权值的梯度向量,表示了如果权值增加了一个很小的量,那么误差会增加或减少的量。权值向量然后在梯度矢量的相反方向上进行调整。我们的目标函数,所有训练样本的平均,可以被看作是一种在权值的高维空间上的多变地形。负的梯度矢量表示在该地形中下降方向最快,使其更接近于最小值,也就是平均输出误差低最低的地方。
在实际应用中,大部分从业者都使用一种称作随机梯度下降的算法(SGD)。它包含了提供一些输入向量样本,计算输出和误差,计算这些样本的平均梯度,然后相应的调整权值。通过提供小的样本集合来重复这个过程用以训练网络,直到目标函数停止增长。它被称为随机的是因为小的样本集对于全体样本的平均梯度来说会有噪声估计。这个简单过程通常会找到一组不错的权值,同其他精心设计的优化技术相比,它的速度让人惊奇。训练结束之后,系统会通过不同的数据样本——测试集来显示系统的性能。这用于测试机器的泛化能力——对于未训练过的新样本的识别能力。
当前应用中的许多机器学习技术使用的是线性分类器来对人工提取的特征进行分类。一个 2 类线性分类器会计算特征向量的加权和。当加权和超过一个阈值之后,输入样本就会被分配到一个特定的类别中。从 20 世纪 60 年代开始,我们就知道了线性分类器只能够把样本分成非常简单的区域,也就是说通过一个超平面把空间分成两部分。
但像图像和语音识别等问题,它们需要的输入-输出函数要对输入样本中不相关因素的变化不要过于的敏感,如位置的变化,目标的方向或光照,或者语音中音调或语调的变化等,但是需要对于一些特定的微小变化非常敏感(例如,一只白色的狼和跟狼类似的白色狗——萨莫耶德犬之间的差异)。在像素这一级别上,两条萨莫耶德犬在不同的姿势和在不同的环境下的图像可以说差异是非常大的,然而,一只萨摩耶德犬和一只狼在相同的位置并在相似背景下的两个图像可能就非常类似。
图 1 多层神经网络和 BP 算法
- 多层神经网络(用连接点表示)可以对输入空间进行整合,使得数据(红色和蓝色线表示的样本)线性可分。注意输入空间中的规则网格(左侧)是如何被隐藏层转换的(转换后的在右侧)。这个例子中只用了两个输入节点,两个隐藏节点和一个输出节点,但是用于目标识别或自然语言处理的网络通常包含数十个或者数百个这样的节点。获得 C.Olah (http://colah.github.io/)的许可后重新构建的这个图。
- **链式法则告诉我们两个小的变化(x 和 y 的微小变化,以及 y 和 z 的微小变化)是怎样组织到一起的。**x 的微小变化量 Δx 首先会通过乘以 ∂y/∂x(偏导数)转变成 y 的变化量 Δy。类似的,Δy 会给 z 带来改变 Δz。通过链式法则可以将一个方程转化到另外的一个——也就是 Δx 通过乘以 ∂y/∂x 和 ∂z/∂y(英文原文为 ∂z/∂x,系笔误——编辑注)得到 Δz 的过程。当 x,y,z 是向量的时候,可以同样处理(使用雅克比矩阵)。
- **具有两个隐层一个输出层的神经网络中计算前向传播的公式。**每个都有一个模块构成,用于反向传播梯度。在每一层上,我们首先计算每个节点的总输入 z,z 是前一层输出的加权和。然后利用一个非线性函数 f(.)来计算节点的输出。简单期间,我们忽略掉了阈值项。神经网络中常用的非线性函数包括了最近几年常用的校正线性单元(ReLU)f(z) = max(0,z),和更多传统 sigmoid 函数,比如双曲线正切函数 f(z) = (exp(z) − exp(−z))/(exp(z) + exp(−z)) 和 logistic 函数 f(z) = 1/(1 + exp(−z))。
- **计算反向传播的公式。*在隐层,我们计算每个输出单元产生的误差,这是由上一层产生的误差的加权和。然后我们将输出层的误差通过乘以梯度 f(z)转换到输入层。在输出层上,每个节点的误差会用成本函数的微分来计算。如果节点 l 的成本函数是 0.5(yl-tl)^2, 那么节点的误差就是 yl-tl,其中 tl 是期望值。一旦知道了 ∂E/∂zk 的值,节点 j 的内星权向量 wjk 就可以通过 yj ∂E/∂zk 来进行调整。
一个线性分类器或者其他操作在原始像素上的浅层分类器不能够区分后两者,虽然能够将前者归为同一类。这就是为什么浅分类要求有良好的特征提取器用于解决选择性不变性困境——提取器会挑选出图像中能够区分目标的那些重要因素,但是这些因素对于分辨动物的位置就无能为力了。为了加强分类能力,可以使用泛化的非线性特性,如核方法,但这些泛化特征,比如通过高斯核得到的,并不能够使得学习器从学习样本中产生较好的泛化效果。传统的方法是手工设计良好的特征提取器,这需要大量的工程技术和专业领域知识。但是如果通过使用通用学习过程而得到良好的特征,那么这些都是可以避免的了。这就是深度学习的关键优势。
深度学习的体系结构是简单模块的多层栈,所有(或大部分)模块的目标是学习,还有许多计算非线性输入输出的映射。栈中的每个模块将其输入进行转换,以增加表达的可选择性和不变性。比如说,具有一个 5 到 20 层的非线性多层系统能够实现非常复杂的功能,比如输入数据对细节非常敏感——能够区分白狼和萨莫耶德犬,同时又具有强大的抗干扰能力,比如可以忽略掉不同的背景、姿势、光照和周围的物体等。
反向传播来训练多层神经网络
在最早期的模式识别任务中,研究者的目标一直是使用可以训练的多层网络来替代经过人工选择的特征,虽然使用多层神经网络很简单,但是得出来的解很糟糕。直到 20 世纪 80 年代,使用简单的随机梯度下降来训练多层神经网络,这种糟糕的情况才有所改变。只要网络的输入和内部权值之间的函数相对平滑,使用梯度下降就凑效,梯度下降方法是在 70 年代到 80 年代期间由不同的研究团队独立发明的。
用来求解目标函数关于多层神经网络权值梯度的反向传播算法(BP)只是一个用来求导的链式法则的具体应用而已。**反向传播算法的核心思想是:目标函数对于某层输入的导数(或者梯度)可以通过向后传播对该层输出(或者下一层输入)的导数求得(如图 1)。**反向传播算法可以被重复的用于传播梯度通过多层神经网络的每一层:从该多层神经网络的最顶层的输出(也就是改网络产生预测的那一层)一直到该多层神经网络的最底层(也就是被接受外部输入的那一层),一旦这些关于(目标函数对)每层输入的导数求解完,我们就可以求解每一层上面的(目标函数对)权值的梯度了。
很多深度学习的应用都是使用前馈式神经网络(如图 1),该神经网络学习一个从固定大小输入(比如输入是一张图)到固定大小输出(例如,到不同类别的概率)的映射。从第一层到下一层,计算前一层神经元输入数据的权值的和,然后把这个和传给一个非线性激活函数。当前最流行的非线性激活函数是 rectified linear unit(ReLU),函数形式:f(z)=max(z,0)。过去的几十年中,神经网络使用一些更加平滑的非线性函数,比如 tanh(z)和 1/(1+exp(-z)),但是 ReLU 通常会让一个多层神经网络学习的更快,也可以让一个深度网络直接有监督的训练(不需要无监督的 pre-train)。
达到之前那种有 pre-train 的效果。通常情况下,输入层和输出层以外的神经单元被称为隐藏单元。隐藏层的作用可以看成是使用一个非线性的方式打乱输入数据,来让输入数据对应的类别在最后一层变得线性可分。
在 20 世纪 90 年代晚期,神经网络和反向传播算法被大多数机器学习团队抛弃,同时也不受计算机视觉和语音识别团队的重视。人们普遍认为,学习有用的、多级层次结构的、使用较少先验知识进行特征提取的这些方法都不靠谱。确切的说是因为简单的梯度下降会让整个优化陷入到不好的局部最小解。
实践中,如果在大的网络中,不管使用什么样的初始化条件,局部最小解并不算什么大问题,系统总是得到效果差不多的解。最近的理论和实验表明,局部最小解还真不是啥大问题。相反,解空间中充满了大量的鞍点(梯度为 0 的点),同时鞍点周围大部分曲面都是往上的。所以这些算法就算是陷入了这些局部最小值,关系也不太大。
2006 年前后,CIFAR(加拿大高级研究院)把一些研究者聚集在一起,人们对深度前馈式神经网络重新燃起了兴趣。研究者们提出了一种非监督的学习方法,这种方法可以创建一些网络层来检测特征而不使用带标签的数据,这些网络层可以用来重构或者对特征检测器的活动进行建模。通过预训练过程,深度网络的权值可以被初始化为有意思的值。然后一个输出层被添加到该网络的顶部,并且使用标准的反向传播算法进行微调。这个工作对手写体数字的识别以及行人预测任务产生了显著的效果,尤其是带标签的数据非常少的时候。
使用这种与训练方法做出来的第一个比较大的应用是关于语音识别的,并且是在 GPU 上做的,这样做是因为写代码很方便,并且在训练的时候可以得到 10 倍或者 20 倍的加速。2009 年,这种方法被用来映射短时间的系数窗口,该系统窗口是提取自声波并被转换成一组概率数字。它在一组使用很少词汇的标准的语音识别基准测试程序上达到了惊人的效果,然后又迅速被发展到另外一个更大的数据集上,同时也取得惊人的效果。从 2009 年到到 2012 年底,较大的语音团队开发了这种深度网络的多个版本并且已经被用到了安卓手机上。对于小的数据集来说,无监督的预训练可以防止过拟合,同时可以带来更好的泛化性能当有标签的样本很小的时候。一旦深度学习技术重新恢复,这种预训练只有在数据集合较少的时候才需要。
然后,还有一种深度前馈式神经网络,这种网络更易于训练并且比那种全连接的神经网络的泛化性能更好。这就是卷积神经网络(CNN)。当人们对神经网络不感兴趣的时候,卷积神经网络在实践中却取得了很多成功,如今它被计算机视觉团队广泛使用。
卷积神经网络
卷积神经网络被设计用来处理到多维数组数据的,比如一个有 3 个包含了像素值 2-D 图像组合成的一个具有 3 个颜色通道的彩色图像。很多数据形态都是这种多维数组的:1D 用来表示信号和序列包括语言,2D 用来表示图像或者声音,3D 用来表示视频或者有声音的图像。卷积神经网络使用 4 个关键的想法来利用自然信号的属性:局部连接、权值共享、池化以及多网络层的使用。
图 2 卷积神经网络内部
一个典型的卷积神经网络结构(如图 2)是由一系列的过程组成的。最初的几个阶段是由卷积层和池化层组成,卷积层的单元被组织在特征图中,在特征图中,每一个单元通过一组叫做滤波器的权值被连接到上一层的特征图的一个局部块,然后这个局部加权和被传给一个非线性函数,比如 ReLU。在一个特征图中的全部单元享用相同的过滤器,不同层的特征图使用不同的过滤器。使用这种结构处于两方面的原因。首先,在数组数据中,比如图像数据,一个值的附近的值经常是高度相关的,可以形成比较容易被探测到的有区分性的局部特征。其次,不同位置局部统计特征不太相关的,也就是说,在一个地方出现的某个特征,也可能出现在别的地方,所以不同位置的单元可以共享权值以及可以探测相同的样本。在数学上,这种由一个特征图执行的过滤操作是一个离线的卷积,卷积神经网络也是这么得名来的。
卷积层的作用是探测上一层特征的局部连接,然而池化层的作用是在语义上把相似的特征合并起来,这是因为形成一个主题的特征的相对位置不太一样。一般地,池化单元计算特征图中的一个局部块的最大值,相邻的池化单元通过移动一行或者一列来从小块上读取数据,因为这样做就减少的表达的维度以及对数据的平移不变性。两三个这种的卷积、非线性变换以及池化被串起来,后面再加上一个更多卷积和全连接层。在卷积神经网络上进行反向传播算法和在一般的深度网络上是一样的,可以让所有的在过滤器中的权值得到训练。
深度神经网络利用的很多自然信号是层级组成的属性,在这种属性中高级的特征是通过对低级特征的组合来实现的。在图像中,局部边缘的组合形成基本图案,这些图案形成物体的局部,然后再形成物体。这种层级结构也存在于语音数据以及文本数据中,如电话中的声音,因素,音节,文档中的单词和句子。当输入数据在前一层中的位置有变化的时候,池化操作让这些特征表示对这些变化具有鲁棒性。
卷积神经网络中的卷积和池化层灵感直接来源于视觉神经科学中的简单细胞和复杂细胞。这种细胞的是以 LNG-V1-V2-V4-IT 这种层级结构形成视觉回路的。当给一个卷积神经网络和猴子一副相同的图片的时候,卷积神经网络展示了猴子下颞叶皮质中随机 160 个神经元的变化。卷积神经网络有神经认知的根源,他们的架构有点相似,但是在神经认知中是没有类似反向传播算法这种端到端的监督学习算法的。一个比较原始的 1D 卷积神经网络被称为时延神经网络,可以被用来识别语音以及简单的单词。
20 世纪 90 年代以来,基于卷积神经网络出现了大量的应用。最开始是用时延神经网络来做语音识别以及文档阅读。这个文档阅读系统使用一个被训练好的卷积神经网络和一个概率模型,这个概率模型实现了语言方面的一些约束。20 世纪 90 年代末,这个系统被用来美国超过 10% 的支票阅读上。后来,微软开发了基于卷积神经网络的字符识别系统以及手写体识别系统。20 世纪 90 年代早期,卷积神经网络也被用来自然图形中的物体识别,比如脸、手以及人脸识别(face recognition )。
使用深度卷积网络进行图像理解
21 世纪开始,卷积神经网络就被成功的大量用于检测、分割、物体识别以及图像的各个领域。这些应用都是使用了大量的有标签的数据,比如交通信号识别,生物信息分割,面部探测,文本、行人以及自然图形中的人的身体部分的探测。近年来,卷积神经网络的一个重大成功应用是人脸识别。
值得一提的是,图像可以在像素级别进行打标签,这样就可以应用在比如自动电话接听机器人、自动驾驶汽车等技术中。像 Mobileye 以及 NVIDIA 公司正在把基于卷积神经网络的方法用于汽车中的视觉系统中。其它的应用涉及到自然语言的理解以及语音识别中。
图 3 从图像到文字
尽管卷积神经网络应用的很成功,但是它被计算机视觉以及机器学习团队开始重视是在 2012 年的 ImageNet 竞赛。在该竞赛中,深度卷积神经网络被用在上百万张网络图片数据集,这个数据集包含了 1000 个不同的类。该结果达到了前所未有的好,几乎比当时最好的方法降低了一半的错误率。这个成功来自有效地利用了 GPU、ReLU、一个新的被称为 dropout 的正则技术,以及通过分解现有样本产生更多训练样本的技术。这个成功给计算机视觉带来一个革命。如今,卷积神经网络用于几乎全部的识别和探测任务中。最近一个更好的成果是,利用卷积神经网络结合回馈神经网络用来产生图像标题。
如今的卷积神经网络架构有 10-20 层采用 ReLU 激活函数、上百万个权值以及几十亿个连接。然而训练如此大的网络两年前就只需要几周了,现在硬件、软件以及算法并行的进步,又把训练时间压缩到了几小时。
基于卷积神经网络的视觉系统的性能已经引起了大型技术公司的注意,比如 Google、Facebook、Microsoft、IBM,yahoo!、Twitter 和 Adobe 等,一些快速增长的创业公司也同样如是。
卷积神经网络很容易在芯片或者现场可编程门阵列(FPGA)中高效实现,许多公司比如 NVIDIA、Mobileye、Intel、Qualcomm 以及 Samsung,正在开发卷积神经网络芯片,以使智能机、相机、机器人以及自动驾驶汽车中的实时视觉系统成为可能。
分布式特征表示与语言处理
与不使用分布式特征表示(distributed representations )的经典学习算法相比,深度学习理论表明深度网络具有两个不同的巨大的优势。这些优势来源于网络中各节点的权值,并取决于具有合理结构的底层生成数据的分布。首先,学习分布式特征表示能够泛化适应新学习到的特征值的组合(比如,n 元特征就有 2n 种可能的组合)。其次,深度网络中组合表示层带来了另一个指数级的优势潜能(指数级的深度)。
多层神经网络中的隐层利用网络中输入的数据进行特征学习,使之更加容易预测目标输出。下面是一个很好的示范例子,比如将本地文本的内容作为输入,训练多层神经网络来预测句子中下一个单词。内容中的每个单词表示为网络中的 N 分之一的向量,也就是说,每个组成部分中有一个值为 1 其余的全为 0。在第一层中,每个单词创建不同的激活状态,或单词向量(如图 4)。在语言模型中,网络中其余层学习并转化输入的单词向量为输出单词向量来预测句子中下一个单词,可以通过预测词汇表中的单词作为文本句子中下一个单词出现的概率。网络学习了包含许多激活节点的、并且可以解释为词的独立特征的单词向量,正如第一次示范的文本学习分层表征文字符号的例子。这些语义特征在输入中并没有明确的表征。而是在利用“微规则”(‘micro-rules’,本文中直译为:微规则)学习过程中被发掘,并作为一个分解输入与输出符号之间关系结构的好的方式。当句子是来自大量的真实文本并且个别的微规则不可靠的情况下,学习单词向量也一样能表现得很好。利用训练好的模型预测新的事例时,一些概念比较相似的词容易混淆,比如星期二(Tuesday)和星期三(Wednesday),瑞典(Sweden)和挪威(Norway)。这样的表示方式被称为分布式特征表示,因为他们的元素之间并不互相排斥,并且他们的构造信息对应于观测到的数据的变化。这些单词向量是通过学习得到的特征构造的,这些特征不是由专家决定的,而是由神经网络自动发掘的。从文本中学习得单词向量表示现在广泛应用于自然语言中。
图 4 词向量学习可视化
特征表示问题争论的中心介于对基于逻辑启发和基于神经网络的认识。在逻辑启发的范式中,一个符号实体表示某一事物,因为其唯一的属性与其他符号实体相同或者不同。该符号实例没有内部结构,并且结构与使用是相关的,至于理解符号的语义,就必须与变化的推理规则合理对应。相反地,神经网络利用了大量活动载体、权值矩阵和标量非线性化,来实现能够支撑简单容易的、具有常识推理的快速“直觉”功能。
在介绍神经语言模型前,简述下标准方法,其是基于统计的语言模型,该模型没有使用分布式特征表示。而是基于统计简短符号序列出现的频率增长到 N(N-grams,N 元文法)。可能的 N-grams 的数字接近于 VN,其中 V 是词汇表的大小,考虑到文本内容包含成千上万个单词,所以需要一个非常大的语料库。N-grams 将每个单词看成一个原子单元,因此不能在语义相关的单词序列中一概而论,然而神经网络语言模型可以,是因为他们关联每个词与真是特征值的向量,并且在向量空间中语义相关的词彼此靠近(图 4)。
递归神经网络
首次引入反向传播算法时,最令人兴奋的便是使用递归神经网络(recurrent neural networks,下文简称 RNNs)训练。对于涉及到序列输入的任务,比如语音和语言,利用 RNNs 能获得更好的效果。RNNs 一次处理一个输入序列元素,同时维护网络中隐式单元中隐式的包含过去时刻序列元素的历史信息的“状态向量”。如果是深度多层网络不同神经元的输出,我们就会考虑这种在不同离散时间步长的隐式单元的输出,这将会使我们更加清晰怎么利用反向传播来训练 RNNs(如图 5,右)。
图 5 递归神经网络
RNNs 是非常强大的动态系统,但是训练它们被证实存在问题的,因为反向传播的梯度在每个时间间隔内是增长或下降的,所以经过一段时间后将导致结果的激增或者降为零。
由于先进的架构和训练方式,RNNs 被发现可以很好的预测文本中下一个字符或者句子中下一个单词,并且可以应用于更加复杂的任务。例如在某时刻阅读英语句子中的单词后,将会训练一个英语的“编码器”网络,使得隐式单元的最终状态向量能够很好地表征句子所要表达的意思或思想。这种“思想向量”(thought vector)可以作为联合训练一个法语“编码器”网络的初始化隐式状态(或者额外的输入),其输出为法语翻译首单词的概率分布。如果从分布中选择一个特殊的首单词作为编码网络的输入,将会输出翻译的句子中第二个单词的概率分布,并直到停止选择为止。总体而言,这一过程是根据英语句子的概率分布而产生的法语词汇序列。这种简单的机器翻译方法的表现甚至可以和最先进的(state-of-the-art)的方法相媲美,同时也引起了人们对于理解句子是否需要像使用推理规则操作内部符号表示质疑。这与日常推理中同时涉及到根据合理结论类推的观点是匹配的。
类比于将法语句子的意思翻译成英语句子,同样可以学习将图片内容“翻译”为英语句子(如图 3)。这种编码器是可以在最后的隐层将像素转换为活动向量的深度卷积网络(ConvNet)。解码器与 RNNs 用于机器翻译和神经网络语言模型的类似。近来,已经掀起了一股深度学习的巨大兴趣热潮(参见文献[86]提到的例子)。
RNNs 一旦展开(如图 5),可以将之视为一个所有层共享同样权值的深度前馈神经网络。虽然它们的目的是学习长期的依赖性,但理论的和经验的证据表明很难学习并长期保存信息。
为了解决这个问题,一个增大网络存储的想法随之产生。采用了特殊隐式单元的 LSTM(long short-termmemory networks)被首先提出,其自然行为便是长期的保存输入。一种称作记忆细胞的特殊单元类似累加器和门控神经元:它在下一个时间步长将拥有一个权值并联接到自身,拷贝自身状态的真实值和累积的外部信号,但这种自联接是由另一个单元学习并决定何时清除记忆内容的乘法门控制的。
LSTM 网络随后被证明比传统的 RNNs 更加有效,尤其当每一个时间步长内有若干层时,整个语音识别系统能够完全一致的将声学转录为字符序列。目前 LSTM 网络或者相关的门控单元同样用于编码和解码网络,并且在机器翻译中表现良好。
过去几年中,几位学者提出了不同的提案用于增强 RNNs 的记忆模块。提案中包括神经图灵机,其中通过加入 RNNs 可读可写的“类似磁带”的存储来增强网络,而记忆网络中的常规网络通过联想记忆来增强。记忆网络在标准的问答基准测试中表现良好,记忆是用来记住稍后要求回答问题的事例。
除了简单的记忆化,神经图灵机和记忆网络正在被用于那些通常需要推理和符号操作的任务,还可以教神经图灵机“算法”。除此以外,他们可以从未排序的输入符号序列(其中每个符号都有与其在列表中对应的表明优先级的真实值)中,学习输出一个排序的符号序列。可以训练记忆网络用来追踪一个设定与文字冒险游戏和故事的世界的状态,回答一些需要复杂推理的问题。在一个测试例子中,网络能够正确回答 15 句版的《指环王》中诸如“Frodo 现在在哪?”的问题。
深度学习的未来展望
无监督学习对于重新点燃深度学习的热潮起到了促进的作用,但是纯粹的有监督学习的成功盖过了无监督学习。在本篇综述中虽然这不是我们的重点,我们还是期望无监督学习在长期内越来越重要。无监督学习在人类和动物的学习中占据主导地位:我们通过观察能够发现世界的内在结构,而不是被告知每一个客观事物的名称。
人类视觉是一个智能的、基于特定方式的利用小或大分辨率的视网膜中央窝与周围环绕区域对光线采集成像的活跃的过程。我们期望未来在机器视觉方面会有更多的进步,这些进步来自那些端对端的训练系统,并结合 ConvNets 和 RNNs,采用增强学习来决定走向。结合了深度学习和增强学习的系统正处在初期,但已经在分类任务中超过了被动视频系统,并在学习操作视频游戏中产生了令人印象深刻的效果。
在未来几年,自然语言理解将是深度学习做出巨大影响的另一个领域。我们预测那些利用了 RNNs 的系统将会更好地理解句子或者整个文档,当它们选择性地学习了某时刻部分加入的策略。
最终,在人工智能方面取得的重大进步将来自那些结合了复杂推理表示学习(representation learning )的系统。尽管深度学习和简单推理已经应用于语音和手写字识别很长一段时间了,我们仍需要通过操作大量向量的新范式来代替基于规则的字符表达式操作。
Yann LeCun 对深度学习的看法
过去的新春佳节让程序员们迎来了一个难得的长假休息,但人工智能在假期一直在进步,我们看到了Facebook人工智能负责人Yann LeCun、香港科技大学计算机与工程系主任杨强等人工智能大牛对人工智能热潮的冷静思考,也看到谷歌研发出特定条件下超越人类水平的人工智能游戏系统。下面就来看看大牛们给我们的人工智能新年启示(同时也感谢“机器之心”和36kr的翻译工作)。
**Yann LeCun:IBM True North 是“草包族科学” 无监督学习是未来 **
Facebook 人工智能负责人 Yann LeCun 与 IEEE Spectrum 的 Lee Gomes 日前进行了一次关于深度学习的深度对话,谈到了人工智能领域目前存在的一些炒作以及深度学习的发展方向,他认为将深度学习与大脑进行类比给它赋予了一些神奇的光环将可能导致人工智能的寒冬。微信公众号“机器之心”已将该对话全部译为中文,现将译文中 Yann LeCun 的一些主要观点摘录如下:
**IBM True North 是“草包族科学” **
Spectrum:你看起来一直在竭尽全力的将你的工作与神经科学和生物学拉开距离。例如,你提到了“卷积网络”,而不是“卷积神经网络”。你在你的算法里提到了“单位/个体”(units),而非“神经元”。
LeCun:的确如此。我们模型中的一些部分从神经科学中获得了灵感,但还有相当多部分与神经科学毫不相干,相反,它们是来源于理论、直觉和经验探索。**我们的模型不希望变成大脑的模型,我们也没有宣称神经科学方面的相关性。但同时,如果说卷积网络的灵感来源于一些关于视觉皮质的基础知识,我也可以接受。**有些人间接从神经科学获得灵感,但他却不肯承认这一点,我承认,这(神经科学)很有帮助。但我会小心翼翼的不去触碰那些会引发大肆宣传的词语,因为这个领域已经出现了疯狂炒作,这非常危险。因为这给基金会、公众、潜在客户、创业公司和投资者带来了预期,他们会因此相信我们正处在风口浪尖——我们正在建造一些像大脑一样强大的系统,但实际上我们离这个目标还差的很远。这很容易导致另一次的“寒冬周期”。
这里会出现一些“草包族科学”(cargo cult science),在“草包族科学”下,你往往是复制了机器的表象,却没有深入理解机器背后的原理。或者,在航空领域,你制造飞机时会完全复制鸟类的样子,它的羽毛、翅膀等等。19 世纪的人们很喜欢这么做,但取得的成就非常有限。
在人工智能领域也是如此,**他们尝试着对我们所知晓的神经元和神经突触的所有细节进行复制,然后在一台超级计算机上启动一套庞大的模拟神经网络,希望从中孕育出人工智能,这就是“草包族科学”的人工智能。**有许多拿到大笔基金支持的严肃的研究者基本上快要相信这些了。
Spectrum:你认为 IBM 的 True North 项目(译者注:IBM 的类人脑芯片,集成了 54 亿个硅晶体管、 4096 个内核、100 万个“神经元”和 2.56 亿个“突触”)属于“草包族科学”吗?
LeCun:这听起来会有些刺耳。但我的确认为,IBM 团队所声称的东西有点偏差并容易造成误解。从表面上看,他们的公告令人印象深刻,但实际上没有实现任何有价值的东西。在 True North 之前,那个团队用 IBM 的超级计算机来“模拟了一个老鼠级别的大脑”,但这只是一个随机的神经网络,除了消耗 CPU 运算周期以外没有发挥任何作用。
**True North 芯片的悲剧在于它本来可以很有用,如果它当初没有坚持与生物学走的太近以及没有使用"spiking integrate-and-fireneurons"模型的话。**因此在我看来——我曾是一个芯片设计者——当你在开发一个芯片之前,你必须确信无疑它能做些有用的事情。如果你打造了一个卷积网络芯片——很清楚如何去做——它能立刻应用到计算设备中。IBM 创造了错误的东西,我们无法用它去完成任何有用的事情。
Spectrum:还有其他例子吗?
LeCun:从根本上说,欧盟人脑计划(Human Brain Project)中的很大部分也是基于这样一种理念:我们应该建造一种模拟神经元功能的芯片,越接近越好,然后将芯片用于建造超级计算机,当我们用一些学习规则来开启它时,人工智能就出现了。我认为这纯属胡说八道。
诚然,我刚才指的是欧盟人脑计划,并不是讽刺参与这个项目的每个人。许多人参与该项目的原因仅仅是因为它能获得巨额资助,这是他们所无法拒绝的。
**无监督学习是未来 **
Spectrum:对于一般意义上的机器学习,还有多少是有待发掘的?
LeCun:太多了。我们在实际的深度学习系统中使用的学习方式还是存在局限的。在具体实践中发挥作用的其实是“有监督学习”。你将一张图片展现给系统并告诉它这是一辆车,它就会相应调整它的参数并在下一次说出“车”。然后你再展现给它一把椅子、一个人。在几百个例子、耗费几天到几周的计算时间(取决于系统规模)之后,它就弄明白了。
但人类和动物不是这种学习方式。当你还是婴儿时,你并没有被告知你所看到的所有物体的名字。然而你却能学会这些物体的概念,你知道世界是三维的,当我把物体放在另一个的后面,你还是知道它的存在。这些概念不是与生俱来的,是你将它们学会了。我们把这种类型的学习称作“无监督”学习。
2000s 中期,我们中的许多人参与到了深度学习的复兴运动中,包括 Geoff Hinton、Yoshua Bengio 和我自己——这就是所谓的“深度学习团体”——还有 Andrew Ng,从此使用无监督学习而非有监督学习的理念开始兴起。无监督学习可以帮助特定的深度网络进行“预训练”。我们在这方面取得了不少成果,但最终能够应用于实践的还是过去那些能与卷积网络相结合的出色的有监督学习,我们在 20 年前(1980s)所做的事情。
但**从研究的角度来看,我们一直感兴趣的是如何恰当地做好无监督学习。我们现在已经拥有了可以实用的无监督技术,但问题在于,我们仅需要收集更多数据,再配合有监督学习就能击败它。**这就是为什么在现阶段的产业中,深度学习的应用基本上都是有监督的。但将来不会再是这种方式。
从本质上来说,在无监督学习方面,大脑远好于我们的模型,这意味着我们的人工智能学习系统缺失了许多生物机理学习的基本原则。
下一个前沿课题是 NLP
Spectrum:Facebook 最近公布了一个人脸识别算法 DeepFace,很多报道称人脸识别技术的准确性已经接近于人。但那些结果难道不是在精心策划的数据库中跑出来的么?如果在互联网上遇到随机的图片,这个系统报告还能取得同样的成功么?
LeCun:相比于人类,系统对图片质量更为敏感,这是肯定的。人们能通过不同的面部胡须等特征识别出众多不同构造的人脸,计算机系统在这方面鲜有优势。但是系统可以在非常大的人类集合中识别出某个人,这个集合会远远超出人类的处理能力。
Spectrum:在图片识别之外的领域,深度学习表现如何,尤其是当涉及到诸如自然语言等通用智能相关问题的时候?
LeCun:我们在 Facebook 的很大一部分工作都是集中于此。我们如何将深度学习的优势,与其通过学习描绘世界的能力、从短暂的信号中积累知识的能力(伴随着语言出现)、推理能力、与当前深度学习系统采取不同方式的知识存储能力结合起来?在当前深度学习系统下,就像学习一项运动技能,我们训练它们的方式类似于我们自学骑自行车。你学到了一项技能,但实际上却不涉及大量事实记忆或知识。
但你学的其他一些事情,就必须要求你记住事实,你必须记住并储存一些东西。在 Facebook、Google 和其他许多地方,我们做的大量工作是一边建立神经网络,一边建立一个独立的存储器模块,这能被运用于自然语言理解等领域。
我们开始看到,**经由存储器模块强化的深度学习帮助自然语言处理取得了令人印象深刻的结果。该系统基于这样的理念,即用连续向量描述词语和句子,经由深层架构的多层级完成对这些向量的转化,并将它们存储在一种联合型存储器里。这对问答和语言翻译都非常有效。**这种模式的一个范例是存储网络(Memory Network),这个模型是 Facebook 科学家 Jason Weston、Sumit Chopra 和 Antoine Bordes 最近提出的。Google/Deep Mind 的科学家也提出了一个相关概念“神经图灵机”(Neural Turing Machine)。
Spectrum:所以你不认为深度学习将会成为解锁通用人工智能的那把钥匙?
LeCun:它将是解决方案中的一部分。在一定程度上,这一解决方案看上去像一张巨大而复杂的神经网络。但这与人们迄今在文献中看到的有很大不同。我说的这些东西,你已经可以开始看到一些相关论文了。许多人正在研究所谓的“周期神经网络”(recurrent neural nets)。在这些神经网络中,输出被反馈到输入端,这样你就能形成一个推理链。你可以借此来处序列信号,像语音、音频、视频和语言,初步结果相当不错。深度学习的下一个前沿课题是自然语言理解。
Spectrum:如果一切顺利,我们可以期待机器很快能做到哪些它们现在做不到的事情吗?
LeCun:你或许能看到更好的语音识别系统,但在某种程度上它们是隐藏起来的。你的数字伴侣将会变得更完善;将会有更好的问答和对话系统;你可以和你的计算机进行对话;你可以向计算机发问而它会从知识库中为你寻找答案;机器翻译将会更精准;你还能看到自动驾驶汽车和更聪明的机器人,自动驾驶汽车将会使用卷积网络。
如何让机器获得常识?
Spectrum:改进图灵测试的 Winograd Schemas 挑战不仅仅涉及自然语言和常识,还包括对于现代社会运行机制的理解。计算机可能会采取何种办法来应对这些挑战?
LeCun:这个问题的关键是如何表达知识。在“传统的”人工智能里,事实知识以图形(是一套符号或实体及相互关系)的方式被手工输入。但我们都知道人工智能系统是可以通过学习自动获取知识的。所以问题就变成了“机器如何才能学会表达有关事实和关系的知识?”
深度学习毋庸置疑是解决方案的一部分,但不是全部。**符号的问题在于它只是一串毫无意义的比特,在深度学习系统里,代表实体的是大规模的向量,而它们是从数据和反应这些数据的特征中学习而来的。学习推理要归结于学会对使这些向量运算的函数。**Facebook 的研究人员 Jason Weston、RonanCollobert、Antonine Bordes 和 Tomas Mikolov 等人已经率先开始尝试用向量来表达单词和语言。
Spectrum:人工智能的一个经典问题是让机器获得常识。深度学习领域对这个问题有什么见解?
LeCun:我认为通过使用预测式无监督学习可以获得某种常识。例如,我可以让机器观看大量的关于物体被抛掷或下落的视频。我训练它的方法是给它看一个视频,然后问它:“接下来会发生什么?一秒钟之后画面将如何?”以这种方式训练机器去预测一秒钟后、一分钟后、一小时后或一天后世界将会如何,它将获得很好的对世界的描述。这会使得机器了解物理世界的众多限制,如“抛向空中的物体在一段时间后将下落”、或者“一个物体不能同时在两个地方”、或者“物体被挡住后仍然存在”。了解物理世界的限制将使机器能够“填补空白”,以及在被告知包含一系列事件的故事后对世界的状态进行预测。 JasonWeston、Sumit Chopra 和 Antoine Bordes 正在利用我刚才讲到的“记忆网络”建造这样一个系统。
百度首席科学家吴恩达教授说: “结合大数据,新的人工智能的算法越来越好, 我们可以第一次在未来人工智能虚拟圈里完成整个循环。”确实,随着计算能力的提升和计算成本的下降,大数据推动了当前人工智能的“夏天”,但长期研究人工智能和大数据的香港科技大学计算机与工程系主任杨强却在 2015 年的冬季达沃斯会议之后反思了人工智能依赖这两个条件的另一种隐患:夏天来了,冬天还会远吗?
杨强教授在人工智能的集体狂欢中冷静地分析道:
现在人工智能所取得的成就还都集中在人和计算机的接口:语音,视觉,文字。然而,人类智慧的最高表现却是抽象的推理和联想,可以让我们从一个事件关联到另外一个事件,从一种知识迁移到另外一种知识。以上的这些所谓的“强人工智能”的能力,是不是由众多的单一方向的“弱人工智能”的大量叠加可以得到的呢?我们尚不得而知。 如今,计算机的这种跨领域的学习能力还远远没有得到实现,甚至连知识殿堂的入口都不知道在哪里。纠其主因,是我们至今的计算能力还不够强大,在这些领域还是无法得到全面反应人类思维的大数据。我们的学习算法还需要无数的大数据来提供人工智能机器运转的“燃料。” 而这些大数据的准备工作还是需要昂贵的人工来提供, 并不能形成滚雪球式的规模效应。这些缺陷很可能阻碍我们得到真正智能的工具,使得吴恩达博士所说的“虚拟闭环”有很大的缺口。
这些缺口的致命之处很可像我们在 30 年前的那个冬天面对没有汽油的宝马所带来的尴尬:只是今天在我们面前的是一辆漂亮的特斯拉,但却怎么也找不到加电站!
相信 IBM 的 Watson、百度的 Minwa 计算平台都还有很大的提升空间,但要支持无穷无尽的数据计算恐怕还是容易达到瓶颈,更何况要找出全面反应人类思维的大数据还很困难。
所以,让我们在研究深度学习的应用之余,也要适时思考杨强教授的问题:“我们会不会在人工智能的集体狂欢中忽略了最本质得东西, 以至于不小心穿越到 30 多年前的那个人工智能的冬天?”
Google:DNN+ 强化学习让 AI 的复杂任务表现逼近人类
Google DeepMind 的 AI 靠自学(靠着对游戏视频的观察来寻找出模式,然后操作控制器,并获得得分的反馈结果,在反馈中不断调整自己的控制)玩会了 49 种游戏,甚至在 23 种游戏中击败了人类职业玩家。Google DeepMind 团队在《自然》杂志发表论文,公布玩游戏比人厉害的 AI 如何实现:
DeepMind 的 AI 的设计核心是如何让计算机自行发现数据中存在的模式。其解决方案是深度神经网络与强化学习等方法的的结合。AI 并不知道游戏规则,而是用深度神经网络来了解游戏的状态,找出哪一种行为能导致得分最高。
这一方面是得益于现在计算能力的提高使得 AI 可处理规模要大得多的数据集,要知道,观察 Atari 游戏相当于每秒处理 200 万像素的数据。另一方面则是得益于 DeepMind 结合了强化学习来训练 AI,而且是在高维度感觉输入中采用的端到端强化学习。相对于以往计算机会玩的游戏,如国际象棋等,这次计算机玩的游戏更接近现实世界的混沌状态。Google 的智能设计师 Demis Hassabis 称,这是第一种能在一系列复杂任务当中与人类表现相当的算法。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于