本文作为自己学习李宏毅老师2021春机器学习课程所做笔记,记录自己身为入门阶段小白的学习理解,如果错漏、建议,还请各位博友不吝指教,感谢!!

Critical Point

当我们观察训练集上的Loss出现如下两种形式时:

  1. 蓝色线:当Loss下降到一定程度后,便不再减小。但此时的Loss并不能满足我们对模型的要求。
  2. 橙色线:Loss一直没有下降。

在这里插入图片描述出现上述两种情况的原因可能是:损失函数的梯度(gradient)非常接近零,导致损失函数更新后不会下降。在训练过程中如果损失函数陷入局部最小值(Local minima)或鞍点(saddle point)都会出现上述优化失败的情况,这两种情况统称为critical point。
在这里插入图片描述

Local Minima

对于很多非线性优化问题,会存在若干个局部最小值(Local Minima),其对应的解称为局部最小解(Local Minimizer)。

局部最小解定义

存在一个δ>0\delta>0δ>0,对于所有的满足∣∣x−x∗∣∣≤δ||x-x^*|| \le \delta∣∣x−x∗∣∣≤δ的xxx,都有f(x∗)≤f(x)f(x^*) \le f(x)f(x∗)≤f(x)。也就是说,在x∗x^*x∗的邻域内,所有的函数值都大于等于f(x∗)f(x^*)f(x∗)。

PS:此处的xxx指的是模型中的未知参数,即θ\thetaθ。

判断局部最小值

要确定一个点x∗x^*x∗是否为局部最小解,通过比较它的邻域内有没有更小的函数值是不现实的。如果函数f(x)f(x)f(x)是二次连续可微的,我们可以通过检查目标函数在x∗x^*x∗的梯度∇f(x∗)\nabla f(x^*)∇f(x∗)和Hessian矩阵∇2f(x∗)\nabla^2 f(x^*)∇2f(x∗)来判断。

局部最小解的一阶必要条件:如果x∗x^*x∗为局部最小解并且函数fff在x∗x^*x∗的邻域内一阶可微,则在∇f(x∗)=0\nabla f(x^*)=0∇f(x∗)=0.

证明:
如果函数f(x)f(x)f(x)是连续可微的,根据泰勒公式(Taylor‘s Formula),函数f(x)f(x)f(x)的一阶展开可以近似为:
f(x∗+Δx)=f(x∗)+ΔxT∇f(x∗) f(x^*+\Delta x) =f(x^*)+\Delta x^T \nabla f(x^*) f(x∗+Δx)=f(x∗)+ΔxT∇f(x∗)
假设∇f(x∗)≠0\nabla f(x^*) \ne 0∇f(x∗)​=0,则可以找到一个Δx\Delta xΔx(比如Δx=−α∇f(x∗)\Delta x=-\alpha \nabla f(x^*)Δx=−α∇f(x∗), α\alphaα为很小的正数),使得
f(x∗+Δx)−f(x∗)=ΔxT∇f(x∗)≤0. f(x^*+\Delta x) -f(x^*) = \Delta x^T \nabla f(x^*) \le 0. f(x∗+Δx)−f(x∗)=ΔxT∇f(x∗)≤0.
这和局部最小的定义矛盾。

局部最小解的二阶必要条件:如果x∗x^*x∗为局部最小解并且函数fff在x∗x^*x∗的邻域内二阶可微,则在∇f(x∗)=0\nabla f(x^*)=0∇f(x∗)=0, ∇2f(x∗)\nabla^2 f(x^*)∇2f(x∗)为半正定矩阵。

证明:
如果函数f(x)f(x)f(x)是二次连续可微,函数f(x)f(x)f(x)的二阶展开可以近似为:
f(x∗+Δx)=f(x∗)+ΔxT∇f(x∗)+12ΔxT(∇2f(x∗))Δx f(x^* + \Delta x) = f(x^*) + \Delta x^T \nabla f(x^*) + \frac{1}{2}\Delta x^T (\nabla^2 f(x^*) )\Delta x f(x∗+Δx)=f(x∗)+ΔxT∇f(x∗)+21​ΔxT(∇2f(x∗))Δx
由一阶必要定理可知∇f(x∗)=0\nabla f(x^*)=0∇f(x∗)=0,则:
f(x∗+Δx)−f(x∗)=12ΔxT(∇2f(x∗))Δx≥0. f(x^* + \Delta x) - f(x^*) = \frac{1}{2} \Delta x^T(\nabla^2f(x^*))\Delta x \ge 0. f(x∗+Δx)−f(x∗)=21​ΔxT(∇2f(x∗))Δx≥0.
即∇2f(x∗)\nabla^2f(x^*)∇2f(x∗)为半正定矩阵。

