1. 程式人生 > >常用矩陣微分公式

常用矩陣微分公式

矩陣微分(Matrix Differential)也稱矩陣求導(Matrix Derivative),在機器學習、影象處理、最優化等領域的公式推導過程中經常用到。本文將對各種形式下的矩陣微分進行詳細的推導。

1. 符號說明

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(X

i,j)

    接下來的微分計算中,假定ABC是常矩陣與X無關,YZX相關。

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。若ab為矩陣AB公式也適用。
  • d(aTXTb)/d(X) = baT計算過程同上,若ab為矩陣AB公式也適用。

    注意,有些書上有這些公式:d(xA)/d(x)=A; d(Ax)/d(x)=AT。考慮到x為列向量,則Ax也為列向量,列向量對列向量的求導按照《矩陣論》中的公式,結果會是一個列向量而不是公式中的A

T。這些特殊的情況就讓數學家去鑽研吧,應用研究很少遇到。

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)。

Jacobian

6. 海森矩陣(Hessian matrix)

    如果y=f(x),則d[d(f)/d(x)]/d(x)是海森矩陣。在最優化中海森矩陣有諸多用途,如求最大值,最小值,鞍點等。

  • d2(Ax+b)TC(Dx+e)/d(X2)= ATCD + DTCTA