文章目录
本文简介符号说明分子布局和分母布局约定引言分子布局和分母布局 九种导数的定义标量和向量之间的导数标量对向量求导向量对标量求导 向量和向量之间的导数标量和矩阵之间的导数标量对矩阵求导:(逐元素求导)矩阵对标量求导:(逐元素求导,只在分子布局中定义) 向量和矩阵之间的导数矩阵对行向量求导矩阵对列向量求导行向量对矩阵求导列向量对矩阵求导 矩阵之间的导数 微分法(重点)标量与向量标量与矩阵 运算法则矩阵微分的性质迹技巧 利用微分法求标量对向量和矩阵的导数利用微分法求矩阵和矩阵的导数参考资料本文简介
本文通过举例由浅入深地、系统地讲解了分子分母两种布局,标量、向量和矩阵之间导数的定义,利用微分法求解标量、向量和矩阵之间的导数。非常适合刚接触矩阵导数,但找不到系统学习资料的小白。在后续的内容中将会结合机器学习和深度学习等给出更加复杂求导计算。本人水平有限,且时间仓促,疏漏和错误之处在所难免,望指正错误。
符号说明
在讲解之前,我们需要对标量、向量、矩阵的表示符号进行统一,以便理解。和常规定义一样,这里的定义如下:
矩阵空间: M ( m , n ) M(m,n) M(m,n) 表示 m m m行 n n n列的实 m × n m\times n m×n矩阵空间
矩阵:使用粗体大写字母表示,如 A , X , Y \bold {A,X,Y} A,X,Y
列向量: M ( m , 1 ) M(m,1) M(m,1) 的元素,用黑体小写字母表示:
如, a = [ a 1 , a 2 , ⋯ , a n ] T , x = [ x 1 , x 2 , ⋯ , x n ] T , y = [ y 1 , y 2 , ⋯ , y n ] T \mathbf {a=[a_1,a_2,\cdots,a_n]^T,x=[x_1,x_2,\cdots,x_n]^T,y=[y_1,y_2,\cdots,y_n]^T} a=[a1,a2,⋯,an]T,x=[x1,x2,⋯,xn]T,y=[y1,y2,⋯,yn]T
标量: M ( 1 , 1 ) M(1,1) M(1,1)的元素,用小写斜体表示: a , t , x , y a,t,x,y a,t,x,y
分子布局和分母布局约定
引言
我们都知道一维函数的导数和多维函数的偏导数是怎么求解的,但是如果变量很多,求导起来比较麻烦,也不容易表示。于是,我们可以使用向量或矩阵的形式将其表示出来。
引例 1:y = 2 x 1 + 3 x 2 − x 3 y=2x_1+3x_2-x_3 y=2x1+3x2−x3,我们都知道 y y y对 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3偏导分别是 ∂ y ∂ x 1 = 2 , ∂ y ∂ x 2 = 3 , ∂ y ∂ x 3 = − 1 \frac {\partial y}{\partial x_1}=2,\frac {\partial y}{\partial x_2}=3,\frac {\partial y}{\partial x_3}=-1 ∂x1∂y=2,∂x2∂y=3,∂x3∂y=−1, 全微分为 d y = 2 d x 1 + 3 d x 2 − d x 3 dy=2dx_1+3dx_2-dx_3 dy=2dx1+3dx2−dx3,梯度为 g r a d ( y ) = 2 i ⃗ + 3 j ⃗ − k ⃗ grad(y)=2\vec{i} + 3\vec{j} - \vec{k} grad(y)=2i +3j −k .
这是三维的情况,写成代数公式还是方便的,倘若多维的则非常复杂,因此考虑将多维变量写成向量或矩阵的形式。故令 x = [ x 1 , x 2 , x 3 ] \displaystyle \mathbf x=[x_1,x_2,x_3] x=[x1,x2,x3],则 ∂ y ∂ x = [ 2 , 3 , − 1 ] \displaystyle \frac {\partial y}{\partial \mathbf x}=[2,3,-1] ∂x∂y=[2,3,−1]或者 ∂ y ∂ x = [ 2 , 3 , − 1 ] T \displaystyle \frac {\partial y}{\partial \mathbf x}=[2,3,-1]^T ∂x∂y=[2,3,−1]T。可以看出 y y y对 x \mathbf x x的导数有两种形式,这两种形式都对。本引例实际上是标量 ( y ) (y) (y)对向量 ( x ) (\mathbf x) (x)的导数,其结果也就是把 y y y对 x i x_i xi的导数进行了组合,如上所示有两种组合形式,二者相差一个转置。在实际中,我们应该使用哪一个组合方式比较方便呢?这就引出了分子布局、分母布局以及混合布局。
分子布局和分母布局
这部分讨论了在利用矩阵求导的各个领域中使用的符号约定之间的异同。尽管在很大程度上有两个一致的约定,但是有些情况下将这两个约定混合起来很方便。
基本问题是向量相对于向量的导数,即 ∂ y ∂ x \displaystyle \frac {\partial \mathbf y}{\partial \mathbf x} ∂x∂y,通常以两种不同的方式编写。如果分子y的大小为m,分母x的大小为n,则结果可以布局为 m × n m×n m×n矩阵或 n × m n×m n×m矩阵,即y的元素按列排列,x的元素按行排列,反之亦然。这导致以下三种可能的情况:
1、分子布局(numerator layout): 根据y和 x T \bf x^T xT(与x相反)布局。这有时被称为雅可比(Jacobian)公式。这对应于先前示例中的 m × n m×n m×n布局。求导结果的维度以分子为主。
2、分母布局(denominator layout ): 根据 y T \bf y^T yT 和 x \bf x x(与y相反)布局。这有时被称为Hessian公式。一些人称此布局为梯度,与Jacobian(分子布局)不同,后者是其转置。这对应于先前示例中的 n × m n×m n×m布局。(注:但是无论布局如何,梯度常表示导数 ∂ y ∂ x \displaystyle \frac {\partial y}{\partial \mathbf x} ∂x∂y)。求导结果的维度以分母为主
3、第三种布局是将导数写为 ∂ y ∂ x ′ \displaystyle \frac {\partial \mathbf y} {\partial \mathbf x'} ∂x′∂y (即,对x的转置取导数)并遵循分子布局。这样可以声称矩阵是根据分子和分母进行布局的。实际上,这产生的结果与分子布局相同。
这样就规定了布局的概念,我们对于标量、向量和矩阵两两之间的9种求导,都可以选择一种布局来求导(结果只是排列方式不同)。但是实际上对于某些求导类型有些布局是不合适的,可以看Tip 3。
出现了9种求导和三种布局,所以并非所有的教材和论文都在选择布局这方面始终保持一致。例如,有些人计算梯度时选择分母布局(将它们作为列向量布局),但计算向量对向量的导数 ∂ y ∂ x {\displaystyle {\frac {\partial \mathbf {y}} {\partial \mathbf {x}}}} ∂x∂y 时选择分子布局。
但是再一些资料中布局被隐含了,需要我们自己去判断,是比较麻烦的。但是我们一般常用混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。而对于向量对向量求导,存在两种写法。在下面的推到中,会指出使用的哪种布局。
Tip 1:对于分子布局来说,我们求导结果的维度以分子为主;对于分母布局来说,我们求导结果的维度以分母为主;对于分子布局和分母布局的结果来说,两者相差一个转置。
Tip 2:(这一条来自维基百科,不实用)当处理梯度 ∂ y ∂ x \displaystyle \frac {\partial y}{\partial \mathbf x} ∂x∂y 和 ∂ y ∂ x \displaystyle \frac {\partial \mathbf y}{\partial x} ∂x∂y 时,我们有同样的问题。 为了保持一致,我们应该执行以下操作之一:
1、如果我们选择分子布局计算 ∂ y ∂ x , {\displaystyle {\frac {\partial \mathbf {y}}{\partial \mathbf {x}}},} ∂x∂y, 我们应该布局梯度 ∂ y ∂ x {\displaystyle {\frac {\partial y} {\partial \mathbf {x}}}} ∂x∂y作为行向量,并且 ∂ y ∂ x {\displaystyle {\frac {\partial \mathbf {y}} {\partial x}}} ∂x∂y作为列向量。
2、如果我们选择分母布局计算 ∂ y ∂ x , {\displaystyle {\frac {\partial \mathbf {y}}{\partial \mathbf {x}}},} ∂x∂y,我们应该布局梯度 ∂ y ∂ x {\displaystyle {\frac {\partial y} {\partial \mathbf {x}}}} ∂x∂y 作为列向量,并且 ∂ y ∂ x {\displaystyle {\frac {\partial \mathbf {y}} {\partial x}}} ∂x∂y 作为行向量。
3、在上面的第三种情况中,我们写 ∂ y ∂ x ′ {\displaystyle {\frac {\partial y} {\partial \mathbf {x}'}}} ∂x′∂y和 ∂ y ∂ x , {\displaystyle {\frac {\partial \mathbf {y}} {\partial x}},} ∂x∂y,并使用分子布局。
Tip 3:(这一条来自维基百科,不实用)同样,涉及到标量对矩阵求导 ∂ y ∂ X {\displaystyle {\frac {\partial y} {\partial \mathbf {X}}}} ∂X∂y 和矩阵对标量求导 ∂ Y ∂ x {\displaystyle {\frac {\partial \mathbf {Y}}{\partial x}}} ∂x∂Y时,根据 Y \bold Y Y和 X T \bold X^T XT给出分子布局,或者根据 Y T \bold Y^T YT和 X \bold X X给出分母布局。但是,实际中计算 ∂ Y ∂ x {\displaystyle {\frac {\partial \mathbf {Y}}{\partial x}}} ∂x∂Y时,根据 Y T \bold Y^T YT给出分母布局是很少见的,这是因为它会产生“丑陋”的公式,而不符合标量公式的形式。因此,我们经常看到以下布局:
1、使用分子布局:根据 Y \mathbf Y Y写出 ∂ Y ∂ x \displaystyle \frac {\partial \mathbf Y}{\partial x} ∂x∂Y,根据 X T \mathbf X^T XT写出 ∂ y ∂ X \displaystyle \frac {\partial y}{\partial \mathbf X} ∂X∂y。
2、混合布局:根据 Y \mathbf Y Y写出 ∂ Y ∂ x \displaystyle \frac {\partial \mathbf Y}{\partial x} ∂x∂Y,根据 X \mathbf X X写出 ∂ y ∂ X \displaystyle \frac {\partial y}{\partial \mathbf X} ∂X∂y。
3、使用记号 ∂ y ∂ X ′ \displaystyle \frac {\partial y}{\partial \mathbf X'} ∂X′∂y,结果与分子布局一致。
九种导数的定义
这里直接给出标量、向量和矩阵之间导数的定义,在后面的内容中会给出几个常用的公式。标量和向量之间的导数形式还是很好确定的,关键是怎么确定向量和向量之间导数的形式。我们可以使用一种不需要死记硬背的推导方式来确定向量和向量之间导数的形式,将在4.3节向量对向量的导数部分详细介绍。
标量和向量之间的导数
标量对向量求导
分子布局:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] \displaystyle \frac {\partial y}{\partial \mathbf x} = \left[ \begin{matrix} \frac {\partial y}{\partial x_1} & \frac {\partial y}{\partial x_2} & \cdots & \frac {\partial y}{\partial x_n} \end{matrix} \right] ∂x∂y=[∂x1∂y∂x2∂y⋯∂xn∂y]
分母布局:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] \displaystyle \frac {\partial y}{\partial \mathbf x} = \left[ \begin{matrix} \frac {\partial y}{\partial x_1} \\ \frac {\partial y}{\partial x_2} \\ \vdots \\ \frac {\partial y}{\partial x_n} \end{matrix}\right] ∂x∂y=⎣⎢⎢⎢⎢⎡∂x1∂y∂x2∂y⋮∂xn∂y⎦⎥⎥⎥⎥⎤
向量对标量求导
分子布局:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y m ∂ x ] \displaystyle \frac {\partial \mathbf y}{\partial x} = \left[ \begin{matrix} \frac {\partial y_1}{\partial x} \\ \frac {\partial y_2}{\partial x} \\ \vdots \\ \frac {\partial y_m}{\partial x} \end{matrix} \right] ∂x∂y=⎣⎢⎢⎢⎡∂x∂y1∂x∂y2⋮∂x∂ym⎦⎥⎥⎥⎤
分母布局:
∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋯ ∂ y m ∂ x ] \displaystyle \frac {\partial \mathbf y}{\partial x} = \left[ \begin{matrix} \frac {\partial y_1}{\partial x} & \frac {\partial y_2}{\partial x} & \cdots & \frac {\partial y_m}{\partial x} \end{matrix} \right] ∂x∂y=[∂x∂y1∂x∂y2⋯∂x∂ym]
向量和向量之间的导数
分子布局:
∂ y ∂ 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 ] \displaystyle \frac {\partial \mathbf y}{\partial \mathbf x}= \left[ \begin{matrix} \displaystyle \frac {\partial y_1}{\partial x_1} & \displaystyle \frac {\partial y_1}{\partial x_2} & \cdots & \displaystyle \frac {\partial y_1}{\partial x_n}\\ \displaystyle \frac {\partial y_2}{\partial x_1} & \displaystyle \frac {\partial y_2}{\partial x_2} & \cdots & \displaystyle \frac {\partial y_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y_m}{\partial x_1} & \displaystyle \frac {\partial y_m}{\partial x_2} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_n} \end{matrix} \right] ∂x∂y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂y1∂x1∂y2⋮∂x1∂ym∂x2∂y1∂x2∂y2⋮∂x2∂ym⋯⋯⋱⋯∂xn∂y1∂xn∂y2⋮∂xn∂ym⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
分母布局:
∂ y ∂ x = [ ∂ 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 ] \displaystyle \frac {\partial \mathbf y}{\partial \mathbf x}= \left[ \begin{matrix} \displaystyle \frac {\partial y_1}{\partial x_1} & \displaystyle \frac {\partial y_2}{\partial x_1} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_1}\\ \displaystyle \frac {\partial y_1}{\partial x_2} & \displaystyle \frac {\partial y_2}{\partial x_2} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_2} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y_1}{\partial x_n} & \displaystyle \frac {\partial y_2}{\partial x_n} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_n} \end{matrix} \right] ∂x∂y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂y1∂x2∂y1⋮∂xn∂y1∂x1∂y2∂x2∂y2⋮∂xn∂y2⋯⋯⋱⋯∂x1∂ym∂x2∂ym⋮∂xn∂ym⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
令 x = [ x 1 , x 2 , ⋯ , x n ] T , y = [ y 1 , y 2 , ⋯ , y m ] T \mathbf x=[x_1,x_2,\cdots,x_n]^T,\mathbf y=[y_1,y_2,\cdots,y_m]^T x=[x1,x2,⋯,xn]T,y=[y1,y2,⋯,ym]T,
首先推导分子布局的形式:分子布局要始终保证分子的维度不变,并且结果是写成分子纬度的形式。
第一步:保证分子维度不变,求 ∂ y ∂ x i \displaystyle \frac {\partial \mathbf y}{\partial x_i} ∂xi∂y。
第二步:将 ∂ y ∂ x i \displaystyle \frac {\partial \mathbf y}{\partial x_i} ∂xi∂y将按照 x \mathbf x x的形式写出来(组合),即得到 [ ∂ y ∂ x 1 , ∂ y ∂ x 2 , ⋯ , ∂ y ∂ x n ] T \displaystyle [\frac {\partial \mathbf y}{\partial x_1},\frac {\partial \mathbf y}{\partial x_2},\cdots,\frac {\partial \mathbf y}{\partial x_n}]^T [∂x1∂y,∂x2∂y,⋯,∂xn∂y]T。
到第二步这里也可以使用公式(3)向量对标量求导结果,直接得到公式(6),即最终结果。
第三步:将 y \mathbf y y展开,即
[ ∂ [ y 1 , y 2 , ⋯ , y m ] T ∂ x 1 , ∂ [ y 1 , y 2 , ⋯ , y m ] T ∂ x 2 , ⋯ , ∂ [ y 1 , y 2 , ⋯ , y m ] T ∂ x n ] T \displaystyle [\frac {\partial \mathbf [y_1,y_2,\cdots,y_m]^T}{\partial x_1},\frac {\partial \mathbf [y_1,y_2,\cdots,y_m]^T}{\partial x_2},\cdots,\frac {\partial \mathbf [y_1,y_2,\cdots,y_m]^T}{\partial x_n}]^T [∂x1∂[y1,y2,⋯,ym]T,∂x2∂[y1,y2,⋯,ym]T,⋯,∂xn∂[y1,y2,⋯,ym]T]T
= [ [ ∂ y 1 ∂ x 1 , ∂ y 2 x 1 , ⋯ , ∂ y m ∂ x 1 ] T , [ ∂ y 1 ∂ x 2 , ∂ y 2 x 2 , ⋯ , ∂ y m ∂ x 2 ] T , ⋯ , [ ∂ y 1 ∂ x n , ∂ y 2 x n , ⋯ , ∂ y m ∂ x n ] T , ] T =\displaystyle \left[ [\frac {\partial y_1}{\partial x_1},\frac {\partial y_2}{x_1},\cdots,\frac {\partial y_m}{\partial x_1}]^T,[\frac {\partial y_1}{\partial x_2},\frac {\partial y_2}{x_2},\cdots,\frac {\partial y_m}{\partial x_2}]^T,\cdots,[\frac {\partial y_1}{\partial x_n},\frac {\partial y_2}{x_n},\cdots,\frac {\partial y_m}{\partial x_n}]^T,\right]^T =[[∂x1∂y1,x1∂y2,⋯,∂x1∂ym]T,[∂x2∂y1,x2∂y2,⋯,∂x2∂ym]T,⋯,[∂xn∂y1,xn∂y2,⋯,∂xn∂ym]T,]T
= [ ∂ 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 ] =\left[ \begin{matrix} \displaystyle \frac {\partial y_1}{\partial x_1} & \displaystyle \frac {\partial y_2}{\partial x_1} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_1}\\ \displaystyle \frac {\partial y_1}{\partial x_2} & \displaystyle \frac {\partial y_2}{\partial x_2} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_2} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y_1}{\partial x_n} & \displaystyle \frac {\partial y_2}{\partial x_n} & \cdots & \displaystyle \frac {\partial y_m}{\partial x_n} \end{matrix} \right] =⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂y1∂x2∂y1⋮∂xn∂y1∂x1∂y2∂x2∂y2⋮∂xn∂y2⋯⋯⋱⋯∂x1∂ym∂x2∂ym⋮∂xn∂ym⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
在推导分母布局,分子布局要始终保证分母的维度不变,并且结果是写成分母维度的形式。
第一步:保证分母维度不变,求 ∂ y i ∂ x \displaystyle \frac {\partial y_i}{\partial \mathbf x} ∂x∂yi。
第二步:将 ∂ y i ∂ x \displaystyle \frac {\partial y_i}{\partial \mathbf x} ∂x∂yi将按照 y \mathbf y y的形式写出来(组合),即得到 [ ∂ y 1 ∂ x , ∂ y 1 ∂ x , ⋯ , ∂ y m ∂ x ] T \displaystyle [\frac {\partial y_1}{\partial \mathbf x},\frac {\partial y_1}{\partial \mathbf x},\cdots,\frac {\partial y_m}{\partial \mathbf x}]^T [∂x∂y1,∂x∂y1,⋯,∂x∂ym]T。
第三步:将 x \mathbf x x展开,即可得到如公式(6)所示的形式。
可以看出,分子布局和分母布局只是将谁带入到谁里面求偏导的区别,最后转换成 向量对标量 求导还是 标量对向量求导。
标量和矩阵之间的导数
标量对矩阵求导:(逐元素求导)
分子布局:
∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 21 ⋯ ∂ y ∂ x p 1 ∂ y ∂ x 12 ∂ y ∂ x 22 ⋯ ∂ y ∂ x p 2 ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x 1 q ∂ y ∂ x 2 q ⋯ ∂ y ∂ x p q ] \displaystyle \frac {\partial y}{\partial \mathbf X}= \left[ \begin{matrix} \displaystyle \frac {\partial y}{\partial x_{11}} & \displaystyle \frac {\partial y}{\partial x_{21}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{p1}}\\ \displaystyle \frac {\partial y}{\partial x_{12}} & \displaystyle \frac {\partial y}{\partial x_{22}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{p2}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y}{\partial x_{1q}} & \displaystyle \frac {\partial y}{\partial x_{2q}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{pq}} \end{matrix} \right] ∂X∂y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x11∂y∂x12∂y⋮∂x1q∂y∂x21∂y∂x22∂y⋮∂x2q∂y⋯⋯⋱⋯∂xp1∂y∂xp2∂y⋮∂xpq∂y⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
分母布局:
∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 12 ⋯ ∂ y ∂ x 1 q ∂ y ∂ x 21 ∂ y ∂ x 22 ⋯ ∂ y ∂ x 2 q ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x p 1 ∂ y ∂ x p 2 ⋯ ∂ y ∂ x p q ] \displaystyle \frac {\partial y}{\partial \mathbf X}= \left[ \begin{matrix} \displaystyle \frac {\partial y}{\partial x_{11}} & \displaystyle \frac {\partial y}{\partial x_{12}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{1q}}\\ \displaystyle \frac {\partial y}{\partial x_{21}} & \displaystyle \frac {\partial y}{\partial x_{22}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{2q}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y}{\partial x_{p1}} & \displaystyle \frac {\partial y}{\partial x_{p2}} & \cdots & \displaystyle \frac {\partial y}{\partial x_{pq}} \end{matrix} \right] ∂X∂y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x11∂y∂x21∂y⋮∂xp1∂y∂x12∂y∂x22∂y⋮∂xp2∂y⋯⋯⋱⋯∂x1q∂y∂x2q∂y⋮∂xpq∂y⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
矩阵对标量求导:(逐元素求导,只在分子布局中定义)
∂ Y ∂ x = [ ∂ y 11 ∂ x ∂ y 12 ∂ x ⋯ ∂ y 1 n ∂ x ∂ y 21 ∂ x ∂ y 22 ∂ x ⋯ ∂ y 2 n ∂ x ⋮ ⋮ ⋱ ⋮ ∂ y m 1 ∂ x ∂ y m 2 ∂ x ⋯ ∂ y m n ∂ x ] \displaystyle \frac {\partial \mathbf Y}{\partial x}= \left[ \begin{matrix} \displaystyle \frac {\partial y_{11}}{\partial x} & \displaystyle \frac {\partial y_{12}}{\partial x} & \cdots & \displaystyle \frac {\partial y_{1n}}{\partial x}\\ \displaystyle \frac {\partial y_{21}}{\partial x} & \displaystyle \frac {\partial y_{22}}{\partial x} & \cdots & \displaystyle \frac {\partial y_{2n}}{\partial x} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y_{m1}}{\partial x} & \displaystyle \frac {\partial y_{m2}}{\partial x} & \cdots & \displaystyle \frac {\partial y_{mn}}{\partial x} \end{matrix} \right] ∂x∂Y=⎣⎢⎢⎢⎢⎢⎢⎢⎡∂x∂y11∂x∂y21⋮∂x∂ym1∂x∂y12∂x∂y22⋮∂x∂ym2⋯⋯⋱⋯∂x∂y1n∂x∂y2n⋮∂x∂ymn⎦⎥⎥⎥⎥⎥⎥⎥⎤
d X = [ d x 11 d x 12 ⋯ d x 1 n d x 21 d x 22 ⋯ d x 2 n ⋮ ⋮ ⋱ ⋮ d x m 1 d x m 2 ⋯ d x m n ] \displaystyle d\mathbf X = \left[\begin{matrix}dx_{11} & dx_{12} & \cdots & dx_{1n} \\ dx_{21} & dx_{22} & \cdots & dx_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ dx_{m1} & dx_{m2} & \cdots & dx_{mn}\end{matrix}\right] dX=⎣⎢⎢⎢⎡dx11dx21⋮dxm1dx12dx22⋮dxm2⋯⋯⋱⋯dx1ndx2n⋮dxmn⎦⎥⎥⎥⎤
向量和矩阵之间的导数
向量和矩阵之间的导数定义比较复杂,一般常用微分法进行求解。特别是矩阵对矩阵的导数即使微分法也比较麻烦。将在第5部分讲解微分法,这里只给出最后的公式,公式详见参考资料[4]。
矩阵对行向量求导
令 Y = [ y 11 y 12 ⋯ y 1 n y 21 y 22 ⋯ y 2 n ⋮ ⋮ ⋱ ⋮ y m 1 y m 2 ⋯ y m n ] \displaystyle \mathbf Y = \left[\begin{matrix}y_{11} & y_{12} & \cdots & y_{1n} \\ y_{21} & y_{22} & \cdots & y_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ y_{m1} & y_{m2} & \cdots & y_{mn}\end{matrix}\right] Y=⎣⎢⎢⎢⎡y11y21⋮ym1y12y22⋮ym2⋯⋯⋱⋯y1ny2n⋮ymn⎦⎥⎥⎥⎤是 m × n m\times n m×n矩阵, x T = [ x 1 x 2 ⋯ x q ] \displaystyle \mathbf x^T = \left[ \begin{matrix} x_1 & x_2 & \cdots & x_q \end{matrix} \right] xT=[x1x2⋯xq]是 q q q维行向量,则:
∂ Y ∂ x T = [ ∂ Y ∂ x 1 ∂ Y ∂ x 2 ⋯ ∂ Y ∂ x q ] (11) \displaystyle \frac {\partial \mathbf Y}{\partial \mathbf x^T} = \left[ \begin{matrix} \frac {\partial \mathbf Y}{\partial x_1} & \frac {\partial \mathbf Y}{\partial x_2} & \cdots & \frac {\partial \mathbf Y}{\partial x_q} \end{matrix} \right]\tag{11} ∂xT∂Y=[∂x1∂Y∂x2∂Y⋯∂xq∂Y](11)
矩阵对列向量求导
令 Y = [ y 11 y 12 ⋯ y 1 n y 21 y 22 ⋯ y 2 n ⋮ ⋮ ⋱ ⋮ y m 1 y m 2 ⋯ y m n ] \displaystyle \mathbf Y = \left[\begin{matrix}y_{11} & y_{12} & \cdots & y_{1n} \\ y_{21} & y_{22} & \cdots & y_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ y_{m1} & y_{m2} & \cdots & y_{mn}\end{matrix}\right] Y=⎣⎢⎢⎢⎡y11y21⋮ym1y12y22⋮ym2⋯⋯⋱⋯y1ny2n⋮ymn⎦⎥⎥⎥⎤是 m × n m\times n m×n矩阵, x = [ x 1 x 2 ⋮ x p ] \displaystyle \mathbf x = \left[ \begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_p \end{matrix} \right] x=⎣⎢⎢⎢⎡x1x2⋮xp⎦⎥⎥⎥⎤是 p p p维列向量,则:
∂ Y ∂ x = [ ∂ y 11 ∂ x ∂ y 12 ∂ x ⋯ ∂ y 1 n ∂ x ∂ y 21 ∂ x ∂ y 22 ∂ x ⋯ ∂ y 2 n ∂ x ⋮ ⋮ ⋱ ⋮ ∂ y m 1 ∂ x ∂ y m 2 ∂ x ⋯ ∂ y m n ∂ x ] (12) \displaystyle \frac {\partial \mathbf Y}{\partial \mathbf x}= \left[ \begin{matrix} \displaystyle \frac {\partial y_{11}}{\partial \mathbf x} & \displaystyle \frac {\partial y_{12}}{\partial \mathbf x} & \cdots & \displaystyle \frac {\partial y_{1n}}{\partial \mathbf x}\\ \displaystyle \frac {\partial y_{21}}{\partial \mathbf x} & \displaystyle \frac {\partial y_{22}}{\partial \mathbf x} & \cdots & \displaystyle \frac {\partial y_{2n}}{\partial \mathbf x} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial y_{m1}}{\partial \mathbf x} & \displaystyle \frac {\partial y_{m2}}{\partial \mathbf x} & \cdots & \displaystyle \frac {\partial y_{mn}}{\partial \mathbf x} \end{matrix}\right]\tag{12} ∂x∂Y=⎣⎢⎢⎢⎢⎢⎢⎢⎡∂x∂y11∂x∂y21⋮∂x∂ym1∂x∂y12∂x∂y22⋮∂x∂ym2⋯⋯⋱⋯∂x∂y1n∂x∂y2n⋮∂x∂ymn⎦⎥⎥⎥⎥⎥⎥⎥⎤(12)
行向量对矩阵求导
设 y T = [ y 1 y 2 ⋯ y n ] \displaystyle \mathbf y^T=\left[ \begin{matrix}y_1 & y_2 &\cdots &y_n \end{matrix}\right] yT=[y1y2⋯yn]是 n n n维行向量, X = [ x 11 x 12 ⋯ x 1 q x 21 x 22 ⋯ x 2 q ⋮ ⋮ ⋱ ⋮ x p 1 x p 2 ⋯ x p q ] \displaystyle \mathbf X = \left[\begin{matrix}x_{11} & x_{12} & \cdots & x_{1q} \\ x_{21} & x_{22} & \cdots & x_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ x_{p1} & x_{p2} & \cdots & x_{pq}\end{matrix}\right] X=⎣⎢⎢⎢⎡x11x21⋮xp1x12x22⋮xp2⋯⋯⋱⋯x1qx2q⋮xpq⎦⎥⎥⎥⎤是 p × q p\times q p×q矩阵,则:
∂ y T ∂ X = [ ∂ y T ∂ x 11 ∂ y T ∂ x 12 ⋯ ∂ y T ∂ x 1 q ∂ y T ∂ x 21 ∂ y T ∂ x 22 ⋯ ∂ y T ∂ x 2 q ⋮ ⋮ ⋱ ⋮ ∂ y T ∂ x p 1 ∂ y T ∂ x p 2 ⋯ ∂ y T ∂ x p q ] (13) \displaystyle \frac {\partial \mathbf y^T}{\partial \mathbf X}= \left[ \begin{matrix} \displaystyle \frac {\partial \mathbf y^T}{\partial x_{11}} & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{12}} & \cdots & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{1q}}\\ \displaystyle \frac {\partial \mathbf y^T}{\partial x_{21}} & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{22}} & \cdots & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{2q}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial \mathbf y^T}{\partial x_{p1}} & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{p2}} & \cdots & \displaystyle \frac {\partial \mathbf y^T}{\partial x_{pq}} \end{matrix} \right]\tag{13} ∂X∂yT=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x11∂yT∂x21∂yT⋮∂xp1∂yT∂x12∂yT∂x22∂yT⋮∂xp2∂yT⋯⋯⋱⋯∂x1q∂yT∂x2q∂yT⋮∂xpq∂yT⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤(13)
列向量对矩阵求导
设 y = [ y 1 y 2 ⋮ y m ] \displaystyle \mathbf y = \left[ \begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{matrix}\right] y=⎣⎢⎢⎢⎡y1y2⋮ym⎦⎥⎥⎥⎤是 m m m维列向量, X = [ x 11 x 12 ⋯ x 1 q x 21 x 22 ⋯ x 2 q ⋮ ⋮ ⋱ ⋮ x p 1 x p 2 ⋯ x p q ] \displaystyle \mathbf X = \left[\begin{matrix}x_{11} & x_{12} & \cdots & x_{1q} \\ x_{21} & x_{22} & \cdots & x_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ x_{p1} & x_{p2} & \cdots & x_{pq}\end{matrix}\right] X=⎣⎢⎢⎢⎡x11x21⋮xp1x12x22⋮xp2⋯⋯⋱⋯x1qx2q⋮xpq⎦⎥⎥⎥⎤是 p × q p\times q p×q矩阵,则:
∂ y ∂ X = [ ∂ y 1 ∂ X ∂ y 2 ∂ X ⋮ ∂ y m ∂ X ] (14) \displaystyle \frac {\partial \mathbf y}{\partial \mathbf X}=\left[\begin{matrix} \frac {\partial \mathbf y_1}{\partial \mathbf X}\\ \frac {\partial \mathbf y_2}{\partial \mathbf X}\\ \vdots \\ \frac {\partial \mathbf y_m}{\partial \mathbf X} \end{matrix}\right]\tag{14} ∂X∂y=⎣⎢⎢⎢⎡∂X∂y1∂X∂y2⋮∂X∂ym⎦⎥⎥⎥⎤(14)
矩阵之间的导数
令 Y = [ y 11 y 12 ⋯ y 1 n y 21 y 22 ⋯ y 2 n ⋮ ⋮ ⋱ ⋮ y m 1 y m 2 ⋯ y m n ] = [ y 1 T y 2 T ⋮ y m T ] \displaystyle \mathbf Y = \left[\begin{matrix} y_{11} & y_{12} & \cdots & y_{1n} \\ y_{21} & y_{22} & \cdots & y_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ y_{m1} & y_{m2} & \cdots & y_{mn}\end{matrix}\right]=\left[ \begin{matrix} \mathbf {y_1}^T \\ \mathbf {y_2}^T \\ \vdots \\ \mathbf {y_m}^T \end{matrix} \right] Y=⎣⎢⎢⎢⎡y11y21⋮ym1y12y22⋮ym2⋯⋯⋱⋯y1ny2n⋮ymn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1Ty2T⋮ymT⎦⎥⎥⎥⎤是 m × n m\times n m×n矩阵,
X = [ x 11 x 12 ⋯ x 1 q x 21 x 22 ⋯ x 2 q ⋮ ⋮ ⋱ ⋮ x p 1 x p 2 ⋯ x p q ] = [ x 1 x 2 ⋯ x q ] \displaystyle \mathbf X = \left[\begin{matrix}x_{11} & x_{12} & \cdots & x_{1q} \\ x_{21} & x_{22} & \cdots & x_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ x_{p1} & x_{p2} & \cdots & x_{pq}\end{matrix}\right]=\left[ \begin{matrix} \mathbf x_1 & \mathbf x_2 & \cdots & \mathbf x_q \end{matrix} \right] X=⎣⎢⎢⎢⎡x11x21⋮xp1x12x22⋮xp2⋯⋯⋱⋯x1qx2q⋮xpq⎦⎥⎥⎥⎤=[x1x2⋯xq]是 p × q p\times q p×q矩阵,则:
∂ Y ∂ X = [ ∂ Y ∂ x 1 ∂ Y ∂ x 2 ⋯ ∂ Y ∂ x q ] = [ ∂ y 1 T ∂ X ∂ y 2 T ∂ X ⋮ ∂ y m T ∂ X ] = [ ∂ y 1 T ∂ x 1 ∂ y 1 T ∂ x 2 ⋯ ∂ y 1 T ∂ x q ∂ y 2 T ∂ x 1 ∂ y 2 T ∂ x 2 ⋯ ∂ y 2 T ∂ x q ⋮ ⋮ ⋱ ⋮ ∂ y m T ∂ x 1 ∂ y m T ∂ x 2 ⋯ ∂ y m T ∂ x q ] (15) \displaystyle \frac {\partial \mathbf Y}{\partial \mathbf X}=\left[\begin{matrix} \frac {\partial \mathbf Y}{\partial \mathbf x_1}& \frac {\partial \mathbf Y}{\partial \mathbf x_2}& \cdots & \frac {\partial \mathbf Y}{\partial \mathbf x_q} \end{matrix}\right]=\left[\begin{matrix} \frac {\partial \mathbf {y_1}^T}{\partial \mathbf X}\\ \frac {\partial \mathbf {y_2}^T}{\partial \mathbf X}\\ \vdots \\ \frac {\partial \mathbf {y_m}^T}{\partial \mathbf X} \end{matrix}\right]=\left[ \begin{matrix} \displaystyle \frac {\partial \mathbf y_{1}^T}{\partial \mathbf x_{1}} & \displaystyle \frac {\partial \mathbf y_{1}^T}{\partial \mathbf x_{2}} & \cdots & \displaystyle \frac {\partial \mathbf y_{1}^T}{\partial \mathbf x_{q}}\\ \displaystyle \frac {\partial \mathbf y_{2}^T}{\partial \mathbf x_{1}} & \displaystyle \frac {\partial \mathbf y_{2}^T}{\partial \mathbf x_{2}} & \cdots & \displaystyle \frac {\partial \mathbf y_{2}^T}{\partial \mathbf x_{q}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle \frac {\partial \mathbf y_{m}^T}{\partial \mathbf x_{1}} & \displaystyle \frac {\partial \mathbf y_{m}^T}{\partial \mathbf x_{2}} & \cdots & \displaystyle \frac {\partial \mathbf y_{m}^T}{\partial \mathbf x_{q}} \end{matrix} \right]\tag{15} ∂X∂Y=[∂x1∂Y∂x2∂Y⋯∂xq∂Y]=⎣⎢⎢⎢⎢⎡∂X∂y1T∂X∂y2T⋮∂X∂ymT⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂y1T∂x1∂y2T⋮∂x1∂ymT∂x2∂y1T∂x2∂y2T⋮∂x2∂ymT⋯⋯⋱⋯∂xq∂y1T∂xq∂y2T⋮∂xq∂ymT⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤(15)
微分法(重点)
对于矩阵中每一个元素,我们虽然可以利用逐元素法直接计算出偏导 ∂ f k l / ∂ x i j \partial f_{kl}/\partial x_{ij} ∂fkl/∂xij以正确求出很多矩阵函数的雅可比形式或梯度矩阵,但是对于复杂的矩阵函数(例如矩阵的逆矩阵、矩阵的指数函数等)。偏导 ∂ f k l / ∂ x i j \partial f_{kl}/\partial x_{ij} ∂fkl/∂xij的计算就比较繁琐和困难(证明的繁琐性详见参考资料[2]的3.1小节)。因此,我们希望有一种容易记忆和掌握的数学工具,能够有效地计算实值标量函数和实值矩阵函数的雅可比矩阵或梯度矩阵。这种“数学工具”就是本节的微分法。
标量与向量
引例(采用的分母布局):令 y = 2 x 1 + 3 x 2 + 4 x 3 y=2x_1+3x_2+4x_3 y=2x1+3x2+4x3,则 d y = 2 d x 1 + 3 d x 2 + 4 d x 3 = [ 2 , 3 , 4 ] [ d x 1 d x 2 d x 3 ] dy=2dx_1+3dx_2+4dx_3=[2,3,4]\left[\begin{matrix} dx_1\\dx_2\\dx_3 \end{matrix} \right] dy=2dx1+3dx2+4dx3=[2,3,4]⎣⎡dx1dx2dx3⎦⎤。于是,令 x = [ x 1 , x 2 , x 3 ] T , d x = [ d x 1 , d x 2 , d x 3 ] T \mathbf x=[x_1,x_2,x_3]^T,d \mathbf x=[dx_1,dx_2,dx_3]^T x=[x1,x2,x3]T,dx=[dx1,dx2,dx3]T ,则 ∂ y ∂ x = [ 2 , 3 , 4 ] T \displaystyle \frac {\partial y}{\partial \mathbf x}=[2,3,4]^T ∂x∂y=[2,3,4]T,所以 d y = ( ∂ y ∂ x ) T d x \displaystyle dy=( \frac {\partial y}{\partial \mathbf x})^T d\mathbf x dy=(∂x∂y)Tdx。
通过引例,我们可以看出标量全微分和梯度之间存在关系。我们将这种关系推广到 n n n维,则有:
d y = ( ∂ y ∂ x ) T d x (16) \displaystyle dy=( \frac {\partial y}{\partial \mathbf x})^T d\mathbf x\tag{16} dy=(∂x∂y)Tdx(16)
标量与矩阵
引例(采用的分母布局):令 X = [ x 11 , x 12 x 21 , x 22 ] \mathbf X=\left[\begin{matrix} x_{11},x_{12}\\x_{21},x_{22} \end{matrix} \right] X=[x11,x12x21,x22],那么 ∂ y ∂ X = [ ∂ y ∂ x 11 , ∂ y ∂ x 12 ∂ y ∂ x 21 , ∂ y ∂ x 22 ] \displaystyle \frac {\partial y}{\partial \mathbf X}=\left[\begin{matrix} \frac {\partial y}{\partial x_{11}},\frac {\partial y}{\partial x_{12}}\\ \frac {\partial y}{\partial x_{21}},\frac {\partial y}{\partial x_{22}} \end{matrix} \right] ∂X∂y=[∂x11∂y,∂x12∂y∂x21∂y,∂x22∂y], d X = [ d x 11 , d x 12 d x 21 , d x 22 ] d\mathbf X=\left[\begin{matrix} dx_{11},dx_{12}\\ dx_{21},dx_{22} \end{matrix} \right] dX=[dx11,dx12dx21,dx22]。根据标量对矩阵微分的定义有:
d y = ∑ i = 1 2 ∑ j = 1 2 ∂ y ∂ x i j = t r ( [ ∂ y ∂ x 11 d x 11 + ∂ y ∂ x 21 d x 21 , 0 0 , ∂ y ∂ x 12 d x 12 + ∂ y ∂ x 22 d x 22 ] ) = t r ( [ ∂ y ∂ x 11 , ∂ y ∂ x 21 ∂ y ∂ x 12 , ∂ y ∂ x 22 ] [ d x 11 , d x 12 d x 21 , d x 22 ] ) \displaystyle dy=\sum_{i=1}^{2}\sum_{j=1}^{2}\frac {\partial y}{\partial x_{ij}}=tr(\left[\begin{matrix} \frac {\partial y}{\partial x_{11}}dx_{11}+\frac {\partial y}{\partial x_{21}}dx_{21},0\\ 0,\frac {\partial y}{\partial x_{12}} dx_{12}+\frac {\partial y}{\partial x_{22}}dx_{22} \end{matrix} \right])=tr(\left[\begin{matrix} \frac {\partial y}{\partial x_{11}},\frac {\partial y}{\partial x_{21}}\\ \frac {\partial y}{\partial x_{12}},\frac {\partial y}{\partial x_{22}} \end{matrix} \right]\left[\begin{matrix} dx_{11},dx_{12}\\ dx_{21},dx_{22} \end{matrix} \right]) dy=i=1∑2j=1∑2∂xij∂y=tr([∂x11∂ydx11+∂x21∂ydx21,00,∂x12∂ydx12+∂x22∂ydx22])=tr([∂x11∂y,∂x21∂y∂x12∂y,∂x22∂y][dx11,dx12dx21,dx22])
= t r ( [ ∂ y ∂ x 11 , ∂ y ∂ x 12 ∂ y ∂ x 21 , ∂ y ∂ x 22 ] T [ d x 11 , d x 12 d x 21 , d x 22 ] ) = t r ( ( ∂ y ∂ X ) T d X ) \ \ \ \ \ \ \ \ \ \ \ \ =tr(\left[\begin{matrix} \frac {\partial y}{\partial x_{11}},\frac {\partial y}{\partial x_{12}}\\ \frac {\partial y}{\partial x_{21}},\frac {\partial y}{\partial x_{22}} \end{matrix} \right]^T\left[\begin{matrix} dx_{11},dx_{12}\\ dx_{21},dx_{22} \end{matrix} \right])=tr\left((\displaystyle \frac {\partial y}{\partial \mathbf X})^Td\mathbf X\right) =tr([∂x11∂y,∂x12∂y∂x21∂y,∂x22∂y]T[dx11,dx12dx21,dx22])=tr((∂X∂y)TdX)
因此我们推广到 m × n m \times n m×n维矩阵,则有:
d y = t r ( ( ∂ y ∂ X ) T d X ) (17) \displaystyle dy=tr\left((\displaystyle \frac {\partial y}{\partial \mathbf X})^Td\mathbf X\right)\tag{17} dy=tr((∂X∂y)TdX)(17)
从这里我们可以看出,标量的全微分和它对矩阵的导数也有一个转置的关系,不过在外面套了一个迹函数而已。又因为标量的迹就是它本身,那么公式(16)和(17)可以统一表示成(18)和(19)的形式。我们只需要记忆公式(18)和(19)即可 。这样我们就建立了全微分、偏导和迹函数之间的关系。其数学推导可以查阅参考资料[2]第154页,但此处的书写形式(采用的布局)与资料[2]不一样。
d y = t r ( ( ∂ y ∂ x ) T d x ) (18) \displaystyle dy=tr \left( ( \frac {\partial y}{\partial \mathbf x})^T d\mathbf x \right)\tag{18} dy=tr((∂x∂y)Tdx)(18)
d y = t r ( ( ∂ y ∂ X ) T d X ) (19) \displaystyle dy=tr\left((\displaystyle \frac {\partial y}{\partial \mathbf X})^Td\mathbf X\right)\tag{19} dy=tr((∂X∂y)TdX)(19)
运算法则
如公式(18)和(19)所示,我们已经建立起了全微分和偏导之间的联系,然而在计算中还需要一定的运算法则,才能计算复杂的式子。这里不加证明的给出矩阵微分的性质和迹技巧,具体证明详见参考资料[2]、[7]或其他资料。
矩阵微分的性质
常数矩阵的微分: d A = 0 d\mathbf A=\mathbf 0 dA=0。常数 α \alpha α与矩阵 X \mathbf X X的乘积的微分: d ( α X ) = α d X d(\alpha \mathbf X)=\alpha d\mathbf X d(αX)=αdX。矩阵和差的微分: d ( X ± Y ) = d X ± d Y d(\mathbf X \pm \mathbf Y)=d\mathbf X \pm d\mathbf Y d(X±Y)=dX±dY。线性性质: d ( α X ± β Y ) = α d X ± β d Y d(\alpha\mathbf X \pm \beta \mathbf Y)=\alpha d\mathbf X \pm \beta d\mathbf Y d(αX±βY)=αdX±βdY。转置: d ( X T ) = ( d X ) T d(\mathbf X^T)=(d\mathbf X)^T d(XT)=(dX)T。常数矩阵与矩阵乘积的微分: d ( A X B ) = A ( d X ) B d(\mathbf {AXB})=A(d\mathbf X)B d(AXB)=A(dX)B。矩阵乘法: d ( X Y ) = ( d X ) Y + X ( d Y ) d(\mathbf {XY})=(d\mathbf X)\mathbf Y+\mathbf X(d\mathbf Y) d(XY)=(dX)Y+X(dY)。矩阵的迹的微分: d ( t r ( X ) ) = t r ( d X ) d(tr(\mathbf X))=tr(d\mathbf X) d(tr(X))=tr(dX)。行列式的微分: d ∣ X ∣ = ∣ X ∣ t r ( X − 1 d X ) d|\mathbf X|=|\mathbf X|tr(\mathbf X^{-1}d\mathbf X) d∣X∣=∣X∣tr(X−1dX)。Kronecker积的微分: d ( X ⊗ Y ) = ( d X ) ⊗ Y + X ⊗ d Y d(\mathbf X \otimes \mathbf Y)=(d\mathbf X)\otimes\mathbf Y+\mathbf X \otimes\mathbf dY d(X⊗Y)=(dX)⊗Y+X⊗dY。Hadamard积的微分: d ( X ∗ Y ) = ( d X ) ∗ Y + X ∗ d Y d(\mathbf X * \mathbf Y)=(d\mathbf X)*\mathbf Y+\mathbf X *\mathbf dY d(X∗Y)=(dX)∗Y+X∗dY。逆矩阵的微分: d X − 1 = − X − 1 ( d X ) X − 1 d\mathbf X^{−1}=−\mathbf X^{−1}(d\mathbf X)\mathbf X^{−1} dX−1=−X−1(dX)X−1。矩阵函数的微分: d F ( X ) = F ′ ( X ) d X d\mathbf F(\mathbf X)=\mathbf F′(\mathbf X)d\mathbf X dF(X)=F′(X)dX。矩阵对数的微分: d l o g X = X − 1 d X d\ log \mathbf X=\mathbf X^{-1}d\mathbf X dlogX=X−1dX。矩阵函数的对数的微分: d l o g ( F ( X ) ) = F − 1 ( X ) d ( F ( X ) ) d\ log(\mathbf F(\mathbf X))=\mathbf F^{-1}(\mathbf X)d(\mathbf F(\mathbf X)) dlog(F(X))=F−1(X)d(F(X))。向量化的矩阵的微分: d ( v e c ( X ) ) = v e c ( d X ) d(vec(\mathbf X))=vec(d\mathbf X) d(vec(X))=vec(dX)。迹技巧
迹技巧就是迹运算的性质。这里仅给出矩阵微分中常用的迹技巧,主要参考资料[2]的第54、55页和资料[7]。
标量的迹: t r ( x ) = x tr(x)=x tr(x)=x。线性性质: t r ( X ± Y ) = t r ( X ) ± t r ( Y ) tr(\mathbf X\pm\mathbf Y)=tr(\mathbf X)\pm tr(\mathbf Y) tr(X±Y)=tr(X)±tr(Y), t r ( α ⋅ X ) = α ⋅ t r ( X ) tr(\alpha \cdot \mathbf X)=\alpha \cdot tr(\mathbf X) tr(α⋅X)=α⋅tr(X)。转置: t r ( X ) = t r ( X T ) tr(\mathbf X)=tr(\mathbf X^T) tr(X)=tr(XT)。矩阵乘积的迹: t r ( X Y ) = t r ( Y X ) tr(\mathbf {XY})=tr(\mathbf {YX}) tr(XY)=tr(YX),但要满足 X \mathbf X X与 Y T \mathbf Y^T YT同维度。矩阵乘法和迹交换: t r ( ( A ⊙ B ) T C ) = t r ( A T ( B ⊙ C ) ) tr((A⊙B)^TC)=tr(A^T(B⊙C)) tr((A⊙B)TC)=tr(AT(B⊙C)),需要满足 A 、 B 、 C A、B、C A、B、C同维度。
利用微分法求标量对向量和矩阵的导数
有了公式(18)和(19)以及矩阵微分的性质和迹技巧,我们就可以方便的求解矩阵微分了,以至于求出标量对矩阵的偏导。向量和矩阵之间的导数在下一节中讲到。
例题中的步骤就是利用微分法求解矩阵导数的步骤。
例:令 y ( x ) = x T A x y(\mathbf x)=\mathbf x^T\mathbf A\mathbf x y(x)=xTAx,求 ∂ y ∂ x \displaystyle\frac {\partial y}{\partial \mathbf x} ∂x∂y。
解:第一步,对 y y y求微分,即:
d y = d ( x T A x ) = d x T A x + x T A d x dy=d(\mathbf x^T\mathbf A\mathbf x)=d\mathbf x^T\mathbf A \mathbf x+\mathbf x^T\mathbf A d\mathbf x dy=d(xTAx)=dxTAx+xTAdx
第二步,使用迹技巧,即:
d y = d ( t r ( y ) ) = t r ( d y ) = t r ( d x T A x + x T A d x ) = t r ( [ d x T A x ] T + x T A d x ) = t r ( x T A T d x + x T A d x ) = t r ( x T ( A + A T ) d x ) dy=d(tr(y))=tr(dy)=tr(d\mathbf x^T\mathbf A \mathbf x+\mathbf x^T\mathbf A d\mathbf x)\\=tr \left([d\mathbf x^T\mathbf A \mathbf x]^T+\mathbf x^T\mathbf A d\mathbf x \right)\\=tr(\mathbf x^T\mathbf A^Td\mathbf x+\mathbf x^T\mathbf A d\mathbf x)\\=tr \left(\mathbf x^T(\mathbf A+\mathbf A^T)d\mathbf x\right) dy=d(tr(y))=tr(dy)=tr(dxTAx+xTAdx)=tr([dxTAx]T+xTAdx)=tr(xTATdx+xTAdx)=tr(xT(A+AT)dx)
第三步,使用公式(18),即:
∂ y ∂ x = ( x T ( A + A T ) ) T = ( A T + A ) x \displaystyle\frac {\partial y}{\partial \mathbf x}=\left(\mathbf x^T(\mathbf A+\mathbf A^T)\right)^T=(\mathbf A^T+\mathbf A)\mathbf x ∂x∂y=(xT(A+AT))T=(AT+A)x
在实际中我们可以将第一步和第二步进行合并。此外,将 x \mathbf x x换成 X \mathbf X X即可得到 ∂ y ∂ X \displaystyle\frac {\partial y}{\partial \mathbf X} ∂X∂y。
利用微分法求矩阵和矩阵的导数
在矩阵之间的导数中,常采用的是先将矩阵向量化,然后使用向量对向量的求导。这里的向量化我们采用列向量化,与参考资料[2]相同。
令 v e c ( X ) = [ x 11 , ⋯ , x m 1 , x 12 , ⋯ , x m 2 , ⋯ , x 1 n , ⋯ , x m n ] vec(\mathbf X)=[x_{11},\cdots,x_{m1},x_{12},\cdots,x_{m2},\cdots,x_{1n},\cdots,x_{mn}] vec(X)=[x11,⋯,xm1,x12,⋯,xm2,⋯,x1n,⋯,xmn]^T,则矩阵 F F F对矩阵 X X X的导数为:
∂ F ∂ X = ∂ v e c ( F ) ∂ v e c ( X ) \displaystyle\frac {\partial \mathbf F}{\partial \mathbf X}=\frac {\partial vec(\mathbf F)}{\partial vec(\mathbf X)} ∂X∂F=∂vec(X)∂vec(F)
那么全微分矩阵的向量化函数 d ( v e c ( F ( X ) ) ) d(vec(\mathbf F(\mathbf X))) d(vec(F(X)))具有以下的表达式:
d ( v e c ( F ( X ) ) ) = ( ∂ v e c ( F ) ∂ v e c ( X ) ) T v e c ( d X ) (20) d(vec(\mathbf F(\mathbf X)))=\left(\frac {\partial vec(\mathbf F)}{\partial vec(\mathbf X)}\right)^Tvec(d\mathbf X)\tag{20} d(vec(F(X)))=(∂vec(X)∂vec(F))Tvec(dX)(20)
公式(20)是我们需要记住的公式。
和之前标量对矩阵的微分法相比,这里的迹函数被矩阵向量化代替了[3]。矩阵对矩阵求导的微分法,也有一些法则可以直接使用。主要集中在矩阵向量化后的运算法则,以及向量化和Kronecker积之间的关系[2,3]。这里只给出微分法会用到的常见转化性质, 详细证明可以参考张贤达的书。
常用的矩阵向量化运算法则:
线性性质: v e c ( A + B ) = v e c ( A ) + v e c ( B ) vec(A+B)=vec(A)+vec(B) vec(A+B)=vec(A)+vec(B)。矩阵乘法: v e c ( A X B ) = ( B T ⊗ A ) v e c ( X ) vec(AXB)=(B^T\otimes A)vec(X) vec(AXB)=(BT⊗A)vec(X),其中 ⊗ \otimes ⊗是克洛克内积。矩阵转置: v e c ( A T ) = K m n v e c ( A ) vec(A^T)=K_{mn}vec(A) vec(AT)=Kmnvec(A),其中 A A A是 m × n m×n m×n的矩阵, K m n K_{mn} Kmn是 m n × m n mn×mn mn×mn的交换矩阵,用于将按列优先的向量化变为按行优先的向量化。逐元素乘法: v e c ( A ⊙ X ) = d i a g ( A ) v e c ( X ) vec(A⊙X)=diag(A)vec(X) vec(A⊙X)=diag(A)vec(X), 其中 d i a g ( A ) diag(A) diag(A)是 m n × m n mn×mn mn×mn的对角矩阵,对角线上的元素是矩阵 A A A按列向量化后排列出来的。
Kronecker积的主要运算法则有:
$ (A⨂B)T=AT⨂B^T$ v e c ( a b T ) = b ⨂ a vec(ab^T)=b⨂a vec(abT)=b⨂a ( A ⨂ B ) ( C ⨂ D ) = A C ⨂ B D (A⨂B)(C⨂D)=AC⨂BD (A⨂B)(C⨂D)=AC⨂BD K m n = K n m T K_{mn}=K^T_{nm} Kmn=KnmT, K m n K n m = I K_{mn}K_{nm}=I KmnKnm=I K p m ( A ⊗ B ) K n q = B ⊗ A K_{pm}(A\otimes B)K_{nq}=B\otimes A Kpm(A⊗B)Knq=B⊗A,其中 A A A是 m × n m\times n m×n, B B B是 p × q p\times q p×q矩阵
例题:F = A X B F=AXB F=AXB,求 ∂ F ∂ X \displaystyle\frac {\partial F}{\partial \mathbf X} ∂X∂F。
解:详细步骤如同<利用微分法求标量对向量和矩阵的导数>小节那样,这里直接一步到位写出计算式,即:
d ( ( v e c ( F ) ) = d ( v e c ( A X B ) ) = v e c ( A d X B ) = ( B T ⊗ A ) v e c ( d X ) d\left((vec(F)\right)=d\left(vec(AXB)\right)=vec(AdXB)=(B^T\otimes A)vec(dX) d((vec(F))=d(vec(AXB))=vec(AdXB)=(BT⊗A)vec(dX)
对比公式(20),我们得到:
∂ F ∂ X = ( B T ⊗ A ) T = B ⊗ A T \displaystyle\frac {\partial F}{\partial \mathbf X}=(B^T\otimes A)^T=B\otimes A^T ∂X∂F=(BT⊗A)T=B⊗AT