Saddle Point

鞍点的叫法是因为其形状像马鞍.鞍点的特征是一阶梯度为 0,但是二阶梯度的 Hessian矩阵不是半正定矩阵。

在这里插入图片描述
如上图所示:鞍点处,参数关于损失函数的一阶梯度为0。但鞍点在一些维度上是最小值,在另一些维度上又是最大值。通过某些方法是可以让优化方法逃离鞍点的。

判断Critical Point类型

当目标函数处于Critical Point时,可能是有Local min、Local max和Saddle point三种情况,如下图所示:
在这里插入图片描述
具体判断是哪一种情况,我们可以采用和判断是否为局部最小解一样的方法。

  1. 首先使用泰勒公式近似的表示Critical Point周围的点θ\thetaθ:
    L(θ)≈L(θ′)+(θ−θ′)Tg+12(θ−θ′)TH(θ−θ′) L(\theta) \approx L(\theta') + (\theta - \theta')^Tg + \frac{1}{2}(\theta-\theta')^TH(\theta-\theta') L(θ)≈L(θ′)+(θ−θ′)Tg+21​(θ−θ′)TH(θ−θ′)
    其中ggg是一个向量,即:
    g=∇L(θ′)gi=∂L(θ′)∂θi g = \nabla L(\theta') \qquad g_i=\frac{\partial L(\theta')}{\partial \theta_i} g=∇L(θ′)gi​=∂θi​∂L(θ′)​
    HHH是一个Hessian矩阵:
    Hij=∂2L(θ′)∂θi∂θj H_{ij}=\frac{\partial^2L(\theta')}{\partial \theta_i \partial \theta_j} Hij​=∂θi​∂θj​∂2L(θ′)​
    如下图所示,其中(θ−θ′)Tg(\theta - \theta')^Tg(θ−θ′)Tg表示绿线部分,12(θ−θ′)TH(θ−θ′)\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')21​(θ−θ′)TH(θ−θ′)表示红线部分(同时表示critical points处的性质),两者同时来弥补L(θ)L(\theta)L(θ)和L(θ′)L(\theta')L(θ′)之间的差异。
    在这里插入图片描述
  2. 因为目标函数处于Critical Point,所以此处的梯度ggg为0,所以上面的公式可以表示为:
    L(θ)≈L(θ′)+12(θ−θ′)TH(θ−θ′) L(\theta) \approx L(\theta') + \frac{1}{2}(\theta-\theta')^TH(\theta-\theta') L(θ)≈L(θ′)+21​(θ−θ′)TH(θ−θ′)
    从该公式中,我们可以看出θ′\theta'θ′处是何种critical point是取决于12(θ−θ′)TH(θ−θ′)\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')21​(θ−θ′)TH(θ−θ′)的符号。
  3. 令(θ−θ′)=v(\theta - \theta') = v(θ−θ′)=v,有:
    1)当HHH是正定矩阵(所有的特征值是正的),有vTHv>0v^THv>0vTHv>0,也就是L(θ)>L(θ′)L(\theta)>L(\theta')L(θ)>L(θ′),即θ′\theta'θ′处是Local minima。
    2)当HHH是负定矩阵(所有的特征值是负的),有vTHv<0v^THv<0vTHv<0,也就是L(θ)<L(θ′)L(\theta)<L(\theta')L(θ)<L(θ′),即θ′\theta'θ′处是Local maxima。
    3)当HHH是半正定矩阵(特征值有正、有负),有时vTHv>0v^THv>0vTHv>0,有时vTHv<0v^THv < 0vTHv<0,也就是即θ\thetaθ处是Saddle Point。

以一个简单的例子来看:
Function: y=w1w2xy=w_1w_2xy=w1​w2​x,如下图所示:
在这里插入图片描述
这里令x=1y^=1x=1 \quad \hat{y}=1x=1y^​=1
在这里插入图片描述
根据g=0g=0g=0可以求得w1=0和w2=0w_1=0 和 w_2=0w1​=0和w2​=0,由此得到hessian,并解出特征值λ1=2\lambda_1=2λ1​=2和λ2=−2\lambda_2=-2λ2​=−2,所以xxx位于Saddle Point处。


参考资料:

  1. 《神经网络与深度学习》 邱锡鹏
  2. 有关正定矩阵知识:https://blog.csdn.net/asd136912/article/details/79146151
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