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

Types Scalar Vector Matrix
Scalar ∂y∂x\dfrac{\partial y}{\partial x} ∂y∂x\dfrac{\partial\boldsymbol y}{\partial x} ∂Y∂x\dfrac{\partial\boldsymbol Y}{\partial x}
Vector ∂y∂x\dfrac{\partial y}{\partial\boldsymbol x} ∂y∂x\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}
Matrix ∂y∂X\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)=∂f∂x=(∂f∂xi)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)=(∂2f∂xi∂xj)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)

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

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

∂(yz)∂x=y∂z∂x+z∂y∂x\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)

∂aTy∂x=∂yTa∂x=∂y∂xa\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

∂yTz∂x=∂zTy∂x=∂y∂xz+∂z∂xy\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

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

∂xTx∂x=∂∥x∥2∂x=2x\dfrac{\partial \boldsymbol x^T\boldsymbol x}{\partial\boldsymbol x}=\dfrac{\partial \|\boldsymbol x\|^2}{\partial\boldsymbol x}=2\boldsymbol x

∂∥x−a∥∂x=x−a∥x−a∥\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 的导数为向量

∂y∂x=(∂yi∂x)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)

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

∂Au∂x=∂y∂xAT\dfrac{\partial \boldsymbol{Au}}{\partial x}=\dfrac{\partial\boldsymbol y}{\partial x}\boldsymbol A^T

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

∂(yT×z)∂x=∂y∂x×z+yT×(∂z∂x)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 矩阵,第 ii 行 jj 列为

(∂y∂x)ij=∂yj∂xi\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),

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

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

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

∂xTA∂x=A\dfrac{\partial \boldsymbol x^T\boldsymbol{A}}{\partial\boldsymbol x}=\boldsymbol A

∂Ay∂x=∂y∂xAT\dfrac{\partial \boldsymbol{Ay}}{\partial\boldsymbol x}=\dfrac{\partial\boldsymbol y}{\partial\boldsymbol x}\boldsymbol A^T

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

∂yTAv∂x=∂y∂xAv+∂z∂xATy\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)

∂zy∂x=z∂y∂x+∂z∂xyT\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 对矩阵的导数为矩阵

∂y∂X=(∂y∂xij)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)

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

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

∂(yz)∂X=y∂z∂X+z∂y∂X\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 为常矩阵

∂aTXb∂X=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 的导数为矩阵 (仅分子布局)

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