在数学中, 矩阵微积分是多元微积分的一种特殊表达,尤其是在矩阵空间上进行讨论的时候。它把单个函数对多个变量或者多元函数对单个变量的偏导数写成向量和矩阵的形式,使其可以被当成一个整体被处理。这使得要在多元函数寻找最大或最小值,又或是要为微分方程系统寻解的过程大幅简化。这里我们主要使用统计学和工程学中的惯用记法,而张量下标记法更常用于物理学中。

Types Scalar Vector Matrix
Scalar yx\dfrac{\partial y}{\partial x} yx\dfrac{\partial\boldsymbol y}{\partial x} Yx\dfrac{\partial\boldsymbol Y}{\partial x}
Vector yx\dfrac{\partial y}{\partial\boldsymbol x} yx\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}
Matrix yX\dfrac{\partial y}{\partial\boldsymbol X}

向量求导

scalar-by-vector

标量 y=f(x)y=f(\boldsymbol x) 相对于向量 x=(x1,x2,,xn)T\boldsymbol x=(x_1,x_2,\cdots,x_n)^T 的一阶导数称为 梯度

f(x)=fx=(fxi)n×1\nabla f(\mathbf x)=\frac{\partial f}{\partial\mathbf x}=\left(\frac{\partial f}{\partial x_i}\right)_{n\times 1}

标量 y=f(x)y=f(\boldsymbol x) 相对于向量 x=(x1,x2,,xn)T\boldsymbol x=(x_1,x_2,\cdots,x_n)^T 的二阶导数称为 Hessian 矩阵

2f(x)=(2fxixj)n×n\nabla^2f(\mathbf x)=\left(\frac{\partial^2 f}{\partial x_i\partial x_j}\right)_{n\times n}

求导法则

(1) 设 aa 为常数, 标量函数 y=f(x),z=g(x)y=f(\boldsymbol x),z=g(\boldsymbol x)

ayx=ayx\dfrac{\partial ay}{\partial\boldsymbol x}=a\dfrac{\partial y}{\partial\boldsymbol x}

(y+z)x=yx+zx\dfrac{\partial (y+z)}{\partial\boldsymbol x}=\dfrac{\partial y}{\partial\boldsymbol x}+\dfrac{\partial z}{\partial\boldsymbol x}

(yz)x=yzx+zyx\dfrac{\partial (yz)}{\partial\boldsymbol x}=y\dfrac{\partial z}{\partial\boldsymbol x}+z\dfrac{\partial y}{\partial\boldsymbol x}

(2) 设 a\boldsymbol a 为常向量,A\boldsymbol A 为常矩阵,向量函数 y=f(x),z=g(x)\boldsymbol y=f(\boldsymbol x),\boldsymbol z=g(\boldsymbol x)

aTyx=yTax=yxa\dfrac{\partial \boldsymbol a^T\boldsymbol y}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y^T\boldsymbol a}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}\boldsymbol a

yTzx=zTyx=yxz+zxy\dfrac{\partial\boldsymbol y^T\boldsymbol z}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol z^T\boldsymbol y}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}\boldsymbol z+\dfrac{\partial\boldsymbol z}{\partial\boldsymbol x}\boldsymbol y

xTAxx=(A+AT)x\dfrac{\partial \boldsymbol x^T\boldsymbol A\boldsymbol x}{\partial\boldsymbol x}=(\boldsymbol A+\boldsymbol A^T)\boldsymbol x

xTxx=x2x=2x\dfrac{\partial \boldsymbol x^T\boldsymbol x}{\partial\boldsymbol x}=\dfrac{\partial \|\boldsymbol x\|^2}{\partial\boldsymbol x}=2\boldsymbol x

xax=xaxa\dfrac{\partial \|\boldsymbol x-\boldsymbol a\|}{\partial\boldsymbol x}=\dfrac{\boldsymbol x-\boldsymbol a}{\|\boldsymbol x-\boldsymbol a\|}

vector-by-scalar

向量 y=(y1,y2,,yn)T\boldsymbol y=(y_1,y_2,\cdots,y_n)^T 相对于标量 xx 的导数为向量

yx=(yix)1×n\frac{\partial\mathbf y}{\partial x}=\left(\frac{\partial y_i}{\partial x}\right)_{1\times n}

求导法则

aa 为常数,A\boldsymbol A 为常矩阵,向量函数 y=f(x),z=g(x)\boldsymbol y=f(\boldsymbol x),\boldsymbol z=g(\boldsymbol x)

ayx=ayx\dfrac{\partial a\boldsymbol y}{\partial x}=a\dfrac{\partial\boldsymbol y}{\partial x}

Aux=yxAT\dfrac{\partial \boldsymbol{Au}}{\partial x}=\dfrac{\partial\boldsymbol y}{\partial x}\boldsymbol A^T

(y+z)x=yx+zx\dfrac{\partial (\boldsymbol{y+z})}{\partial x}=\dfrac{\partial\boldsymbol y}{\partial x}+\dfrac{\partial\boldsymbol z}{\partial x}

(yT×z)x=yx×z+yT×(zx)T\dfrac{\partial (\boldsymbol y^T\times \boldsymbol z)}{\partial x}=\dfrac{\partial\boldsymbol y}{\partial x}\times\boldsymbol z+\boldsymbol y^T\times(\dfrac{\partial\boldsymbol z}{\partial x})^T

vector-by-vector

向量 y=(y1,y2,,yn)T\boldsymbol y=(y_1,y_2,\cdots,y_n)^T 相对于向量 x=(x1,x2,,xm)T\boldsymbol x=(x_1,x_2,\cdots,x_m)^T 的导数为 m×nm\times n 矩阵,第 iijj 列为

