每日一问之鞍点(saddle point)

今天开始在 GitHub 上刷每日一题,但是很快就被一道题卡住了。题目如下所示:

结合自己的情况并针对这道问题,整理出了以下概念:

  • 什么是鞍点?

  • 什么是 Hessian 矩阵?

  • 如何证明一个点为鞍点?

  • 局部最小值和鞍点的区别?

什么是鞍点

在维基中的定义如下:

In mathematics, a saddle point or minimax point is a point on the surface of the graph of a function where the slopes (derivatives) in orthogonal directions are all zero (a critical point), but which is not a local extremum of the function.

在数学中,鞍点或极小值点是函数图形表面上的一个点,其正交方向上的斜率(导数)均为零(临界点),但不是函数的局部极值。一句话概括就是:

一个不是局部极值点的驻点称为鞍点

*驻点:函数在一点处的一阶导数为零。

如下图所示,是函数 z = x2 - y2 图像,其鞍点在 (0, 0) 位置。函数 z 的整个曲面看上去就像是一个马鞍,其在 x 轴方向向上曲,在 y 轴方向向下曲。所以这也是鞍点这个名字的由来。

附上一张吴恩达大大的画作,哈哈。

什么是 Hessian 矩阵

在维基中的定义如下:

In mathematics, the Hessian matrix or Hessian is a square matrix of second-order partial derivatives of a scalar-valued function, or scalar field. It describes the local curvature of a function of many variables.

在数学中,Hessian 矩阵是标量值函数或标量场函数的二阶偏导数的方块矩阵。它描述了许多变量函数的局部曲率,可以用于判定多元函数的极值。假设有一实数函数 f: Rn→ R ,是关于输入 x (xRn) 及输出 f(x) ∈ R 之间的关系式。如果其所有的二阶偏导数都存在,并且在该函数的领域上连续,那么 Hessian 矩阵 H 是一个 n×n 的矩阵,通常如下定义:

如何证明一个点为鞍点

Hessian 矩阵是一个凸函数,并且是正半定的。通过这一属性,我们可以测试临界点 x 是局部最大值,或者是局部最小值还是鞍点。如下所示:

  • 如果 Hx 处为正定矩阵时,则函数 fx 处有一个局部极小值;

  • 如果 Hx 处为负定矩阵时,则函数 fx 处有一个局部极大值;

  • 如果 Hx 处为不定矩阵时(即同时有正特征值和负特征值),则函数 fx 处为鞍点。

所以,一个简单标准的方法验证一个静止点是否为一个实数函数的鞍点,就是计算该函数的在该点上的 Hessian 矩阵。如果该 Hessian 矩阵为不定的,则该点为该函数的鞍点。

局部极小值和鞍点

局部极小值和鞍点的相同点是,在该点处的梯度(导数)都为零。从上面可以看出,局部极小值和鞍点的区别就在于,在该点处的 Hessian 矩阵的特性。如果 Hessian 矩阵在该点处是正定的,则为局部极小值;如果为不定的,则为鞍点。

鞍点通常是神经网络训练的困难之处。如下图所示,是一个包含两个参数的神经网络,是一个低维度的图,可以发现其存在很多的局部极小值,训练神经网络的时候,通常会陷入这些极小值中。事实上,建立的神经网络包含大量的参数,造成局部最优的困惑不是这些极小值点,而是零梯度点,通常为鞍点。

为什么说鞍点是训练神经网络的困难之处呢?因为鞍点的存在,会有一个平稳段,在该平稳段,函数的导数会长时间接近于 0,这使得神经网络的训练变得缓慢。

最后,总结到这里,大家也都知道开篇这道题目的答案了吧。

参考

[1]. Saddle point - Wikipedia

[2]. Hessian matrix - Wikipedia

[3]. 鞍点 - CSDN博客

[4]. 吴恩达 - 深度学习课程

P.S:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?

对于逃离Saddle Point的方法之是使用momentum(动量)方法。Momentum方法是种基于动量思想的优化算法,在深度学习领域中常被使用。 Momentum算法通过引入动量来加速梯度下降的速度,从而更快地逃离Saddle Point鞍点)的位置。在普通梯度下降的过程中,我们只考虑当前的梯度信息,并直接朝着梯度下降的方向进行更新。而momentum方法则考虑了过去的梯度信息,通过计算过去步骤中梯度的累积平均值来更新参数。 具体而言,momentum方法通过引入动量参数来保留部分历史步骤的信息,使得在当前步骤中,更新方向不再仅仅依靠当前梯度信息,而是结合了历史步骤中的梯度信息。这种机制有助于克服Saddle Point中平坦区域的题,并且加速在陡峭区域中的下降。 在Momentum方法中,更新公式如下: v = βv + (1-β)∇J(θ) θ = θ - αv 其中,v是动量参数,它表示历史梯度信息的加权累积平均值;β是个介于0和1之间的超参数,用于控制历史梯度信息的权重;α是学习率。 Momentum方法的优点在于,它可以加速梯度下降并帮助跳出Saddle Point,尤其在训练深度神经网络时效果较为显著。然而,如果设置的动量参数较大,可能会导致参数在陡峭区域波动较大,进而难以收敛。因此在使用momentum方法时,需要根据实际情况进行调整。 总而言之,Momentum方法通过利用历史梯度信息,可以更快地逃离Saddle Point,加速梯度下降的过程,提高优化算法的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值