1. 局部最小点和鞍点
做优化的时候经常会发现,随着参数不断更新,训练的损失不会再下降, 但是我们对这个损失仍然不满意。把深层网络(deep network)、线性模型和浅层网络(shallow network)做比较,可以发现深层网络没有做得更好——深层网络没有发挥出它完整的力量,所以优化是有问题的。但有时候,模型一开始就训练不起来,不管我们怎么更新参数,损失都降不下去。
1.1 临界点及其种类
一个猜想是我们优化到某个地方,这个地方的参数对损失的微分为0.因此梯度下降就不能再更新参数了,训练就停下来了,损失就不再下降了。梯度为0的点统称为临界点,包括:
- 局部最小/大:
- 鞍点:梯度为0但不为局部最小
对于鞍点,旁边还是有路可以让损失降低的,因此需要识别鞍点,逃离鞍点。
1.2 逃离鞍点的方法
判断一个临界点是局部最小还是鞍点需要知道损失函数的形状。
对于复杂网络,其损失函数也很复杂。对于给定点附近的损失函数,可以用泰勒级数近似。
其中,第三项式可以用来判断点附近的误差表面。其中的H,是海森矩阵,里面放的是L的二次微分。
- 该式在任何点都大于0时,说明当前是最小点,则为局部极小值。
- 该式在任何点都小于0时,说明当前是最大点,则为局部极大值。
- 若有时大于0,有时小于0,则既不是极大值也不是极小值,为鞍点。
为了简化计算,只计算海森矩阵H即可。若H的特征值为正,则H为正定矩阵,则为局部极小值。若H的特征值都为负,则H为负定矩阵,则为局部极大值。若有正有负,则为鞍点。
总结:使用海森矩阵,但需要计算二次微分,运算量大,一般不用。