引论

矩阵求导的方法一直以来都很让我困惑,最近看了一些博客参考,得到了一些理解。
接下来尝试从最基础的地方开始讲,
在中学的时候,我们最常见到的函数是一元函数,类似这种:
f1(x)=xf2(x)=ax2+bf_1(x) = x \\ f_2(x) = a x^2 + bf1​(x)=xf2​(x)=ax2+b
它们的求导很简单:
df1(x)dx=1df2(x)dx=2ax\frac{\text{d}f_1(x)} {\text{d}x} = 1 \\ \frac{\text{d}f_2(x)} {\text{d}x} = 2ax dxdf1​(x)​=1dxdf2​(x)​=2ax

但是学习了线性代数之后,我们可以用线性代数的方式表述上面的两个公式:
f1(x)=[x]=Ax=[1]xf_1(x) =\begin{bmatrix} x \end{bmatrix} = Ax = \begin{bmatrix} 1 \end{bmatrix} x f1​(x)=[x​]=Ax=[1​]x
f2(x)=[ax2+b]=xTAx+b=xT[a]x+[b]f_2(x) = \begin{bmatrix} a x^2 + b \end{bmatrix} = x^T Ax +b =x^T \begin{bmatrix} a \end{bmatrix} x + \begin{bmatrix} b\end{bmatrix} f2​(x)=[ax2+b​]=xTAx+b=xT[a​]x+[b​]
那么问题来了,对这种表述方式如何进行求导呢?

矩阵求导

在学习线性代数的时候,我们知道xxx和f(x)f(x)f(x)可能有如下这几种形式的数据类型:

xxx = 标量、向量和矩阵
f(x)f(x)f(x) = 标量、向量和矩阵

文章最开头的两个函数是xxx和f(x)f(x)f(x)都是为标量,它们的求导可以应用中学的求导法则;
但是如果xxx和f(x)f(x)f(x)是向量或者矩阵的时候,该如何对f(x)f(x)f(x)进行求导,很明显中学的求导法则,不太适用在线性代数中的向量或者矩阵求导。
通过网上查资料我们可以得到一些常见的矩阵求导公式:
∂Ax∂x=AT∂xTAx∂x=(A+AT)x∂xTx∂x=2x\frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = \mathbf{A^T} \\ \\ \frac{\partial \mathbf{ x^T A x}}{\partial \mathbf{x}} = \mathbf{( A + A^T)x} \\ \frac{\partial \mathbf {x^T x}}{ \partial \mathbf x} = 2\mathbf x∂x∂Ax​=AT∂x∂xTAx​=(A+AT)x∂x∂xTx​=2x
它们求导的本质规律其实很简单:

假设有一个变量y,y可以是标量,向量和矩阵;有一个变量x,x可以是标量,向量和矩阵。那么y对x进行求导,它的规则是矩阵y中的每一个元素对矩阵x中的每一个元素进行求导。

为了说明这个规律,我们用矩阵求导种的常见类型进行举例说明:

类型 标量 向量 矩阵
标量 ∂y∂x\frac{\partial y}{\partial x}∂x∂y​ ∂y∂x\frac{\partial \mathbf{y}}{\partial x}∂x∂y​ ∂Y∂x\frac{\partial \mathbf{Y}}{\partial x}∂x∂Y​
向量 ∂y∂x\frac{\partial y}{\partial \mathbf{x}}∂x∂y​ ∂y∂x\frac{\partial \mathbf{y}}{\partial \mathbf{x}}∂x∂y​
矩阵 ∂y∂X\frac{\partial y}{\partial \mathbf{X}}∂X∂y​

yyy是标量,xxx是标量

  • 求导时候的分子yyy和分母xxx都是标量,根据求导规律矩阵xxx中的每一个元素对矩阵yyy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为1×11\times 11×1。

文章开头的两个例子属于这种情况:
第一个例子:
f1(x)=[x]f_1(x) = \begin{bmatrix} x \end{bmatrix}f1​(x)=[x​]
f1(x)f_1(x)f1​(x)是一个标量,它的矩阵形式中只有一个元素xxx, f1(x)f_1(x)f1​(x)对标量xxx进行求导:
∂f1(x)∂x=[∂x∂x]=[1]\frac{\partial f_1(x)}{ \partial x} =\begin{bmatrix} \frac{\partial x}{\partial x}\end{bmatrix} = \begin{bmatrix} 1 \end{bmatrix}∂x∂f1​(x)​=[∂x∂x​​]=[1​]

