學渣筆記之矩陣的導數與跡


矩陣的導數與跡

矩陣的導數

​ 對於一個將\(m\times n\)的矩陣映射為實數的函數\(f: \mathbb{R}^{m\times n}\mapsto\mathbb{R}\),我們定義\(f\)對矩陣\(A\)的導數為

\[\bigtriangledown_Af(A) = \begin{bmatrix}\dfrac{\partial f}{\partial A_{11}} & \ldots & \dfrac{\partial f}{\partial A_{1n}}\\ \vdots & \ddots & \vdots \\\dfrac{\partial f}{\partial A_{m1}} & \ldots & \dfrac{\partial f}{\partial A_{mn}}\end{bmatrix} \]

\(f(A)\)就是我們下面要介紹的跡。

方陣的跡

​ 對於一個\(n\)階方陣\(A\)的跡被定義為方陣\(A\)的主對角線的元素之和,通常對方陣的求跡操作寫成\(trA\),於是我們有

\[trA=\sum_{i=1}^nA_{ii} \]

一些有用的性質

  1. \(tr ABC = tr BCA = tr CAB\)

    這是對三個方陣的積求跡,循環移位后的結果還是一樣的,不僅2個方陣或者3個方陣的積求跡滿足此性質,對其他更多個數的方陣的積求跡也滿足此性質。

  2. \(tr A = tr A^T\)

    這個就比較明顯了,方陣轉置后主對角線上的元素不會變

  3. \(tr(A +B) = tr A + tr B\)

  4. \(tr\ \alpha A= \alpha\ tr A\)

  5. \(\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 \]

  6. \(\bigtriangledown_{A^T}f(A)=(\bigtriangledown_Af(A))^T\)

  7. \(\bigtriangledown tr ABA^TC=CAB+C^TAB^T\)

  8. \(\bigtriangledown_A|A| = |A|(A^{-1})^T\)

一個在后面用到的等式

\[\bigtriangledown_{A^T}tr ABA^TC=B^TA^TC^T+BA^TC \]

推導過程如下:

\(\bigtriangledown_{A^T}f(A)=(\bigtriangledown_Af(A))^T\)自然有

\[\bigtriangledown_{A^T}trABA^TC=(\bigtriangledown_AtrABA^TC)^T=(CAB+C^TAB^T)^T \]

所以有

\[(CAB+C^TAB^T)^T=B^T(CA)^T+(AB^T)^TC=B^TA^TC^T+BA^TC \]

\(\bigtriangledown_\theta J(\theta)\)的一點理解

​ Andrew ng在cs229-notes1中給出了一些公式,貌似還是有些東西並沒有很明顯的提出來,像我這種渣渣就有點暈。首先是給出的\(J(\theta)\)的矩陣表示如下

\[J(\theta)=\frac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2=\frac{1}{2}(\mathbf{X}\theta-\vec{y})^T(\mathbf{X}\theta-\vec{y}) \]

這個公式的推導過程還是比較簡單的,下面的推導比較蛋疼,有些隱含的信息貌似Andrew ng沒有明顯指出來,對我這種渣渣就比較尷尬了。

\[\bigtriangledown_\theta J(\theta) = \bigtriangledown_\theta\frac{1}{2}(\mathbf{X}\theta-\vec{y})^T(\mathbf{X}\theta-\vec{y}) \]

強行展開

\[\bigtriangledown_\theta J(\theta) = \frac{1}{2}\bigtriangledown_\theta(\theta^T\mathbf{X}^T\mathbf{X}\theta-\theta^T\mathbf{X}^T\vec{y}-\vec{y}^T\mathbf{X}\theta+\vec{y}^T\vec{y}) \]

很明顯,后面的\(\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\)的方陣,所以有

\[\bigtriangledown_\theta J(\theta)=\frac{1}{2}\bigtriangledown_\theta tr(\theta^T\mathbf{X}^T\mathbf{X}\theta-\theta^T\mathbf{X}^T\vec{y}-\vec{y}^T\mathbf{X}\theta) \]

由於\(tr A = tr A^T\)\(tr (A+B)=tr A + tr B\),所以\(\theta^T\mathbf{X}^T\vec{y}=\vec{y}\mathbf{X}\theta\),然后就有

\[\bigtriangledown_\theta J(\theta)=\frac{1}{2}\bigtriangledown_\theta(tr\ \theta^T\mathbf{X}^T\mathbf{X}\theta-2tr\ \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}\);又因為

\[\dfrac{\partial \mathbf{X}^T\mathbf{A}\mathbf{X}}{\partial \mathbf{X}}=(\mathbf{A}+\mathbf{A}^T)\mathbf{X} \]

所以有\(\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\),這樣子就好辦了

\[\therefore\quad\bigtriangledown_\theta J(\theta) = \mathbf{X}^T\mathbf{X}\theta - \mathbf{X}^T\vec{y} \]

\(\bigtriangledown_\theta J(\theta)= 0\)可以求出

\[\theta = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\vec{y} \]

參考資料

  1. Andrew NG的ML第二課以及其相關筆記
  2. 機器學習中常用的矩陣求導公式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM