天天看點

矩陣微分

自己學習矩陣微分的筆記,包含了迹函數、行列式函數以及逆矩陣的求導方法。 

主要是練習求導的鍊式法則;以及利用微分求導數。 

更具體的參見引用:張賢達,矩陣分析與應用,清華大學出版社,2004

矩陣微分
矩陣微分
矩陣微分
矩陣微分
矩陣微分
矩陣微分
矩陣微分
矩陣微分
Note:向量用加粗的小寫字母表示,行向量表示為
矩陣微分
,列向量表示為
矩陣微分
Note:矩陣用加粗的大寫字母表示,如
矩陣微分
,其轉置為
矩陣微分
矩陣微分
Note:機關矩陣用
矩陣微分

表示,det()表示矩陣的行列式,tr()表示矩陣的迹。

Note:矩陣

矩陣微分
和向量
矩陣微分
不依賴于
矩陣微分

參考網站:http://www.psi.toronto.edu/matrix/calculus.html

1.符号說明:

矩陣微分

2.矩陣的線性微分(Linear Products)

首先介紹一個重要的性質(類似于函數的求導): 

矩陣微分
經驗:若d(行向量)/d(列向量)或者d(列向量)/d(行向量),則也适合這個公式,如下面的前兩個公式:
矩陣微分
矩陣微分
矩陣轉置
矩陣微分
矩陣微分
       圖 矩陣的轉置過程,轉置後行變成列
矩陣微分

用一個數字去加或者乘以矩陣

這相當于對矩陣中的每一個元素都獨立地進行加法或乘法運算。由于矩陣元素之間的相對值沒有發生變化,而隻有比例發生了變化,是以上述這類運算稱為标量運算(scalar operation)。如果相對矩陣進行常數縮放或者加上一個常數偏移值,就可以使用矩陣标量乘法或加法運算。

矩陣微分
     圖 矩陣上的标量運算,最後的結果是每個元素乘上或者加上某個标量
矩陣微分

兩矩陣求和

兩矩陣要求和,首先必須滿足兩矩陣的行列數完全一緻,矩陣求和相當于每個位置上對應元素求和。

矩陣微分
   圖 矩陣求和
矩陣微分

矩陣乘法

兩個矩陣要相乘,前一個矩陣的列數必須要等于後一個矩陣的行數。

矩陣微分
       圖 矩陣乘法示意圖,
矩陣微分
矩陣相乘還可以看成是列的權重求和。
矩陣微分
矩陣微分
矩陣求逆
矩陣微分

矩陣要可逆,首先要是方陣,及矩陣的行數等于列數。

方陣也不一定可逆,這時稱它奇異(singular)或退化(degenerate)矩陣。如果某個矩陣的某一列可以表示為其它列的線性組合,則該矩陣是奇異矩陣。

如果能夠這樣表示,則可以把一列的元素全部歸于0.

矩陣微分
圖 一個奇異矩陣的例子。該矩陣有一列為0,意味着該矩陣不可逆。
矩陣微分

向量的範數

範數可以看成向量的長度,可以定義任意階範數,其形式化定義如下:

矩陣微分
可以任意定義自己的向量範數,隻要能将向量轉換為标量值即可。
矩陣微分
矩陣求導
矩陣微分
1.行向量對元素求導
矩陣微分
2.列向量對元素求導
矩陣微分
對于向量
矩陣微分
,可以對x求導,得到另一個向量
矩陣微分
3.矩陣對元素求導
矩陣微分
4.元素對行向量求導
矩陣微分
5.元素對列向量求導
矩陣微分
6.元素對矩陣求導
矩陣微分
矩陣微分
7.行向量對列向量求導
矩陣微分
比如,對于向量
矩陣微分
另一個向量                
矩陣微分
如果A(一個2*1的向量)要對B(一個3*1的向量)求導,會得到如下3*2的矩陣:
矩陣微分
8.列向量對行向量求導
矩陣微分

9.行向量對行向量求導、.列向量對列向量求導、矩陣對行向量求導、矩陣對列向量求導、行向量對矩陣求導、列向量對矩陣求導、矩陣對矩陣求導:

計算方式與可以類比于前邊的方法,不過差別在于這幾個求導得出的結果都是超向量或超矩陣,即它們的元素本身就是向量或矩陣。

10.向量積對列向量求導

矩陣微分
11.矩陣積對列向量求導法則
矩陣微分
矩陣微分
矩陣微分

