矩阵微分

http://www.iwenchao.com/mathematics/matrix-differential.html

http://en.wikipedia.org/wiki/Matrix_calculus

http://www.atmos.washington.edu/~dennis/MatrixCalculus.pdf

https://ccrma.stanford.edu/~dattorro/matrixcalc.pdf

http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=3274 里面的电子书 不错很全面

 

矩阵微分(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(Xi,j)

    接下来的微分计算中,假定 A, B, C是常矩阵与 X无关, Y, ZX相关。

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也为列向量,列向量对列向量的求导按照《矩阵论》中的公式,结果会是一个列向量而不是公式中的AT。这些特殊的情况就让数学家去钻研吧,应用研究很少遇到。

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) = XT(A+AT)
    • d[tr(AXTX)]/d(X) = (A+AT)X
  • 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

你可能感兴趣的:(矩阵)