区别局部极小值 local minimum vs 鞍点 saddle point

红点所在位置像“马鞍”:

沿 x 方向看,它是一个低点

沿 y 方向看,它却是一个高点

特征:梯度为 0,但不是最低点

模型训练可能在这里卡住,因为梯度下降法只依赖梯度信息 → 梯度接近 0 时会停滞

Screenshot 2025-08-17 at 4.54.36 PM.png

如何通过数学方法来判断一个临界点(梯度为 0)到底是局部极小值、局部极大值还是鞍点?

用泰勒展开近似损失函数,我们把损失函数在 θ′ 附近展开:

Hessian 里的元素是“二阶偏导数”,因为函数 f(x,y) 有多个变量,每个方向都可以分别求导。

Hessian > 0 → 碗口向上 → 谷底(极小值)

Hessian < 0 → 碗口向下 → 山顶(极大值)

Hessian 有正有负 → 马鞍形 → 鞍点

Screenshot 2025-08-17 at 5.42.10 PM.png

Screenshot 2025-08-17 at 6.59.23 PM.png

Screenshot 2025-08-17 at 6.59.48 PM.png

对称矩阵的特性:一定可以被正交对角化,特征值一定都是实数。

特征向量:不会被矩阵旋转的方向。

特征值:矩阵在这个方向上的拉伸倍数。

在 Hessian 场景里,特征值的符号 = 弯曲方向。

Hessian 的关键特性是“对称”,这保证了它的特征值能真实反映函数的曲率。通过特征值的符号,就能判断临界点是极小值、极大值还是鞍点。

书上的例子(3.6)

Screenshot 2025-08-17 at 9.15.17 PM.png

Screenshot 2025-08-17 at 9.15.28 PM.png

用行列式 det(H−λI) 计算特征值

det(H−λI) = (−λ)(−λ)−(−2)(−2) = λ^2−4

λ^2−4 = 0 ⇒ λ = ±2

Screenshot 2025-08-17 at 9.17.23 PM.png

实际上,我们几乎不会真的把海森矩 阵算出来,因为海森矩阵需要算二次微分,计算这个矩阵的运算量非常大,还要把它的特征值 跟特征向量找出来,所以几乎没有人用这个方法来逃离鞍点

深度学习里局部极小值不太可怕

批量和动量

随机梯度下降 (Stochastic Gradient Descent, SGD),小批量梯度下降 (Mini-batch Gradient Descent),严格来说:“SGD”这个词在论文/代码里经常默认就是 mini-batch SGD(而不是单样本),只是历史命名沿用下来而已。