文章目录
Critical Point
我们常常在做Optimization的时候发现,随着参数不断update,loss不会再下降,但是我们对这个loss仍然不满意,有时候我们甚至会发现一开始我们的模型就训练不起来。
过去常见的一个猜想,是因为我们现在走到了一个地方,这个地方参数对loss的微分为0,这时gradient descent就没有办法再更新参数了,所以loss当然就不会再下降了。

gradient为0的点,统称为critical point,这又包括了局部最小值(local minima),局部最大值(local maxima)和 鞍点(saddle point)这三种情况。

与此同时,当我们的训练受到阻碍的时候,我们其实想要知道我们的训练到底是卡在local minima,还是卡在saddle point。这是因为如果卡在了saddle point,那么我们其实是还有路可以走的,只要找到这条路的方向,就可以将我们的loss进一步减小。
Distinguish local minima and saddle point
要判断我们当前停下的位置是local minima还是saddle point,就需要知道我们当前在error surface中所处的位置,换言之,就需要知道当前位置loss function的形状。loss function本身一般十分复杂,毕竟我们的网络就十分复杂,但我们并不需要知道整个loss function的完整形状,我们只需要知道我们当前所处区域附近大致的loss function形状就好了,这就需要用到泰勒级数近似的方法。
这里需要用到一点微积分跟线性代数的知识:
Tayler Series Approximation:泰勒级数近似,在 θ ′ θ' θ′附近的loss function可以近似为下图所示的式子。

在这个式子中:
-
第一项是 L ( θ ′ ) L(θ') L(θ′),因为当 θ ′ θ' θ′逼近 θ θ θ的时候, L ( θ ) L(θ) L(θ)与 L ( θ ′ ) L(θ') L(θ′)其实相差不大。
-
第二项是 ( θ − θ ′ ) T g (θ-θ')^Tg (θ−θ′)Tg, g g g是一个向量,这个 g g g就是我们的gradient,也就是L的一次微分,这个gradient会被用来弥补 θ ′ θ' θ′跟 θ θ θ之间的虽然很小但仍然存在的一点点差距,当然,这个弥补还不够完整,所以我们还需要第三项。
-
第三项跟Hessian有关,这个 H H H叫做Hessian,它是一个矩阵,H里面放的是L的二次微分,