矩阵的导数与迹
矩阵的导数
对于一个将(m imes n)的矩阵映射为实数的函数(f: mathbb{R}^{m imes n}mapstomathbb{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)
-
(igtriangledown_AtrAB = B^T)
这个看起来有点麻烦,下面验证一下,设方阵(A)为
[A= egin{bmatrix}a & b\ c & dend{bmatrix} ]设方阵(B)为
[B = egin{bmatrix}e & f\ g & hend{bmatrix} ]那么有
[AB = egin{bmatrix}ae + bg & af + bh\ce + dg & cf + dhend{bmatrix} ]所以有
[tr AB=ae + bg + cf + dh ]然后有
[igtriangledown_AtrAB=egin{bmatrix}e & g\ f & hend{bmatrix} = B^T ]
-
(igtriangledown_{A^T}f(A)=(igtriangledown_Af(A))^T)
-
(igtriangledown tr ABA^TC=CAB+C^TAB^T)
-
(igtriangledown_A|A| = |A|(A^{-1})^T)
一个在后面用到的等式
推导过程如下:
由(igtriangledown_{A^T}f(A)=(igtriangledown_Af(A))^T)自然有
所以有
对(igtriangledown_ heta J( heta))的一点理解
Andrew ng在cs229-notes1中给出了一些公式,貌似还是有些东西并没有很明显的提出来,像我这种渣渣就有点晕。首先是给出的(J( heta))的矩阵表示如下
这个公式的推导过程还是比较简单的,下面的推导比较蛋疼,有些隐含的信息貌似Andrew ng没有明显指出来,对我这种渣渣就比较尴尬了。
强行展开
很明显,后面的(vec{y}^Tvec{y})是一个与( heta)无关的常量,所以对( heta)求偏导数为0,可以省略掉。假设(alpha)是一个实数,那么我们有(tr alpha = alpha)。( heta)是(n imes 1)的,(mathbf{X})是(m imes n)的,所以( heta^Tmathbf{X}^Tmathbf{X} heta)的维数变换是((1 imes n) imes (n imes m) imes(m imes n) imes(n imes 1)),所以结果是一个(1 imes 1)的方阵;同理其他的加数也是(1 imes 1)的方阵,所以有
由于(tr A = tr A^T)和(tr (A+B)=tr A + tr B),所以( heta^Tmathbf{X}^Tvec{y}=vec{y}mathbf{X} heta),然后就有
对(tr vec{y}mathbf{X} heta),有(tr vec{y}mathbf{X} heta=tr hetavec{y}mathbf{X}),又有(igtriangledown_ heta tr AB = B^T),所以有(igtriangledown_ heta tr hetavec{y}mathbf{X}=(vec{y}mathbf{X})^T=mathbf{X}^Tvec{y});又因为
所以有(igtriangledown_ heta tr heta^Tmathbf{X}^Tmathbf{X} heta=(mathbf{X}^Tmathbf{X}+(mathbf{X}^Tmathbf{X})^T) heta=2mathbf{X}^Tmathbf{X} heta),这样子就好办了
令(igtriangledown_ heta J( heta)= 0)可以求出
参考资料
- Andrew NG的ML第二课以及其相关笔记
- 机器学习中常用的矩阵求导公式