矩阵求导笔记

矩阵求导

所谓向量对标量的求导,其实就是向量里的每个分量分别对标量求导,最后把求导的结果排列在一起,按一个向量表示而已。类似的结论也存在于标量对向量的求导,向量对向量的求导,向量对矩阵的求导,矩阵对向量的求导,以及矩阵对矩阵的求导等。

总而言之,所谓的向量矩阵求导本质上就是多元函数求导,仅仅是把把函数的自变量,因变量以及标量求导的结果排列成了向量矩阵的形式,方便表达与计算,更加简洁而已。

为了便于描述,后面如果没有指明,则求导的自变量用 x x x表示标量, x \text{x} x表示 n n n维向量, X X X表示 m × n m×n m×n维度的矩阵,求导的因变量用 y y y表示标量, y y y表示 m m m维向量, Y Y Y表示 p × q p\times q p×q维度的矩阵。

矩阵向量求导定义

根据求导的自变量和因变量是标量,向量还是矩阵,我们有9种可能的矩阵求导定义

自变量\因变量 标量 y y y 向量 y \text{y} y 矩阵 Y Y Y
标量 x x x ∂ y ∂ x \dfrac{\partial y}{\partial x} xy ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy ∂ Y ∂ x \dfrac{\partial Y}{\partial x} xY
向量 x \text{x} x ∂ y ∂ x \dfrac{\partial y}{\partial \text{x}} xy ∂ y ∂ x \dfrac{\partial \text{y}}{\partial\text{x}} xy ∂ Y ∂ x \dfrac{\partial Y}{\partial\text{x}} xY
矩阵 X X X ∂ y ∂ X \dfrac{\partial y}{\partial X } Xy ∂ y ∂ X \dfrac{\partial \text{y}}{\partial X} Xy ∂ Y ∂ X \dfrac{\partial Y}{\partial X} XY

矩阵向量求导布局

为了解决矩阵向量求导的结果不唯一,我们引入求导布局。最基本的求导布局有两个:分子布局和分母布局。

对于分子布局来说,我们求导结果的维度以分子为主,比如对于我们上面对标量求导的例子,结果的维度和分子的维度是一致的。也就是说,如果向量 y \text{y} y是一个 m m m维的列向量,那么求导结果 ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy也是一个 m m m维列向量。如果如果向量 y \text{y} y是一个 m m m维的行向量,那么求导结果 ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy也是一个 m m m维行向量。

对于分母布局来说,我们求导结果的维度以分母为主,比如对于我们上面对标量求导的例子,如果向量 y \text{y} y是一个 m m m维的列向量,那么求导结果 ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy是一个 m m m维行向量。如果如果向量 y \text{y} y是一个 m m m维的行向量,那么求导结果 ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy是一个 m m m维的列向量向量。

列向量对列向量求导

比如 m m m维列向量 y y y n n n维列向量 x x x求导。它的求导结果在分子布局和分母布局各是什么呢?对于这2个向量求导,那么一共有 m n mn mn个标量对标量的求导。求导的结果一般是排列为一个矩阵。如果是分子布局,则矩阵的第一个维度以分子为准,即结果是一个 m × n m\times n m×n的矩阵,如下:
∂ 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 ) m × n \frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left(\begin{array}{cccc} \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{array}\right)_{m \times n} xy=x1y1x1y2x1ymx2y1x2y2x2ymxny1xny2xnymm×n
上边这个按分子布局的向量对向量求导的结果矩阵,我们一般叫做雅克比矩阵。如果是按分母布局,则求导的结果矩阵的第一维度会以分母为准,即结果是一个 n × m n\times m n×m的矩阵,如下:
∂ 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 ) \frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left(\begin{array}{cccc} \frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{1}} & \ldots & \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}} & \ldots & \frac{\partial y_{m}}{\partial x_{n}} \end{array}\right) xy=x1y1x2y1xny1x1y2x2y2xny2x1ymx2ymxnym
上边这个按分母布局的向量对向量求导的结果矩阵,我们一般叫做梯度矩阵。

有了布局的概念,我们对于上面5种求导类型,可以各选择一种布局来求导。但是对于某一种求导类型,不能同时使用分子布局和分母布局求导。

一般来说我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。

