矩阵求导之一:理论篇

为方便叙述,做如下定义:
x x x表示标量, x \boldsymbol{x} x表示 n n n维列向量, X \boldsymbol{X} X表示 m × n m\times n m×n维矩阵, y y y表示标量, y \boldsymbol{y} y表示 m m m维列向量, Y \boldsymbol{Y} Y表示 p × q p\times q p×q维矩阵。
仅考虑实数域,不考虑复数域。

1 函数与标量、向量、矩阵

对于一个函数 f ( x ) f\left( x \right) f(x),根据自变量以及函数的类型可以分成9种类型:

1.1 函数为标量

函数为实值标量函数。用细体小写字母 f f f表示。

1.1.1 变元为标量

当函数的变元为标量(细体小写字母 x x x表示)时,就是我们在高数中学习的函数。
【例1.1】
f ( x ) = x + a f\left( x \right) =x+a f(x)=x+a

1.1.2 变元为向量

当函数的变元为标量(粗体小写字母 x \boldsymbol{x} x表示)时,该函数仍是一个标量函数
【例1.2】设 x = [ x 1 , x 2 , ⋯   , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T x=[x1,x2,,xn]T
f ( x ) = a 1 x 1 2 + a 2 x 2 2 + ⋯ + a n x n 2 f\left( \boldsymbol{x} \right) =a_1{x_1}^2+a_2{x_2}^2+\cdots +a_n{x_n}^2 f(x)=a1x12+a2x22++anxn2

1.1.3 变元为矩阵

当函数的变元为标量(粗体大写字母 X \boldsymbol{X} X表示)时,该函数仍是一个标量函数
【例1.3】设 X = [ x 11 x 12 x 13 x 21 x 22 x 23 ] \boldsymbol{X}=\left[ \begin{matrix} x_{11}& x_{12}& x_{13}\\ x_{21}& x_{22}& x_{23}\\ \end{matrix} \right] X=[x11x21x12x22x13x23]
f ( X ) = a 1 x 11 + a 2 x 12 + a 3 x 13 + a 4 x 21 + a 5 x 22 + a 6 x 23 f\left( \boldsymbol{X} \right) =a_1x_{11}+a_2x_{12}+a_3x_{13}+a_4x_{21}+a_5x_{22}+a_6x_{23} f(X)=a1x11+a2x12+a3x13+a4x21+a5x22+a6x23

1.2 函数为向量

当函数为实向量函数(用粗体小写字母 f \boldsymbol{f} f表示)时,表示 f \boldsymbol{f} f是由若干个实值标量函数 f {f} f组成的一个向量。

1.2.1 变元为标量

【例1.4】 f m × 1 ( x ) = [ f 1 ( x ) f 2 ( x ) ⋮ f m ( x ) ] = [ x + 1 x 2 + 2 ⋮ 3 x 3 + 1 ] \boldsymbol{f}_{m\times 1}\left( x \right) =\left[ \begin{array}{c} f_1\left( x \right)\\ f_2\left( x \right)\\ \vdots\\ f_m\left( x \right)\\ \end{array} \right] =\left[ \begin{array}{c} x+1\\ x^2+2\\ \vdots\\ 3x^3+1\\ \end{array} \right] fm×1(x)= f1(x)f2(x)fm(x) = x+1x2+23x3+1

1.2.2 变元为向量

【例1.5】设 x = [ x 1 , x 2 , ⋯   , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T x=[x1,x2,,xn]T
f m × 1 ( x ) = [ f 1 ( x ) f 2 ( x ) ⋮ f m ( x ) ] = [ f 1 ( x 1 , x 2 , ⋯   , x n ) f 2 ( x 1 , x 2 , ⋯   , x n ) ⋮ f m ( x 1 , x 2 , ⋯   , x n ) ] \boldsymbol{f}_{m\times 1}\left( \boldsymbol{x} \right) =\left[ \begin{array}{c} f_1\left( \boldsymbol{x} \right)\\ f_2\left( \boldsymbol{x} \right)\\ \vdots\\ f_m\left( \boldsymbol{x} \right)\\ \end{array} \right] =\left[ \begin{array}{c} f_1\left( x_1,x_2,\cdots ,x_n \right)\\ f_2\left( x_1,x_2,\cdots ,x_n \right)\\ \vdots\\ f_m\left( x_1,x_2,\cdots ,x_n \right)\\ \end{array} \right] fm×1(x)= f1(x)f2(x)fm(x) = f1(x1,x2,,xn)f2(x1,x2,,xn)fm(x1,x2,,xn)

1.2.3 变元为矩阵

【例1.6】设 X m × n = [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n ] \boldsymbol{X}_{m\times n}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right] Xm×n= x11x21xm1x12x22xm2x1nx2nxmn
f m × 1 ( X ) = [ f 1 ( X ) f 2 ( X ) ⋮ f m ( X ) ] = [ f 1 ( x 11 , x 12 , ⋯   , x m n ) f 2 ( x 11 , x 12 , ⋯   , x m n ) ⋮ f m ( x 11 , x 12 , ⋯   , x m n ) ] \boldsymbol{f}_{m\times 1}\left( \boldsymbol{X} \right) =\left[ \begin{array}{c} f_1\left( \boldsymbol{X} \right)\\ f_2\left( \boldsymbol{X} \right)\\ \vdots\\ f_m\left( \boldsymbol{X} \right)\\ \end{array} \right] =\left[ \begin{array}{c} f_1\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ f_2\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \vdots\\ f_m\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \end{array} \right] fm×1(X)= f1(X)f2(X)fm(X) = f1(x11,x12,,xmn)f2(x11,x12,,xmn)fm(x11,x12,,xmn)

1.3 函数为矩阵

当函数是一个实矩阵函数(用粗体大写字母 F \boldsymbol{F} F表示)时,表示 F \boldsymbol{F} F是由若干个 f {f} f组成的一个矩阵。

1.3.1 变元为标量

【例1.7】 F m × n ( x ) = [ f 11 ( x ) f 12 ( x ) ⋯ f 1 n ( x ) f 21 ( x ) f 22 ( x ) ⋯ f 2 n ( x ) ⋮ ⋮ ⋱ ⋮ f m 1 ( x ) f m 2 ( x ) ⋯ f m n ( x ) ] m × n \boldsymbol{F}_{m\times n}\left( x \right) =\left[ \begin{matrix} f_{11}\left( x \right)& f_{12}\left( x \right)& \cdots& f_{1n}\left( x \right)\\ f_{21}\left( x \right)& f_{22}\left( x \right)& \cdots& f_{2n}\left( x \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x \right)& f_{m2}\left( x \right)& \cdots& f_{mn}\left( x \right)\\ \end{matrix} \right] _{m\times n} Fm×n(x)= f11(x)f21(x)fm1(x)f12(x)f22(x)fm2(x)f1n(x)f2n(x)fmn(x) m×n

1.3.2 变元为向量

【例1.8】设 x = [ x 1 , x 2 , ⋯   , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T x=[x1,x2,,xn]T
F m × n ( x ) = [ f 11 ( x ) f 12 ( x ) ⋯ f 1 n ( x ) f 21 ( x ) f 22 ( x ) ⋯ f 2 n ( x ) ⋮ ⋮ ⋱ ⋮ f m 1 ( x ) f m 2 ( x ) ⋯ f m n ( x ) ] = [ f 11 ( x 1 , x 2 , ⋯   , x n ) f 12 ( x 1 , x 2 , ⋯   , x n ) ⋯ f 1 n ( x 1 , x 2 , ⋯   , x n ) f 21 ( x 1 , x 2 , ⋯   , x n ) f 22 ( x 1 , x 2 , ⋯   , x n ) ⋯ f 2 n ( x 1 , x 2 , ⋯   , x n ) ⋮ ⋮ ⋱ ⋮ f m 1 ( x 1 , x 2 , ⋯   , x n ) f m 2 ( x 1 , x 2 , ⋯   , x n ) ⋯ f m n ( x 1 , x 2 , ⋯   , x n ) ] \boldsymbol{F}_{m\times n}\left( \boldsymbol{x} \right) =\left[ \begin{matrix} f_{11}\left( \boldsymbol{x} \right)& f_{12}\left( \boldsymbol{x} \right)& \cdots& f_{1n}\left( \boldsymbol{x} \right)\\ f_{21}\left( \boldsymbol{x} \right)& f_{22}\left( \boldsymbol{x} \right)& \cdots& f_{2n}\left( \boldsymbol{x} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( \boldsymbol{x} \right)& f_{m2}\left( \boldsymbol{x} \right)& \cdots& f_{mn}\left( \boldsymbol{x} \right)\\ \end{matrix} \right] \\ =\left[ \begin{matrix} f_{11}\left( x_1,x_2,\cdots ,x_n \right)& f_{12}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{1n}\left( x_1,x_2,\cdots ,x_n \right)\\ f_{21}\left( x_1,x_2,\cdots ,x_n \right)& f_{22}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{2n}\left( x_1,x_2,\cdots ,x_n \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x_1,x_2,\cdots ,x_n \right)& f_{m2}\left( x_1,x_2,\cdots ,x_n \right)& \cdots& f_{mn}\left( x_1,x_2,\cdots ,x_n \right)\\ \end{matrix} \right] Fm×n(x)= f11(x)f21(x)fm1(x)f12(x)f22(x)fm2(x)f1n(x)f2n(x)fmn(x) = f11(x1,x2,,xn)f21(x1,x2,,xn)fm1(x1,x2,,xn)f12(x1,x2,,xn)f22(x1,x2,,xn)fm2(x1,x2,,xn)f1n(x1,x2,,xn)f2n(x1,x2,,xn)fmn(x1,x2,,xn)

1.3.3 变元为矩阵

【例1.9】设 X m × n = [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n ] \boldsymbol{X}_{m\times n}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right] Xm×n= x11x21xm1x12x22xm2x1nx2nxmn
F m × n ( X ) = [ f 11 ( X ) f 12 ( X ) ⋯ f 1 n ( X ) f 21 ( X ) f 22 ( X ) ⋯ f 2 n ( X ) ⋮ ⋮ ⋱ ⋮ f m 1 ( X ) f m 2 ( X ) ⋯ f m n ( X ) ] = [ f 11 ( x 11 , x 12 , ⋯   , x m n ) f 12 ( x 11 , x 12 , ⋯   , x m n ) ⋯ f 1 n ( x 11 , x 12 , ⋯   , x m n ) f 21 ( x 11 , x 12 , ⋯   , x m n ) f 22 ( x 11 , x 12 , ⋯   , x m n ) ⋯ f 2 n ( x 11 , x 12 , ⋯   , x m n ) ⋮ ⋮ ⋱ ⋮ f m 1 ( x 11 , x 12 , ⋯   , x m n ) f m 2 ( x 11 , x 12 , ⋯   , x m n ) ⋯ f m n ( x 11 , x 12 , ⋯   , x m n ) ] \boldsymbol{F}_{m\times n}\left( \boldsymbol{X} \right) =\left[ \begin{matrix} f_{11}\left( \boldsymbol{X} \right)& f_{12}\left( \boldsymbol{X} \right)& \cdots& f_{1n}\left( \boldsymbol{X} \right)\\ f_{21}\left( \boldsymbol{X} \right)& f_{22}\left( \boldsymbol{X} \right)& \cdots& f_{2n}\left( \boldsymbol{X} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( \boldsymbol{X} \right)& f_{m2}\left( \boldsymbol{X} \right)& \cdots& f_{mn}\left( \boldsymbol{X} \right)\\ \end{matrix} \right] \\ =\left[ \begin{matrix} f_{11}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{12}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{1n}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ f_{21}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{22}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{2n}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \vdots& \vdots& \ddots& \vdots\\ f_{m1}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& f_{m2}\left( x_{11},x_{12},\cdots ,x_{mn} \right)& \cdots& f_{mn}\left( x_{11},x_{12},\cdots ,x_{mn} \right)\\ \end{matrix} \right] Fm×n(X)= f11(X)f21(X)fm1(X)f12(X)f22(X)fm2(X)f1n(X)f2n(X)fmn(X) = f11(x11,x12,,xmn)f21(x11,x12,,xmn)fm1(x11,x12,,xmn)f12(x11,x12,,xmn)f22(x11,x12,,xmn)fm2(x11,x12,,xmn)f1n(x11,x12,,xmn)f2n(x11,x12,,xmn)fmn(x11,x12,,xmn)

1.4 总结

根据自变量、因变量是标量,向量还是矩阵,有9种矩阵形式:

函数\变元标量变元向量变元矩阵变元
实值标量函数 f ( x ) f\left( x \right) f(x) f ( x ) f\left( \boldsymbol{x} \right) f(x) f ( X ) f\left( \boldsymbol{X} \right) f(X)
实向量函数 f ( x ) \boldsymbol{f}\left( x \right) f(x) f ( x ) \boldsymbol{f}\left( \boldsymbol{x} \right) f(x) f ( X ) \boldsymbol{f}\left( \boldsymbol{X} \right) f(X)
实矩阵函数 F ( x ) \boldsymbol{F}\left( x \right) F(x) F ( x ) \boldsymbol{F}\left( \boldsymbol{x} \right) F(x) F ( X ) \boldsymbol{F}\left( \boldsymbol{X} \right) F(X)

对应地,有9种可能的矩阵求导定义:

函数\变元标量变元向量变元矩阵变元
实值标量函数 ∂ f ∂ x \frac{\partial f}{\partial x} xf ∂ f ∂ x \frac{\partial f}{\partial \boldsymbol{x}} xf ∂ f ∂ X \frac{\partial f}{\partial \boldsymbol{X}} Xf
实向量函数 ∂ f ∂ x \frac{\partial \boldsymbol{f}}{\partial x} xf ∂ f ∂ x \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}} xf ∂ f ∂ X \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{X}} Xf
实矩阵函数 ∂ F ∂ x \frac{\partial \boldsymbol{F}}{\partial x} xF ∂ F ∂ x \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{x}} xF ∂ F ∂ X \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}} XF

