前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度模型中的优化(二)、神经网络优化中的挑战

深度模型中的优化(二)、神经网络优化中的挑战

作者头像
狼啸风云
修改2022-09-03 21:52:37
1.4K0
修改2022-09-03 21:52:37
举报

优化通常是一个极其困难的问题。传统的机器学习会小心设计目标函数和约束。以确保优化问题是凸的,从而避免一般优化问题的复杂度。在训练神经网络时,我们肯定会遇到一般的非凸情况。即使是凸优化,也并非没有任何问题。

1、病态

在优化凸函数时,会遇到一些挑战。这其中最突出的是Hessian矩阵H的病态。这是数值优化、凸优化或其他形式的优化中普遍存在的问题。变态问题一般被认为存在与神经网络训练的过程中。病态体现在随机梯度下降会“卡”在某些情况,此时即使很小的更新步长也会增加代价函数。

代价函数的二阶泰勒级数展开预测梯度下降中的-\in g 会增加\frac{1}{2} \epsilon^{2} g^{T} H g-\epsilon g^{T} g 到代价函数中。当\frac{1}{2} \epsilon^{2} g^{T} H g 超过\epsilon g^{T} g 时,梯度的病态会成为问题。判断病态是否不利于神经网络训练的任务,我们可以监测平方梯度g^{T} g 。在很多情况中,梯度范数不会在训练过程中显著减少,但是g^{T} H g 的增长会超过一个数量级。其结果是尽管梯度很强,学习会变得缓慢,因为学习率必须收敛以弥补更强的曲率。

尽管病态还存在于除了神经网络训练的其他情况中,有些适用于其他情况的解决病态的技术并不适用于神经网络。例如,牛顿法在解决带有病态条件的Hessian矩阵的凸优化问题时,是一个非常优秀的工具。

2、局部极小值

凸优化问题的一个突出特点是其可以简化为寻找一个局部极小点的问题。任何一个局部极小点都是全局最小点。有些凸函数的底部是一个平坦的区域,而不是单一的全局最小点,但该平坦区域中的任意点都是一个可以接受的解。优化一个凸问题时,若发现了任何形式的临界点,我们都会知道已经找到了一个不错的可行解。对于非凸函数时,如神经网络,有可能会存在多个局部极小值。事实上,几乎所有的深度模型基本上都会有非常多的局部极小值。然而,我们会发现这并不是主要问题。

由于模型可辨识性问题(model identifiablity)问题,神经网络和任意具有多个等效参数潜变量的模型都会具有多个局部极小值。如果一个足够大的训练集可以唯一确定一组模型参数,那么该模型被称为可辨认的带有潜变量的模型通常是不可辨认的,因为通过相互交换潜变量我们能得到等价的模型。例如,考虑神经网络的第一层,我们可以交换单元i和单元j的传入权重向量、传出权重向量而得到等价的模型。如果神经网络有m层,每层有n个单元,那么会有n !^{m} 种排列方式。这种不可辨认性被称为权重空间对称性(weight space symmetry)。

除了权重空间对称性,很多神经网络还有其他导数不可辨认的原因。例如,在任意整流线性网络或者maxout网络中,我们可以将传入权重和偏置扩大\alpha 倍,然后将传出权重扩大1/\alpha 倍,而保持模型等价。这意味着,如果代价函数不包括如权重衰减这种知直接依赖于权重而非日模型输出的项,那么整流线性网络或者maxout网络的每一个局部极小点都在等价的局部极小值的(m\times n) 维双曲线上。这些模型可辨识性问题意味着,神经网络代价函数具有非常多甚至不可数无限多的局部极小值。然而,所有这些由于不可辨识性问题而产生的局部极小值都有相同的代价函数值。因此,这些局部极小值并非是非凸所带来的的问题。

如果局部极小值相比全局最小点拥有很大的代价,局部极小值会带来很大的隐患。我们可以构建没有隐藏单元的小规模神经网络,其局部极小值的代价比全局最小点的代价大很多。如果具有很大代价的局部极小值是常见的,那么这将给基于梯度的优化算法带来极大的问题。

