深度学习 --- 优化

1、学习和纯优化有什么不同

机器学习通常是间接作用的。在大多数机器学习问题中,我们关注某些性能度量P,其定义于测试集上并且可能是不可解的。因此,我们只是间接地优化P。我们希望通过降低代价函数 J(θ) 来提高P。

纯优化最小化目标 J 本身。

通常,代价函数可写为训练集上的平均,如

更希望最小化取自数据生成分布pdata 的期望,而不仅仅是有限训练集上的对应目标函数:

 

经验风险最小化

经验风险:

经验风险最小化很容易导致过拟合。高容量的模型会简单地记住训练集。

在深度学习中很少使用经验风险最小化

 

代理损失函数和提前终止

有时我们真正关心的损失函数(比如分类误差)并不能被高效地优化,在这种情况下,我们通常会优化代理损失函数。

代理损失函数作为原目标的代理,还具备一些优点

例如,正确类别的负对数似然通常用作0-1 损失的替代。负对数似然允许模型估计给定样本的类别的条件概率,如果该模型效果好,那么它能够输出期望最小分类误差所对应的类别。

在某些情况下,代理损失函数比原函数学到的更多。例如,使用对数似然替代函数时,在训练集上的0-1 损失达到0 之后,测试集上的0-1 损失还能持续下降很长一段时间。这是因为即使0-1 损失期望是零时,我们还能拉开不同类别的距离以改进分类器的鲁棒性,获得一个更强壮的、更值得信赖的分类器,从而,相对于简单地最小化训练集上的平均0 - 1 损失,它能够从训练数据中抽取更多信息。

 

一般的优化和我们用于训练算法的优化有一个重要不同:训练算法通常不会停止在局部极小点。反之,机器学习通常优化代理损失函数,但是在基于提前终止的收敛条件满足时停止。通常,提前终止使用真实潜在损失函数,如验证集上的0-1 损失,并设计为在过拟合发生之前终止。与纯优化不同的是,提前终止时代理损失函数仍然有较大的导数,而纯优化终止时导数较小。

 

批量算法和小批量算法

机器学习算法和一般优化算法不同的一点是,机器学习算法的目标函数通常可以分解为训练样本上的求和。机器学习中的优化算法在计算参数的每一次更新时通常仅使用整个代价函数中一部分项来估计代价函数的期望值。

 

可以从数据集中随机采样少量的样本,然后计算这些样本上的平均值。n 个样本均值的标准差是 ,其中 是样本值真实的标准差。分母  表明使用更多样本来估计梯度的方法的回报是低于线性的。比较两个假想的梯度计算,一个基于100 个样本,另一个基于10; 000 个样本。后者需要的计算量是前者的100 倍,但却只降低了10 倍的均值标准差。

另一个促使我们从小数目样本中获得梯度的统计估计的动机是训练集的冗余。实践中,可能大量样本都对梯度做出了非常相似的贡献。

 

使用整个训练集的优化算法被称为批量或确定性梯度算法

每次只使用单个样本的优化算法有时被称为随机或者在线算法。“在线’’ 通常是指从连续产生样本的数据流中抽取样本的情况,而不是从一个固定大小的训练集中遍历多次采样的情况。

大多数用于深度学习的算法介于以上两者之间,使用一个以上,而又不是全部的训练样本。传统上被称为小批量或小批量随机方法,现在通常将它们简单地称为随机方法。的典型示例是随机梯度下降

 

小批量的大小通常由以下几个因素决定:

• 更大的批量会计算更精确的梯度估计,但是回报却是小于线性的。

• 极小批量通常难以充分利用多核架构。这促使我们使用一些绝对最小批量,低于这个值的小批量处理不会减少计算时间。

• 如果批量处理中的所有样本可以并行地处理(通常确是如此),那么内存消耗和批量大小会正比。对于很多硬件设施,这是批量大小的限制因素。

• 在某些硬件上使用特定大小的数组时,运行时间会更少。尤其是在使用GPU时,通常使用2 的幂数作为批量大小可以获得更少的运行时间。

• 可能是由于小批量在学习过程中加入了噪声,它们会有一些正则化效果。泛化误差通常在批量大小为1 时最好。因为梯度估计的高方差,小批量训练需要较小的学习率以保持稳定性。因为降低的学习率和消耗更多步骤来遍历整个训练集都会产生更多的步骤,所以会导致总的运行时间非常大。

 

不同的算法使用不同的方法从小批量中获取不同的信息。

有些算法对采样误差比其他算法更敏感,通常有两个可能原因:一个是它们使用了很难在少量样本上精确估计的信息,另一个是它们以放大采样误差的方式使用了信息。

 

仅基于梯度g的更新方法通常相对鲁棒,并能使用较小的批量获得成功,如100。

 

使用Hessian矩阵H,计算如 更新的二阶方法通常需要更大的批量,如10000。

这些大批量需要最小化估计 的波动。假设H 被精确估计,但是有病态条件数。乘以H或是其逆会放大之前存在的误差(这个示例中是指g 的估计误差)。即使H 被精确估计,g 中非常小的变化也会导致更新值  中非常大的变化。当然,我们通常只会近似地估计H,因此相对于我们使用具有较差条件的操作去估计g,更新  会含有更多的误差。

 

小批量是随机抽取的。两个连续的小批量样本也应该是彼此独立的。

 

小批量随机梯度下降的一个有趣动机是,只要没有重复使用样本,它将遵循着真实泛化误差的梯度。很多小批量随机梯度下降方法的实现都会打乱数据顺序一次,然后多次遍历数据来更新参数。第一次遍历时,每个小批量样本都用来计算真实泛化误差的无偏估计。第二次遍历时,估计将会是有偏的,因为它重新抽取了已经用过的样本,而不是从和原先样本相同的数据生成分布中获取新的无偏的样本。

 

