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(全局最小值):已经达成目标
那么怎么判断临界点是哪种类型呢?
1.1.1 怎么判断临界点的类型
判断临界点需要看\(loss\)函数的形状.我们没办法完整地看function形状,但给定某组参数,在这组参数的\(loss\) \(function\)是有办法被写出来的.即利用泰勒展开式判断临界点的类型.
字数太多,直接放大佬的解释:
关于为什么是这也展开可以参考下这个Click.在 Critical point 附近时:第二项为0,只需考察H
的特征值.
我们将\(\theta-\theta^{'}\)看作\(v\),\(v\)当然是一个向量.
- 当\(\theta\)不论代任何值时,\(v^THv > 0\),即红色框里都\(>0\),那么在\(\theta^{'}\)附近,取任何值都比前者大,所以是局部最小值.
- 同理,当\(\theta\)不论代任何值时,\(v^THv < 0\),即红色框里都\(<0\),那么在\(\theta^{'}\)附近,取任何值都比前者小,所以是局部最大值.
- 当\(\theta\)不论代任何值时,\(v^THv\)有的\(>0\),有的\(<0\).此时是鞍点.
但这个判断方法需要将所有的\(v\)代入测试,这是不切实际的.但有一种方法利用线性代数可以解决.
(1) 正定矩阵
下面是它的定义.它有一个特点是它的特征值全都是正的.
(2) 负定矩阵
下面是它的定义.它有一个特点是它的特征值全都是负数.
所以我们不需要计算所有的\(v^THv\),只需要计算\(H\)的特征值,就可以判断属于哪种情况.
标签:minima,point,临界点,saddle,最小值,loss,theta,鞍点 From: https://www.cnblogs.com/newblg/p/17460957.html