对于实际中感兴趣的网络,是否存在大量代价很高的局部极小值,优化算法是否会碰到这些局部极小值都是尚未解决的公开问题。多年来,大多数从业者认为局部极小值是困扰神经网络优化的常见问题。如今,情况有所变化。这个问题仍然是学术界的热点问题,但是学者们在猜想,对于足够大的神经网络而言,大部分局部极小值都具有很小的代价函数,我们能不能找到真正的全局最小点并不重要,而是需要在参数空间中找到一个代价很小(但不是最小)的点。

很多从业者将神经网络优化中的所有困难都归结于局部极小值点。我们鼓励从业者要仔细分析特定的问题。一种能够排除局部极小值是主要问题的的检测方法是画出梯度范数随时间的变化,如果梯度范数没有缩小到一个微小的值,那么该问题既不是局部极小值,也不是其他极小值的结构具有很小的梯度。

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

对于很多高原非凸函数而言,局部极小值(以及极大值)事实上都远小于另一类梯度为零的点:鞍点。鞍点附近的某些点比鞍点有更大的代价,而其他点则有更小的代价。在鞍点处,Hessian矩阵同时具有正负特征值,位于正特征值对应的特征向量方向的点比鞍点有更大的代价,反之,位于负特征值对应的特征向量方向的点有更小的代价。我们可以将鞍点视为代价函数某个横截面上的局部极小点,同时也可以视为代价函数某个横截面上的局部极大点。

多类随机函数表现出一下性质:低维空间中,局部极小值很普遍。在高维空间中,局部极小值很罕见,而鞍点则很常见。对于这类函数f: R^{n} \rightarrow R 而言,鞍点和局部极小值的数目比率的期望值随n指数级增长。我们可以从直觉上理解这种现象------Hessian矩阵在局部极小点处只有正特征值。而在鞍点处,Hessian矩阵则同时具有正负特征值。试想一下,每个特征值正负号由抛硬币决定。在一维情况下,很容易抛硬币得到正面朝上一次而获取局部极小点。在n-维空间中,要抛掷n次硬币都正面朝上的难度是指数级的。很多随机函数一个惊人性质是,当我们达到代价较低的区域时,Hessian矩阵的特征值为正的可能性更大,和抛硬币类比,这意味着如果我们处于低代价的临界点时,抛硬币正面朝上n次的概率更大。这意味着,局部极小值具有很低代价的可能性比高代价大得多。具有高代价的临界点更有可能是鞍点。具有极高代价的临界点就很可能是局部极大值了。

以上现象出现在许多种类的随机函数中。那么是否在神经网络中也有发生呢?不具非线性的浅层自编码器只有全局极小值点和鞍点,没有代价比全局极小值点更大的局部极小值。他们还发现这些结果能扩展到不具非线性的更深的网络上,不过没有证明。这类网络的输出是其输入的线性函数,但它们仍然有助于分析非线性神经网络模型,因为它们的损失是关于参数的非凸函数。这类网络本质上是多个矩阵组合在一起。鞍点激增对于训练算法来说有哪些影响呢?对于只使用梯度信息的一阶优化算法而言,目前情况还不清楚。鞍点附近的梯度通常会非常小。另一方面,实验中梯度下降似乎可以在许多情况下逃离鞍点。对于牛顿法而言,鞍点显然是一个问题。梯度下降旨在朝“下坡”移动,而非明确寻求临界点。而牛顿法的目标是寻求梯度为零的点。如果没有适当的修改,牛顿法就会跳进一个鞍点。高维空间中鞍点的激增或许解释了在神经网络训练中为什么二阶方法无法成功取代梯度下降。除了极小值和鞍点,还存在其他梯度为零的点。例如从优化的角度看与鞍点很相似的极大值,很多算法不会被吸引到极大值,除了未经修改的牛顿法。和极小值一样,许多种类的随机函数的极大值在高维空间中也是指数级稀少。也可能存在恒值的,宽且平坦的区域,梯度和Hessian矩阵都是零。这种退化的情形是所有数值优化算法的主要问题。在凸问题中,一个宽而平坦的区间肯定包含全局极小值,但是对于一般的优化问题而言,这样的区域可能会对应着目标函数中一个较高的值。

