优化与训练

局部极小值与鞍点(local minima and saddle points)

/ LOH-kul MIN-ih-muh and SAD-ul poynts /

当训练沿着损失地形往下走、寻找最低点时,它可能在一些并非真正谷底的地方卡住或停滞。局部极小值,是一处在它紧邻一带最低、却并非整体最低的洼地——就像半山腰的一汪小池塘。站在里面四下张望,每个方向都是往上的,尽管别处其实还有一道更深的山谷。全局极小值,才是所有点里真正最低的那个。

鞍点要微妙些,而且事实证明,在高维空间里它常见得多。它是这样一处地方:在某些方向上是往上走,在另一些方向上是往下走——形如一副马鞍,或一道山口。那里的坡度是平的(梯度为零),于是朴素的下降会慢到几近停止,被骗以为自己已经到了,尽管只要朝对的方向看,往下走的出路就在那儿。学习曲线里长长的平台期,常常就是正在被慢慢穿越的鞍点。

而深度学习里有一个让人安心、又有几分出人意料的现实:在大型神经网络那种极高维的地形中,糟糕的局部极小值,比低维图景给人的直觉要罕见得多,而那些最麻烦的平坦处大多是鞍点,而非陷阱。一个点要成为真正的局部极小值,它必须在数百万个方向上同时向上弯曲——这在统计上不大可能。这正是简单的梯度下降之所以能work得这么好的部分原因,也是为什么动量、以及带噪声的 SGD 更新(它们有助于从鞍点上滑下去)会如此有用。

想象一副马鞍:骑手坐进的那个凹处,前后方向是低的,左右方向却是高的。一个球正好放在正中央会一动不动——那儿的地面是平的——可只要朝侧面轻轻一推,它就滚走了。训练会在这种点上停滞,直到 SGD 里的噪声把它往某个下坡方向轻轻一拨。

鞍点在正中央是平的,可只要朝侧面迈一步就是下坡。

「深层网络会无可救药地困在糟糕的局部极小值里」这种老担忧,多半被夸大了——在高维空间里,鞍点和平坦的高原才是更现实的麻烦,而 SGD 里那点随机噪声通常就能逃出它们。

又称
local minimumsaddle pointstationary point局部极小值局部最小值鞍点局部極小值鞍點