矩陣的導數與跡
矩陣的導數
對於一個將\(m\times n\)的矩陣映射為實數的函數\(f: \mathbb{R}^{m\times n}\mapsto\mathbb{R}\),我們定義\(f\)對矩陣\(A\)的導數為
而\(f(A)\)就是我們下面要介紹的跡。
方陣的跡
對於一個\(n\)階方陣\(A\)的跡被定義為方陣\(A\)的主對角線的元素之和,通常對方陣的求跡操作寫成\(trA\),於是我們有
一些有用的性質
-
\(tr ABC = tr BCA = tr CAB\)
這是對三個方陣的積求跡,循環移位后的結果還是一樣的,不僅2個方陣或者3個方陣的積求跡滿足此性質,對其他更多個數的方陣的積求跡也滿足此性質。
-
\(tr A = tr A^T\)
這個就比較明顯了,方陣轉置后主對角線上的元素不會變
-
\(tr(A +B) = tr A + tr B\)
-
\(tr\ \alpha A= \alpha\ tr A\)
-
\(\bigtriangledown_AtrAB = B^T\)
這個看起來有點麻煩,下面驗證一下,設方陣\(A\)為
\[A= \begin{bmatrix}a & b\\ c & d\end{bmatrix} \]設方陣\(B\)為
\[B = \begin{bmatrix}e & f\\ g & h\end{bmatrix} \]那么有
\[AB = \begin{bmatrix}ae + bg & af + bh\\ce + dg & cf + dh\end{bmatrix} \]所以有
\[tr AB=ae + bg + cf + dh \]然后有
\[\bigtriangledown_AtrAB=\begin{bmatrix}e & g\\ f & h\end{bmatrix} = B^T \]
-
\(\bigtriangledown_{A^T}f(A)=(\bigtriangledown_Af(A))^T\)
-
\(\bigtriangledown tr ABA^TC=CAB+C^TAB^T\)
-
\(\bigtriangledown_A|A| = |A|(A^{-1})^T\)
一個在后面用到的等式
推導過程如下:
由\(\bigtriangledown_{A^T}f(A)=(\bigtriangledown_Af(A))^T\)自然有
所以有
對\(\bigtriangledown_\theta J(\theta)\)的一點理解
Andrew ng在cs229-notes1中給出了一些公式,貌似還是有些東西並沒有很明顯的提出來,像我這種渣渣就有點暈。首先是給出的\(J(\theta)\)的矩陣表示如下
這個公式的推導過程還是比較簡單的,下面的推導比較蛋疼,有些隱含的信息貌似Andrew ng沒有明顯指出來,對我這種渣渣就比較尷尬了。
強行展開
很明顯,后面的\(\vec{y}^T\vec{y}\)是一個與\(\theta\)無關的常量,所以對\(\theta\)求偏導數為0,可以省略掉。假設\(\alpha\)是一個實數,那么我們有\(tr\ \alpha = \alpha\)。\(\theta\)是\(n\times 1\)的,\(\mathbf{X}\)是\(m\times n\)的,所以\(\theta^T\mathbf{X}^T\mathbf{X}\theta\)的維數變換是\((1\times n)\times (n \times m) \times(m\times n)\times(n\times 1)\),所以結果是一個\(1\times 1\)的方陣;同理其他的加數也是\(1\times 1\)的方陣,所以有
由於\(tr A = tr A^T\)和\(tr (A+B)=tr A + tr B\),所以\(\theta^T\mathbf{X}^T\vec{y}=\vec{y}\mathbf{X}\theta\),然后就有
對\(tr\ \vec{y}\mathbf{X}\theta\),有\(tr\ \vec{y}\mathbf{X}\theta=tr\ \theta\vec{y}\mathbf{X}\),又有\(\bigtriangledown_\theta tr\ AB = B^T\),所以有\(\bigtriangledown_\theta tr\ \theta\vec{y}\mathbf{X}=(\vec{y}\mathbf{X})^T=\mathbf{X}^T\vec{y}\);又因為
所以有\(\bigtriangledown_\theta tr\ \theta^T\mathbf{X}^T\mathbf{X}\theta=(\mathbf{X}^T\mathbf{X}+(\mathbf{X}^T\mathbf{X})^T)\theta=2\mathbf{X}^T\mathbf{X}\theta\),這樣子就好辦了
令\(\bigtriangledown_\theta J(\theta)= 0\)可以求出
參考資料
- Andrew NG的ML第二課以及其相關筆記
- 機器學習中常用的矩陣求導公式