10935 梯度、散度、旋度、Jacobian、Hessian、Laplacian 的關係圖

一、入門

  圖中的細實線箭頭表示了四種一階微分運算,包括梯度、散度、旋度和 Jacobian。每條箭頭的起點表示了相應運算的自變數的類型,終點表示了相應運算的因變數的類型,例如梯度運算是作用在標量上的,結果是向量。圖中的「向量」默認為列向量。

  這四種一階微分運算可以統一用算符 
abla (讀作 nabla)表示。Nabla 算符是一個形式向量 
abla = left[frac{partial}{partial x} quad frac{partial}{partial y} quad frac{partial}{partial z} 
ight]^T ,它可以如下地作用於標量 f 或向量 vec{v} 上:

  • 直接與標量 f 相乘,得到 f 的梯度 
abla f
  • 與向量 vec{v} 點乘,得到 vec{v} 的散度 
abla cdot vec{v} 。本文把點乘用矩陣乘法的形式寫作 
abla^T vec{v}
  • 與向量 vec{v} 叉乘,得到 vec{v} 的旋度 
abla 	imes vec{v}
  • 若允許偏導算符寫在變數的右邊,則 vec{v}
abla^T 就可以表示 vec{v} 的 Jacobian。

  圖中的粗實線箭頭表示了兩種二階微分運算,它們可以由兩個一階微分運算組合而成,即:

  • 梯度的散度就是 Laplacian;
  • 梯度的 Jacobian 就是 Hessian。

  圖中的虛線箭頭表示了一種不涉及微分的運算(跡)。在微分運算之後接上「跡」運算,可能得到另一種微分運算,如:

  • Jacobian 的跡就是散度;
  • Hessian 的跡就是 Laplacian。

二、入迷

  圖中的四種一階微分運算兩兩搭配,一共可以得到 7 種二階微分運算。第一節的圖中畫出了兩種,本節的圖中畫出了另外五種(淺藍色與灰色)。這五種二階微分運算並沒有特別的名字,但其中有兩種是恆等於 0 的:

  • 梯度的旋度恆為零向量;
  • 旋度的散度恆為 0。

其中,「梯度無旋」可以用下面的圖形象說明(圖片來自 @得分的 ):

如果梯度有旋會怎麼樣?

三、入魔

  Laplacian 是一個作用於標量的二階微分運算,其結果也是標量。但我們也可以把它作用於一個向量的每一個元素,得到一個向量;這種運算稱為向量 Laplacian。

  Laplacian 運算作用於標量 f 上的結果可以用 nabla 算符寫成 
abla^T 
abla f 。這種寫法無法直接推廣到向量 Laplacian,因為 
abla^T 
abla vec{v}
abla 無法直接跟 vec{v} 做矩陣乘法。但如果允許偏導算符寫在變數右邊,那就可以把向量 Laplacian 表示成 vec{v} 
abla^T 
abla 。這是 Jacobian 運算與「矩陣右乘 
abla 」運算的複合;後者的效果是對矩陣的每一行求散度。圖中恰好有一個為「逐行散度」運算準備的空位,我們把它補充到圖中。

  向量 Laplacian 的結果,恰好等於「散度的梯度」與「旋度的旋度」之差。為了體現出這種關係,我把「從向量到向量」的三種二階微分運算改用橙紅色箭頭表示。

四、入土

  既然引入了「逐行散度」這個一階微分運算,那就索性把它能組合出來的二階微分運算也全都放到圖裡去吧!這樣就得到了一個完美對稱的圖,它包含了 11 種二階微分運算,其中:

  • 有兩種比較常見:Laplacian 和 Hessian;
  • 有兩種恆等於零:「梯度的旋度」和「旋度的散度」;
  • 有三種滿足減法關係:向量 Laplacian = 梯度的散度 - 旋度的旋度;
  • 剩下的四種沒有專門的名字,也很罕見。

  其中任何一種微分運算後面接上「跡」,都可以得到另一種同階微分運算:

  • Jacobian 的跡就是散度;
  • Hessian 的跡就是 Laplacian;
  • 旋度的 Jacobian 的跡就是旋度的散度,恆等於 0;
  • 矩陣逐行散度的 Jacobian 的跡,就是它的逐行散度的散度。

但需要注意只能在運算之後接上「跡」,在運算之前接「跡」是不行的,比如矩陣的跡的梯度不等於它的逐行散度。

  如果有讀者知道圖中幾種沒有名字的運算叫什麼名字、有什麼用途,或者在圖中內容之外還有什麼值得包括進來的微分運算,歡迎補充。


推薦閱讀:

重讀線性代數(一)向量空間
矩陣的四個子空間及其聯繫
線性代數的形象理解
線性方程組(3)-靜態迭代法
機器學習-數學基礎

TAG:微積分 | 線性代數 | 多元微積分 |