自变量\因变量 标量 y y y 向量 y \text{y} y 矩阵 Y Y Y
标量 x x x / ∂ y ∂ x \dfrac{\partial \text{y}}{\partial x} xy分子布局 ∂ Y ∂ x \dfrac{\partial Y}{\partial x} xY分子布局
向量 x \text{x} x ∂ y ∂ x \dfrac{\partial y}{\partial \text{x}} xy分母布局 ∂ y ∂ x \dfrac{\partial \text{y}}{\partial\text{x}} xy分子布局 ∂ Y ∂ x \dfrac{\partial Y}{\partial\text{x}} xY
矩阵 X X X ∂ y ∂ X \dfrac{\partial y}{\partial X } Xy分母布局 ∂ y ∂ X \dfrac{\partial \text{y}}{\partial X} Xy ∂ Y ∂ X \dfrac{\partial Y}{\partial X} XY

用定义法求解标量对向量求导

首先我们想到的是基于矩阵求导的定义来做,由于所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。

首先我们来看一个简单的例子: y = a T x y = a^T \text{x} y=aTx,求解 ∂ a T x ∂ x \dfrac{\partial a^T \text{x}}{\partial \text{x}} xaTx,根据定义,我们先对 x \text{x} x的第 i i i个分量进行求导,这是一个标量对标量的求导,如下:
∂ a T x ∂ x i = ∂ ∑ j = 1 n a j x j ∂ x i = ∂ a i x i ∂ x i = a i \dfrac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial x_{i}}=\dfrac{\partial \sum\limits_{j=1}^{n} a_{j} x_{j}}{\partial x_{i}}=\dfrac{\partial a_{i} x_{i}}{\partial x_{i}}=a_{i} xiaTx=xij=1najxj=xiaixi=ai
可见,对向量的第 i i i个分量的求导结果就等于向量 a a a的第 i i i个分量。由于我们是分母布局,最后所有求导结果的分量组成的是一个 n n n维向量。那么其实就是向量 a a a。也就是说:
∂ a T x ∂ x = a \frac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{a} xaTx=a
同理
∂ x T a ∂ x = a \frac{\partial \mathbf{x}^{T} \mathbf{a} }{\partial \mathbf{x}}=\mathbf{a} xxTa=a

∂ x T x ∂ x = 2 x \frac{\partial \mathbf{x}^{T} \mathbf{x}}{\partial \mathbf{x}}=2 \mathbf{x} xxTx=2x

y = x T A x y=\mathbf{x}^{T} \mathbf{A} \mathbf{x} y=xTAx,求解 ∂ x T A x ∂ x \dfrac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial \mathbf{x}} xxTAx,对 x \text{x} x的第 k k k个分量进行求导如下
∂ x T A x ∂ x k = ∂ ∑ i = 1 n ∑ j = 1 n x i A i j x j ∂ x k = ∑ i = 1 n A i k x i + ∑ j = 1 n A k j x j \frac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial x_{k}}=\frac{\partial \sum_{i=1}^{n} \sum_{j=1}^{n} x_{i} A_{i j} x_{j}}{\partial x_{k}}=\sum_{i=1}^{n} A_{i k} x_{i}+\sum_{j=1}^{n} A_{k j} x_{j} xkxTAx=xki=1nj=1nxiAijxj=i=1nAikxi+j=1nAkjxj
仔细观察一下,第一部分是矩阵 A A A的第 k k k列转置后和 x x x相乘得到,第二部分是矩阵 A A A的第 k k k行和 x x x相乘得到,排列好就是:
∂ x T A x ∂ x = A T x + A x \frac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{A}^{T} \mathbf{x}+\mathbf{A} \mathbf{x} xxTAx=ATx+Ax

标量对向量求导的一些基本法则

标量对向量求导的一些基本法则:

  1. 常量对向量的求导结果为0。

  2. 线性法则:如果 f , g f,g f,g都是实值函数, c 1 , c 2 c_1,c_2 c1,c2为常数,则:
    ∂ ( c 1 f ( x ) + c 2 g ( x ) ∂ x = c 1 ∂ f ( x ) ∂ x + c 2 ∂ g ( x ) ∂ x \frac{\partial\left(c_{1} f(\mathbf{x})+c_{2} g(\mathbf{x})\right.}{\partial \mathbf{x}}=c_{1} \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}+c_{2} \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}} x(c1f(x)+c2g(x)=c1xf(x)+c2xg(x)

  3. 乘法法则:如果 f , g f,g f,g都是实值函数,则:
    ∂ f ( x ) g ( x ) ∂ x = f ( x ) ∂ g ( x ) ∂ x + ∂ f ( x ) ∂ x g ( x ) \frac{\partial f(\mathbf{x}) g(\mathbf{x})}{\partial \mathbf{x}}=f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}+\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} g(\mathbf{x}) xf(x)g(x)=f(x)xg(x)+xf(x)g(x)

  4. 除法法则:如果 f , g f,g f,g都是实值函数,且 g ( x ) ≠ 0 g(x)\not=0 g(x)=0,则:
    ∂ f ( x ) / g ( x ) ∂ x = 1 g 2 ( x ) ( g ( x ) ∂ f ( x ) ∂ x − f ( x ) ∂ g ( x ) ∂ x ) \frac{\partial f(\mathbf{x}) / g(\mathbf{x})}{\partial \mathbf{x}}=\frac{1}{g^{2}(\mathbf{x})}\left(g(\mathbf{x}) \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}-f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}\right) xf(x)/g(x)=g2(x)1(g(x)xf(x)f(x)xg(x))

