每日一問之鞍點(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:文中有錯歡迎指出,互相學習。以及歡迎關注我的公衆號 :)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章