常用矩陣微分公式
矩陣微分(Matrix Differential)也稱矩陣求導(Matrix Derivative),在機器學習、影象處理、最優化等領域的公式推導過程中經常用到。本文將對各種形式下的矩陣微分進行詳細的推導。
1. 符號說明
接下來的微分計算中,假定A, B, C是常矩陣與X無關,Y, Z與X相關。d(y)/d(x) 是一個列向量,其中的元素 (i) 為 d(yi)/d(x)
d(y)/d(x) 是一個列向量,其中的元素 (i) 為 d(y)/d(xi)
d(yT)/d(x) 是一個矩陣,其中的元素 (i,j) 為 d(yj)/d(xi)
d(Y)/d(x) 是一個矩陣,其中的元素 (i,j) 為 d(Yi,j)/d(x)
d(y)/d(X) 是一個矩陣,其中的元素 (i,j) 為 d(y)/d(Xi,j)
2. 一次函式的微分(Linear Products)
首先介紹一個重要的性質(類似於函式的求導): d(YZ)/d(x)=Y*d(Z)/d(x)+d(Y)/d(x)*Z,注意到分母中的x是標量(Scalar)。在微分中分母是向量的情況下,個人經驗是:若d(行向量)/d(列向量)或者d(列向量)/d(行向量),則也適合這個公式,如下面的前兩個公式。
- d(xTA)/d(x) = A
推導過程:d(xTA)/d(x) = A*d(xT)/d(x)+xT*d(A)/d(x) = A*I+0 = A。若A為向量a也適用。 - d(Ax)/d(xT) = A 推導過程:d(Ax)/d(xT) = [d(xTAT)/d(x)]T = (AT)T = A。
- d(aTXb)/d(X) = abT首先求出aTXb = aTX:,1b1 + aTX:,2b2 + ... + aTX:,nbn,這是一個實數,所以對應的Xi,j的係數構成的矩陣就為微分結果,易得abT。若a, b為矩陣A, B公式也適用。
- d(aTXTb)/d(X) = baT計算過程同上,若a, b為矩陣A, B公式也適用。
注意,有些書上有這些公式:d(xA)/d(x)=A; d(Ax)/d(x)=AT。考慮到x為列向量,則Ax也為列向量,列向量對列向量的求導按照《矩陣論》中的公式,結果會是一個列向量而不是公式中的A
3. 二次函式的微分(Quadratic Products)
下面的討論主要針對分子為二次的情況,分母還是向量或者矩陣。分母為高階的情況較少,典型的例子有Hessian矩陣,在文章最後會介紹。
- d(xTAx)/d(x) = (A+AT)x在SVM求對偶的過程中有這一步求導。用展開的方式可以很快求得。若A為對稱陣,則d(xTAx)/d(x) = 2Ax。
- d[(Ax+b)TC(Dx+e)]/d(x) = ATC(Dx+e) + DTCT(Ax+b) 這是該形式最為通用的公式。
- d(aTXTXb)/d(X) = X(abT + baT)
- 特殊情況:d(aTXTXa)/d(X) = 2XaaT
- d(aTXTCXb)/d(X) = CTXabT + CXbaT
- d(aTXTCXa)/d(X) = (C + CT)XaaT
- d(aTXTCXa)/d(X)= 2CXaaT,若C對稱。
- d[(Xa+b)TC(Xa+b)]/d(X) = (C+CT)(Xa+b)aT
4. 矩陣的跡的微分(Trace)
在矩陣的跡tr()中的矩陣必須為方陣。設有N階矩陣A,那麼矩陣的跡tr(A)就等於A的特徵值的總和,也為A矩陣的主對角線元素的總和,tr(AB)=tr(BA)。
- d(tr(X))/d(X) = I
- d(tr(Xk))/d(X) =k(Xk-1)T
- d[tr(ATXBT)]/d(X) = d[tr(BXTA)]/d(X) = AB
- d[tr(XAT)]/d(X) = d[tr(ATX)]/d(X) =d[tr(XTA)]/d(X) = d[tr(AXT)]/d(X) = A
- d[tr(AXBXT)]/d(X) = ATXBT + AXB
- d[tr(XAXT)]/d(X) = X(A+AT)
- d[tr(XTAX)]/d(X) =(A+AT)X
- d[tr(AXTX)]/d(X) = X(A+AT)
- d[tr(AXBX)]/d(X) = ATXTBT + BTXTAT
5. 雅可比矩陣(Jacobian)
雅可比矩陣也可以看做是向量對向量的求導而得到的,如果y=f(x),則對應的雅可比矩陣J=d(y)/d(xT)。
6. 海森矩陣(Hessian matrix)
如果y=f(x),則d[d(f)/d(x)]/d(x)是海森矩陣。在最優化中海森矩陣有諸多用途,如求最大值,最小值,鞍點等。
- d2(Ax+b)TC(Dx+e)/d(X2)= ATCD + DTCTA