资讯

鞍点是什么?一个方向是谷底、另一个方向是山顶的点

2026-11-053 分钟阅读百科
TL;DR鞍点(Saddle Point)是函数梯度为零、但既不是局部最小也不是局部最大的点,在某些方向上函数向上弯、另一些方向上向下弯,形似马鞍;在高维的深度学习损失函数中,鞍点远比局部最小常见,是优化变慢的主要原因之一,随机梯度噪声和动量有助于逃离鞍点。

鞍点(Saddle Point)是函数中一种特殊的点:在这一点上,函数的梯度为零,也就是各个方向上的坡度都是零,但它既不是局部的最低点,也不是局部的最高点。它的名字来源于马鞍的形状:坐在马鞍的中心,沿着马的前后方向看,这里是最低点,两头都向上翘起;沿着马的左右方向看,这里却是最高点,两侧都向下垂落。

一个数学的例子

最经典的鞍点例子是函数“x 的平方减去 y 的平方”。在原点处,函数的值为零,梯度也为零。如果沿着 x 轴的方向看,函数是 x 的平方,原点是最低点;如果沿着 y 轴的方向看,函数是负的 y 的平方,原点是最高点。所以原点是一个鞍点。在数学上,可以通过函数的二阶导数,也就是海森矩阵来判断一个梯度为零的点是什么类型:如果海森矩阵的所有特征值都是正的,就是局部最小;都是负的,就是局部最大;如果既有正的又有负的,就是鞍点。

为什么鞍点在深度学习中很重要

训练神经网络的过程,就是在损失函数的“地形”上寻找低洼的地方。人们过去常常担心,训练可能会陷入不够好的局部最小,就像掉进了一个小坑里出不来。但研究表明,在高维的空间中,真正的障碍往往不是局部最小,而是鞍点。2014 年,Yann Dauphin、Razvan Pascanu、Yoshua Bengio 等人的研究指出:在参数非常多的高维空间中,一个梯度为零的点要成为局部最小,需要在所有的方向上都是向上弯曲的;而随着维度的增加,这种情况变得越来越罕见,绝大多数梯度为零的点都是在一些方向上向上弯、在另一些方向上向下弯的鞍点。直观地说,在一个有数百万个参数的网络中,要求所有数百万个方向都恰好向上弯,几乎是不可能的。而且,研究还发现,那些损失值较高的临界点大多是鞍点,而损失值较低的地方才更可能出现局部最小。

鞍点给优化带来的困难

在鞍点附近,梯度非常小,接近于零。梯度下降法依靠梯度来决定往哪个方向走、走多远,当梯度很小时,每一步的更新也非常小,训练的进展会变得极其缓慢,看起来好像停滞了一样,损失长时间几乎不再下降,形成一个“平台期”。如果只看训练曲线,很容易误以为模型已经收敛到了某个最优点,实际上它可能只是被困在了一个鞍点附近。

如何逃离鞍点

随机梯度下降:使用小批量数据计算的梯度带有随机的噪声,这些噪声能够把参数从鞍点附近“推”开,让它沿着向下弯曲的方向逃离。研究证明,加入适当的噪声后,梯度下降能够在合理的时间内逃离鞍点。动量法:像一个滚动的球一样,积累之前的速度,即使在梯度很小的地方,也能凭借惯性继续前进,冲过平坦的鞍点区域。自适应学习率的方法:比如 Adam、RMSProp,能够在梯度很小的方向上相对地增大步长,加快在平坦区域中的移动。二阶方法:利用海森矩阵的信息,可以直接找出向下弯曲的方向,但计算代价很高,在大规模的神经网络中很少直接使用。正是由于这些方法的帮助,加上高维空间中局部最小大多已经足够好,深度神经网络虽然面对的是极其复杂的非凸优化问题,在实践中仍然能够被成功地训练。