用定义法求解标量对矩阵求导

现在来看看定义法如何解决标量对矩阵的求导问题,其最后的结果是一个和自变量同型的矩阵。

y = a T X b , y=\mathbf{a}^{T} \mathbf{X} \mathbf{b}, y=aTXb, 求解 ∂ a T X b ∂ X \dfrac{\partial \mathbf{a}^{T} \mathbf{X} \mathbf{b}}{\partial \mathbf{X}} XaTXb,其中, a a a m m m维向量, b b b n n n维向量, X X X m × n m \times n m×n 的矩阵。对矩阵 X X X的任意一个位置的 X i j X_{ij} Xij求导,如下:
∂ a T X b ∂ X i j = ∂ ∑ p = 1 m ∑ q = 1 n a p A p q b q ∂ X i j = ∂ a i A i j b j ∂ X i j = a i b j \frac{\partial \mathbf{a}^{T} \mathbf{X} \mathbf{b}}{\partial X_{i j}}=\frac{\partial \sum_{p=1}^{m} \sum_{q=1}^{n} a_{p} A_{p q} b_{q}}{\partial X_{i j}}=\frac{\partial a_{i} A_{i j} b_{j}}{\partial X_{i j}}=a_{i} b_{j} XijaTXb=Xijp=1mq=1napApqbq=XijaiAijbj=aibj
即求导结果在 ( i ⋅ j ) (i \cdot j) (ij)位置的求导结果是 a a a向量第 i i i个分量和 b b b j j j个分量的乘积,将所有的位置的求导结果排列成一个 m × n m\times n m×n的矩阵,即为 a b T ab^T abT,这样最后的求导结果为:
∂ a T X b ∂ X = a b T \frac{\partial \mathbf{a}^{T} \mathbf{X} \mathbf{b}}{\partial \mathbf{X}}=a b^{T} XaTXb=abT

用定义法求解向量对向量求导

先来一个简单的例子: y = Ax \text{y = Ax} y = Ax,其中 A A A n × m n \times m n×m 的矩阵。 x , y x, y x,y分别为 m , n m, n m,n 维向量。需要求导 ∂ A x ∂ x \dfrac{\partial \mathbf{A x}}{\partial \mathbf{x}} xAx,根据定 义, 结果应该是一个 n × m n \times m n×m 的矩阵,先求矩阵的第i行和向量的内积对向量的第j分量求导,用定义法求解过程如下:
∂ A i x ∂ x j = ∂ A i j x j ∂ x j = A i j \frac{\partial \mathbf{A}_{\mathbf{i}} \mathbf{x}}{\partial \mathbf{x}_{\mathbf{j}}}=\frac{\partial A_{i j} x_{j}}{\partial \mathbf{x}_{\mathbf{j}}}=A_{i j} xjAix=xjAijxj=Aij
可见矩阵 A A A 的第 i i i行和向量的内积对向量的第 j j j分量求导的结果就是矩阵 A A A ( i , j ) (i, j) (i,j) 位置的值。排列起来就是 一个矩阵了,由于我们分子布局, 所以排列出的结果是 A A A,而不是 A T A^{T} AT

链式法则

向量对向量求导的链式法则

设多个向量存在依赖关系,比如三个向量 x → y → z x\rightarrow y\rightarrow z xyz存在依赖关系,则我们有下面的链式求导法则:
∂ z ∂ x = ∂ z ∂ y ∂ y ∂ x \frac{\partial \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{z}}{\partial \mathbf{y}} \frac{\partial \mathbf{y}}{\partial \mathbf{x}} xz=yzxy
该法则也可以推广到更多的向量依赖关系。但是要注意的是要求所有有依赖关系的变量都是向量,如果有一个 Y Y Y是矩阵,比如 x → Y → z x\rightarrow Y\rightarrow z xYz, 则上式并不成立。

从维度理解链式法则

标量对多个向量的链式求导法则