2 矩阵求导的本质

在高等数学里面,我们已经学过了标量对标量的求导,比如标量 y y y对标量 x x x的求导,可以表示为 ∂ y ∂ x \frac{\partial y}{\partial x} xy.有些时候,我们会对一组标量 y i , i = 1 , 2 , ⋯   , m y_i,i=1,2,\cdots ,m yi,i=1,2,,m进行求导,我们会得到一组标量求导的结果:
∂ y i ∂ x i , i = 1 , 2 , ⋯   , m \frac{\partial y_i}{\partial x_i},i=1,2,\cdots ,m xiyi,i=1,2,,m
如果我们把这组标量写成向量的形式,即得到维度为 m m m的一个向量 y \boldsymbol{y} y对一个标量 x x x的求导,那么结果也是一个 m m m维的向量: ∂ y ∂ x \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}} xy.

可见,所谓向量对标量的求导,其实就是向量里的每个分量分别对标量求导,最后把求导的结果排列在一起,按一个向量表示而已。类似地,矩阵求导也是一样的,本质就是矩阵中的每个 f f f分别对变元中的每个元素逐个求偏导,只不过写成了向量、矩阵形式而已。

下面通过2个例子直观感受一下。

【例2.1】设 y = [ y 1 , y 2 , ⋯   , y n ] T \boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_n \right] ^T y=[y1,y2,,yn]T,则有:
∂ y ∂ x = [ ∂ y 1 ∂ x , ∂ y 2 ∂ x , ⋯ ∂ y 3 ∂ x ] T \frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots \frac{\partial y_3}{\partial x} \right] ^T xy=[xy1,xy2,xy3]T
【例2.2】求函数 f ( x ) = x T x = x 1 2 + x 2 2 + ⋯ + x n 2 f\left( \boldsymbol{x} \right) =\boldsymbol{x}^T\boldsymbol{x}={x_1}^2+{x_2}^2+\cdots +{x_n}^2 f(x)=xTx=x12+x22++xn2 x \boldsymbol{x} x的导数.
显然这是一个标量对向量求导地形式:
d f d x = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯   , ∂ f ∂ x n ] T = [ 2 x 1 , 2 x 2 , ⋯   , 2 x n ] T = 2 [ x 1 , x 2 , ⋯   , x n ] T = 2 x \begin{aligned} \frac{\mathrm{d}f}{\mathrm{d}\boldsymbol{x}}&=\left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},\cdots ,\frac{\partial f}{\partial x_n} \right] ^T=\left[ 2x_1,2x_2,\cdots ,2x_n \right] ^T \\ \\ &=2\left[ x_1,x_2,\cdots ,x_n \right] ^T=2\boldsymbol{x} \end{aligned} dxdf=[x1f,x2f,,xnf]T=[2x1,2x2,,2xn]T=2[x1,x2,,xn]T=2x
即:
d ( x T x ) d x = 2 x \frac{\mathrm{d}\left( \boldsymbol{x}^T\boldsymbol{x} \right)}{\mathrm{d}\boldsymbol{x}}=2\boldsymbol{x} dxd(xTx)=2x
如果函数中有 m m m f f f ,变元中有 n n n个元素,那么,每个 f f f对变元中的每个元素逐个求偏导后,就会产生 m × n m\times n m×n个结果。
更进一步,对于一个 m × n m\times n m×n的实矩阵函数 F ( X ) \boldsymbol{F}\left( \boldsymbol{X} \right) F(X),变元为 p × q p\times q p×q的矩阵变元,那么每个 f f f对变元中的每个元素逐个求偏导后,就会产生 m × n × p × q m\times n \times p\times q m×n×p×q个结果。