第二个例子:
f2(x)=[ax2+b]f_2(x) = \begin{bmatrix} ax^2 + b \end{bmatrix}f2​(x)=[ax2+b​]
f2(x)f_2(x)f2​(x)是一个标量,它的矩阵形式中只有一个元素ax2+bax^2 + bax2+b, f2(x)f_2(x)f2​(x)对标量xxx进行求导:
∂f2(x)∂x=[∂(ax2+b)∂x]=[2ax+b]\frac{\partial f_2(x)}{ \partial x} =\begin{bmatrix} \frac{\partial (ax^2 +b)}{\partial x}\end{bmatrix} = \begin{bmatrix} 2ax +b \end{bmatrix}∂x∂f2​(x)​=[∂x∂(ax2+b)​​]=[2ax+b​]

y和x\mathbf{y}和\mathbf xy和x有任意一个不是标量

如果y和x\mathbf{y}和\mathbf xy和x 不是标量,在求导的时候有两种方式去求导,分别是分子布局和分母布局

求导布局

设定向量 x=[x1x2⋮xn]\mathbf x = \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​ , y=[y1y2⋮ym]\mathbf y = \begin{bmatrix}y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix}y=⎣⎢⎢⎢⎡​y1​y2​⋮ym​​⎦⎥⎥⎥⎤​ 和矩阵X=[x11x12…x1nx21x22…x2n…………xm1xm2…xmn]\mathbf X = \begin{bmatrix}x_{11} & x_{12} & \dots & x_{1n} \\ x_{21} & x_{22} & \dots & x_{2n} \\ \dots & \dots & \dots & \dots \\ x_{m1} & x_{m2} & \dots & x_{mn} \end{bmatrix}X=⎣⎢⎢⎡​x11​x21​…xm1​​x12​x22​…xm2​​…………​x1n​x2n​…xmn​​⎦⎥⎥⎤​

  • 分子布局

    • 分子是标量,分母是向量。分子yyy是标量,分母x\mathbf xx是向量,根据求导规律矩阵x\mathbf xx中的每一个元素对矩阵yyy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为1×n1\times n1×n。
      ∂y∂x=[∂y∂x1∂y∂x2⋮∂y∂xn]\frac{\partial y}{\partial \mathbf x} = \begin{bmatrix} \frac{\partial y}{\partial x_1}& \frac{\partial y}{\partial x_2} & \vdots & \frac{\partial y}{\partial x_n} \end{bmatrix}∂x∂y​=[∂x1​∂y​​∂x2​∂y​​⋮​∂xn​∂y​​]

    • 分子是向量, 分母是标量。分子y\mathbf yy是向量,分母xxx是标量,根据求导规律矩阵xxx中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为m×1m\times 1m×1。
      ∂y∂x=[∂y1∂x∂y2∂x…∂ym∂x]\frac{\partial \mathbf{y}}{\partial x} = \begin{bmatrix} \frac{\partial y_1}{\partial x}\\ \frac{\partial y_2}{\partial x} \\ \dots \\ \frac{\partial y_m}{\partial x} \end{bmatrix}∂x∂y​=⎣⎢⎢⎡​∂x∂y1​​∂x∂y2​​…∂x∂ym​​​⎦⎥⎥⎤​

    • 分子是向量,分母是向量。分子y\mathbf yy是向量,分母x\mathbf xx是向量,根据求导规律矩阵x\mathbf xx中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为m×nm\times nm×n。
      ∂y∂x=[∂y1∂x1∂y2∂x1…∂y1∂xn∂y2∂x1∂y2∂x2…∂y2∂xn…………∂ym∂xn∂ym∂xn…∂ym∂xn]\frac{\partial \mathbf{y}}{\partial \mathbf x} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_2}{\partial x_1} & \dots & \frac{\partial y_1}{\partial x_n} \\ \frac{\partial y_2}{\partial x_1}& \frac{\partial y_2}{\partial x_2} & \dots & \frac{\partial y_2}{\partial x_n} \\\dots & \dots & \dots & \dots \\ \frac{\partial y_m}{\partial x_n}& \frac{\partial y_m}{\partial x_n} & \dots & \frac{\partial y_m}{\partial x_n} \end{bmatrix}∂x∂y​=⎣⎢⎢⎢⎡​∂x1​∂y1​​∂x1​∂y2​​…∂xn​∂ym​​​∂x1​∂y2​​∂x2​∂y2​​…∂xn​∂ym​​​…………​∂xn​∂y1​​∂xn​∂y2​​…∂xn​∂ym​​​⎦⎥⎥⎥⎤​

    • 分子是标量,分母是矩阵。分子y\mathbf yy是向量,分母X\mathbf XX是矩阵,根据求导规律矩阵X\mathbf XX中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为1×m×n1\times m\times n1×m×n。
      ∂y∂X=[∂y∂x11∂y∂x12…∂y∂x1m∂y∂x21∂y∂x22…∂y∂x2m…………∂y∂xn1∂y∂xn2…∂y∂xnm]\frac{\partial y}{\partial \mathbf X} = \begin{bmatrix} \frac{\partial y}{\partial x_{11}}& \frac{\partial y}{\partial x_{12}} & \dots & \frac{\partial y}{\partial x_{1m}} \\ \frac{\partial y}{\partial x_{21}}& \frac{\partial y}{\partial x_{22}} & \dots & \frac{\partial y}{\partial x_{2m}} \\\dots & \dots & \dots & \dots \\ \frac{\partial y}{\partial x_{n1}}& \frac{\partial y}{\partial x_{n2}} & \dots & \frac{\partial y}{\partial x_{nm}} \end{bmatrix}∂X∂y​=⎣⎢⎢⎢⎡​∂x11​∂y​∂x21​∂y​…∂xn1​∂y​​∂x12​∂y​∂x22​∂y​…∂xn2​∂y​​…………​∂x1m​∂y​∂x2m​∂y​…∂xnm​∂y​​⎦⎥⎥⎥⎤​

  • 分母布局
    • 分子是标量,分母是向量。分子yyy是标量,分母x\mathbf xx是向量,根据求导规律矩阵x\mathbf xx中的每一个元素对矩阵yyy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为1×n1\times n1×n。
      ∂y∂x=[∂y∂x1∂y∂x2⋮∂y∂xn]\frac{\partial y}{\partial \mathbf x} = \begin{bmatrix} \frac{\partial y}{\partial x_1}\\ \frac{\partial y}{\partial x_2} \\ \vdots \\ \frac{\partial y}{\partial x_n} \end{bmatrix}∂x∂y​=⎣⎢⎢⎢⎢⎡​∂x1​∂y​∂x2​∂y​⋮∂xn​∂y​​⎦⎥⎥⎥⎥⎤​
    • 分子是向量, 分母是标量。分子y\mathbf yy是向量,分母xxx是标量,根据求导规律矩阵xxx中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为m×1m\times 1m×1。
      ∂y∂x=[∂y1∂x∂y2∂x…∂ym∂x]\frac{\partial \mathbf{y}}{\partial x} = \begin{bmatrix} \frac{\partial y_1}{\partial x}& \frac{\partial y_2}{\partial x} & \dots & \frac{\partial y_m}{\partial x} \end{bmatrix}∂x∂y​=[∂x∂y1​​​∂x∂y2​​​…​∂x∂ym​​​]
    • 分子是向量,分母是向量。分子y\mathbf yy是向量,分母x\mathbf xx是向量,根据求导规律矩阵x\mathbf xx中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为m×nm\times nm×n。
      ∂y∂x=[∂y1∂x1∂y2∂x1…∂ym∂x1∂y1∂x2∂y2∂x2…∂ym∂x2…………∂y1∂xn∂y2∂xn…∂ym∂xn]\frac{\partial \mathbf{y}}{\partial \mathbf x} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_2}{\partial x_1} & \dots & \frac{\partial y_m}{\partial x_1} \\ \frac{\partial y_1}{\partial x_2}& \frac{\partial y_2}{\partial x_2} & \dots & \frac{\partial y_m}{\partial x_2} \\\dots & \dots & \dots & \dots \\ \frac{\partial y_1}{\partial x_n}& \frac{\partial y_2}{\partial x_n} & \dots & \frac{\partial y_m}{\partial x_n} \end{bmatrix}∂x∂y​=⎣⎢⎢⎢⎡​∂x1​∂y1​​∂x2​∂y1​​…∂xn​∂y1​​​∂x1​∂y2​​∂x2​∂y2​​…∂xn​∂y2​​​…………​∂x1​∂ym​​∂x2​∂ym​​…∂xn​∂ym​​​⎦⎥⎥⎥⎤​
    • 分子是标量,分母是矩阵。分子y\mathbf yy是向量,分母X\mathbf XX是矩阵,根据求导规律矩阵X\mathbf XX中的每一个元素对矩阵y\mathbf yy中的每一个元素进行求导可以得出最后的结果矩阵中的元素个数应该为1×m×n1\times m\times n1×m×n。
      ∂y∂X=[∂y∂x11∂y∂x12…∂y∂x1n∂y∂x21∂y∂x22…∂y∂x2n…………∂y∂xm1∂y∂xm2…∂y∂xmn]\frac{\partial y}{\partial \mathbf X} = \begin{bmatrix} \frac{\partial y}{\partial x_{11}}& \frac{\partial y}{\partial x_{12}} & \dots & \frac{\partial y}{\partial x_{1n}} \\ \frac{\partial y}{\partial x_{21}}& \frac{\partial y}{\partial x_{22}} & \dots & \frac{\partial y}{\partial x_{2n}} \\\dots & \dots & \dots & \dots \\ \frac{\partial y}{\partial x_{m1}}& \frac{\partial y}{\partial x_{m2}} & \dots & \frac{\partial y}{\partial x_{mn}} \end{bmatrix}∂X∂y​=⎣⎢⎢⎢⎡​∂x11​∂y​∂x21​∂y​…∂xm1​∂y​​∂x12​∂y​∂x22​∂y​…∂xm2​∂y​​…………​∂x1n​∂y​∂x2n​∂y​…∂xmn​∂y​​⎦⎥⎥⎥⎤​

