深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2)

深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1)
深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2)
深度学习还没入门?看看深度学习三巨头的Deep Learning综述(3)
深度学习还没入门?看看深度学习三巨头的Deep Learning综述(4)

监督学习

最常见的机器学习形式,无论是否深度,都是监督学习。想象一下,我们想要构建一个系统,可以将图像分类为包含房屋、汽车、人或宠物。我们首先收集大量数据集,其中包含房屋、汽车、人和宠物的图像,每个图像都标有其类别。在训练期间,机器会显示一张图像,并以分数向量的形式生成输出,每个类别一个。我们希望期望的类别在所有类别中得分最高,但这不太可能在训练之前发生。我们计算一个目标函数,用于测量输出分数与预期分数模式之间的误差(或距离)。然后机器修改其内部可调参数以减少此错误。这些可调整的参数,通常称为权重,是实数,可以看作是定义机器输入-输出功能的“旋钮”。在典型的深度学习系统中,可能有数亿个这样的可调整权重,以及数亿个用于训练机器的标记示例。

为了正确调整权重向量,学习算法计算一个梯度向量,对于每个权重,如果权重增加很小的量,误差会增加或减少多少。 然后在与梯度向量相反的方向上调整权重向量。

对所有训练样例进行平均的目标函数可以看作是权值高维空间中的一种丘陵景观。 负梯度向量表示该景观中下降最陡的方向,使其更接近最小值,输出误差平均较低。

在实践中,大多数从业者使用称为随机梯度下降 (SGD) 的过程。 这包括显示一些示例的输入向量,计算输出和误差,计算这些示例的平均梯度,并相应地调整权重。 对训练集中的许多小样本集重复该过程,直到目标函数的平均值停止下降。 它被称为随机的,因为每一小组示例给出了所有示例的平均梯度的噪声估计。 与更复杂的优化技术相比,这个简单的过程通常会以惊人的速度找到一组好的权重。 训练后,系统的性能在称为测试集的不同示例集上进行测量。 这用于测试机器的泛化能力——它在训练期间从未见过的新输入上产生合理答案的能力。

当前机器学习的许多实际应用都在手工设计的特征之上使用线性分类器。两类线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则输入被分类为属于特定类别。
在这里插入图片描述

自二十世纪六十年代以来,我们就知道线性分类器只能将其输入空间划分为非常简单的区域,即由超平面分隔的半空间。但是图像和语音识别等问题要求输入-输出函数对输入的无关变化不敏感,例如物体的位置、方向或照明的变化,或者语音的音高或口音的变化,同时对特定的微小变化非常敏感(例如,白狼和一种叫做萨摩耶的类似狼的白狗之间的区别)。在像素级别,两只萨摩耶犬在不同姿势和不同环境中的图像可能彼此非常不同,而萨摩耶犬和狼在相同位置和相似背景下的两张图像可能非常相似。线性分类器,或任何其他在(图 1 |多层神经网络和反向传播)上运行的“浅”分类器。