求导的本质是把导数信息,即求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在机器学习算法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,而且编程时会因为维度问题而出错。为了解决这个问题,引入求导布局的概念。

3 分子布局和分母布局

矩阵求导有两种布局,分子布局(numerator layout)和分母布局(denominator layout)。两种布局互为转置关系

  • 分子布局:结果的维度以分子为主。
  • 分母布局:结果的维度以分母为主。

这里所说的以谁为主是指结果的第一个维度由谁决定。这里先举几个例子,方便加深对布局理论的理解。

3.1 标量对标量求导

标量对标量的求导就是高数中所学习的函数求导。

3.2 标量对向量求导

∂ y ∂ x \frac{\partial y}{\partial \boldsymbol{x}} xy,如果按照分子布局,结果的第一个维度与分子的第一个维度相同,为1行,结果就是 m m m维行向量;如果按照分母布局,结果的第一个维度与分母的第一个维度相同,为 m m m行,结果就会是 m m m维列向量。

3.3 标量对矩阵求导

因为 X \boldsymbol{X} X在分母上,因此默认使用分母布局。
标量 y y y对矩阵 X \boldsymbol{X} X的每个元素求导,然后将各个求导结果按矩阵 X \boldsymbol{X} X的形状排列。
【例3.1】设矩阵 X \boldsymbol{X} X为:
X = [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n ] \boldsymbol{X}=\left[ \begin{matrix} x_{11}& x_{12}& \cdots& x_{1n}\\ x_{21}& x_{22}& \cdots& x_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ x_{m1}& x_{m2}& \cdots& x_{mn}\\ \end{matrix} \right] X= x11x21xm1x12x22xm2x1nx2nxmn
则:
∂ f ∂ X = [ ∂ f ∂ x 11 ∂ f ∂ x 12 ⋯ ∂ f ∂ x 1 n   ∂ f ∂ x 21 ∂ f ∂ x 22 ⋯ ∂ f ∂ x 2 n   ⋮ ⋮ ⋱ ⋮   ∂ f ∂ x m 1 ∂ f ∂ x m 2 ⋯ ∂ f ∂ x m n ] \frac{\partial f}{\partial \boldsymbol{X}}=\left[ \begin{matrix} \frac{\partial f}{\partial x_{11}}& \frac{\partial f}{\partial x_{12}}& \cdots& \frac{\partial f}{\partial x_{1n}}\\ \\\ \frac{\partial f}{\partial x_{21}}& \frac{\partial f}{\partial x_{22}}& \cdots& \frac{\partial f}{\partial x_{2n}}\\ \\\ \vdots& \vdots& \ddots& \vdots\\ \\\ \frac{\partial f}{\partial x_{m1}}& \frac{\partial f}{\partial x_{m2}}& \cdots& \frac{\partial f}{\partial x_{mn}}\\ \end{matrix} \right] Xf= x11f x21f  xm1fx12fx22fxm2fx1nfx2nfxmnf