在我们的机器学习算法中,最终要优化的一般是一个标量损失函数,因此最后求导的目标是标量,无法使用上一节的链式求导法则,比如2向量,最后到1标量的依赖关系: x → y → z \text{x}\rightarrow \text{y}\rightarrow z xyz,此时很容易发现维度不相容。

假设 x , y x, y x,y分别是 m , n m, n m,n 维向量, 那么 ∂ z ∂ x \dfrac{\partial z}{\partial \mathbf{x}} xz 的求导结果是一个 m × 1 m \times 1 m×1 的向量, , , , ∂ z ∂ y \dfrac{\partial z}{\partial \mathbf{y}} yz 是一个 n × 1 n \times 1 n×1 的向量, ∂ y ∂ x \dfrac{\partial \mathbf{y}}{\partial \mathbf{x}} xy 是一 个 n × m n \times m n×m 的雅克比矩阵,右边的向量和矩阵是没法直接乘的。

但是假如我们把标量求导的部分都做一个转置,那么维度就可以相容了,也就是:
( ∂ z ∂ x ) T = ( ∂ z ∂ y ) T ∂ y ∂ x \left(\frac{\partial z}{\partial \mathbf{x}}\right)^{T}=\left(\frac{\partial z}{\partial \mathbf{y}}\right)^{T} \frac{\partial \mathbf{y}}{\partial \mathbf{x}} (xz)T=(yz)Txy
但是毕竟我们要求导的是 ( ∂ z ∂ x ) (\dfrac{\partial z}{\partial \text{x}}) (xz),而不是它的转置,因此两边转置我们可以得到标量对多个向量求导的链式法则:
∂ z ∂ x = ( ∂ y ∂ x ) T ∂ z ∂ y \frac{\partial z}{\partial \mathbf{x}}=\left(\frac{\partial \mathbf{y}}{\partial \mathbf{x}}\right)^{T} \frac{\partial z}{\partial \mathbf{y}} xz=(xy)Tyz
如果是标量对更多的向量求导,比如 y 1 → y 2 → … → y n → z \mathbf{y}_{\mathbf{1}} \rightarrow \mathbf{y}_{\mathbf{2}} \rightarrow \ldots \rightarrow \mathbf{y}_{\mathbf{n}} \rightarrow z y1y2ynz,则其链式求导表达式可以表示为:
∂ z ∂ y 1 = ( ∂ y n ∂ y n − 1 ∂ y n − 1 ∂ y n − 2 … ∂ y 2 ∂ y 1 ) T ∂ z ∂ y n \frac{\partial z}{\partial \mathbf{y}_{1}}=\left(\frac{\partial \mathbf{y}_{\mathbf{n}}}{\partial \mathbf{y}_{\mathbf{n}-1}} \frac{\partial \mathbf{y}_{\mathbf{n}-1}}{\partial \mathbf{y}_{\mathbf{n}-2}} \ldots \frac{\partial \mathbf{y}_{2}}{\partial \mathbf{y}_{1}}\right)^{T} \frac{\partial z}{\partial \mathbf{y}_{\mathbf{n}}} y1z=(yn1ynyn2yn1y1y2)Tynz

最小二乘法求导的例子。最小二乘法优化的目标是最小化如下损失函数:
l = ( X θ − y ) T ( X θ − y ) l=(X \theta-y)^{T}(X \theta-y) l=(Xθy)T(Xθy)
我们优化的损失函数 l l l是一个标量, 而模型参数 θ \theta θ是一个向量, 期望 L L L θ \theta θ求导, 并求出导数等于0时候的机制点。我们假设向量 z = X θ − y , z=X \theta-y, z=Xθy, l = z T z , θ → z → l l=z^{T} z, \quad \theta \rightarrow z \rightarrow l l=zTz,θzl 存在链式求导的关系, 因此:
∂ l ∂ θ = ( ∂ z ∂ θ ) T ∂ l ∂ z = X T ( 2 z ) = 2 X T ( X θ − y ) \frac{\partial l}{\partial \theta}=\left(\frac{\partial z}{\partial \theta}\right)^{T} \frac{\partial l}{\partial \mathbf{z}}=X^{T}(2 z)=2 X^{T}(X \theta-y) θl=(θz)Tzl=XT(2z)=2XT(Xθy)

标量对多个矩阵的链式求导法则

