2.1类神经网路训练不起来怎么办 (一):局部最小值 (local minima) 与鞍点 (saddle point) - 李宏毅

发布时间 2023-06-06 18:33:51作者: acmloser

1. When gradient is small

  本小节主要讨论优化器造成的训练问题.

1.1 Critical Point(临界点)

  如果训练过程中经过很多个epoch后,loss还是不下降,那么可能是因为梯度(斜率)接近于 0,导致参数更新的步伐接近于0,所以参数无法进一步更新,loss也就降不下去.
  这时或许有很多人会说陷入了局部最小值.但不是所有的导数为0的点都是局部最小值.saddle point(鞍点)同样是导数为0的点.所有导数为0的点统称为Critical Point(临界点).而临界点中的saddle point(鞍点)还能找到办法让loss降低,就是改变一下梯度下降的方向.

  • local minima(局部极小值):如果是卡在local minima,那可能就没有路可以走了
  • saddle point(鞍点):这个点在某一方向是最低点,但是在另一侧可能是最高点,卡在saddle point的话,saddle point旁边还是有路可以走的
  • global minima(全局最小值):已经达成目标
    image
      那么怎么判断临界点是哪种类型呢?

1.1.1 怎么判断临界点的类型

  判断临界点需要看\(loss\)函数的形状.我们没办法完整地看function形状,但给定某组参数,在这组参数的\(loss\) \(function\)是有办法被写出来的.即利用泰勒展开式判断临界点的类型.
image
  字数太多,直接放大佬的解释:
image
image
image
  关于为什么是这也展开可以参考下这个Click.在 Critical point 附近时:第二项为0,只需考察H的特征值.
image
  我们将\(\theta-\theta^{'}\)看作\(v\),\(v\)当然是一个向量.

  • \(\theta\)不论代任何值时,\(v^THv > 0\),即红色框里都\(>0\),那么在\(\theta^{'}\)附近,取任何值都比前者大,所以是局部最小值.
  • 同理,当\(\theta\)不论代任何值时,\(v^THv < 0\),即红色框里都\(<0\),那么在\(\theta^{'}\)附近,取任何值都比前者小,所以是局部最大值.
  • \(\theta\)不论代任何值时,\(v^THv\)有的\(>0\),有的\(<0\).此时是鞍点.
    image
      但这个判断方法需要将所有的\(v\)代入测试,这是不切实际的.但有一种方法利用线性代数可以解决.

(1) 正定矩阵
  下面是它的定义.它有一个特点是它的特征值全都是正的.
image
(2) 负定矩阵
  下面是它的定义.它有一个特点是它的特征值全都是负数.
image

  所以我们不需要计算所有的\(v^THv\),只需要计算\(H\)的特征值,就可以判断属于哪种情况.