3.4 向量对标量求导

∂ f ∂ x \frac{\partial \boldsymbol{f}}{\partial x} xf,如果按照分子布局,结果就会是m维列向量,与分子维度一致。如果按照分母布局,结果就会是m维行向量
y = [ y 1 , y 2 , ⋯   , y m ] T \boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right] ^T y=[y1,y2,,ym]T,在分子布局下,有:
∂ y ∂ x = [ ∂ y 1 ∂ x , ∂ y 2 ∂ x , ⋯   , ∂ y m ∂ x ] T \frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots ,\frac{\partial y_m}{\partial x} \right] ^T xy=[xy1,xy2,,xym]T
在分母布局下,有:
∂ y ∂ x = [ ∂ y 1 ∂ x , ∂ y 2 ∂ x , ⋯   , ∂ y m ∂ x ] \frac{\partial \boldsymbol{y}}{\partial x}=\left[ \frac{\partial y_1}{\partial x},\frac{\partial y_2}{\partial x},\cdots ,\frac{\partial y_m}{\partial x} \right] xy=[xy1,xy2,,xym]

3.5 向量对向量求导

3.5.1 行向量对列向量求导

也称分母布局,用 ∂ y T ∂ x \frac{\partial \boldsymbol{y}^T}{\partial \boldsymbol{x}} xyT表示。
m m m维行向量 y T = [ y 1 , y 2 , ⋯   , y m ] \boldsymbol{y}^T=\left[ y_1,y_2,\cdots ,y_m \right] yT=[y1,y2,,ym] n n n维列向量 x = [ x 1 , x 2 , ⋯   , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right] ^T x=[x1,x2,,xn]T求导,得到的是 n × m n\times m n×m维矩阵:
∂ y T ∂ x = [ ∂ y T ∂ x 1 ∂ y T ∂ x 2 ⋮ ∂ y T ∂ x n ] = [ ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 ⋯ ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 ⋯ ∂ y m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n ⋯ ∂ y m ∂ x n ] \frac{\partial \boldsymbol{y}^T}{\partial \boldsymbol{x}}=\left[ \begin{array}{c} \frac{\partial \boldsymbol{y}^T}{\partial x_1}\\ \\ \frac{\partial \boldsymbol{y}^T}{\partial x_2}\\ \\ \vdots\\ \\ \frac{\partial \boldsymbol{y}^T}{\partial x_n}\\ \end{array} \right] =\left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_2}{\partial x_1}& \cdots& \frac{\partial y_m}{\partial x_1}\\ \\ \frac{\partial y_1}{\partial x_2}& \frac{\partial y_2}{\partial x_2}& \cdots& \frac{\partial y_m}{\partial x_2}\\ \\ \vdots& \vdots& \ddots& \vdots\\ \\ \frac{\partial y_1}{\partial x_n}& \frac{\partial y_2}{\partial x_n}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right] xyT= x1yTx2yTxnyT = x1y1x2y1xny1x1y2x2y2xny2x1ymx2ymxnym
数学上将这种矩阵称之为梯度矩阵

