天天看點

AI基礎:矩陣求導,你一定要收藏

不得不說,向量和矩陣真的是一門高深而又通用的學問,應用十分廣泛,不信你可以往回看,前面有關線性代數的文章,哪一篇沒個矩陣或者向量。是以呢,我們今天就來看一下向量的導數(矩陣求導)相關内容。

1、定義和約定

矩陣求導的本質是多元函數求導,可以了解為把求導的結果排列為矩陣形式,友善表達與計算。但是矩陣求導本身有一個混亂的地方,就是行、列向量的差異,所導緻的結果的差異。而這個差異将導緻最後結果出現轉置問題。事實上,對于最後求導的結果,很多教材的處理是不一樣的,本質上,這隻是一個 

 問題。本章采用非轉置結果,也即是得到結果是雅克比矩陣,同時後面将解釋非轉置結果。

是目前找到關于矩陣求導最詳細的結果,是以這裡的結果将保持和

的結果一緻,

相關内容可進一步閱讀:https://en.wikipedia.org/wiki/Matrix_calculus#Layout_conventions。

約定:

  • 标量用普通小寫字母表示,如 

     ,

  • 向量用帶箭頭小寫字母表示,如 

     ,且其中元素為:

  • 矩陣用大寫字母表示,如:
  • 所有向量均預設為列向量,即 

     為列向量,而

  • 分子布局(

    ):分子為 

    (列向量)或分母為 

    (行向量),或者說分子保持原始形式,分母為轉置形式。

  • 分母布局(

    ):分子為 

    (行向量)或分母為 

    (列向量),或者說分子為轉置形式,分母保持為原始形式。

需要注意的是,以下公式的原始計算式子,

上是不做轉置的,但是為了統一,下文是使用了轉置。例如分子布局的标量對向量,

 上是  ,而本文是  ,但無論是 

2、分子布局

(1)标量對向量:分子 

 為标量,分母 

 為行向量   

(2)向量對标量:分子 

 為列向量,分母 

 為标量  

(3)向量對向量:分子 

 為列向量,分母 

例如

是 

 矩陣,

 是 

 列向量,則 

 是 

 列向量,記  

 ,那麼 

其中 

(4)标量對矩陣。這裡的書寫與一些網上的部落格不一樣,但是計算結果是一樣。網上一般是 

 ,但是為了避免混淆,這裡的分母部分不再寫為 

 ,而是 

 。 

 是一個 

這裡看到是轉置的。

(5)矩陣對标量

3、分母布局

(1) 标量對向量:分子 

 為标量,分母 

 為列向量    

(2) 向量對标量:分子 

 為行向量,分母 

 為标量  

(3) 向量對向量:分子 

 為行向量,分母 

例如 

 是 

 矩陣,

 是 

 列向量,則 

 是 

 列向量,記 

 ,那麼 

(4) 标量對矩陣。

這裡看到是正的。

4、其他寫法

一個小衆的寫法(鄒博寫法):向量對向量求偏導,可以看到分子分母都是列向量,這種情況其實不好推導。

 是 

 矩陣,

 是 

 列向量,則 

 是 

 列向量,記 

 ,那麼  

 第一個元素 

 對第一個元素 

 求導,得到 

 。因為 

 是列向量,是以 

 第一個元素  

  對第二個元素 

 ,得到 

 ,按照 

 形狀,寫在第二行第一列,以此類推,得到  

推廣得到:

需要注意的是,所謂的布局,其實就是起始計算公式的分子和分母采用的行列設定。關于詳細的各個矩陣求導的基礎結果,可以進一步閱讀

:https://en.wikipedia.org/wiki/Matrix_calculus#Scalar-by-vector_identities

5、常用結果

一些常用的結果(原始向量不做說明,均為列向量):

向量對向量:(向量對向量得矩陣,沒嚴格驗證)

标量對向量(标量對向量,向量是行得行,是列得列,沒嚴格驗證)

 ; 若 

  是對稱陣 ,

 ; 若 

  是對稱陣 ,

其實通過上面的式子可以發現,求導結果類似于我們函數求導的結果,唯一差異在于轉置以及前後關系。而這一點,如果不想記憶,可以通過結果是行向量還是列向量“猜”到。

推導:

接下來我們計算誤差平方和 

是以分子肯定是行向量乘以列向量。而因為 

 是一個列向量,是以也一定是 

 這種形式得到的列向量(而不是

(1) 

  (标量對向量,且标量和 

(2)  

(3)  (标量對向量,标量的轉置等于本身,檢視上面公式)

(4)  

上面式子整合,有:

分享到這裡,最後一篇線性代數就結束啦,可是通往數學界的道路永遠沒有盡頭哦~