• 李宏毅2021春机器学习课程笔记——Tips for training:Critical Point


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

    Critical Point

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

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

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

    Local Minima

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

    局部最小解定义

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

    PS:此处的(x)指的是模型中的未知参数,即( heta)

    判断局部最小值

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

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

    证明
    如果函数(f(x))是连续可微的,根据泰勒公式(Taylor‘s Formula),函数(f(x))的一阶展开可以近似为:

    [f(x^*+Delta x) =f(x^*)+Delta x^T abla f(x^*) ]

    假设( abla f(x^*) e 0),则可以找到一个(Delta x)(比如(Delta x=-alpha abla f(x^*)), (alpha)为很小的正数),使得

    [f(x^*+Delta x) -f(x^*) = Delta x^T abla f(x^*) le 0. ]

    这和局部最小的定义矛盾。

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

    证明
    如果函数(f(x))是二次连续可微,函数(f(x))的二阶展开可以近似为:

    [f(x^* + Delta x) = f(x^*) + Delta x^T abla f(x^*) + frac{1}{2}Delta x^T ( abla^2 f(x^*) )Delta x ]

    由一阶必要定理可知( abla f(x^*)=0),则:

    [f(x^* + Delta x) - f(x^*) = frac{1}{2} Delta x^T( abla^2f(x^*))Delta x ge 0. ]

    ( abla^2f(x^*))为半正定矩阵。

    Saddle Point

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

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

    判断Critical Point类型

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

    1. 首先使用泰勒公式近似的表示Critical Point周围的点( heta)

    [L( heta) approx L( heta') + ( heta - heta')^Tg + frac{1}{2}( heta- heta')^TH( heta- heta') ]

    其中(g)是一个向量,即:

    [g = abla L( heta') qquad g_i=frac{partial L( heta')}{partial heta_i} ]

    (H)是一个Hessian矩阵:

    [H_{ij}=frac{partial^2L( heta')}{partial heta_i partial heta_j} ]

    如下图所示,其中(( heta - heta')^Tg)表示绿线部分,(frac{1}{2}( heta- heta')^TH( heta- heta'))表示红线部分(同时表示critical points处的性质),两者同时来弥补(L( heta))(L( heta'))之间的差异。
    在这里插入图片描述
    2. 因为目标函数处于Critical Point,所以此处的梯度(g)为0,所以上面的公式可以表示为:

    [L( heta) approx L( heta') + frac{1}{2}( heta- heta')^TH( heta- heta') ]

    从该公式中,我们可以看出( heta')处是何种critical point是取决于(frac{1}{2}( heta- heta')^TH( heta- heta'))的符号。
    3. 令(( heta - heta') = v),有:
    1)当(H)是正定矩阵(所有的特征值是正的),有(v^THv>0),也就是(L( heta)>L( heta')),即( heta')处是Local minima。
    2)当(H)是负定矩阵(所有的特征值是负的),有(v^THv<0),也就是(L( heta)<L( heta')),即( heta')处是Local maxima。
    3)当(H)是半正定矩阵(特征值有正、有负),有时(v^THv>0),有时(v^THv < 0),也就是即( heta)处是Saddle Point。

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


    参考资料:

    1. 《神经网络与深度学习》 邱锡鹏
    2. 有关正定矩阵知识:https://blog.csdn.net/asd136912/article/details/79146151
  • 相关阅读:
    VS2008 SP1 安装时异常处理
    Android和iOS自带的人脸检测API
    FAAST 0.08 动作列表
    C#日期格式化(转)
    希望看这篇文章的人,耐心的看完这个短片
    C#实现转换十六进制
    App Store生存法则:iOS开发者经验分享
    开始的关键不是什么时候开始 而是开始后的坚持
    Eclipse IDE
    最近需要看的网站
  • 原文地址:https://www.cnblogs.com/sykline/p/14630878.html
Copyright © 2020-2023  润新知