4、悬崖和梯度爆炸

多层神经网络通常存在像悬崖一样的斜率较大区域。这是由于几个较大的权重相乘导致的。遇到斜率极大的悬崖结构时,梯度更新会很大程度地改变参数值,通常会完全跳过这类悬崖结构。不管我们是从上还是从下接近悬崖,情况都很糟糕,但幸运的是,我们可以使用启发式梯度截断来避免其严重的后果。其基本想法源自梯度并没有指明最佳步长,只说明了在无限小区域内的最佳方向。当传统的梯度下降算法提议更新很大一步时,启发式梯度截断会干涉来减少步长,从而使其不太可能走出梯度下降方向的悬崖区域。悬崖结构在循环神经网络的代价函数中很常见,因为这类这模型会涉及多个因子的相乘,其中每个因子对应一个时间步。因此,长期时间序列会产生大量相乘。

5、长期依赖

当计算图变得极深时,神经网络优化算法会面临另一个难题就是长期依赖问题------由于变深的结构使模型丧失了学习到先前信息的能力,让优化变得极其困难。深层的计算图不仅存在于前馈网络,还存在于之后介绍的循环网络中。因为循环网络要在很长时刻重复应用相同操作来构建非常深的计算图,并且模型参数共享,这使问题更加凸显。例如,假设某个计算图中包含一条反复与矩阵W相乘的概念。那么t步后,相当于乘以W^t 。假设W有特征值分解W=V \operatorname{diag}(\lambda)^{t} V^{-1} 。在这种情况下,很容易看出W^{t}=\left(\operatorname{Vdiag}(\lambda) V^{-1}\right)-V \operatorname{diag}(\lambda)^{t} V^{-1} 当特征值\lambda_i 不在1附近时,若在数量级上大于1则会爆炸;若小于1时则会消失。梯度消失与爆炸问题直指该计算图上的梯度也会因为\operatorname{diag}(\lambda)^{t} 大幅度变化。梯度消失使我们难以知道参数朝哪个方向移动能够改进代价函数,而梯度爆炸会使得学习不稳定。之前描述的促使我们使用梯度截断的悬崖结构便是梯度爆炸现象的例子。

此处描述的在各时间步重复与W相乘非常类似于寻求矩阵W的最大特征值以及对特征向量的幂方法(power method)。从这个观点来看,x^{T} W^{-1} 最终会丢弃x中所有与W的主特征值正交的成分。循环网络在各时间步上使用相同的矩阵W,而前馈网络并没有。所以即使使用非常深层的前馈网络,也能很大程度上有效地避免梯度消失与爆炸问题。

6、非精确梯度

大多数优化算法的先决条件是我们知道精确的梯度或是Hessian矩阵。在实践中,通常这些量会有噪声,甚至是有偏估计的。几乎每一个深度学习算法都需要基于采样的估计,至少使用训练样本的小批量来训练梯度。在其他情况下,我们希望最小化目标函数实际上是难以处理的。当目标函数不可解时,通常其梯度也是难以处理的。在这种情况下,我们只是近似梯度。例如,对比散度是用来近似玻尔兹曼机中难以处理的对数似然梯度的一种技术。各种神经网络优化算法的设计都考虑到了梯度估计的缺陷。我们可以选择比真实损失函数更容易估计的代理损失函数来避免这个问题。

7、局部和全局结构间的弱对应

