11
优化算法使我们能够继续更新模型参数,并使损失函数的值最小化。
深度学习中出现的几乎所有优化问题都是非凸的。
11.1
- 对于深度学习问题,我们通常会先定义损失函数。
一旦我们有了损失函数,我们就可以使用优化算法来尝试最小化损失。
在优化中,损失函数通常被称为优化问题的目标函数。 - 优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。
- 训练误差和泛化误差通常不同:
- 由于优化算法的目标函数通常是基于训练数据集的损失函数,因此优化的目标是减少训练误差。
- 但是,深度学习(或更广义地说,统计推断)的目标是减少泛化误差。
- 为了实现后者,除了使用优化算法来减少训练误差之外,我们还需要注意过拟合。
- 经验风险是训练数据集的平均损失,而风险则是整个数据群的预期损失。
- 鞍点(saddle point)是指函数的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置。
- 假设函数的输入是k维向量,其输出是标量,因此其Hessian矩阵(也称黑塞矩阵)将有k个特征值。(凸函数是Hessian函数的特征值永远不为负值的函数。)
函数的解可能是局部最小值、局部最大值或函数梯度为零位置处的鞍点:- 当函数在零梯度位置处的Hessian矩阵的特征值全部为正值时,我们有该函数的局部最小值;
- 当函数在零梯度位置处的Hessian矩阵的特征值全部为负值时,我们有该函数的局部最大值;
- 当函数在零梯度位置处的Hessian矩阵的特征值为负值和正值时,我们有该函数的一个鞍点。
小结
- 最小化训练误差并不能保证我们找到最佳的参数集来最小化泛化误差。
- 优化问题可能有许多局部最小值。
- 一个问题可能有很多的鞍点,因为问题通常不是凸的。
- 梯度消失可能会导致优化停滞,重参数化通常会有所帮助。对参数进行良好的初始化也可能是有益的。
11.2
- 在进行凸分析之前,我们需要定义凸集(convex sets)和凸函数(convex functions)。
- 凸集(convex set)是凸性的基础。 简单地说,如果对于任何a, b ∈ X X X,连接a和b的线段也位于 X X X中,则向量空间中的一个集合 X X X是凸(convex)的。
- 假设 X X X和 Y Y Y是凸集,那么 X ∩ Y X∩Y X∩Y也是凸集的。
- 凸集的并集不一定是凸的
詹森不等式
- 詹森不等式的一个常见应用:用一个较简单的表达式约束一个较复杂的表达式。
11.3
小结
- 学习率的大小很重要:学习率太大会使模型发散,学习率太小会没有进展。
- 对于非凸问题,不要不作任何调整就使用牛顿法。