局部极小值与鞍点
损失在局部极大值(local maximum)、局部极小值(local minimum)和鞍点(saddle point)的梯度是零。我们把梯度为零的点统称为临界点(critical point)。
对于深度学习中的损失函数而言,我们通常关注的是找到局部或全局极小值,而不是极大值,因为我们的目的是最小化损失。在实践中,由于非凸性以及高维空间的存在,深度学习模型的损失函数可能会有很多局部极小值和鞍点(鞍点处梯度也为零,但不是极值点)。优化算法可能陷入这些点之一,导致训练过程停滞不前。为了避免这种情况,通常会采用一些策略,如动量项、学习率衰减或更高级的优化算法(如Adam、RMSprop等),来帮助模型逃离局部极小值并继续寻找更低的损失值。
判断临界值种类的方法
判断一个临界点到底是局部极小值还是鞍点需要知道损失函数的形状。而网络本身很复杂,用复杂网络算出来的损失函数显然也很复杂。虽然 L ( θ ) L(θ) L(θ) 完整的样子写不出来,但通过泰勒级数近似(Tayler series appoximation) 可得
L ( θ ) ≈ L ( θ ′ ) + ( θ − θ ′ ) T g + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta )\approx L({\theta }' ) + (\theta - {\theta }')^{T} g + \frac{1}{2}(\theta - {\theta }')^{T}H(\theta - {\theta }') L(θ)≈L(θ′)+(θ−θ′)Tg+21(θ−θ′)TH(θ−θ′)
g g g 代表梯度, H H H 代表海森矩阵(Hessian matrix)。在临界点,梯度 g g g 为零,所以在临界点的附近,损失函数可被近似为
L ( θ ) ≈ L ( θ ′ ) + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta )\approx L({\theta }' ) + \frac{1}{2}(\theta - {\theta }')^{T}H(\theta - {\theta }') L(θ)≈L(θ′)+21(θ−θ