3.5.2 列向量对行向量求导

也称分子布局,用 ∂ y ∂ x T \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}^T} xTy表示。
m m m维列向量 y = [ y 1 , y 2 , ⋯   , y m ] T \boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right]^T y=[y1,y2,,ym]T n n n维行向量 x T = [ x 1 , x 2 , ⋯   , x n ] \boldsymbol{x}^T=\left[ x_1,x_2,\cdots ,x_n \right] xT=[x1,x2,,xn]求导,得到的是 m × n m\times n m×n维矩阵:
∂ y ∂ x T = [ ∂ y 1 ∂ x   ∂ y 2 ∂ x   ⋮   ∂ y m ∂ x ] = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n   ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n   ⋮ ⋮ ⋱ ⋮   ∂ y m ∂ x 1 ∂ y m ∂ x 2 ⋯ ∂ y m ∂ x n ] \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}^T}=\left[ \begin{array}{c} \frac{\partial y_1}{\partial \boldsymbol{x}}\\ \\\ \frac{\partial y_2}{\partial \boldsymbol{x}}\\ \\\ \vdots\\ \\\ \frac{\partial y_m}{\partial \boldsymbol{x}}\\ \end{array} \right] =\left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_1}{\partial x_2}& \cdots& \frac{\partial y_1}{\partial x_n}\\ \\\ \frac{\partial y_2}{\partial x_1}& \frac{\partial y_2}{\partial x_2}& \cdots& \frac{\partial y_2}{\partial x_n}\\ \\\ \vdots& \vdots& \ddots& \vdots\\ \\\ \frac{\partial y_m}{\partial x_1}& \frac{\partial y_m}{\partial x_2}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right] xTy= xy1 xy2  xym = x1y1 x1y2  x1ymx2y1x2y2x2ymxny1xny2xnym
数学上将这种矩阵称之为雅克比 (Jacobian)矩阵

