鞍点

长期以来,人们普遍认为,神经网络优化问题困难是因为较大的神经网络中包含很多局部极小值(local minima),使得算法容易陷入到其中某些点。到2014年,一篇论文《Identifying and attacking the saddle point problem in high-dimensional non-convex optimization》,提出高维非凸优化问题之所以困难,是因为存在大量的鞍点而不是局部极值。

鞍点:一个维度向上倾斜且另一维度向下倾斜的点。这些鞍点通常被相同误差值的平面所包围,这使得算法陷入其中很难脱离出来,因为梯度在所有维度上接近于零。

图一表示:神经网络只有两个参数时的情况(水平方向分别为两个参数,纵轴代表损失函数),有多个局部最小值 
图二表示:神经网络具有高维参数时,可看到有鞍点。 

鞍点(saddle point)这个词来自z=x2−y2z=x2−y2的图形,在x轴方向向上曲,在y轴方向向下曲,像马鞍,鞍点为(0,0)。 
 
拥有两个以上参数的函数。它的曲面在鞍点好像一个马鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高线图里,一般来说,当两个等高线圈圈相交叉的地点,就是鞍点。 
这里写图片描述

扩展: 
神经网络优化问题中的鞍点即一个维度向上倾斜且另一维度向下倾斜的点。

鞍点:梯度等于零,在其附近Hessian矩阵有正的和负的特征值,行列式小于0,即是不定的。 
鞍点和局部极值的区别: 
鞍点和局部极小值相同的是,在该点处的梯度都等于零,不同在于在鞍点附近Hessian矩阵是不定的(行列式小于0),而在局部极值附近的Hessian矩阵是正定的。

在鞍点附近,基于梯度的优化算法(几乎目前所有的实际使用的优化算法都是基于梯度的)会遇到较为严重的问题: 
鞍点处的梯度为零,鞍点通常被相同误差值的平面所包围(这个平面又叫Plateaus,Plateaus是梯度接近于零的平缓区域,会降低神经网络学习速度),在高维的情形,这个鞍点附近的平坦区域范围可能非常大,这使得SGD算法很难脱离区域,即可能会长时间卡在该点附近(因为梯度在所有维度上接近于零)。 
 
在鞍点数目极大的时候,这个问题会变得非常严重。

高维非凸优化问题之所以困难,是因为高维参数空间存在大量的鞍点。

补充: 
Hessian矩阵是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。可用于判定多元函数的极值。 
鞍点_第1张图片

你可能感兴趣的:(机器学习)