误区:
对于gradient=0,并不一定遇到local minina ,有可能会遇到saddle point;
对于卡在local minina ,是没有出路可以走的;
对于卡在saddle point,是方式跑出去的
So,当遇到critical point(即在该点中gradient=0),如何判断是local minima 还是 saddle point?
有!通过一个数学公式进行判断:如下图所示:
通过右边的图,当遇到critical point时,L() = L(
) + "红框"
我们根据红框这一项进行判断,判断在附近的error surface到底是什么样子,从而判断
是local mini or local max or saddle point
那么如何用红色框这一项进行判断嘞?
如下图所示:可以根据进行判断 ---(根据线性代数)----可以只根据H进行判断
进而通过H的特征值(eigen values)正负作为判断标准
光看理论看不懂? Ok,举个简单例子 ,如下图:
当遇到Saddle point时不知如何update了,因为g=0,此时不用慌,我们可以根据H进行相应update。
如何使用H进行update呢?
首先,假设v 取H的特征矩阵u
其次,假设 是u所对应的特征值 -- 并且假设
<0
这样,如下图所示,红框整体是小于0的
进而, (图片画错了)
那么,-
=u update
=
+ u
说这么多没用,不如举例来的实在!还是以上述简单的model为例。
但,用这种H进行update的方法,在实际使用时并不采用(而是使用其他方法),因为H的计算二阶是很费时间内存的。并且还有求出H相应的特征值与对应的特征向量,他们也是非常耗费时间的。
那为啥还有讲这个方法嘞? 目的是说,如果我们遇到saddle point的时候,不要慌,有办法解决。