最优化问题之如何逃离(跳出)鞍点(Saddle Points)

时间:2024-04-11 12:45:20

看了点鞍点相关的知识,做一下备录。

我们知道在,优化问题中,深度学习的优化问题中,经常存在鞍点,就是这一点的导数为0,从某些维度看是极小值,从另一些维度看是极大值,比如:

最优化问题之如何逃离(跳出)鞍点(Saddle Points)

深度学习的寻优过程中,鞍点所造成的困难,远比局部最小值大的多,因为

1)在高维参数空间,鞍点存在较多
2)大量工作表面局部最优解,对于模型而言已经足够好。

此外,正是因为深度学习中鞍点的大量存在,传统的牛顿法不适合,来寻优,因为牛顿法是通过直接寻找梯度为0的点,来寻优的,那么极有可能陷入鞍点。
(ps: 也正因为如此,牛顿法在Hessian为正定的时候,比梯度下降速度快,因为牛顿法直接找梯度为0 的点,而梯度下降则是一次一次的寻找当前点的最优梯度)

那么如何逃离,跳出鞍点呢?

1)利用Hessian矩阵,判断是否为鞍点,因为,Hessian在鞍点具有正负特征值,而在局部最小值点正定。

2)随机梯度,相当于给正确的梯度加了一点noise,一定程度上避免了鞍点(但是只是一定程度),达到类似于如下公式的效果

最优化问题之如何逃离(跳出)鞍点(Saddle Points)

3)随机初始化起点,也有助于逃离鞍点,原因见here

4)增加偶尔的随机扰动,详见here

上一张各算法逃离鞍点的效果图,有一个直观的感觉:

最优化问题之如何逃离(跳出)鞍点(Saddle Points)

最后,推荐大家看这两篇博客,帮助大家理解:

Escaping from Saddle Points

Saddles Again