每日一问之鞍点(saddle point)

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

每日一问之鞍点(saddle point)_第1张图片

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

  • 什么是鞍点?

  • 什么是 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.

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

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

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

每日一问之鞍点(saddle point)_第2张图片

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

每日一问之鞍点(saddle point)_第3张图片

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

每日一问之鞍点(saddle point)_第4张图片

什么是 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 的矩阵,通常如下定义:

每日一问之鞍点(saddle point)_第5张图片

如何证明一个点为鞍点

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

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

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

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

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

局部极小值和鞍点

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

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

每日一问之鞍点(saddle point)_第6张图片

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

每日一问之鞍点(saddle point)_第7张图片

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

参考

[1]. Saddle point - Wikipedia

[2]. Hessian matrix - Wikipedia

[3]. 鞍点 - CSDN博客

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

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

你可能感兴趣的:(每日一问)