区别局部极小值 local minimum vs 鞍点 saddle point
红点所在位置像“马鞍”:
沿 x 方向看,它是一个低点
沿 y 方向看,它却是一个高点
特征:梯度为 0,但不是最低点
模型训练可能在这里卡住,因为梯度下降法只依赖梯度信息 → 梯度接近 0 时会停滞
用泰勒展开近似损失函数,我们把损失函数在 θ′ 附近展开:
Hessian 里的元素是“二阶偏导数”,因为函数 f(x,y) 有多个变量,每个方向都可以分别求导。
Hessian > 0 → 碗口向上 → 谷底(极小值)
Hessian < 0 → 碗口向下 → 山顶(极大值)
Hessian 有正有负 → 马鞍形 → 鞍点
对称矩阵的特性:一定可以被正交对角化,特征值一定都是实数。
特征向量:不会被矩阵旋转的方向。
特征值:矩阵在这个方向上的拉伸倍数。
在 Hessian 场景里,特征值的符号 = 弯曲方向。
Hessian 的关键特性是“对称”,这保证了它的特征值能真实反映函数的曲率。通过特征值的符号,就能判断临界点是极小值、极大值还是鞍点。
书上的例子(3.6)
用行列式 det(H−λI) 计算特征值
det(H−λI) = (−λ)(−λ)−(−2)(−2) = λ^2−4
λ^2−4 = 0 ⇒ λ = ±2
实际上,我们几乎不会真的把海森矩 阵算出来,因为海森矩阵需要算二次微分,计算这个矩阵的运算量非常大,还要把它的特征值 跟特征向量找出来,所以几乎没有人用这个方法来逃离鞍点
深度学习里局部极小值不太可怕
随机梯度下降 (Stochastic Gradient Descent, SGD),小批量梯度下降 (Mini-batch Gradient Descent),严格来说:“SGD”这个词在论文/代码里经常默认就是 mini-batch SGD(而不是单样本),只是历史命名沿用下来而已。