3.5.3 列向量对列向量求导

n n n维列向量 x = [ x 1 , x 2 , ⋯   , x n ] T \boldsymbol{x}=\left[ x_1,x_2,\cdots ,x_n \right]^T x=[x1,x2,,xn]T m m m维列向量 y = [ y 1 , y 2 , ⋯   , y m ] T \boldsymbol{y}=\left[ y_1,y_2,\cdots ,y_m \right]^T y=[y1,y2,,ym]T。则:

x \boldsymbol{x} x展开,然后 y \boldsymbol{y} y分别对 x \boldsymbol{x} x中的每一个元素进行求导,求导的结果保留在向量 x \boldsymbol{x} x上:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] T \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}=\left[ \begin{matrix} \frac{\partial \boldsymbol{y}}{\partial x_1}& \frac{\partial \boldsymbol{y}}{\partial x_2}& \cdots& \frac{\partial \boldsymbol{y}}{\partial x_n}\\ \end{matrix} \right] ^T xy=[x1yx2yxny]T
然后把结果中的 y \boldsymbol{y} y展开,得到此时会得到 m m m个向量,其中第一个向量为:
[ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ] T \left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_1}{\partial x_2}& \cdots& \frac{\partial y_1}{\partial x_n}\\ \end{matrix} \right] ^T [x1y1x2y1xny1]T
按列排列的方式进行排序,得到:
∂ y ∂ x = [ ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋯ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ] T \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}= \left[ \begin{matrix} \frac{\partial y_1}{\partial x_1}& \cdots& \frac{\partial y_1}{\partial x_n}& \cdots& \frac{\partial y_m}{\partial x_1}& \cdots& \frac{\partial y_m}{\partial x_n}\\ \end{matrix} \right] ^T xy=[x1y1xny1x1ymxnym]T

