看了点鞍点相关的知识,做一下备录。
我们知道在,优化问题中,深度学习的优化问题中,经常存在鞍点,就是这一点的导数为0,从某些维度看是极小值,从另一些维度看是极大值,比如:
深度学习的寻优过程中,鞍点所造成的困难,远比局部最小值大的多,因为
1)在高维参数空间,鞍点存在较多
2)大量工作表面局部最优解,对于模型而言已经足够好。
此外,正是因为深度学习中鞍点的大量存在,传统的牛顿法不适合,来寻优,因为牛顿法是通过直接寻找梯度为0的点,来寻优的,那么极有可能陷入鞍点。
(ps: 也正因为如此,牛顿法在Hessian为正定的时候,比梯度下降速度快,因为牛顿法直接找梯度为0 的点,而梯度下降则是一次一次的寻找当前点的最优梯度)
那么如何逃离,跳出鞍点呢?
1)利用Hessian矩阵,判断是否为鞍点,因为,Hessian在鞍点具有正负特征值,而在局部最小值点正定。
2)随机梯度,相当于给正确的梯度加了一点noise,一定程度上避免了鞍点(但是只是一定程度),达到类似于如下公式的效果
3)随机初始化起点,也有助于逃离鞍点,原因见here
4)增加偶尔的随机扰动,详见here
上一张各算法逃离鞍点的效果图,有一个直观的感觉:
最后,推荐大家看这两篇博客,帮助大家理解: