(转)深度学习综述——Hinton、LeCun和Bengio
本文是Yann LeCun, Yoshua Bengio和 Geoffrey Hinton大神合作写的深度学习综述,发表在nature上,纪念人工智能60周年。原文链接:PDF
摘要:深度学习允许由多个处理层组成的计算模型 学习具有多个抽象级别的数据表示。这些方法极大地提高了语音识别、视觉目标识别、目标检测以及药物发现和基因组学等许多领域的技术水平。深度学习通过使用反向传播算法来指出机器应该如何改变它的内部参数来发现大数据集中复杂的结构,这些参数用于从上一层的表示中计算每一层的表示。深度卷积网络在图像、视频、语音和音频处理方面取得了突破,而周期性卷积网络则为文本和语音等序列数据带来了光明。
简介
机器学习技术为现代社会的许多方面提供了动力:从网络搜索到社交网络上的内容过滤,再到电子商务网站上的推荐,它越来越多地出现在相机和智能手机等消费产品中。机器学习系统用于识别图像中的对象,将语音转录成文本,将新闻条目、帖子或产品与用户兴趣匹配,并选择搜索的相关结果。这些应用程序越来越多地使用一种称为深度学习的技术。
传统的机器学习技术处理原始数据的能力有限。几十年来,构造一个模式识别或机器学习系统需要仔细的工程和相当多的专业知识设计一个功能器,改变了原始数据(如图像的像素值)到合适的内部表现形式或特征向量的学习子系统,往往一个标识符,可以在输入检测或分类模式。
表示学习是一组方法,它允许向机器输入原始数据,并自动发现检测或分类所需的表示。深度学习方法是具有多层表示的表示学习方法,通过组合简单但非线性的模块来获得,每个模块将一个级别的表示(从原始输入开始)转换为一个更高、更抽象的表示。有了足够多这样的变换组合,就可以学习非常复杂的函数。对于分类任务,更高层次的表示将放大输入的某些方面,这些方面对于识别和抑制无关的变化非常重要。例如,图像以像素值数组的形式出现,在第一层表示层中学习到的特征通常表示图像中特定方向和位置上边缘的存在或不存在。第二层通常通过发现边缘的特定排列来检测图案,而不考虑边缘位置的微小变化。第三层可以将图形组合成更大的组合,这些组合对应于熟悉对象的部分,随后的层将检测对象作为这些部分的组合。深度学习的关键方面是,这些特性层不是由人类工程师设计的:它们是使用通用的学习过程从数据中学习的。
深度学习在解决多年来一直阻碍人工智能领域最佳尝试的问题方面取得了重大进展。结果证明,它非常善于发现高维数据中的复杂结构,因此适用于科学、商业和政府的许多领域。除了在图像识别和语音识别方面打破记录外,它还在预测潜在药物分子的活性、分析粒子加速器数据、重建大脑回路、预测非编码DNA突变对基因表达和疾病的影响等方面击败了其他机器学习技术。也许更令人惊讶的是,深度学习在自然语言理解的各种任务中,特别是主题分类、情感分析、问题回答和语言翻译方面,已经产生了非常有前途的结果。
我们认为,在不久的将来,深度学习将会取得更多的成功,因为它只需要很少的手工工程,因此可以很容易地利用可用计算和数据量的增加。目前正在为深度神经网络开发的新的学习算法和体系结构只会加速这一进程。
监督学习
机器学习最常见的形式,不管是否深入,都是监督学习。假设我们要构建一个系统,该系统可以将图像分类为包含,例如,一所房子、一辆汽车、一个人或一只宠物。首先,我们收集了大量的房屋、汽车、人和宠物的图片,每个图片都有自己的分类。在训练过程中,机器会显示一幅图像,并以分数向量的形式输出,每个类别对应一个分数向量。我们希望期望的类别在所有类别中得分最高,但这不太可能在培训之前发生。我们计算一个目标函数,它度量输出分数与期望的分数模式之间的误差(或距离)。然后,机器修改其内部可调参数,以减少这种误差。这些可调参数通常称为权重,它们是实数,可以看作是定义机器输入输出函数的旋钮。在一个典型的深度学习系统中,可能有数亿个这样的可调权重,以及数亿个用于训练机器的带标签的例子。
为了正确调整权值向量,学习算法计算一个梯度向量,对于每个权值,梯度向量表示如果权值增加一点点,误差将增加或减少多少。然后向梯度向量的相反方向调整权向量。
所有训练样本的目标函数均取平均值,可视为权重值高维空间中的一种丘陵景观。负梯度向量表示该景观中最陡下降的方向,使其接近最小值,此时平均输出误差较低。
在实践中,大多数从业者使用一种称为随机梯度下降(SGD)的程序。这包括显示几个示例的输入向量,计算输出和错误,计算这些示例的平均梯度,并相应地调整权重。从训练集到目标函数的平均值停止下降,对许多小样本集重复这个过程。它之所以被称为随机,是因为每个小样本集都给出了所有样本平均梯度的噪声估计。与复杂得多的优化技术相比,这个简单的过程通常能以惊人的速度找到一组好的权重。在训练之后,系统的性能是通过另一组称为测试集的例子来测量的。这是为了测试机器的泛化能力,它能够在训练中从未见过的新输入上生成合理的答案。
目前机器学习的许多实际应用都是在手工设计的特征之上使用线性分类器。两类线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则将输入分类为属于特定类别。
图1 | 多层神经网络与反向传播
a:多层神经网络(由连接的点表示)可以扭曲输入空间,使数据类(例如红蓝线)线性可分。注意,输入空间中的规则网格(如左图所示)也是如何被隐藏单元转换的(如中面板所示)。这是一个只有两个输入单元、两个隐藏单元和一个输出单元的说明性示例,但是用于对象识别或自然语言处理的网络包含成千上万个单元。经C. Olah许可转载(http://colah.github.io/)。
b:导数的链式法则告诉我们两个小的影响(x对y的小变化,和y对z的小变化)是如何构成的。x的一个小改变Δx首先转变成一个小变化Δy在乘以x y / y(即偏导数的定义)。同样,改变Δy创建了一个变更Δz z。用一个方程到其他的链式法则衍生品Δx是如何变成Δz通过乘法y / x和z / x的产物。它还可以当x, y, z是向量(和衍生品雅可比矩阵)。
c:在含有两个隐层和一个输出层的神经网络中,计算前向通的方程,每个隐层和一个输出层组成一个模块,通过该模块可以反向传播梯度。在每一层,我们首先计算每个单元的总输入z,这是下一层单元输出的加权和。然后将非线性函数f(.)应用于z,得到机组的输出。为了简单起见,我们省略了偏置项。神经网络中使用的非线性函数包括纠正线性单元(ReLU) f (z) = max (0, z),近年来常用的,以及更多的传统的乙状结肠,如hyberbolic切线,f (z) = (exp (z) exp (z)) / (exp (z) + exp (z))和物流功能逻辑,f (z) = 1 / (1 + exp (z))。
d:用于计算向后传递的方程。在每一个隐层,我们计算对每个单元输出的误差导数,它是对上一层单元的总输入的误差导数的加权和。然后我们把对输出的误差导数,乘以f(z)的梯度,转换成对输入的误差导数。在输出层,通过对成本函数求导,计算出单元输出的误差导数。如果单位l的成本函数为0.5(yl tl)2,则得到yl tl,其中tl为目标值。一旦知道了E/ zk,下面一层中单位j连接上的权值wjk的误差导数就是yj E/ zk。
反向传播来训练多层架构
卷积神经网络
使用深度卷积网络进行图像理解
分布式表示和语言处理
递归神经网络(Recurrent neural networks )
深度学习的未来
来源:https://blog.csdn.net/qq_20998955/article/details/98940140