矩陣求導鍊式法則的相關用法參見《矩陣運算的若幹應用》

http://blog.csdn.net/u012176591/article/details/41552269

  • http://www.atmos.washington.edu/~dennis/MatrixCalculus.pdf
  • http://en.wikipedia.org/wiki/Matrix_calculus
  • http://www.colorado.edu/engineering/cas/courses.d/IFEM.d/IFEM.AppF.d/IFEM.AppF.pdf
  • http://www.colorado.edu/engineering/cas/courses.d/IFEM.d/
  • http://select.cs.cmu.edu/class/10725-S10/recitations/r4/Matrix_Calculus_Algebra.pdf

求導公式(撇号為轉置):

Y = A * X --> DY/DX = A'

Y = X * A --> DY/DX = A

Y = A' * X * B --> DY/DX = A * B'

Y = A' * X' * B --> DY/DX = B * A'

乘積的導數

d(f*g)/dx=(df'/dx)g+(dg/dx)f'

于是把以前學過的矩陣求導部分整理一下:

1. 矩陣Y對标量x求導:

相當于每個元素求導數後轉置一下,注意M×N矩陣求導後變成N×M了

Y = [y(ij)]--> dY/dx = [dy(ji)/dx]

2. 标量y對列向量X求導:

注意與上面不同,這次括号内是求偏導,不轉置,對N×1向量求導後還是N×1向量

y = f(x1,x2,..,xn) --> dy/dX= (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)'

3. 行向量Y'對列向量X求導:

注意1×M向量對N×1向量求導後是N×M矩陣。

将Y的每一列對X求偏導,将各列構成一個矩陣。

重要結論:

dX'/dX =I

d(AX)'/dX =A'

4. 列向量Y對行向量X’求導:

轉化為行向量Y’對列向量X的導數,然後轉置。

注意M×1向量對1×N向量求導結果為M×N矩陣。

dY/dX' =(dY'/dX)'

5. 向量積對列向量X求導運算法則:

注意與标量求導有點不同。

d(UV')/dX =(dU/dX)V' + U(dV'/dX)

d(U'V)/dX =(dU'/dX)V + (dV'/dX)U'

d(X'A)/dX =(dX'/dX)A + (dA/dX)X' = IA + 0X' = A

d(AX)/dX' =(d(X'A')/dX)' = (A')' = A

d(X'AX)/dX =(dX'/dX)AX + (d(AX)'/dX)X = AX + A'X

6. 矩陣Y對列向量X求導:

将Y對X的每一個分量求偏導,構成一個超向量。

注意該向量的每一個元素都是一個矩陣。

7. 矩陣積對列向量求導法則:

d(uV)/dX =(du/dX)V + u(dV/dX)

d(UV)/dX =(dU/dX)V + U(dV/dX)

d(X'A)/dX =(dX'/dX)A + X'(dA/dX) = IA + X'0 = A

8. 标量y對矩陣X的導數:

類似标量y對列向量X的導數,

把y對每個X的元素求偏導,不用轉置。

dy/dX = [Dy/Dx(ij) ]

y = U'XV= ΣΣu(i)x(ij)v(j) 于是 dy/dX = [u(i)v(j)] =UV'

y = U'X'XU 則dy/dX = 2XUU'

y =(XU-V)'(XU-V) 則 dy/dX = d(U'X'XU - 2V'XU + V'V)/dX = 2XUU' - 2VU' +0 = 2(XU-V)U'

9. 矩陣Y對矩陣X的導數:

将Y的每個元素對X求導,然後排在一起形成超級矩陣。

10.乘積的導數

結論

d(x'Ax)=(d(x'')/dx)Ax+(d(Ax)/dx)(x'')=Ax+A'x (注意:''是表示兩次轉置)

矩陣求導 屬于 矩陣計算,應該查找 Matrix Calculus 的文獻:

http://www.psi.toronto.edu/matrix/intro.html#Intro

http://www.psi.toronto.edu/matrix/calculus.html

http://www.stanford.edu/~dattorro/matrixcalc.pdf

http://www.colorado.edu/engineering/CAS/courses.d/IFEM.d/IFEM.AppD.d/IFEM.AppD.pdf

http://www4.ncsu.edu/~pfackler/MatCalc.pdf

http://center.uvt.nl/staff/magnus/wip12.pdf

彙總自:

http://cherishlc.iteye.com/blog/1765932