(yx)ij=yjxi\left(\frac{\partial\mathbf y}{\partial\mathbf x}\right)_{ij}=\frac{\partial y_j}{\partial x_i}

求导法则

(1) 设 aa 为常数,A\boldsymbol A 为常矩阵,向量函数 y=f(x),z=g(x)\boldsymbol y=f(\boldsymbol x),\boldsymbol z=g(\boldsymbol x)

xx=I\dfrac{\partial \boldsymbol x}{\partial\boldsymbol x}=\boldsymbol I

ayx=ayx\dfrac{\partial a\boldsymbol y}{\partial\boldsymbol x}=a\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}

Axx=AT\dfrac{\partial \boldsymbol{Ax}}{\partial\boldsymbol x}=\boldsymbol A^T

xTAx=A\dfrac{\partial \boldsymbol x^T\boldsymbol{A}}{\partial\boldsymbol x}=\boldsymbol A

Ayx=yxAT\dfrac{\partial \boldsymbol{Ay}}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}\boldsymbol A^T

(y+z)x=yx+zx\dfrac{\partial (\boldsymbol{y+z})}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}+\dfrac{\partial\boldsymbol z}{\partial\boldsymbol x}

yTAvx=yxAv+zxATy\dfrac{\partial\boldsymbol y^T\boldsymbol{Av}}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}\boldsymbol{Av}+\dfrac{\partial\boldsymbol z}{\partial\boldsymbol x}\boldsymbol A^T\boldsymbol y

(2) 向量函数 y=f(x)\boldsymbol y=f(\boldsymbol x),标量函数 z=g(x)z=g(\boldsymbol x)

zyx=zyx+zxyT\dfrac{\partial z\boldsymbol y}{\partial\boldsymbol x}=z\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}+\dfrac{\partial z}{\partial\boldsymbol x}\boldsymbol y^T

(3) 向量函数 y=f(x)\boldsymbol y=f(\boldsymbol x) 按位计算,即 yi=f(xi)y_i=f(x_i)。其导数为一个对角矩阵

f(x)x=diag(f(x1),f(x2),))\dfrac{\partial f(\boldsymbol x)}{\partial\boldsymbol x}=\text{diag}(f'(x_1),f'(x_2), \cdots))

矩阵求导

scalar-by-matrix

定义矩阵 Xm×n\boldsymbol X_{m\times n}上的标量函数 yy 对矩阵的导数为矩阵

yX=(yxij)m×n\frac{\partial y}{\partial \mathbf X}=\left(\cfrac{\partial y}{\partial x_{ij}}\right)_{m\times n}

定义矩阵上的重要的标量函数包括矩阵的行列式

求导法则

(1) 设 aa 为常数,标量函数 y=f(X),z=g(X)y=f(\boldsymbol X),z=g(\boldsymbol X)

ayX=ayX\dfrac{\partial ay}{\partial\boldsymbol X}=a\dfrac{\partial y}{\partial\boldsymbol X}

(y+z)X=yX+zX\dfrac{\partial (y+z)}{\partial\boldsymbol X}=\dfrac{\partial y}{\partial\boldsymbol X}+\dfrac{\partial z}{\partial\boldsymbol X}

(yz)X=yzX+zyX\dfrac{\partial (yz)}{\partial\boldsymbol X}=y\dfrac{\partial z}{\partial\boldsymbol X}+z\dfrac{\partial y}{\partial\boldsymbol X}

(2) 设 a,b\boldsymbol{a,b} 为常向量,A\boldsymbol A 为常矩阵

aTXbX=abT\dfrac{\partial\boldsymbol a^T\boldsymbol{Xb}}{\partial\boldsymbol X}=\boldsymbol{ab}^T

(3) 设 A,B\boldsymbol{A,B} 为常矩阵

tr(X)X=I\dfrac{\partial\text{tr}(\boldsymbol X)}{\partial\boldsymbol X}=\boldsymbol I

tr(AX)X=tr(XA)X=AT\dfrac{\partial\text{tr}(\boldsymbol{AX)}}{\partial\boldsymbol X}=\dfrac{\partial\text{tr}(\boldsymbol{XA)}}{\partial\boldsymbol X}=\boldsymbol A^T

tr(XTA)X=tr(AXT)X=A\dfrac{\partial\text{tr}(\boldsymbol X^T\boldsymbol A)}{\partial\boldsymbol X}=\dfrac{\partial\text{tr}(\boldsymbol{AX}^T)}{\partial\boldsymbol X}=\boldsymbol A

tr(XAXT)X=X(A+AT)\dfrac{\partial\text{tr}(\boldsymbol{XAX}^T)}{\partial\boldsymbol X}=\boldsymbol{X(A+A}^T)

tr(XTAX)X=(A+AT)X\dfrac{\partial\text{tr}(\boldsymbol X^T \boldsymbol{AX})}{\partial\boldsymbol X}=(\boldsymbol A+\boldsymbol A^T)\boldsymbol X

tr(XAXTB)X=BXA+BTXAT\dfrac{\partial\text{tr}(\boldsymbol{XAX}^T\boldsymbol B)}{\partial\boldsymbol X}=\boldsymbol{BXA}+\boldsymbol B^T\boldsymbol{XA}^T

matrix-by-scalar

矩阵 Y=(yij)m×n\boldsymbol Y=(y_{ij})_{m\times n} 对相对于标量 xx 的导数为矩阵 (仅分子布局)

Yx=(yijx)m×n\frac{\partial\mathbf Y}{\partial x}= \left(\cfrac{\partial y_{ij}}{\partial x}\right)_{m\times n}