2、神经网络优化中的挑战

2.1 病态

Hessian 矩阵H 的病态。病态体现在随机梯度下降会‘‘卡’’ 在某些情况,此时即使很小的更新步长也会增加代价函数

 

点x(0) 处作函数f(x) 的近似二阶泰勒级数:

学习率ε,新的点:x(0)-ϵg,代入

即,代价函数的二阶泰勒级数展开预测梯度下降中的 -ϵg 会增加:

判断病态是否不利于神经网络训练任务,我们可以监测平方梯度范数 和。在很多情况中,梯度范数不会在训练过程中显著缩小,但是g⊤Hg 的增长会超过一个数量级。其结果是尽管梯度很强,学习会变得非常缓慢,因为学习率必须收缩以弥补更强的曲率。如图所示,成功训练的神经网络中,梯度显著增加。

 

2.2 局部极小值

对于非凸函数时,如神经网络,有可能会存在多个局部极小值。事实上,几乎所有的深度模型基本上都会有非常多的局部极小值。然而,我们会发现这并不是主要问题。

 

由于模型可辨识性问题,神经网络和任意具有多个等效参数化潜变量的模型都会具有多个局部极小值。

1、如果一个足够大的训练集可以唯一确定一组模型参数,那么该模型被称为可辨认的。

带有潜变量的模型通常是不可辨认的,因为通过相互交换潜变量我们能得到等价的模型。

例如,考虑神经网络的第一层,我们可以交换单元i 和单元j 的传入权重向量、传出权重向量而得到等价的模型。如果神经网络有m 层,每层有n 个单元,那么会有种排列隐藏单元的方式。这种不可辨认性被称为权重空间对称性。

2、例如,在任意整流线性网络或者maxout 网络中,我们可以将传入权重和偏置扩大 α 倍,然后将传出权重扩大1/α 倍,而保持模型等价。这意味着,如果代价函数不包括如权重衰减这种直接依赖于权重而非模型输出的项,那么整流线性网络或者maxout 网络的每一个局部极小点都在等价的局部极小值的(m × n) 维双曲线上。

因此,这些局部极小值并非是非凸所带来的问题。

 

一种能够排除局部极小值是主要问题的检测方法是画出梯度范数随时间的变化。如果梯度范数没有缩小到一个微小的值,那么该问题既不是局部极小值,也不是其他形式的临界点。在高维空间中,很难明确证明局部极小

值是导致问题的原因。许多并非局部极小值的结构也具有很小的梯度。

 

2.3 高原、鞍点和其他平坦区域

多类随机函数表现出以下性质:低维空间中,局部极小值很普遍。在更高维空间中,局部极小值很罕见,而鞍点则很常见。

当我们到达代价较低的区间时,Hessian 矩阵的特征值为正的可能性更大。

这也意味着,局部极小值具有低代价的可能性比高代价要大得多。具有高代价的临界点更有可能是鞍点。具有极高代价的临界点就很可能是局部极大值了。

 

不具非线性的浅层自编码器(一种将输出训练为输入拷贝的前馈网络)只有全局极小值和鞍点,没有代价比全局极小值更大的局部极小值。结果能够扩展到不具非线性的更深的网络上

对于牛顿法而言,鞍点显然是一个问题。梯度下降旨在朝‘‘下坡’’ 移动,而非明确寻求临界点。而牛顿法的目标是寻求梯度为零的点。如果没有适当的修改,牛顿法就会跳进一个鞍点。高维空间中鞍点的激增或许解释了在神经网络训练中为什么二阶方法无法成功取代梯度下降。

 

和极小值一样,许多种类的随机函数的极大值在高维空间中也是指数级稀少。

 

2.4 悬崖和梯度爆炸

 

2.5 长期依赖

例如,假设某个计算图中包含一条反复与矩阵W 相乘的路径。那么t 步后,相当于乘以。假设W 有特征值分解。在这种简单的情况下,很容易看出:

当特征值 λi 不在1 附近时,若在量级上大于1 则会爆炸;若小于1 时则会消失。

梯度消失与爆炸问题是指该计算图上的梯度也会因为大幅度变化。梯度消失使得我们难以知道参数朝哪个方向移动能够改进代价函数,而梯度爆炸会使得学习不稳定。

循环网络在各时间步上使用相同的矩阵W,而前馈网络并没有。所以即使使用非常深层的前馈网络,也能很大程度上有效地避免梯度消失与爆炸问题

 

2.6 非精确梯度

当目标函数不可解时,通常其梯度也是难以处理的。在这种情况下,我们只能近似梯度。

例如,对比散度是用来近似玻尔兹曼机中难以处理的对数似然梯度的一种技术。

 

3、基本算法

3.1 随机梯度下降SGD

3.2 动量

3.3 Nesterov 动量

 

4、自适应学习率算法

方向敏感度在某种程度是轴对齐的,那么每个参数设置不同的学习率,在整个学习过程中自动适应这些学习率是有道理的。

4.1 AdaGrad

4.2 RMSProp

 

4.3 Adam

5、二阶近似方法

牛顿法

再求解这个函数的临界点,我们将得到牛顿参数更新规则:

对于非二次的表面,只要Hessian 矩阵保持正定,牛顿法能够迭代地应用。

如果Hessian 矩阵的特征值并不都是正的,例如,靠近鞍点处,牛顿法实际上会导致更新朝错误的方向移动。这种情况可以通过正则化Hessian 矩阵来避免。常用的正则化策略包括在Hessian 矩阵对角线上增加常数 α。正则化更新变为:

只有参数很少的网络才能在实际中用牛顿法训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值