3.5.4 行向量对行向量求导

n n n维行向量 x T = [ x 1 , x 2 , ⋯   , x n ] \boldsymbol{x}^T=\left[ x_1,x_2,\cdots ,x_n \right] xT=[x1,x2,,xn] m m m维列向量 y T = [ y 1 , y 2 , ⋯   , y m ] \boldsymbol{y}^T=\left[ y_1,y_2,\cdots ,y_m \right] yT=[y1,y2,,ym]。则:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}=\left[ \begin{matrix} \frac{\partial \boldsymbol{y}}{\partial x_1}& \frac{\partial \boldsymbol{y}}{\partial x_2}& \cdots& \frac{\partial \boldsymbol{y}}{\partial x_n}\\ \end{matrix} \right] xy=[x1yx2yxny]
其中:
∂ y ∂ x i = [ ∂ y 1 ∂ x i ∂ y 2 ∂ x i ⋯ ∂ y m ∂ x i ] \frac{\partial \boldsymbol{y}}{\partial x_i}=\left[ \begin{matrix} \frac{\partial y_1}{\partial x_i}& \frac{\partial y_2}{\partial x_i}& \cdots& \frac{\partial y_m}{\partial x_i}\\ \end{matrix} \right] xiy=[xiy1xiy2xiym]
可以根据需要进行调整,调整为行向量对列向量求导或是列向量对行向量求导。

参考文献

  1. 张贤达《矩阵分析与应用(第二版)》
  2. 矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)
  3. 矩阵的求导
  4. 矩阵求导、几种重要的矩阵及常用的矩阵求导公式
  5. 【矩阵的导数运算】1_标量向量方程对向量求导_分母布局_分子布局
  6. 向量对矩阵求导
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值