局部最小值与鞍点
1. Optimization 没有做好是因为什么?
观察下图,随着 update 的次数增加, 蓝色曲线代表的 Loss 越来越小,但是停下来的时候,Loss 依然还是比较大,而橙色曲线代表的 Loss 始终没有下降,这两种情况是 optimization 失败的典型例子。
那是什么原因导致的 optimization 失败呢?
归根结底,是在计算参数对 L 的微分时,也就是在计算曲线的斜率时,gradient 接近 0,参数更新结束,而这其实是在参数更新时遇到了 critical point.
critical point 有两种,一种是 local minima,一种是 saddle point.
local minima(局部最小值):遇到 local minima 时,其四周的地形都比它高,无路可走了。
saddle point(鞍点):遇到 saddle point 时,其左右两侧的地形都比较低,前后两侧的地形都比较高,这时候可以往左右两侧逃离,以更新参数,使得 Loss 变小。
2. Local Minima or Saddle Point?
我们可以用泰勒公式来近似推导 Loss。
θ
′
\theta^{\prime}
θ′ 是参数现在所处的位置,而
θ
\theta
θ 是其周围的任意一点。
L
(
θ
)
L(\theta)
L(θ) 有 3 项,第 2 项在参数遇到 critical point 时为0,可以消去,第 3 项则告诉了我们 critical point 的特性,根据不同的特性,我们可来判断 critical point 是 local minima or local maxima or saddle point?
令
θ
−
θ
′
=
v
\theta-\theta^{\prime}=v
θ−θ′=v,而原来的第三项可以简写为
v
T
H
v
v^THv
vTHv
v
T
H
v
v^THv
vTHv > 0,说明
L
(
θ
)
>
L
(
θ
′
)
L(\theta) > L(\theta^{\prime})
L(θ)>L(θ′),即在
θ
′
\theta^{\prime}
θ′ 处的 Loss 要比
θ
′
\theta^{\prime}
θ′ 周围的任意一点
θ
\theta
θ 处的 Loss 都要来得小,所以参数更新停下的点是 Local minima,同时
v
T
H
v
v^THv
vTHv > 0 也说明了 H 是一个正定矩阵,即 H 所有的特征值都 > 0;
v
T
H
v
v^THv
vTHv < 0,说明
L
(
θ
)
<
L
(
θ
′
)
L(\theta) < L(\theta^{\prime})
L(θ)<L(θ′),即在
θ
′
\theta^{\prime}
θ′ 处的 Loss 要比
θ
′
\theta^{\prime}
θ′ 周围的任意一点
θ
\theta
θ 处的 Loss 都要来得大,所以参数更新停下的点是 Local maxima,同时
v
T
H
v
v^THv
vTHv < 0 也说明了 H 是一个负定矩阵,即 H 所有的特征值都 < 0;
有时
v
T
H
v
v^THv
vTHv > 0,有时
v
T
H
v
v^THv
vTHv < 0,说明在
θ
′
\theta^{\prime}
θ′ 处的 Loss 要比
θ
′
\theta^{\prime}
θ′ 周围的任意一点
θ
\theta
θ 处的 Loss 要么来得大、要么来得小,所以参数更新停下的点是 saddle point,同时也说明了 H 的有些特征值是 > 0 的,有些特征值是 < 0 的.
举个例子判断某个点是否 saddle point?
3. 如何解决 Saddle Point?
如果遇到了 Local minima,无路可走,无法再更新参数了;而如果遇到了 Saddle point,根据 H 还可以判断参数继续更新的方向,还是可以解决的。
u
u
u 是特征向量,
λ
\lambda
λ 是特征向量中的一个负的特征值,令
v
=
u
v = u
v=u,
u
T
H
u
=
u
T
(
λ
u
)
=
λ
∣
∣
u
∣
∣
2
<
0
u^{T}Hu=u^{T}(\lambda u) = \lambda ||u||^{2} <0
uTHu=uT(λu)=λ∣∣u∣∣2<0,则
L
(
θ
)
<
L
(
θ
′
)
L(\theta)<L(\theta^{\prime})
L(θ)<L(θ′),此时在
θ
\theta
θ 处为 Local maxima,还有更新参数的可能。
令
θ
−
θ
′
=
u
\theta-\theta^{\prime}=u
θ−θ′=u,则
θ
′
+
u
\theta^{\prime}+u
θ′+u 是
θ
\theta
θ 更新参数的方向。
还是以刚刚的例子来解决 saddle point.
当一个模型的参数有很多时,求 H 需要很大的计算量,使得效率比较低,因此很少被用于实际应用中。
现实中的实际应用,需要的参数是高维的,在低维中的 local minima 到了高维中也就变成了 saddle point,所以能遇到 local minima 的机会还是很少的。
根据经验来说,参数在不断更新的过程中,会越来越有可能遇到 local minima,但不过也从来没有遇到 local minima. 多数时候,训练模型停下来时,都是因为遇到了 saddle point.
在训练模型时,参数不断地更新,但假如说卡在了 saddle point, local minima, plateau 会有什么样的解决方案?请看下一篇笔记。