本文的閱讀等級:中級
令 為一個多變量可導函數,或記為
,其中
。我們定義
的梯度 (gradient) 為底下的
維向量:
,
其中 的第
元是
對變數
的一階偏導數
。如果給定
個多變量函數
,則有
個梯度
。將所有
梯度合併成一個矩陣,再取轉置,可得
階矩陣
,
稱為 Jacobian 矩陣。另一方面,如果 是二階可導函數,我們可以計算
的每一元
的梯度,如此可得
,
稱為 Hessian 矩陣。請注意,梯度 的 Jacobian 矩陣即為函數
的 Hessian 矩陣 (見“Jacobian 矩陣與行列式”)。以上三種涉及純量對向量求導的結果經常出現於線性代數的相關應用領域,不過一般線性代數課程卻鮮少討論。本文介紹一些常用的矩陣導數 (matrix calculus),包括下列數種類型 :
這裡字母 代表自變數,
代表應變數;小寫斜體如
表示純量,小寫粗體如
表示向量,大寫斜體如
表示矩陣。針對每一種類型,底下列舉一些常用的恆等式並給出證明。
首先說明本文使用的符號。如果不特別指定,假設 是一個
維向量,
是一個
維向量,
和
是
階矩陣。矩陣導數存在兩種佈局慣例 (layout convention):分子佈局與分母佈局[1]。以向量—向量導數
為例說明。分子佈局,也稱為 Jacobian 形式,根據
和
將結果置於一個
階矩陣,如下:
,
或明確地寫成
。
分母佈局,也稱為 Hessian 形式或梯度形式,根據 與
將結果置於一個
階矩陣,如下:
,
或明確地寫成
。
如果採用分子佈局, 是
維列向量 (row vector),
是
維行向量 (column vector);如果採用分母佈局,
是
維行向量,
是
維列向量。(在台灣,橫向稱為列,縱向稱為行。在中國大陸,橫向稱為行,縱向稱為列。) 請注意,對於純量—向量導數、向量—純量導數和向量—向量導數,本文採用分母佈局;對於純量—矩陣導數和矩陣—純量導數,本文採用混合佈局,
採用分母佈局,但
採用分子佈局。我選擇混和佈局的目的是讓矩陣導數與原矩陣有相同的尺寸:
。
。
向量—向量恆等式
假設純量 、向量
和矩陣
都不是
的函數;
,
和
是可導函數[2]。
(VV-1)
使用定義,。
(VV-2)
使用定義,。這裡
是 Kronecker 記號:
若
;
若
。
(VV-3)
使用定義,
。
(VV-4)
使用定義,
。
或者,使用 (VV-3),
。
(VV-5)
使用定義,
。
(VV-6)
使用定義,
(VV-7)
使用定義,
(VV-8)
使用定義與鏈式法則,
純量—向量恆等式
假設純量 、向量
和矩陣
都不是
的函數;
,
和
是可導函數。
(SV-1)
使用 (VV-1),將向量 以純量
取代。
(SV-2)
使用 (VV-5),將向量函數 以
取代。
(SV-3)
使用 (VV-7),將向量函數 和
分別以
和
取代。
(SV-4)
使用定義,
(SV-5)
使用 (VV-8),將向量函數 以
取代。
(SV-6)
使用 (SV-4),
(SV-7)
使用 (SV-6) 和 (VV-6),
。
(SV-8)
使用 (SV-6),(VV-1) 和 (VV-2),
。
(SV-9)
使用 (SV-8),將 以
取代。
(SV-10)
使用 (SV-7) 和 (VV-2),
。
(SV-11)
使用 (SV-10),將 以
取代。
(SV-12)
使用 (SV4) 和 (SV8),
(SV-13)
有些作者將二次求導 寫為
。使用 (SV-10) 和 (VV-3),
。
在線性代數中,最小平方近似問題是純量對向量求導的一個經典應用。考慮
,
其中 是
階係數矩陣,
是
維常數向量,
是
維未知向量。寫出
利用 (SV-1),(SV-8) 和 (SV-10),
設上式等於零向量,即得正規方程式 (normal equation) 。相關討論請見“從線性變換解釋最小平方近似”。
向量—純量恆等式
假設純量 、向量
和矩陣
都不是
的函數;
,
和
是可導函數。
(VS-1)
使用 (VV-1),將向量 以純量
取代。
(VS-2)
使用 (VV-5),將向量 以純量
取代。
(VS-3)
使用 (VV-6),將向量 以純量
取代。
(VS-4)
使用 (VV-7),將向量 以純量
取代。
(VS-5)
因為 和
都是線性函數,故可置換。
(VS-6)
使用 (VV-8),將向量 以純量
取代,將向量函數
以
取代。
純量—矩陣恆等式
假設純量 、向量
和
都不是
的函數;
,
和
是可導函數。恆等式 (SM-1) 至 (SM-5) 與前述恆等式類似,證明省略。
(SM-1)
(SM-2)
(SM-3)
(SM-4)
(SM-5)
(SM-6)
使用定義,
(SM-7)
對純量 取轉置,使用 (SM-6),
。
(SM-8)
使用 (SM-6) 和 (SM-7),將 以
替換。
(SM-9)
使用定義,
另一個快捷的作法將 視為一個常數矩陣,使用微分乘法規則,(SM-6) 和 (SM-7),
矩陣—純量恆等式
假設純量 、矩陣
和
都不是
的函數;
和
是可導函數。恆等式 (MS-1) 至 (MS-3) 與前述恆等式類似,證明從略。
(MS-1)
(MS-2)
(MS-3)
(MS-4)
使用定義,
(MS-5)
使用定義,
(MS-6)
考慮 ,使用 (MS-1) 和 (MS-4),
上式左乘 ,即得證。
(MS-7)
根據矩陣指數定義 (見“矩陣指數”),
,
使用 (MS-2) 和 (MS-3),
除了本文介紹的基本型態矩陣導數,還有許多涉及跡數 (trace) 和行列式的矩陣導數恆等式。不過這些恆等式的推導程序較為繁瑣,日後再另文詳細解說。
參考來源:
[1] 維基百科:Matrix Calculus
[2] 本文選取的恆等式主要來自The Matrix Cookbook和The Matrix Reference Manual。
請問老師:
(1) 這次談到的題材,與「流形」(Manifold)有沒有關聯?
(2) 多變量可導函數 f(x1, x2, x3, …….., xn) 的散度(divergence)及旋度(curl),有沒有定義?
本文主要內容是以矩陣(向量可以看作nx1階矩陣)來表達一次或二次多變量函數的導數(或將許多單變量函數表示為矩陣),這與流形沒有甚麼關係。散度與旋度是向量分析 (vector calculus, vector analysis) 的內容,向量分析是一個專門領域,與線性代數的矩陣運算有很大的不同。請參考維基百科介紹:
http://en.wikipedia.org/wiki/Vector_calculus
感謝老師的說明。
http://zh.wikipedia.org/zh-tw/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%A9%BA%E9%97%B4
老師~~
這個網頁文章中的實數座標空間的部分裡面所描述的標準基那裏有一個算式我搞不太清楚~~
大概是在第十行的式子部分,裡頭說X=summation各元素乘上標準基,很奇怪的是X不是應該是一個座標嗎~???
為什麼又可以表示一個純量的和,兩者是在定義上有甚麼不一樣嗎~??
還是有甚麼地方我看錯或者是搞混了~~??
哈~~老師抱歉我看懂了!!!是我自己沒看清楚XD
老師,我在internet上看到幾種對矩陣函數關於矩陣的導數的定義(dF(x)/dX),這裡的X是矩陣, F(X)是一矩陣函數。不知老師對矩陣函數的關於矩陣的導數是否有研究?
我對矩陣函數
關於
的導數沒啥研究,因為我自己並未使用這個工具(多變量統計可能需要)。過去我曾經大概介紹Kronecker product (https://ccjou.wordpress.com/2011/02/16/kronecker-%E7%A9%8D/),但沒有再繼續討論tensor product。這個主題對線性代數讀者可能稍嫌冷僻,不過還是可以將它放入未來的書寫計劃中。
感謝老師回答。
請問一下(∂xAx^T)/∂x 及 ∂xA/∂x怎麼計算?
請先確定x是1*n還是n*1,你可以在上文找到解答。
请问老师的联系方式,个人有一些问题请教。
請至本站留言版。
回去又看了一遍帖子,问题解决了,多谢。
Hessian 公式可能寫錯了,應該要轉置一下,如果是可微的就沒關系,但是形勢上最好是對應
感謝指正。
Jacobian 形式,根據
和
將結果置於一
階矩陣,如下:
所以后面(VV-*)里的i和j全部反了。于是(VV-3)
我將你的回覆編輯過使正確顯示。wordpress 的LaTeX語法請參閱
https://ccjou.wordpress.com/2011/05/03/%E8%BF%B4%E9%9F%BF%E5%8D%80%E5%BC%B5%E8%B2%BC-latex-%E6%95%B8%E5%AD%B8%E5%BC%8F%E7%9A%84%E6%87%B6%E4%BA%BA%E8%BC%B8%E5%85%A5%E6%B3%95/
https://en.support.wordpress.com/latex/
抱歉,我以后注意。
我明白了,原来是采用分母佈局。
請問老師 ∂a^T*X*X^T*b)/∂X = (a*b^T+b*a^T)*X 怎麼思考比較好呢?
是否只能從定義推導? 謝謝
我在SM-9補充了另一個計算方式,希望能夠幫助你理解。
我了解了~ 謝謝您!
老師您好
想問關於最小平方近似的那個微分,最後面 (A^T*A + (A*A^T)^T) 的地方,如果假定A = A^T,最後可以等於 2(A^T*A)
但通常情況之下A 不等於 A^T,想請問此時最後的結論還會一樣嗎?
The result of VV-1 should be $\mathbf{0}$ (vector) instead of 0 scalar.
I think the Eq.(VV-1) should be:
.
The second equation of Eq.(VV-4) is incorrect. It should be
.
Pingback: Mathematics in Machine Learning – Math.py
Pingback: 线代随笔11 | 大专栏
公式SV-12
b(a^{T}x)+a(b^{T}x)=(ab^{T}+ba^{T})x
不瞭解,為什麼x可以直接提出來
補充說明疑問的地方;因為向量沒有乘法結合律,即 a(bc) != (ab)c,所以對x可以提出來有疑問。
如果你將向量都看作矩陣, 便會發現它們確實
滿足乘法結合律。在線性代數的世界中,向量不過是一種特殊尺寸的矩陣。