本章将关注优化算法在最小化目标函数方面的性能,而不是模型的泛化误差。在3.1节中,我们区分了优化问题中的解析解和数值解。在深度学习中,大多数目标函数都很复杂,没有解析解,我们必须使用数值优化算法,本章中的优化算法都属于此类别。
深度学习优化在许多挑战,其中最令人烦恼的局部极小值,和梯度消失。
1 局部极小值
对于任何目标函数f(x),如果在x点对应的f(x)值小于在x附近任意其他点的f(x)值,那么f(x)可能是局部极小值。如果f(x)在x点的值是整个城中目标函数的最小值,那么f(x)时全局最小值。
给定函数
f(x) = x * cos(pi x)(-1.0 <= x <= 2.0)
我们可以近似该函数的局部极小值和全局最小值
x = torch.arange(-1.0, 2.0, 0.01)
d2l.plot(x, f(x), 'x', 'f(x)')
annotate('local minimum', (-0.3, -0.25), (-0.77, -1.0))
深度学习模型的目标函数通常有许多局部最优解,当优化问题的数值解接近局部最优解时,随着目标函数解的梯度接近或变为零,通过最终迭代获得的数值解可能仅使得目标函数局部最优,而不是全局最优。只有一定程度的噪声才可能会使得参数跳出局部极小值,事实上,这是小批量随机梯度下降的有利特征之一。在这种情况下,小批量上梯度的自然变化能够将参数从局部极小值中跳出。
2 鞍点
除了局部极小值,鞍点是梯度小时的另一个原因,鞍点是指函数的所有梯度都消失但是既不是全局最小值也不是局部极小值的任何位置,考虑函数f(x) = x^3,它的一阶和二阶导数在x = 0时消失,这时优化可能会停止,尽管它不是最小值的位置。
x = torch.arange(-2.0, 2.0, 0.01)
d2l.plot(x, [x ** 3], 'x', f(x))
如下例所示,较高维度的鞍点甚至更加隐蔽,考虑函数f(x,y) = x^2 - y^2,它的鞍点为(0,0)这是关于y的极大值,也是关于x的极小值,此外,看起来像个马鞍,这就是鞍点这个名字的由来。
x, y = torch.meshgrid(torch.linspace(-1.0, 1.0, 101), torch.linspace(-1.0, 1.0, 101))
z = x**2 - y **2
ax = d2l.plt.figure().add_subplot(111, projection='3d')
- plot_wireframe(x, y, z, **{'rstride':10, 'cstride': 10})
- plot([0], [0], [0], 'rx')
ticks = [-1, 0, 1]
我们假设函数的输入是k维向量,输出是标量,因此其墨塞矩阵将有k个特征值。函数的解可能是局部极小值,局部极大值或者函数梯度为零位置处的鞍点。
当函数在零梯度位置处的黑塞矩阵的特征值全部为正值时,我们有该函数的局部极小值。
当函数在零梯度位置处的黑塞矩阵的特征值全部为负值时,我们有该函数的局部极大值。
当函数在零梯度位置处的黑塞矩阵的特征值为负值和正值时,我们有该函数的一个鞍点。
对于高维度问题,至少部分特征值为负的可能性相当大,这使得鞍点比局部极小值更有可能出现,我们将11.2节介绍凸性时讨论这种情况的一些例外,简而言之,凸函数时墨塞函数的特征值永远部位负的函数。遗憾的是,大多数深度学习问题并不属于这一类,尽管如此,仍然是研究优化算法的一个很好的工具。
3 梯度小时
可能遇到的最隐蔽问题是梯度消失,回想一下我们在4.1.2节中常用的激活函数及其衍生函数。例如,假设我们最小化函数f(x) = tanh(x), 我们恰好从x = 4开始,我们所看到的那样,f的梯度接近零。更具体的说,f(x) = 1 - tanh^2(x), 因此,f(4) = 0.0013,因此,在我们得进展之前,优化将会停滞很长一段时间。事实证明,这是在引入RelU激活函数之前训练深度学习模型相当棘手的原因之一。
x = torch.arange(-2.0, 5.0, 0.01)
d2l.plot(x, [torch.tanh(x)], 'x', 'f(x)')
annotate('vanishing gradient', (4,1), (2, 0.0))
正如我们所看到的那样,深度学习的优化充满挑战,有一系列强大的算法表现良好,即使对于初学者也是很容易使用,不一定要找到最优解,局部最优解或其近似解也非常有用。
小结:
最小化训练误差并不能保证我们找到最佳的参数集来最小化泛化误差
优化问题中可能有许多局部极小值
一个问题可能有很多的鞍点,因为问题通常不是凸的。
梯度消失可能会导致优化停滞,重参数化通常会有所帮助,对参数进行良好的初始化可能是有益的。

被折叠的 条评论
为什么被折叠?



