梯度下降法局部最优解和鞍点的问题

陷入局部最优并不是神经网络的问题,在一个高维空间中做梯度下降,很难收敛到局部最优,因为局部最小值要求函数在所有维度上都是局部最小值。若一个维度收敛到局部最小值的概率是0.5,则n维度收敛到局部最小值的概率是0.5^n,因此若n足够大,则收敛到局部最小值得概率接近于0。

实际情况,在高维平面,函数会落在鞍点上。鞍点是函数在某一维度或多个维度上梯度不为0的点。因此,落在鞍点上的概率为1-0.5^n。也就是说,当模型最后收敛到一个导数接近0的点,那这个点几乎可以肯定是鞍点。

我们使用的小批量梯度下降法(mini-batch SGD),其本身是有噪声的梯度估计;因此即使位于梯度为0的点,也经常在某个mini-batch下将其估计偏了,导致往前或往后挪一步摔下马鞍。即使用小批量梯度下降法使得模型很容易逃离特征空间中的鞍点。

那么,神经网络难以踩到局部最优点,也很容易逃离鞍点,为什么最后模型会收敛呢?在高维空间中,真正可怕的不是局部最优点也不是鞍点,而是一些特殊地形,如大面积的平坦区域。在平坦区域,虽然导数不为0但也不大,但是其梯度下降的路程却非常的远。它需要走很多步才能走出这一片平台区域;在特殊情况下,使用一阶优化算法甚至走无穷步也走不出去。

因此,相比于局部最优和鞍点,优化算法更可能载到这种类似的平坦区域中;一旦陷入这些危险地形,几乎是无解的。

我们应该考虑的是如何设计一个没有类似平坦区域的loss空间,以及深度学习模型的设计。

参考:http://www.360doc.com/content/17/1122/08/7669533_706045736.shtml

你可能感兴趣的:(梯度下降法局部最优解和鞍点的问题)