迄今为止,我们讨论的许多问题都是关于损失函数在单个点的性质------若J(\theta) 是当前点\theta 的病态条件,或者\theta 在悬崖中,或者\theta 是一个下降方向不明显的鞍点,那么会很难更新当前步。如果该方向在局部改进很大,但并没有指向代价低得多的遥远区域,那么我们有可能在单点处克服以上所有困难,但仍然表现不佳。Goodfellow认为大部分训练的运行时间取决于达到解决方案的轨迹长度。大多数优化研究的难点集中于训练是否找到了全局最小点、局部极小点或是鞍点,但在实践中神经网络不会达到任何一种临界点。神经网络通常不会到达梯度很小的区域。甚至,这些临界点不一定存在。例如,损失函数-\log p(y \mid x ; \theta) 可以没有全局最小点,而是当随着训练模型逐渐稳定后,渐进地收敛于某个值。对于具有离散的y和softmax分布p(y|x)的分类器而言,若模型能够正确分类训练集上的每个样本,则负对数似然可以无限趋近但不会等于零。同样地,实值模型p(y \mid x)=N\left(y ; f(\theta), \beta^{-1}\right) 的负对数似然会趋向于负无穷-------如果f(\theta) 能够正确预测所有训练集中的目标y,学习算法会无限制的增加\beta 。未来的研究需要进一步探索影响学习轨迹长度和更好地表征训练过程的结果。许多现有研究方法在求解具有困难全局结构的问题时,旨在寻求良好的初始点,而不是开发非局部范围更新的算法。

梯度下降和基本上所有的可以有效训练神经网络的学习算法,都是基于局部较小更新。之前的小节主要集中于为何这些局部范围更新的正确方向难以计算。我们也许能计算目标函数的一些性质,如近似的有偏梯度或正确方向估计的方差。在这些情况下,难以确定局部下降能否定义通向有效解的足够短的路径,但我们并不能真的遵循局部下降的路径。目标函数可能有诸如变态条件或不连续梯度的问题,使得梯度为目标函数提供较好近似区间非常小。在这种情况下,步长为\epsilon 的局部下降可能定义了到达的合理的短路径,但是我们只能计算步长为\delta \ll \epsilon 的局部下降方向。在这些情况下,局部下降或许能定义通向解的路径,但是该路径包含很多次更新,因此遵循该路径会带来很高的计算代价。有时,比如说当目标函数有一个宽而平的区域,或者我们试图寻找精确的临界点(通常来说后一种情况只发生于显示求解临界点的方法,如牛顿法)时,局部信息不能为我们提供任何指导。在这些情况下,局部下降完全无法定义通向解的路径。在其他情况下,局部移动可能太对贪心,朝着下坡方向移动,却和所有可行解南辕北辙。目前,我们开不了解这些问题中的哪一个与神经网络优化中的难点最相关,这是研究领域的热点方向。

不管哪个问题最重要,如果存在一个区域,我们遵循局部下降便能合理地直接达到某个解,并且我们能够在该良好区域上初始化学习,那么这些问题都可以避免。最终的观点还是建议在传统优化算法上研究怎样选择更佳的初始化点,以此来实现目标更切实可行。

8、优化的理论限制

一些理论结果表明,我们为神经网络设计的任何优化算法都有性能限制。通常这些结果不影响神经网络在实践中的应用。一些理论结果仅适用于神经网络的单元输出离散值的情况。然而,大多数神经网络单元的输出光滑的连续性,使得局部搜索求解优化即可。一些理论结果表明,存在某类问题是不可解的,但很难判断一个特定问题是否属于该类。其他结果表明,寻找给定规模的网络的一个可行解是困难的,但在实际中,我们通过设置更多参数,使用更大的网络,能轻松找到接受的解。此外,在神经网络训练中,我们通常不关注某个函数的精确极小值,而只关注将其值下降到足够小以获得一个良好的泛化误差。对优化算法是否能完成此目标函数进行理论分析时非常困难的。因此,研究优化算法更现实的性能上界仍然是学术界的一个重要目标。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年09月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、病态
  • 2、局部极小值
  • 3、高原、鞍点和其他平坦区域
  • 4、悬崖和梯度爆炸
  • 5、长期依赖
  • 6、非精确梯度
  • 7、局部和全局结构间的弱对应
  • 8、优化的理论限制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档