假设有这样的依赖关系: X → Y → z \mathbf{X} \rightarrow \mathbf{Y} \rightarrow z XYz,那么我们有:
∂ z ∂ x i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ X i j = tr ⁡ ( ( ∂ z ∂ Y ) T ∂ Y ∂ X i j ) \frac{\partial z}{\partial x_{i j}}=\sum_{k, l} \frac{\partial z}{\partial Y_{k l}} \frac{\partial Y_{k l}}{\partial X_{i j}}=\operatorname{tr}\left(\left(\frac{\partial z}{\partial Y}\right)^{T} \frac{\partial Y}{\partial X_{i j}}\right) xijz=k,lYklzXijYkl=tr((Yz)TXijY)
 这里大家会发现我们没有给出基于矩阵整体的链式求导法则,主要原因是矩阵对矩阵的求导是比较复杂的定义,我们目前也未涉及。因此只能给出对矩阵中一个标量的链式求导方法。这个方法并不实用,因为我们并不想每次都基于定义法来求导最后再去排列求导结果。

我们来看这个常见问题: A A A, X , B , Y X, B, Y X,B,Y 都是矩阵, z z z 是标量, 其中 z = f ( Y ) , Y = A X + B z=f(Y), Y=A X+B z=f(Y),Y=AX+B,先使用上面的标量链式求导公式:
∂ z ∂ x i j = ∑ k , l ∂ z ∂ Y k l ∂ Y k l ∂ X i j \frac{\partial z}{\partial x_{i j}}=\sum_{k, l} \frac{\partial z}{\partial Y_{k l}} \frac{\partial Y_{k l}}{\partial X_{i j}} xijz=k,lYklzXijYkl
再来看看后半部分的导数:
∂ Y k l ∂ X i j = ∂ ∑ s ( A k s X s l ) ∂ X i j = ∂ A k i X i l ∂ X i j = A k i δ l j \frac{\partial Y_{k l}}{\partial X_{i j}}=\frac{\partial \sum_{s}\left(A_{k s} X_{s l}\right)}{\partial X_{i j}}=\frac{\partial A_{k i} X_{i l}}{\partial X_{i j}}=A_{k i} \delta_{l j} XijYkl=Xijs(AksXsl)=XijAkiXil=Akiδlj
其中 δ l j \delta_{lj} δlj l = j l=j l=j时为1,否则为0。那么最终的标签链式求导公式转化为:
∂ Y k l ∂ X i j = ∂ ∑ s ( A k s X s l ) ∂ X i j = ∂ A k i X i l ∂ X i j = A k i δ l j \frac{\partial Y_{k l}}{\partial X_{i j}}=\frac{\partial \sum_{s}\left(A_{k s} X_{s l}\right)}{\partial X_{i j}}=\frac{\partial A_{k i} X_{i l}}{\partial X_{i j}}=A_{k i} \delta_{l j} XijYkl=Xijs(AksXsl)=XijAkiXil=Akiδlj
即矩阵 A T A^{T} AT 的第 i i i行和 ∂ z ∂ Y \frac{\partial z}{\partial Y} Yz 的第 j j j列的内积。排列成矩阵即为:
∂ z ∂ X = A T ∂ z ∂ Y \frac{\partial z}{\partial X}=A^{T} \frac{\partial z}{\partial Y} Xz=ATYz
总结下就是:
z = f ( Y ) , Y = A X + B → ∂ z ∂ X = A T ∂ z ∂ Y z=f(Y), Y=A X+B \rightarrow \frac{\partial z}{\partial X}=A^{T} \frac{\partial z}{\partial Y} z=f(Y),Y=AX+BXz=ATYz
这结论在 x x x是一个向量的时候也成立,即:
z = f ( y ) , y = A x + b → ∂ z ∂ x = A T ∂ z ∂ y z=f(\mathbf{y}), \mathbf{y}=A \mathbf{x}+\mathbf{b} \rightarrow \frac{\partial z}{\partial \mathbf{x}}=A^{T} \frac{\partial z}{\partial \mathbf{y}} z=f(y),y=Ax+bxz=ATyz
如果要求导的自变量在左边,线性变换在右边,也有类似稍有不同的结论如下,证明方法是类似的
z = f ( Y ) , Y = X A + B → ∂ z ∂ X = ∂ z ∂ Y A T z = f ( y ) , y = X a + b → ∂ z ∂ X = ∂ z ∂ y a T \begin{array}{l} z=f(Y), Y=X A+B \rightarrow \frac{\partial z}{\partial X}=\frac{\partial z}{\partial Y} A^{T} \\ z=f(\mathbf{y}), \mathbf{y}=X \mathbf{a}+\mathbf{b} \rightarrow \frac{\partial z}{\partial \mathbf{X}}=\frac{\partial z}{\partial \mathbf{y}} a^{T} \end{array} z=f(Y),Y=XA+BXz=YzATz=f(y),y=Xa+bXz=yzaT

你可能感兴趣的:(线性代数,矩阵)