学渣笔记之矩阵的导数与迹
矩陣的導(dǎo)數(shù)與跡
矩陣的導(dǎo)數(shù)
? 對于一個將\(m\times n\)的矩陣映射為實(shí)數(shù)的函數(shù)\(f: \mathbb{R}^{m\times n}\mapsto\mathbb{R}\),我們定義\(f\)對矩陣\(A\)的導(dǎo)數(shù)為
\[ \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} \]
一些有用的性質(zhì)
\(tr ABC = tr BCA = tr CAB\)
這是對三個方陣的積求跡,循環(huán)移位后的結(jié)果還是一樣的,不僅2個方陣或者3個方陣的積求跡滿足此性質(zhì),對其他更多個數(shù)的方陣的積求跡也滿足此性質(zhì)。
\(tr A = tr A^T\)
這個就比較明顯了,方陣轉(zhuǎn)置后主對角線上的元素不會變
\(tr(A +B) = tr A + tr B\)
\(tr\ \alpha A= \alpha\ tr A\)
\(\bigtriangledown_AtrAB = B^T\)
這個看起來有點(diǎn)麻煩,下面驗(yàn)證一下,設(shè)方陣\(A\)為
\[ A= \begin{bmatrix}a & b\\ c & d\end{bmatrix} \]
設(shè)方陣\(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}tr ABA^TC=B^TA^TC^T+BA^TC \]
推導(dǎo)過程如下:
由\(\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)\)的一點(diǎn)理解
? Andrew ng在cs229-notes1中給出了一些公式,貌似還是有些東西并沒有很明顯的提出來,像我這種渣渣就有點(diǎn)暈。首先是給出的\(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}) \]
這個公式的推導(dǎo)過程還是比較簡單的,下面的推導(dǎo)比較蛋疼,有些隱含的信息貌似Andrew ng沒有明顯指出來,對我這種渣渣就比較尷尬了。
\[ \bigtriangledown_\theta J(\theta) = \bigtriangledown_\theta\frac{1}{2}(\mathbf{X}\theta-\vec{y})^T(\mathbf{X}\theta-\vec{y}) \]
強(qiáng)行展開
\[ \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\)無關(guān)的常量,所以對\(\theta\)求偏導(dǎo)數(shù)為0,可以省略掉。假設(shè)\(\alpha\)是一個實(shí)數(shù),那么我們有\(tr\ \alpha = \alpha\)。\(\theta\)是\(n\times 1\)的,\(\mathbf{X}\)是\(m\times n\)的,所以\(\theta^T\mathbf{X}^T\mathbf{X}\theta\)的維數(shù)變換是\((1\times n)\times (n \times m) \times(m\times n)\times(n\times 1)\),所以結(jié)果是一個\(1\times 1\)的方陣;同理其他的加數(shù)也是\(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}\);又因?yàn)?br />\[ \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} \]
參考資料
轉(zhuǎn)載于:https://www.cnblogs.com/crackpotisback/p/5545708.html
總結(jié)
以上是生活随笔為你收集整理的学渣笔记之矩阵的导数与迹的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8年javascript总结
- 下一篇: 多播程序设计(基于UDP协议)