a,多层神经网络(由连接的点表示)可以扭曲输入空间以使数据类别(示例在红线和蓝线上)线性可分。请注意,输入空间中的常规网格(显示在左侧)如何也被隐藏单元转换(显示在中间面板中)。这是一个说明性示例,只有两个输入单元、两个隐藏单元和一个输出单元,但用于对象识别或自然语言处理的网络包含数万或数十万个单元。
b,导数的链式法则告诉我们两个小的效应(x 对 y 的微小变化,以及 y 对 z 的微小变化)是如何组合的。通过乘以∂y/∂x(即偏导数的定义),x 中的小变化 Δx 首先转化为 y 中的小变化 Δy。类似地,变化 Δy 在 z 中产生变化 Δz。将一个方程代入另一个方程给出了导数的链式法则——Δx 如何通过乘以 ∂y/∂x 和 ∂z/∂x 的乘积变成 Δz。当 x、y 和 z 是向量(并且导数是雅可比矩阵)时,它也适用。
c,用于计算具有两个隐藏层和一个输出层的神经网络中的前向传播的方程,每个构成一个模块,通过该模块可以反向传播梯度。在每一层,我们首先计算每个单元的总输入 z,它是下一层单元输出的加权和。然后将非线性函数 f(.) 应用于 z 以获得单元的输出。为简单起见,我们省略了偏差项。神经网络中使用的非线性函数包括近年来常用的修正线性单元(ReLU)f(z) = max(0,z),以及更传统的 sigmoid,例如双曲正切 f(z) = (exp(z) - exp(-z))/(exp(z) + exp(-z)) 和逻辑函数logistic f (z) = 1/(1 + exp(-z))。
d,用于计算后向传播的方程。 在每个隐藏层,我们计算每个单元输出的误差导数,它是误差导数相对于上层单元总输入的加权和。 然后,我们通过乘以 f(z) 的梯度,将相对于输出的误差导数转换为相对于输入的误差导数。 在输出层,通过对成本函数求微分来计算单元输出的误差导数。 如果单元 l 的成本函数为 0.5(yl - tl)^2,则给出 yl - tl,其中 tl 是目标值。 一旦 ∂E/∂zk 已知,下层单元 j 的连接上的权重 wjk 的误差导数就是 yj ∂E/∂z。
在这里插入图片描述

图2 |卷积网络内部
应用于萨摩耶狗图像的典型卷积网络体系结构的每一层(水平方向)的输出(而非滤波器)(左下;RGB(红、绿、蓝)输入,右下)。每个矩形图像是与在每个图像位置检测到的学习特征之一的输出相对应的特征映射。信息自下而上流动,低级特征充当定向边缘检测器,并为输出中的每个图像类计算分数。ReLU,校正线性单元。

原始像素不可能区分后两者,而将前两者归为同一类别。这就是为什么浅层分类器需要一个很好的特征提取器来解决选择性-不变性难题的原因。这种特征提取器可以产生对图像中对区分很重要的方面具有选择性的表示,但对不相关的方面(如动物的姿势)具有不变性。为了使分类器更强大,可以使用通用非线性特征,如核方法,但高斯核等通用特征不允许学习者在远离训练示例的情况下很好地概括。传统的选择是手工设计好的特征提取器,这需要大量的工程技能和领域专业知识。但是,如果可以使用通用学习程序自动学习好的特性,那么这一切都可以避免。这是深度学习的关键优势

深度学习体系结构是简单模型的多层堆栈,所有(或大部分)模型都需要学习,其中许多模型计算非线性输入-输出映射。堆栈中的每个模块都转换其输入,以提高表示的选择性和不变性。如果有多个非线性层,比如深度为5到20,系统可以实现其输入的极其复杂的功能,这些输入同时对细节敏感(区分萨摩亚和白狼),对背景、姿势、照明和周围物体等不相关的大变化不敏感。

反向传播训练多层体系结构

从模式识别的早期开始,研究人员的目标就是用可训练的多层网络代替手工设计的特征,但尽管其简单,直到20世纪80年代中期,解决方案才被广泛理解。事实证明,多层结构可以通过简单的随机梯度下降来训练。只要模块是其输入和内部权重的相对平滑函数,就可以使用反向传播程序计算梯度。20世纪70年代和80年代,几个不同的团体独立地发现了这样一个想法,即这是可以做到的,而且是行之有效的。

计算目标函数相对于多层模块堆栈权重的梯度的反向传播过程只不过是导数链式法则的实际应用。关键在于,目标相对于模块输入的导数(或梯度)可以通过从相对于该模块输出(或后续模块输入)的梯度向后计算得出(图1)。反向传播方程可重复应用于通过所有模块传播梯度,从顶部的输出(网络产生其预测)一直到底部(外部输入馈送)。一旦计算出这些梯度,就可以直接根据每个模块的权重计算梯度。

