《深度学习详解》 3.1 局部极小值与鞍点 + 3.2 批量和动量
3.1 局部极小值与鞍点
-
优化神经网络时需要最小化损失函数,损失函数的关键特征是局部极小值和鞍点。局部极小值不是全局最优解,是在某个小区域内比周围点的值都要低的点。鞍点是损失函数在某些方向上的极小值,而在其他方向上是极大值或平坦的点。
-
它们可能会导致梯度为零无法继续优化。不同的是局部极小值所在的位置已经是最低点,往四周走损失都会比它高,没路可走。但鞍点旁边还有能让损失更低的路径,只要逃离鞍点,就有可能让损失更低。如图所示
-
依据损失函数可判断临界点是局部极小值还是鞍点。无法得到完整的损失函数时,可以通过给定的一组参数得出附近的损失函数。在临界点附近一次微分项值为0,损失函数可近似为损失函数值+海森矩阵:
L ( θ ) ≈ L ( θ ′ ) + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta) \approx L(\theta\prime) + \frac{1}{2} (\theta - \theta\prime)^T H(\theta - \theta\prime) L(θ)≈L(θ′)+21(θ−θ′)TH(θ−θ′)
不用带入所有的值计算,只需计算海森矩阵的特征值。如果所有特征值为正,即海森矩阵是正定的,那么临界点是局部极小值;如果所有特征值为负,即海森矩阵是负定的,那么临界点是局部极大值;如果所有特征值有正有负,那么临界点是鞍点。 -
可视化误差表面能更方便地做出判断。
-
在鞍点处找出负的特征值,再找出这个特征值对应的特征向量,沿着它的方向去更新参数,就可以找到一个比鞍点的损失还要更低的点。但海森矩阵需要算二次微分,计算量很大,所以这个方法很少用。
-
低维度空间中的局部极小值点,在更高维的空间中是鞍点。从下图可以看出,最小值比例(最小值比例 = 正特征值数量/总特征值数量)最大为0.5~0.6,几乎找不到所有特征值都为正的临界点。所以多数情况下参数不再更新,往往是因为遇到了鞍点。