机器学习中的数学——深度学习优化的挑战:病态

分类目录:《机器学习中的数学》总目录
相关文章:
· 病态
· 局部极小值
· 高原、鞍点和其他平坦区域
· 梯度消失和梯度爆炸
· 非精确梯度
· 局部和全局结构间的弱对应


优化通常是一个极其困难的任务。传统的机器学习会小心设计目标函数和约束,以确保优化问题是凸的,从而避免一般优化问题的复杂度。在训练神经网络时,我们肯定会遇到一般的非凸情况。即使是凸优化,也并非没有任何问题。在后续的文章中,我们会总结几个训练深度模型时会涉及的主要挑战。

在优化凸函数时,会遇到一些挑战。这其中最突出的是Hessian矩阵 H H H的病态。这是数值优化、凸优化或其他形式的优化中普遍存在的问题。病态问题一般被认为存在于神经网络训练过程中。病态体现在随机梯度下降会“卡”在某些情况,此时即使很小的更新步长也会增加代价函数。
f ( x ) ≈ f ( x ( 0 ) ) + ( x − x ( 0 ) ) T g + 1 2 ( x − x ( 0 ) ) T H ( x − x ( 0 ) ) f(x)\approx f(x^{(0)})+(x-x^{(0)})^Tg+\frac{1}{2}(x-x^{(0)})^TH(x-x^{(0)}) f(x)f(x(0))+(xx(0))Tg+21(xx(0))TH(xx(0))

在上式中,代价函数的二阶泰勒级数展开预测梯度下降中的 − ϵ g -\epsilon g ϵg会增加 1 2 ϵ 2 g T H g − ϵ g T g \frac{1}{2}\epsilon^2g^THg-\epsilon g^Tg 21ϵ2gTHgϵgTg到代价中。当 1 2 ϵ 2 g T H g \frac{1}{2}\epsilon^2g^THg 21ϵ2gTHg超过 ϵ g T g \epsilon g^Tg ϵgTg时,梯度的病态会成为问题。判断病态是否不利于神经网络训练任务,我们可以监测平方梯度范数 g T g g^Tg gTg g T H g g^THg gTHg。在很多情况中,梯度范数不会在训练过程中显著缩小,但是 g T H g g^THg gTHg的增长会超过一个数量级。其结果是尽管梯度很强,学习会变得非常缓慢,因为学习率必须收缩以弥补更强的曲率。如下图所示,成功训练的神经网络中,梯度显著增加。
梯度下降通常不会到达任何类型的临界点
在上图中,在用于对象检测的卷积网络的整个训练期间,梯度范数持续增加。左图是各个梯度计算的范数如何随时间分布的散点图。为了方便作图,每轮仅绘制一个梯度范数。我们将所有梯度范数的移动平均绘制为实曲线。梯度范数明显随时间增加,而不是如我们所期望的那样随训练过程收敛到临界点而减小。而右图表明尽管梯度递增,训练过程却相当成功。验证集上的分类误差可以降低到较低水平。

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

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/123239570