深度学习的许多应用使用前馈神经网络架构(图1),它学习将固定大小的输入(例如,图像)映射到固定大小的输出(例如,多个类别中每个类别的概率)。要从一层转到下一层,一组单元计算来自前一层的输入的加权和,并将结果通过非线性函数传递。目前,最流行的非线性函数是整流线性单元(ReLU),它只是半波整流器f(z)=max(z,0)。在过去的几十年中,神经网络使用更平滑的非线性,如tanh(z)或1/(1+exp(−z)),但ReLU通常在多层网络中学习速度更快,允许在没有无监督预训练的情况下对深度监督网络进行训练。不在输入或输出层中的单元通常称为隐藏单元。隐藏层可以被视为以非线性方式扭曲输入,从而使类别可以被最后一层线性分离(图1)。

在20世纪90年代末,神经网络和反向传播在很大程度上被机器学习界所抛弃,而被计算机视觉和语音识别界所忽视。人们普遍认为,在几乎没有先验知识的情况下学习有用的多阶段特征提取器是不可行的。特别是,人们普遍认为,简单的梯度下降会被困在较差的局部最小权重配置中,对于这些配置,任何微小的变化都会减少平均误差。

在实践中,大型网络很少会出现局部极小值差的问题。无论初始条件如何,系统几乎总是达到质量非常相似的解。最近的理论和经验结果强烈表明,局部极小值一般不是一个严重的问题。相反,景观中组合了大量鞍点,其中梯度为零,曲面在大多数维度上向上弯曲,在其余维度上向下弯曲。分析似乎表明,只有少数向下弯曲方向的鞍点数量非常大,但几乎所有这些鞍点都具有非常相似的目标函数值。因此,算法停留在这些鞍点中的哪一个并不重要。

2006年左右,由加拿大高级研究所(CIFAR)召集的一组研究人员重新激发了人们对深度前馈网络的兴趣。研究人员引入了无监督的学习程序,可以在不需要标记数据的情况下创建特征检测器层。学习每一层特征检测器的目的是能够重建或建模下一层特征检测器(或原始输入)的活动。通过使用此重建目标“预训练”多层逐步复杂的特征检测器,可以将深层网络的权重初始化为合理值。最后一层输出单元可以添加到网络的顶部,整个深层系统可以使用标准反向传播进行微调。这对于识别手写数字或检测行人非常有效,尤其是在标记数据量非常有限的情况下。

这种预训练方法的第一个主要应用是在语音识别中,快速图形处理单元(GPU)的出现使其成为可能,这些图形处理单元便于编程,并允许研究人员将网络训练速度提高10到20倍。2009年,该方法被用于将从声波中提取的系数的短时间窗口映射到可能由窗口中心的帧表示的各种语音片段的一组概率。它在一个标准的语音识别基准上取得了破纪录的结果,该基准使用了一个小词汇量,并迅速发展为在一个大词汇量任务上给出破纪录的结果。到2012年,许多主要语音群组正在开发2009年的deep net版本,并已在Android手机上部署。对于较小的数据集,无监督的预训练有助于防止过度拟合,当标记的示例数较少时,或在一些“源”任务有大量示例,但某些“目标”任务的示例很少的转移设置中,会导致更好的泛化。一旦恢复了深度学习,原来只有小数据集才需要预培训阶段。

然而,有一种特殊类型的深层前馈网络,它比相邻层之间具有完全连通性的网络更易于训练和推广。这就是卷积神经网络(ConvNet)。在神经网络不受欢迎的时期,它取得了许多实际成功,最近被计算机视觉界广泛采用。

For decades 几十年来
practitioner 从业人员
procedure过程,步骤
stochastic gradient descent (SGD) 随机梯度下降
threshold 阈值,门槛
distort 扭曲
illustrative 说明性的
derivative 导数,衍生物
stochastic gradient descent 随机梯度下降
feedforward neural network 前馈神经网络
convolutional neural network 卷积神经网络
multistage 多段的,多级的
forsake 革除,抛弃
infeasible 不可行的
get trapped in 陷入困境
minima 最小值
empirical 凭经验的
remainder 剩余的,剩余物
be fine-tuned 微调
benchmark 基准
rehabilitate 修复,改造
adjacent 临近的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若年封尘

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值