四、牛顿法

  1. 梯度下降法有个缺陷:它未能利用海森矩阵的信息。

    • 当海森矩阵的条件数较大时,不同方向的梯度的变化差异很大。

      • 在某些方向上,梯度变化很快;在有些方向上,梯度变化很慢。

      • 梯度下降法未能利用海森矩阵,也就不知道应该优先搜索导数长期为负或者长期为正的方向。

        本质上应该沿着负梯度方向搜索。但是沿着该方向的一段区间内,如果导数一直为正或者一直为负,则可以直接跨过该区间。前提是:必须保证该区间内,该方向导数不会发生正负改变。

    • 当海森矩阵的条件数较大时,也难以选择合适的步长。

      • 步长必须足够小,从而能够适应较强曲率的地方(对应着较大的二阶导数,即该区域比较陡峭)。
      • 但是如果步长太小,对于曲率较小的地方(对应着较小的二阶导数,即该区域比较平缓)则推进太慢。
  2. 下图是利用梯度下降法寻找函数最小值的路径。该函数是二次函数,海森矩阵条件数为 5,表明最大曲率是最小曲率的5倍。红线为梯度下降的搜索路径。

    它没有用最速下降法,而是用到线性搜索。如果是最速下降法,则相邻两次搜索的方向正交。

    g_descent.PNG

  3. 牛顿法结合了海森矩阵。

    考虑泰勒展开式:四、牛顿法 - 图2 。其中 四、牛顿法 - 图3四、牛顿法 - 图4 处的梯度; 四、牛顿法 - 图5四、牛顿法 - 图6 处的海森矩阵。

    如果 四、牛顿法 - 图7 为极值点,则有: 四、牛顿法 - 图8,则有:四、牛顿法 - 图9

    • 四、牛顿法 - 图10 是个正定的二次型,则牛顿法直接一次就能到达最小值点。
    • 四、牛顿法 - 图11 不是正定的二次型,则可以在局部近似为正定的二次型,那么则采用多次牛顿法即可到达最小值点。
  4. 一维情况下,梯度下降法和牛顿法的原理展示:

    newton

    • 梯度下降法:下一次迭代的点 四、牛顿法 - 图13

      对于一维的情况,可以固定 四、牛顿法 - 图14 。由于随着迭代的推进,四、牛顿法 - 图15 绝对值是减小的(直到0),因此越靠近极值点,四、牛顿法 - 图16 越小。

    • 牛顿法:目标是 四、牛顿法 - 图17

      在一维情况下就是求解 四、牛顿法 - 图18。牛顿法的方法是:以 四、牛顿法 - 图19四、牛顿法 - 图20 切线,该切线过点 四、牛顿法 - 图21。该切线在 四、牛顿法 - 图22 轴上的交点就是: 四、牛顿法 - 图23

      推广到多维情况下就是:四、牛顿法 - 图24

  5. 当位于一个极小值点附近时,牛顿法比梯度下降法能更快地到达极小值点。

    如果在一个鞍点附近,牛顿法效果很差,因为牛顿法会主动跳入鞍点。而梯度下降法此时效果较好(除非负梯度的方向刚好指向了鞍点)。

  6. 仅仅利用了梯度的优化算法(如梯度下降法)称作一阶优化算法,同时利用了海森矩阵的优化算法(如牛顿法)称作二阶优化算法。

  7. 牛顿法算法:

    • 输入:

      • 目标函数 四、牛顿法 - 图25
      • 梯度 四、牛顿法 - 图26
      • 海森矩阵 四、牛顿法 - 图27
      • 精度要求 四、牛顿法 - 图28
    • 输出: 四、牛顿法 - 图29 的极小值点 四、牛顿法 - 图30

    • 算法步骤:

      • 选取初始值 四、牛顿法 - 图31, 置 四、牛顿法 - 图32

      • 迭代,停止条件为:梯度收敛。迭代步骤为:

        • 计算 四、牛顿法 - 图33

        • 四、牛顿法 - 图34, 则停止计算,得到近似解 四、牛顿法 - 图35

        • 四、牛顿法 - 图36, 则:

          • 计算 四、牛顿法 - 图37,并求 四、牛顿法 - 图38,使得:四、牛顿法 - 图39
          • 四、牛顿法 - 图40
          • 四、牛顿法 - 图41 ,继续迭代。
  8. 梯度下降法中,每一次 四、牛顿法 - 图42 增加的方向一定是梯度相反的方向 四、牛顿法 - 图43 。增加的幅度由 四、牛顿法 - 图44 决定,若跨度过大容易引发震荡。

    而牛顿法中,每一次 四、牛顿法 - 图45 增加的方向是梯度增速最大的反方向 四、牛顿法 - 图46(它通常情况下与梯度不共线)。增加的幅度已经包含在 四、牛顿法 - 图47 中(也可以乘以学习率作为幅度的系数)。

    gradient_descent_newton

  9. 深度学习中的目标函数非常复杂,无法保证可以通过上述优化算法进行优化。因此有时会限定目标函数具有Lipschitz连续,或者其导数Lipschitz连续。

    • Lipschitz连续的定义:对于函数 四、牛顿法 - 图49,存在一个Lipschitz常数 四、牛顿法 - 图50,使得:

    四、牛顿法 - 图51

    • Lipschitz连续的意义是:输入的一个很小的变化,会引起输出的一个很小的变化。

      与之相反的是:输入的一个很小的变化,会引起输出的一个很大的变化

  10. 凸优化在某些特殊的领域取得了巨大的成功。但是在深度学习中,大多数优化问题都难以用凸优化来描述。

    凸优化的重要性在深度学习中大大降低。凸优化仅仅作为一些深度学习算法的子程序。