Gradient为零,loss不下降的三种情况
1.local minima
2.local maxima
3.saddle point
这三种情况统称为critical point.
随着训练次数增加,loss值不再下降,gradient趋近于零,训练到达瓶颈。通过上图可以看出,如果训练的处于 saddle point ,是值得开心的,毕竟这种情况是有解的。
那么怎么判断是那种情况呢?
这里用一个例子来说明。假设一个network只用两个参数w1,w2,输入为1,输出也尽量和1靠近。
通过开始设定的function:y = w1w2x 我们可以计算出这个式子的loss,使用MSE均方误差:
然后用到微分方程啦,绿色框的就是我们说的gradient(梯度),此时梯度为零,解出W1,W2。W1 = 0, W2 = 0.
通过这个结果还是看不出,我们遇到的是local minima 还是 saddle point.我们需要数学上的二次求导。
然后把w1,w2的值带进去,可以计算出每个二次求导的结果,组成一个矩阵,用H表示:
计算这个矩阵的eigen value(特征值),可以看出特征值有正有负,那么现在的情况就是 saddle point.
如果特征值都是正的,那么这种情况就是 local minima. 相比较下 saddle point 有解且更为常见。