学渣笔记之矩阵的导数与迹
矩阵的导数与迹
矩阵的导数
对于一个将\(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第二课以及其相关笔记
- 机器学习中常用的矩阵求导公式