分子布局和分母布局的关系

通过观测可以发现,分子布局求导结果的装置就是分母布局求导的结果

常见矩阵求导推导

这部分主要想对常用的矩阵求导公式应用分母布局进行推导:

  1. ∂Ax∂x=AT\frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = A^T∂x∂Ax​=AT 推导
    这里的A=[a11a12…a1na21a22…a2n…………am1am2…amn]\mathbf A =\begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \dots & \dots & \dots & \dots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix}A=⎣⎢⎢⎡​a11​a21​…am1​​a12​a22​…am2​​…………​a1n​a2n​…amn​​⎦⎥⎥⎤​ 和x=[x1x2⋮xn]\mathbf x = \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​
    Ax=[a11x1+a12x2+⋯+a1nxna21x1+a22x2+⋯+a2nxn…am1x1+am2x2+⋯+amnxn]m×1\mathbf{Ax} = \begin{bmatrix} a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n}x_{n} \\ a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} \\ \dots \\ a_{m1} x_{1} + a_{m2} x_{2}+ \dots + a_{mn}x_{n} \end{bmatrix}_{m\times 1}Ax=⎣⎢⎢⎡​a11​x1​+a12​x2​+⋯+a1n​xn​a21​x1​+a22​x2​+⋯+a2n​xn​…am1​x1​+am2​x2​+⋯+amn​xn​​⎦⎥⎥⎤​m×1​
    可以看出Ax\mathbf{Ax}Ax是一个向量,这里应用分母布局的分母是向量,分子是向量的求导展开,可以得到:
    ∂Ax∂x=[a11x1+a12x2+⋯+a1nxnx1a21x1+a22x2+⋯+a2nxnx1…am1x1+am2x2+⋯+amnxnx1a11x1+a12x2+⋯+a1nxnx2a21x1+a22x2+⋯+a2nxnx2…am1x1+am2x2+⋯+amnxnx2…………a11x1+a12x2+⋯+a1nxnxna21x1+a22x2+⋯+a2nxnxn…am1x1+am2x2+⋯+amnxnxn]=[a11a21…am1a12a22…am2a1na2n…amn]=AT\frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} =\begin{bmatrix} \frac{ a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n}x_{n}}{x_1} & \frac{a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} }{x_1} & \dots & \frac{ a_{m1} x_{1} + a_{m2} x_{2}+ \dots + a_{mn}x_{n} }{ x_1} \\ \frac{ a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n}x_{n}}{x_2} & \frac{a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} }{x_2} & \dots & \frac{ a_{m1} x_{1} + a_{m2} x_{2}+ \dots + a_{mn}x_{n} }{ x_2} \\ \dots & \dots & \dots& \dots \\ \frac{a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n}x_{n} }{x_n} & \frac{a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} }{x_n} & \dots & \frac{a_{m1} x_{1} + a_{m2} x_{2}+ \dots + a_{mn}x_{n}}{x_n} \end{bmatrix} \\ =\begin{bmatrix} a_{11} & a_{21} & \dots & a_{m1} \\ a_{12} & a_{22} & \dots & a_{m2} \\ a_{1n} & a_{2n} & \dots & a_{mn}\end{bmatrix} = A^T∂x∂Ax​=⎣⎢⎢⎡​x1​a11​x1​+a12​x2​+⋯+a1n​xn​​x2​a11​x1​+a12​x2​+⋯+a1n​xn​​…xn​a11​x1​+a12​x2​+⋯+a1n​xn​​​x1​a21​x1​+a22​x2​+⋯+a2n​xn​​x2​a21​x1​+a22​x2​+⋯+a2n​xn​​…xn​a21​x1​+a22​x2​+⋯+a2n​xn​​​…………​x1​am1​x1​+am2​x2​+⋯+amn​xn​​x2​am1​x1​+am2​x2​+⋯+amn​xn​​…xn​am1​x1​+am2​x2​+⋯+amn​xn​​​⎦⎥⎥⎤​=⎣⎡​a11​a12​a1n​​a21​a22​a2n​​………​am1​am2​amn​​⎦⎤​=AT

  2. ∂xTAx∂x=(A+AT)x\frac{\partial \mathbf{x^T A x}}{\partial \mathbf{x}} =\mathbf{ ( A + A^T)x}∂x∂xTAx​=(A+AT)x 推导
    同样,这里的A=[a11a12…a1na21a22…a2n…………an1an2…ann]\mathbf A =\begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \dots & \dots & \dots & \dots \\ a_{n1} & a_{n2} & \dots & a_{nn} \end{bmatrix}A=⎣⎢⎢⎡​a11​a21​…an1​​a12​a22​…an2​​…………​a1n​a2n​…ann​​⎦⎥⎥⎤​ 和x=[x1x2⋮xn]\mathbf x = \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​
    从右向左计算xTAx\mathbf{x^TAx}xTAx
    Ax=[a11x1+a12x2+⋯+a1nxna21x1+a22x2+⋯+a2nxn…an1x1+an2x2+⋯+annxn]n×1\mathbf{Ax} = \begin{bmatrix} a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n}x_{n} \\ a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} \\ \dots \\ a_{n1} x_{1} + a_{n2} x_{2}+ \dots + a_{nn}x_{n} \end{bmatrix}_{n\times 1}Ax=⎣⎢⎢⎡​a11​x1​+a12​x2​+⋯+a1n​xn​a21​x1​+a22​x2​+⋯+a2n​xn​…an1​x1​+an2​x2​+⋯+ann​xn​​⎦⎥⎥⎤​n×1​
    xTAx=[x1x2…xn]1×n[a11x1+a12x2+⋯+a1nx1xna21x1+a22x2+⋯+a2nxn…an1x1+an2x2+⋯+annxn]n×1=[(a11x12+a12x1x2+⋯+a1nx1xn)+(a21x1x2+a22x22+⋯+a2nx2xn)+⋯+(an1x1xn+an2x2xn+⋯+annxn2)]1×1\mathbf{x^TAx} = \begin{bmatrix} x_1 & x_2 & \dots & x_n \end{bmatrix}_{1\times n} \begin{bmatrix} a_{11} x_{1} + a_{12} x_{2}+ \dots + a_{1n} x_1 x_{n} \\ a_{21} x_{1} + a_{22} x_{2}+ \dots + a_{2n}x_{n} \\ \dots \\ a_{n1} x_{1} + a_{n2} x_{2}+ \dots + a_{nn}x_{n} \end{bmatrix}_{n\times 1}\\=\begin{bmatrix} (a_{11} x_{1}^2 + a_{12}x_1 x_{2}+ \dots + a_{1n}x_1x_{n}) + (a_{21} x_{1}x_2 + a_{22} x_{2}^2+ \dots + a_{2n}x_2x_{n} ) + \dots + ( a_{n1} x_{1} x_n+ a_{n2} x_{2}x_n+ \dots + a_{nn}x_{n}^2)\end{bmatrix}_{1\times 1} xTAx=[x1​​x2​​…​xn​​]1×n​⎣⎢⎢⎡​a11​x1​+a12​x2​+⋯+a1n​x1​xn​a21​x1​+a22​x2​+⋯+a2n​xn​…an1​x1​+an2​x2​+⋯+ann​xn​​⎦⎥⎥⎤​n×1​=[(a11​x12​+a12​x1​x2​+⋯+a1n​x1​xn​)+(a21​x1​x2​+a22​x22​+⋯+a2n​x2​xn​)+⋯+(an1​x1​xn​+an2​x2​xn​+⋯+ann​xn2​)​]1×1​
    可以看出xTAx\mathbf{x^TAx}xTAx是一个标量,这里应用分母布局的分母是向量,分子是标量的求导展开,可以得到:
    ∂xTAx∂x=[∂[a11x12+a12x1x2+⋯+a1nx1xn)+(a21x1x2+a22x22+⋯+a2nx2xn)+⋯+(an1x1xn+an2x2xn+⋯+annxn2)]∂x1∂[(a11x12+a12x1x2+⋯+a1nx1xn)+(a21x1x2+a22x22+⋯+a2nx2xn)+⋯+(an1x1xn+an2x2xn+⋯+annxn2)]∂x2…∂[(a11x12+a12x1x2+⋯+a1nx1xn)+(a21x1x2+a22x22+⋯+a2nx2xn)+⋯+(an1x1xn+an2x2xn+⋯+annxn2)]∂xn]=[a11a12…a1na21a22…a2n…………an1an2…ann]+[a11a21…an1a12a22…an2…………an1an2…ann]=(A+AT)x\frac{\partial \mathbf{x^TAx}}{\partial \mathbf{x}} =\begin{bmatrix} \frac{\partial [a_{11} x_{1}^2 + a_{12}x_1 x_{2}+ \dots + a_{1n}x_1x_{n}) + (a_{21} x_{1}x_2 + a_{22} x_{2}^2+ \dots + a_{2n}x_2x_{n} ) + \dots + ( a_{n1} x_{1} x_n+ a_{n2} x_{2}x_n+ \dots + a_{nn}x_{n}^2)]}{\partial x_1} \\ \frac{\partial[(a_{11} x_{1}^2 + a_{12}x_1 x_{2}+ \dots + a_{1n}x_1x_{n}) + (a_{21} x_{1}x_2 + a_{22} x_{2}^2+ \dots + a_{2n}x_2x_{n} ) + \dots + ( a_{n1} x_{1} x_n+ a_{n2} x_{2}x_n+ \dots + a_{nn}x_{n}^2)]}{\partial x_2} \\ \dots \\ \frac{\partial [(a_{11} x_{1}^2 + a_{12}x_1 x_{2}+ \dots + a_{1n}x_1x_{n}) + (a_{21} x_{1}x_2 + a_{22} x_{2}^2+ \dots + a_{2n}x_2x_{n} ) + \dots + ( a_{n1} x_{1} x_n+ a_{n2} x_{2}x_n+ \dots + a_{nn}x_{n}^2)]}{\partial x_n}\end{bmatrix} \\= \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \dots & \dots & \dots & \dots \\ a_{n1} & a_{n2} & \dots & a_{nn}\end{bmatrix} + \begin{bmatrix} a_{11} & a_{21} & \dots & a_{n1} \\ a_{12} & a_{22} & \dots & a_{n2} \\ \dots & \dots & \dots & \dots \\ a_{n1} & a_{n2} & \dots & a_{nn}\end{bmatrix} = \mathbf{(A + A^T) x}∂x∂xTAx​=⎣⎢⎢⎢⎢⎡​∂x1​∂[a11​x12​+a12​x1​x2​+⋯+a1n​x1​xn​)+(a21​x1​x2​+a22​x22​+⋯+a2n​x2​xn​)+⋯+(an1​x1​xn​+an2​x2​xn​+⋯+ann​xn2​)]​∂x2​∂[(a11​x12​+a12​x1​x2​+⋯+a1n​x1​xn​)+(a21​x1​x2​+a22​x22​+⋯+a2n​x2​xn​)+⋯+(an1​x1​xn​+an2​x2​xn​+⋯+ann​xn2​)]​…∂xn​∂[(a11​x12​+a12​x1​x2​+⋯+a1n​x1​xn​)+(a21​x1​x2​+a22​x22​+⋯+a2n​x2​xn​)+⋯+(an1​x1​xn​+an2​x2​xn​+⋯+ann​xn2​)]​​⎦⎥⎥⎥⎥⎤​=⎣⎢⎢⎡​a11​a21​…an1​​a12​a22​…an2​​…………​a1n​a2n​…ann​​⎦⎥⎥⎤​+⎣⎢⎢⎡​a11​a12​…an1​​a21​a22​…an2​​…………​an1​an2​…ann​​⎦⎥⎥⎤​=(A+AT)x

  3. ∂xTx∂x=2x\frac{\partial \mathbf{x^T x}}{\partial \mathbf{x}} =2\mathbf{ x}∂x∂xTx​=2x 推导
    同样,这里的x=[x1x2⋮xn]\mathbf x = \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​
    那么:
    xTx=[x1x2…xn]1×n[x1x2⋮xn]n×1=[x1x1+x2x2+⋯+xnxn]1×1\mathbf{x^T x} = \begin{bmatrix}x_1 & x_2 & \dots & x_n \end{bmatrix}_{1\times n} \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}_{n\times 1} = \begin{bmatrix}x_1 x_1 + x_2 x_2 + \dots + x_n x_n\end{bmatrix}_{1\times1}xTx=[x1​​x2​​…​xn​​]1×n​⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​n×1​=[x1​x1​+x2​x2​+⋯+xn​xn​​]1×1​
    可以看出xTx\mathbf{x^Tx}xTx是一个标量,这里应用分母布局的分母是向量,分子是标量的求导展开,可以得到:
    ∂xTx∂x=[x1x1+x2x2+⋯+xnxn∂x1x1x1+x2x2+⋯+xnxn∂x2⋮x1x1+x2x2+⋯+xnxn∂xn]=[2x12x2⋮2xn]=2x\frac{\partial \mathbf{x^T x}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{x_1 x_1 + x_2 x_2 + \dots + x_n x_n}{\partial x_1} \\ \frac{x_1 x_1 + x_2 x_2 + \dots + x_n x_n}{\partial x_2} \\ \vdots \\ \frac{x_1 x_1 + x_2 x_2 + \dots + x_n x_n}{\partial x_n}\end{bmatrix} = \begin{bmatrix} 2x_1 \\ 2x_2 \\ \vdots \\ 2x_n \end{bmatrix} = 2\mathbf x∂x∂xTx​=⎣⎢⎢⎢⎡​∂x1​x1​x1​+x2​x2​+⋯+xn​xn​​∂x2​x1​x1​+x2​x2​+⋯+xn​xn​​⋮∂xn​x1​x1​+x2​x2​+⋯+xn​xn​​​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​2x1​2x2​⋮2xn​​⎦⎥⎥⎥⎤​=2x

常用矩阵求导公式推导相关推荐

  1. 矩阵计算 | 常用矩阵求导公式速查

    文章目录 参考资料 常用矩阵求导公式 参考资料 Matrix Calculu The Matrix Cookbook 常用矩阵求导公式 对于一个矩阵A,向量x\mathrm{x}x,有如下求导公式: ...

  2. 必知必会!常用矩阵求导和重要的矩阵

    对网上的矩阵求导公式进行备份总结,列出常见部分 常用的矩阵求导公式 矩阵迹的一些公式 其他的可以参考wiki:维基百科矩阵求导公式 几种重要的矩阵 1.梯度(Gradient)   2.雅克比矩阵(J ...

  3. [机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    一, 矩阵求导 1,矩阵求导的本质 矩阵A对矩阵B求导: 矩阵A中的每一个元素分别对矩阵B中的每个元素进行求导. A1×1A_{1\times1}A1×1​, B1×1B_{1\times1}B1×1 ...

  4. 【转载】矩阵求导、几种重要的矩阵及常用的矩阵求导公式

    一.矩阵求导 一般来讲,我们约定x=(x1,x2,-xN)Tx=(x1,x2,-xN)T,这是分母布局.常见的矩阵求导方式有:向量对向量求导,标量对向量求导,向量对标量求导. 1.向量对向量求导 Nu ...

  5. 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    神经网络反向传播时的梯度到底怎么求, 注意与下图矩阵求导的本质的区分:神经网络的在反向传播过程中,矩阵(m×n)对矩阵(p×q)求导的结果是只列出对相关元素求偏导的结果,其他不相关的元素根本就没有对应 ...

  6. 矩阵求导常用公式(避坑)+矩阵的模和矩阵的绝对值的求导

    目录 矩阵求导常用公式 1.分母布局与分子布局 2.分母布局与分子布局的矩阵求导公式 (1)向量对向量求导 (2).标量对向量求导 (3).向量对标量求导 3.验证求导结果 矩阵的模和矩阵的绝对值的求 ...

  7. python矩阵求导代码_搞点枯燥的公式推导:深度学习中的矩阵求导

    最近看到一篇极视角转的文章算法推导核心!一次性梳理清楚,是时候搞定矩阵求导了!,想到前不久面试爱奇艺的时候一面的小哥一直让我手推全连接的公式推导,以及用Python+Numpy将过程实现,感觉自己对深 ...

  8. Matrix Differentiation(矩阵求导)以及矩阵求导常用公式

    Matrix Differentiation(矩阵求导) References: Matrix Differentiation,Rabdak J.Barnes 注: 本文直接从Matrix Diffe ...

  9. 机器学习中的线性代数之矩阵求导

    前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...

  10. 矩阵求导(一)-- 求导的定义和布局约定

    本系列主要参考张贤达的<矩阵分析与应用>第三章 矩阵微分和下面的博客内容进行学习,并整理成学习笔记.学习路线参考SinclairWang的文章--矩阵求导入门学习路线,按下面推荐顺序学习, ...

最新文章

  1. int main(int argc,char *argv[]),主函数的参数问题
  2. 开展project 正常的生活之路
  3. lajp mysql安装_Php调用java说明
  4. LeetCode 88. 合并两个有序数组 golang
  5. 表变量是什么_DAX学习:使用VAR定义变量
  6. Python笔记-Flask框架Get和Post参数相关
  7. 自学编程的人,都是怎么找到自己的第一份工作的?
  8. 德国高级码农可赚年薪20万,但他们不在乎钱
  9. LIB BFD, the Binary File Descriptor Library
  10. python语言提供的三个基本数据类型是_python基本数据类型
  11. CF618F Double Knapsack 构造、抽屉原理
  12. 微信小程序获得微信头像和昵称
  13. win11菜单怎么添加快捷方式 Windows11开始菜单添加快捷方式的设置方法
  14. 我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比
  15. qt调用python(不是python调用qt,不是使用pyqt模块)
  16. JQuery文档信息
  17. 十三肝了2晚的《IDEA操作手册-终极秘籍》终于来了...
  18. 基于SSM+Eclipse+MySQL的球鞋商城(SSM毕业设计源码)(SSM在线商城)
  19. 软件测试流程五个阶段
  20. office各种格式文件对应的MIME Type/http:Content-Type

热门文章

  1. IAR For ARM 7.8下载地址
  2. php-screw 安装,php源码加密:php_screw 安装与使用
  3. python获取英文字母、英文标点符号、中文标点符号
  4. win10 计算机 搜索文件,如何在win10搜索指定文件_教你在win10搜索指定文件的方法...
  5. javascript原生移动云编程1 - 十分钟做出跨平台原生App
  6. 微信域名防封的新知识
  7. C语言str函数系列
  8. linux lefse分析,科学网-linux本地化进行lefse分析-林国鹏的博文
  9. 弘辽科技:为什么手淘推荐流量突然增加?
  10. 高德经纬度、百度经纬度、标准经纬度相互转换(VB.NET)