LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. “Deep learning.” Nature 521.7553 (2015): 436-444. [pdf] (Three Giants’ Survey)
深度学习允许由多个处理层组成的计算模型学习具有多个抽象层次的数据表示。这些方法极大地提高了语音识别、视觉对象识别、对象检测和许多其他领域(如药物发现和基因组学)的技术水平。深度学习通过使用反向传播算法指示机器应该如何改变其内部参数来发现大型数据集中复杂的结构,该内部参数用于从前一层的表示计算每一层的表示。深度卷积网络在处理图像、视频、语音和音频方面带来了突破,而循环网络则照亮了文本和语音等连续数据。
The difference between Machie learning and Deep Learning
传统的机器学习技术在处理原始形式的自然数据方面能力有限。几十年来,构建模式识别或机器学习系统需要仔细的工程设计和大量的领域专业知识来设计特征提取器;
表示学习是一套方法,它允许机器获得原始数据,并自动发现检测或分类所需的表示。深度学习方法是具有多层次表示的表示学习方法,通过组合简单但非线性的模块获得,每个模块将一个层次的表示(从原始输入开始)转换为更高、稍微抽象的层次的表示。对于分类任务,更高层次的表征放大了对辨别和抑制无关变化很重要的输入方面。对于分类任务,更高层次的表征放大了对辨别和抑制无关变化很重要的输入方面。深度学习的关键方面是这些特征层不是由人类工程师设计的:它们是使用通用学习程序从数据中学习的。
深度学习在不久的将来会有更多的成功,因为它只需要很少的手工工程,所以它可以很容易地利用可用计算和数据量的增加。目前正在为深度神经网络开发的新学习算法和架构只会加速这一进展。
Supervised Learning
机器学习最常见的形式,不管深入与否,都是监督学习。以图像分类为例,首先需要收集大量数据,在训练过程中,机器会显示一个图像,并以分数向量的形式产生输出,每个类别一个分数。我们希望期望的类别在所有类别中得分最高,但这不太可能在训练前发生。我们计算一个目标函数,该函数测量输出分数和期望分数模式之间的误差(或距离)。然后,机器修改其内部可调参数,以减少这一误差。这些可调参数通常被称为权重,是实数,可以被视为定义机器输入输出功能的“旋钮”。在一个典型的深度学习系统中,可能有上亿个这样的可调权重,以及上亿个用来训练机器的标记例子。为了适当地调整权重向量,学习算法计算梯度向量,对于每个权重,梯度向量指示如果权重增加很小的量,误差将增加或减少多少。权重向量随后被调整到与梯度向量相反的方向。
在实践中,大多数从业者使用一种叫做随机梯度下降(SGD)的方法。这包括显示几个示例的输入向量,计算输出和误差,计算这些示例的平均梯度,并相应地调整权重。对训练集中的许多小样本集重复该过程,直到目标函数的平均值停止下降。之所以称之为随机,是因为每一个小例子都给出了所有例子的平均梯度的噪声估计。与复杂得多的优化技术相比,这个简单的过程通常能惊人地快速找到一组好的权重。经过培训后,系统的性能在一组不同的例子上进行测量,称为测试集。这用来测试机器的泛化能力——它对训练中从未见过的新输入产生合理答案的能力。当前机器学习的许多实际应用在手工设计的特征上使用线性分类器。两类线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则输入被分类为属于特定类别。
浅层分类器需要一个好的特征提取器来解决选择性不变性的困境——一个产生对图像中对辨别很重要的方面有选择性的表示,但对不相关的方面如动物的姿势不变的表示。为了使分类器更强大,可以使用通用的非线性特征,如核方法,但是通用的特征,如高斯核产生的特征,不允许学习者远离训练示例进行概括。传统的选择是手工设计好的特征提取器,这需要大量的工程技术和领域专业知识。但是如果使用通用的学习程序可以自动学习好的特性,这一切都可以避免。这是深度学习的关键优势。
深度学习架构是简单模块的多层堆栈,所有(或大部分)模块都需要学习,其中许多模块计算非线性输入输出映射。堆栈中的每个模块转换其输入,以增加表示的选择性和不变性。有了多个非线性层,比如深度为5到20,系统可以实现极其复杂的输入功能,同时对微小的细节敏感(区分萨摩耶和白狼),对背景、姿势、照明和周围对象等不相关的大变化不敏感。
Backpropagation to train multilayer architectures
多层架构可以通过简单的随机梯度下降来训练。只要模块是其输入和内部权重的相对平滑的函数,就可以使用反向传播过程来计算梯度。计算目标函数相对于多层堆叠模块的权重的梯度的反向传播过程只不过是导数链式法则的实际应用。关键的见解是,目标相对于模块输入的导数(或梯度)可以通过从相对于该模块输出(或后续模块输入)的梯度向后工作来计算。反向传播方程可以重复应用,以通过所有模块传播梯度,从顶部的输出(网络产生其预测)一直到底部(外部输入被馈送)。一旦计算出这些梯度,就可以直接计算每个模块权重的梯度。
目前最流行的非线性函数是**整流线性单元(ReLU)**,简单来说就是半波整流器f(z) = max(z,0)。在过去的几十年里,神经网络使用更平滑的非线性,例如tanh(z)或1/(1+exp(z)),但是ReLU通常在具有许多层的网络中学习得更快,允许在没有无监督预训练的情况下训练深度监督网络28。
人们普遍认为,学习有用的、多阶段的、几乎没有先验知识的特征提取器是不可行的。特别是,人们普遍认为简单的梯度下降会陷入较差的局部极小值——权重配置,对于这种配置,任何微小的变化都不会降低平均误差。在实践中,差的局部极小值很少是大网络的问题。不管初始条件如何,系统几乎总是能得到质量非常相似的解。最近的理论和经验结果强烈表明,局部最小值一般来说不是一个严重的问题。取而代之的是,地形被大量的鞍点组合在一起,其中坡度为零,表面在大多数维度上向上弯曲,而在大多数维度上向下弯曲
Convolutional Neural Network
卷积神经网络被设计为处理以多阵列形式出现的数据,例如由三个2D阵列组成的彩色图像,包含三个颜色通道中的像素强度。许多数据形式是多阵列的形式:信号和序列的1D,包括语言;2D用于图像或音频频谱图;和3D用于视频或体积图像。利用自然信号特性的ConvNets背后有四个关键思想:本地连接、共享权重、池化和使用多个层。
前几个阶段由两种类型的层组成:卷积层和汇集层。卷积层中的单元被组织在特征图中,其中每个单元通过一组称为滤波器组的权重与前一层的特征图中的局部片相连。这个局部加权和的结果然后通过一个非线性,如ReLU。要素地图中的所有单元共享同一个滤波器组。一个图层中的不同要素地图使用不同的滤波器组。这种架构有两个原因。首先,在图像等阵列数据中,局部值组通常高度相关,形成易于检测的独特局部图案。第二,图像和其他信号的局部统计对于位置是不变的。换句话说,如果一个图案可以出现在图像的一部分,它可以出现在任何地方,因此不同位置的单元共享相同的权重,并在阵列的不同部分检测相同的图案。
一个典型的池单元计算一个要素地图(或几个要素地图)中单元的局部斑块的最大值。相邻的汇集单元从移位超过一行或一列的块中获取输入,从而降低表示的维数,并创建对小移位和失真的不变性。卷积、非线性和汇集的两个或三个阶段被堆叠,随后是更多的卷积和全连接层。
深度神经网络利用了许多自然信号是组成层次的特性,其中较高级别的特征是通过组成较低级别的特征获得的。在图像中,边缘的局部组合形成图案,图案组合成零件,零件形成物体。从声音到音素、音素、音节、单词和句子,语音和文本中存在类似的层次结构。当前一层中的元素在位置和外观上发生变化时,池化允许表示变化很小。
Image understanding with deep convolutional networks
在2012年ImageNet竞赛之前,ConvNets在很大程度上被主流计算机视觉和机器学习社区所抛弃。当深度卷积网络应用于包含1000个不同类别的约100万幅网络图像的数据集时,它们取得了惊人的结果,几乎将最佳竞争方法的错误率减半。这一成功来自于GPU、ReLUs(一种称为dropout的新正则化技术)和通过变形现有样本来生成更多训练样本的技术的有效使用。这一成功带来了计算机视觉的革命;ConvNets现在是几乎所有识别和检测任务的主要方法,并接近人类在某些任务上的表现。
Distributed representations and language processing
这一部分回看论文即可
Recurrent Neural Network
RNNs一旦及时展开(图5),可以被视为非常深的前馈网络,其中所有层共享相同的权重。虽然他们的主要目的是学习长期依赖性,但理论和经验证据表明,很难学会将信息存储很长时间78。为了纠正这一点,一个想法是用一个明确的内存来扩充网络。这种类型的第一个提议是使用特殊隐藏单元的长短期记忆(LSTM)网络,其自然行为是长时间记住输入79。一种叫做存储单元的特殊单元就像累加器或门控泄漏神经元一样:它在下一个权重为1的时间步与自己相连,因此它复制自己的实值状态并累积外部信号,但这种自连接被另一个单元多重门控,该单元学习决定何时清除存储器内容。LSTM网络随后被证明比传统的神经网络更有效,尤其是当它们在每个时间步长有几层时,使得整个语音识别系统能够从声学一直到转录中的字符序列