807补充(二)(矩阵微分篇)

在这里插入图片描述

注:在本文中不考虑复数矩阵的可能性,仅考虑实矩阵

符号约定

X , A , B \mathbf{X},\mathbf{A},\mathbf{B} X,A,B矩阵 F ( ⋅ ) \mathbf{F(\cdot)} F()输出为矩阵的函数
x , y , z \mathbf{x},\mathbf{y},\mathbf{z} x,y,z向量 f ( ⋅ ) , g ( ⋅ ) \mathbf{f(\cdot)},\mathbf{g(\cdot)} f(),g()输出为向量的函数
x , y x,y x,y标量 f ( ⋅ ) f ( \cdot) f()输出为标量的函数

在上篇中我们使用定义计算了矩阵函数的梯度,并且给出了多元函数二阶导海瑟矩阵的表达式,但是在实际在计算中还是略微繁琐,在本文中将给出计算梯度标准型。

一.矩阵的Hadamard积

m × n m \times n m×n矩阵 A = [ a i j ] \mathbf A=[a_{ij}] A=[aij] m × n m \times n m×n矩阵 B = [ b i j ] \mathbf B=[b_{ij}] B=[bij]的Hadamard积记作 A ⊙ B \mathbf A\odot\mathbf B AB,它仍然是一个 m × n m\times n m×n矩阵,其元素定义为两个矩阵对应元素的乘积。
( A ⊙ B ) i j = a i j b i j (\mathbf A\odot\mathbf B)_{ij}=a_{ij}b_{ij} (AB)ij=aijbij
即Hadamard积是一映射 R m × n × R m × n → R m × n \Bbb R^{m\times n}\times \Bbb R^{m\times n}\rightarrow\Bbb R^{m\times n} Rm×n×Rm×nRm×n

Hadamard积的一些性质如下。
( 1 ) ( A ⊙ B ) T = A T ⊙ B T ( 2 ) c ( A ⊙ B ) = ( c A ) ⊙ B = A ⊙ ( c B ) ( 3 ) A ⊙ B = B ⊙ A ( 4 ) 若 m × m 矩 阵 A , B 是 正 定 ( 或 者 半 正 定 ) 的 , 则 它 们 的 H a d a m a r d 积 也 是 正 定 ( 或 半 正 定 ) 的 。 ( 5 ) t r ( A T ( B ⊙ C ) ) = t r ( ( A T ⊙ B T ) C ) ( 6 ) v e c ( A ⊙ X ) = d i a g ( A ) v e c ( X ) \begin{aligned} &(1)(\mathbf A\odot \mathbf B)^T=\mathbf A^T\odot\mathbf B^T\\ &(2)c(\mathbf A\odot\mathbf B)=(c\mathbf A)\odot\mathbf B=\mathbf A\odot (c\mathbf B)\\ &(3)\mathbf A\odot \mathbf B=\mathbf B\odot \mathbf A\\ &(4)若m\times m矩阵\mathbf A,\mathbf B是正定(或者半正定)的,则它们的Hadamard积也是正定(或半正定)的。\\ &(5)\mathrm{tr}(\mathbf A^T(\mathbf B\odot\mathbf C))=\mathrm{tr}((\mathbf A^T\odot\mathbf B^T)\mathbf C)\\ &(6)\mathrm{vec}(\mathbf A\odot\mathbf X)=\mathrm{diag}(\mathbf A)\mathrm{vec}(\mathbf X) \end{aligned} (1)(AB)T=ATBT(2)c(AB)=(cA)B=A(cB)(3)AB=BA(4)m×mA,B()Hadamard()(5)tr(AT(BC))=tr((ATBT)C)(6)vec(AX)=diag(A)vec(X)

二.矩阵的Kronecker积

两个矩阵的Kronecker积分为左Kronecker积和右Kronecker积。

m × n m \times n m×n矩阵 A = [ a i j ] \mathbf A=[a_{ij}] A=[aij] p × q p \times q p×q矩阵 B = [ b i j ] \mathbf B=[b_{ij}] B=[bij]的右Kronecker积记作 A ⊗ B \mathbf A\otimes\mathbf B AB,它是一个 m p × n q mp\times nq mp×nq矩阵,定义为
A ⊗ B = [ a i j B ] i = 1 , j = 1 m , n = [ a 11 B a 12 B ⋯ a 1 n B a 21 B a 22 B ⋯ a 2 n B ⋮ ⋮ ⋱ ⋮ a m 1 B a m 2 B ⋯ a m n B ] \mathbf A\otimes\mathbf B=[a_{ij}\mathbf B]_{i=1,j=1}^{m,n}=\begin{bmatrix}a_{11}\mathbf B &a_{12}\mathbf B&\cdots&a_{1n}\mathbf B\\ a_{21}\mathbf B &a_{22}\mathbf B&\cdots&a_{2n}\mathbf B\\ \vdots&\vdots&\ddots&\vdots\\ a_{m1}\mathbf B &a_{m2}\mathbf B&\cdots&a_{mn}\mathbf B \end{bmatrix} AB=[aijB]i=1,j=1m,n=a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB

m × n m \times n m×n矩阵 A = [ a i j ] \mathbf A=[a_{ij}] A=[aij] p × q p \times q p×q矩阵 B = [ b i j ] \mathbf B=[b_{ij}] B=[bij]的左Kronecker积记作 [ A ⊗ B ] l e f t [\mathbf A\otimes\mathbf B]_{\mathrm{left}} [AB]left,它是一个 m p × n q mp\times nq mp×nq矩阵,定义为
[ A ⊗ B ] l e f t = [ b i j A ] i = 1 , j = 1 m , n = [ b 11 A b 12 A ⋯ b 1 n A b 21 A b 22 A ⋯ b 2 n A ⋮ ⋮ ⋱ ⋮ b m 1 A b m 2 A ⋯ b m n A ] [\mathbf A\otimes\mathbf B]_{\mathrm{left}}=[b_{ij}\mathbf A]_{i=1,j=1}^{m,n}=\begin{bmatrix}b_{11}\mathbf A &b_{12}\mathbf A&\cdots&b_{1n}\mathbf A\\ b_{21}\mathbf A &b_{22}\mathbf A&\cdots&b_{2n}\mathbf A\\ \vdots&\vdots&\ddots&\vdots\\ b_{m1}\mathbf A &b_{m2}\mathbf A&\cdots&b_{mn}\mathbf A \end{bmatrix} [AB]left=[bijA]i=1,j=1m,n=b11Ab21Abm1Ab12Ab22Abm2Ab1nAb2nAbmnA
显然,矩阵的左Kronecker积可以用右Kronecker积表示。默认都采用右Kronecker积表示Kronecker积。

Kronecker积有以下常用性质
( 1 ) A ⊗ B ≠ B ⊗ A ( 2 ) α A ⊗ β B = α β ( A ⊗ B ) ( 3 ) ( A B ) ⊗ ( C D ) = ( A ⊗ C ) ( B ⊗ D ) ( 4 ) ( A ⊗ B ) T = A T ⊗ B T ( 5 ) ( A ⊗ B ) − 1 = A − 1 ⊗ B − 1 ( 6 ) v e c ( A X B ) = ( B T ⊗ A ) v e c ( X ) ( 7 ) v e c ( a b T ) = b ⊗ a \begin{aligned} &(1)\mathbf A\otimes\mathbf B \neq \mathbf B\otimes\mathbf A\\ &(2)\alpha\mathbf A\otimes\mathbf \beta B=\alpha\beta(\mathbf A\otimes\mathbf B)\\ &(3)(\mathbf A\mathbf B)\otimes(\mathbf C\mathbf D)=(\mathbf A\otimes\mathbf C)(\mathbf B\otimes\mathbf D)\\ &(4)(\mathbf A\otimes\mathbf B)^T=\mathbf A^T\otimes\mathbf B^T\\ &(5)(\mathbf A\otimes\mathbf B)^{-1}=\mathbf A^{-1}\otimes\mathbf B^{-1}\\ &(6)\mathbf{vec}(\mathbf A\mathbf X \mathbf B)=(\mathbf B^T\otimes \mathbf A)\mathrm{vec}(\mathbf X)\\ &(7)\mathrm{vec}(\mathbf a \mathbf b^T)=\mathbf b\otimes \mathbf a \end{aligned} (1)AB=BA(2)αAβB=αβ(AB)(3)(AB)(CD)=(AC)(BD)(4)(AB)T=ATBT(5)(AB)1=A1B1(6)vec(AXB)=(BTA)vec(X)(7)vec(abT)=ba

三.逐元素函数

假设一个函数 f ( x ) f(x) f(x)的输出是标量 x x x,对于一组 K K K个标量 x 1 , x 2 , ⋯   , x k x_1,x_2,\cdots,x_k x1,x2,,xk我们可以通过 f ( x ) f(x) f(x)得到另外一组 K K K个标量 z 1 , z 2 , z 3 , ⋯   , z k z_1,z_2,z_3,\cdots,z_k z1,z2,z3,,zk
z k = f ( x k ) ,          ∀ k = 1 , ⋯   , K z_k=f(x_k),\ \ \ \ \ \ \ \ \forall k=1,\cdots,K zk=f(xk),        k=1,,K
我们定义 x = [ x 1 , ⋯   , x k ] T , z = [ z 1 , ⋯   , z k ] T \mathbf x=[x_1,\cdots,x_k]^T,\mathbf z=[z_1,\cdots,z_k]^T x=[x1,,xk]T,z=[z1,,zk]T
z = f ( x ) \mathbf z=\mathbf{f(x)} z=f(x)
其中 f ( x ) f(x) f(x)是按位运算,即 [ f ( x ) ] k = f ( x k ) [\mathbf f(\mathbf x)]_k=f(x_k) [f(x)]k=f(xk)。这样的函数就是逐元素函数,将向量变元推广至矩阵变元也成立。

x x x为标量时, f ( x ) f(x) f(x)的导数记为 f ′ ( x ) f'(x) f(x),当输入为K维向量 x = [ x 1 , ⋯   , x k ] T \mathbf x = [x_1,\cdots,x_k]^T x=[x1,,xk]T时,其导数为一个对角阵。
∂ f ( x ) ∂ x = [ f ′ ( x 1 ) 0 ⋯ 0 0 f ′ ( x 2 ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ f ′ ( x k ) ] = d i a g ( f ′ ( x ) ) \begin{aligned} \frac{\partial \mathbf{f(x)}}{\partial \mathbf x}&= \left[ \begin{matrix} f'(x_1) & 0 & \cdots & 0\\ 0 & f'(x_2) & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & f'(x_k) \end{matrix} \right]\\ \\ &=\mathrm{diag}(\mathbf f'(\mathbf x)) \end{aligned} xf(x)=f(x1)000f(x2)000f(xk)=diag(f(x))

四.实值函数的微分标准型

矩阵微分用符号 d X \mathrm{d}\mathbf X dX表示,定义为 d X = d e f [ d x i j ] i = 1 , j = 1 m , n \mathrm{d}\mathbf X\overset{\mathrm{def}}{=}[\mathrm{d}x_{ij}]^{m,n}_{i=1,j=1} dX=def[dxij]i=1,j=1m,n

下面是矩阵微分常用的性质。
( 1 ) d ( t r ( X ) ) = t r ( d ( X ) ) ( 2 ) d ( X Y ) = ( d X ) Y + X ( d Y ) ( 3 ) d ( X ) T = ( d X ) T ( 4 ) d ( α X + β Y ) = α d X + β d Y ( 5 ) 常 数 矩 阵 的 微 分 为 0          d ( A ) = 0 ( 6 ) d X − 1 = − X − 1 d X X − 1       可 对 I 两 边 求 微 分 得 出 ( 7 ) d ∣ X ∣ = ∣ X ∣ t r ( X − 1 d X )       可 用 L a p l a c e 展 开 证 明 ( 8 ) d ( X ⊙ Y ) = ( d X ) ⊙ Y + X ⊙ ( d Y ) ( 9 ) d ( X ⊗ Y ) = ( d X ) ⊗ Y + X ⊗ ( d Y ) ( 10 ) d ( v e c ( X ) ) = v e c ( d X ) ( 11 ) d log ⁡ X = X − 1 d X ( 12 ) d f ( X ) = f ′ ( X ) ⊙ d X ( f 是 逐 元 素 函 数 ) \begin{aligned} &(1)\mathrm{d}(\mathrm{tr}(\mathbf X))=\mathrm{tr}(\mathrm{d}(\mathbf X))\\ &(2)\mathrm{d}(\mathbf X \mathbf Y)=(\mathrm d\mathbf X)\mathbf Y+\mathbf X(\mathrm d\mathbf Y)\\ &(3)\mathrm d(\mathbf X)^T=(\mathrm d\mathbf X)^T\\ &(4)\mathrm d(\alpha\mathbf X+\beta\mathbf Y)=\alpha\mathrm d\mathbf X+\beta\mathrm d\mathbf Y\\ &(5)常数矩阵的微分为0 \ \ \ \ \ \ \ \ \mathrm d(\mathbf A)=0\\ &(6)\mathrm{d \mathbf{X^{-1}}}=-\mathbf{X^{-1}}\mathrm{d \mathbf{X}}\mathbf{X^{-1}}\ \ \ \ \ 可对\mathbf I两边求微分得出\\ &(7)\mathrm{d |X|}=|\mathbf{X}|\mathrm{tr(\mathbf X^{-1} \mathrm{d \mathbf{X}})}\ \ \ \ \ 可用Laplace展开证明\\ &(8)\mathrm d(\mathbf{X}\odot \mathbf{Y})=(\mathrm d\mathbf{X})\odot \mathbf{Y}+\mathbf{X}\odot(\mathrm d\mathbf{Y})\\ &(9)\mathrm d(\mathbf{X}\otimes \mathbf{Y})=(\mathrm d\mathbf{X})\otimes \mathbf{Y}+\mathbf{X}\otimes(\mathrm d\mathbf{Y})\\ &(10)\mathrm d(\mathrm{vec(\mathbf{X})})=\mathrm{vec}(\mathrm d\mathbf{X})\\ &(11)\mathrm d\log\mathbf{X}=\mathbf{X}^{-1}\mathrm d\mathbf{X}\\ &(12)\mathrm d \mathbf f(\mathbf X)=\mathbf f'(\mathbf X)\odot\mathrm d\mathbf X (\mathbf f是逐元素函数) \end{aligned} (1)d(tr(X))=tr(d(X))(2)d(XY)=(dX)Y+X(dY)(3)d(X)T=(dX)T(4)d(αX+βY)=αdX+βdY(5)0        d(A)=0(6)dX1=X1dXX1     I(7)dX=Xtr(X1dX)     Laplace(8)d(XY)=(dX)Y+X(dY)(9)d(XY)=(dX)Y+X(dY)(10)d(vec(X))=vec(dX)(11)dlogX=X1dX(12)df(X)=f(X)dX(f)
考虑实值标量函数 f ( x ) f(\mathbf x) f(x),其全微分形式为
d f = ∂ f ∂ x 1 d x 1 + ∂ f ∂ x 2 d x 2 + ⋯ + ∂ f ∂ x n d x n = [ ∂ f ∂ x 1 , ⋯   , ∂ f ∂ x n ] [ d x 1 ⋮ d x n ] = ( ∂ f ∂ x ) T d x \begin{aligned} \mathrm df&=\frac{\partial f}{\partial x_1}\mathrm d x_1+\frac{\partial f}{\partial x_2}\mathrm d x_2+\cdots+\frac{\partial f}{\partial x_n}\mathrm d x_n\\ &=[\frac{\partial f}{\partial x_1},\cdots,\frac{\partial f}{\partial x_n}]\begin{bmatrix}\mathrm dx_1\\ \vdots \\\mathrm dx_n \end{bmatrix}\\ &=(\frac{\partial f}{\partial \mathbf x})^T\mathrm d\mathbf x \end{aligned} df=x1fdx1+x2fdx2++xnfdxn=[x1f,,xnf]dx1dxn=(xf)Tdx
进一步考察标量函数 f ( X ) f(\mathbf X) f(X),其变元为 m × n m\times n m×n矩阵 X \mathbf X X,由全微分形式易证
d f = ∂ f ∂ x 11 d x 11 + ∂ f ∂ x 12 d x 12 + ⋯ + ∂ f ∂ x m n d x m n = [ ∂ f ∂ x 11 , ⋯   , ∂ f ∂ x m n ] [ d x 11 ⋮ d x m n ] = ( ∂ f ∂ v e c ( X ) ) T d v e c ( X ) = ( v e c ( ∂ f ( X ) ∂ X ) ) T d ( v e c X )      与 矩 阵 内 积 的 形 式 一 致 = t r ( ( ∂ f ( X ) ∂ X ) T d X ) \begin{aligned} \mathrm df&=\frac{\partial f}{\partial x_{11}}\mathrm d x_{11}+\frac{\partial f}{\partial x_{12}}\mathrm d x_{12}+\cdots+\frac{\partial f}{\partial x_{mn}}\mathrm d x_{mn}\\ &=[\frac{\partial f}{\partial x_{11}},\cdots,\frac{\partial f}{\partial x_{mn}}]\begin{bmatrix}\mathrm d x_{11}\\ \vdots \\\mathrm d x_{mn} \end{bmatrix}\\ &=(\frac{\partial f}{\partial \mathrm{vec}(\mathbf X)})^T\mathrm d\mathrm{vec}(\mathbf X)\\ &=(\mathrm{vec}( \frac{\partial f(\mathbf X)}{\partial \mathbf X}))^T\mathrm d(\mathrm{vec}\mathbf X)\ \ \ \ 与矩阵内积的形式一致\\ &=\mathrm{tr}((\frac{\partial f(\mathbf X)}{\partial \mathbf X})^T\mathrm d\mathbf X) \end{aligned} df=x11fdx11+x12fdx12++xmnfdxmn=[x11f,,xmnf]dx11dxmn=(vec(X)f)Tdvec(X)=(vec(Xf(X)))Td(vecX)    =tr((Xf(X))TdX)
由此得出以下重要结论
d f ( x ) = ( ∂ f ( x ) ∂ x ) T d x d f ( X ) = t r ( ( ∂ f ( X ) ∂ X ) T d X ) \mathrm d f(\mathbf x)=(\frac{\partial f(\mathbf x)}{\partial \mathbf x})^T\mathrm d\mathbf x\\ \mathrm df(\mathbf X)=\mathrm{tr}((\frac{\partial f(\mathbf X)}{\partial \mathbf X})^T\mathrm d\mathbf X) df(x)=(xf(x))Tdxdf(X)=tr((Xf(X))TdX)
即只要找到 d f ( x ) \mathrm d f(\mathbf x) df(x) d x \mathrm d\mathbf x dx之间的关系即可得出函数的梯度

  1. y = a T X b y=\mathbf a^T\mathbf{Xb} y=aTXb
    d y = d ( a T ) X b + a T d ( X b ) = a T ( d X ) b = t r ( a T ( d X ) b ) = t r ( b a T ( d X ) ) \begin{aligned} \mathrm dy&=\mathrm d(\mathbf a^T)\mathbf{Xb}+\mathbf a^T\mathrm d(\mathbf{Xb})\\ &=\mathbf a^T\mathrm {(d\mathbf{X})}\mathbf b\\ &=\mathrm{tr}(\mathbf a^T\mathrm {(d\mathbf{X})}\mathbf b)\\ &=\mathrm{tr}(\mathbf b\mathbf a^T\mathrm {(d\mathbf{X}))}\\ \end{aligned} dy=d(aT)Xb+aTd(Xb)=aT(dX)b=tr(aT(dX)b)=tr(baT(dX))
    所以 ∂ y ∂ X = ( b a T ) T = a b T \frac{\partial y}{\partial \mathbf X}=(\mathbf{b}\mathbf{a}^T)^T=\mathbf a\mathbf b^T Xy=(baT)T=abT

  2. 方差的最大似然估计,随机变量 x \mathbf x x服从 N ( μ , Σ ) \mathcal N(\mathbf \mu,\mathbf \Sigma) N(μ,Σ),现有样本 x 1 , x 2 , x 3 , ⋯   , x n \mathbf x_1,\mathbf x_2,\mathbf x_3,\cdots,\mathbf x_n x1,x2,x3,,xn,求协方差矩阵的最大似然估计。

    对数似然函数为
    L = log ⁡ ∣ Σ ∣ + 1 N ∑ i N ( x i − μ ) T Σ − 1 ( x i − μ ) L=\log |\mathbf \Sigma|+\frac{1}{N}\sum_i^N(\mathbf x_i-\mathbf \mu)^T\mathbf\Sigma^{-1}(\mathbf x_i-\mathbf \mu) L=logΣ+N1iN(xiμ)TΣ1(xiμ)

    d L = 1 ∣ Σ ∣ d ∣ Σ ∣ + 1 N ∑ i N ( x i − μ ) T ( d Σ − 1 ) ( x i − μ ) = t r ( Σ − 1 d Σ ) − 1 N ∑ i N ( x i − μ ) T ( Σ − 1 d Σ Σ − 1 ) ( x i − μ ) = t r ( Σ − 1 d Σ ) − 1 N t r ( ∑ i N ( ( x i − μ ) ( x i − μ ) T Σ − 2 d Σ ) = t r ( ( Σ − 1 − 1 N ∑ i N ( ( x i − μ ) ( x i − μ ) T Σ − 2 ) d Σ ) \begin{aligned} \mathrm{d}L&=\frac{1}{|\mathbf \Sigma|}\mathrm d|\mathbf \Sigma|+\frac{1}{N}\sum_i^N(\mathbf x_i-\mathbf \mu)^T(\mathrm d\mathbf\Sigma^{-1})(\mathbf x_i-\mathbf \mu)\\ &=\mathrm{tr}(\mathbf \Sigma^{-1}\mathrm d\mathbf \Sigma)-\frac{1}{N}\sum_i^N(\mathbf x_i-\mathbf \mu)^T(\mathbf{\Sigma^{-1}}\mathrm{d \mathbf{\Sigma}}\mathbf{\Sigma^{-1}})(\mathbf x_i-\mathbf \mu)\\ &=\mathrm{tr}(\mathbf \Sigma^{-1}\mathrm d\mathbf \Sigma)-\frac{1}{N}\mathrm{tr}(\sum_i^N((\mathbf x_i-\mathbf \mu)(\mathbf x_i-\mathbf \mu)^T\mathbf{\Sigma^{-2}}\mathrm{d \mathbf{\Sigma}})\\ &=\mathrm{tr}((\mathbf \Sigma^{-1}\mathrm -\frac{1}{N}\sum_i^N((\mathbf x_i-\mathbf \mu)(\mathbf x_i-\mathbf \mu)^T\mathbf{\Sigma^{-2}})\mathrm{d \mathbf{\Sigma}}) \end{aligned} dL=Σ1dΣ+N1iN(xiμ)T(dΣ1)(xiμ)=tr(Σ1dΣ)N1iN(xiμ)T(Σ1dΣΣ1)(xiμ)=tr(Σ1dΣ)N1tr(iN((xiμ)(xiμ)TΣ2dΣ)=tr((Σ1N1iN((xiμ)(xiμ)TΣ2)dΣ)
    所以要使 ∇ L = 0 \nabla L=0 L=0应使
    Σ = 1 N ∑ i N ( ( x i − μ ) ( x i − μ ) T \mathbf \Sigma=\frac{1}{N}\sum_i^N((\mathbf x_i-\mathbf \mu)(\mathbf x_i-\mathbf \mu)^T Σ=N1iN((xiμ)(xiμ)T

  3. 最二乘估计。 L = ∣ ∣ X w − y ∣ ∣ 2 L=||\mathbf X\mathbf w-\mathbf y||^2 L=Xwy2
    d L = d [ ( X w − y ) T ( X w − y ) ] = 2 ( X w − y ) T d w \begin{aligned} \mathrm dL&=\mathrm d[(\mathbf X\mathbf w-\mathbf y)^T(\mathbf X\mathbf w-\mathbf y)]\\ &=2(\mathbf X\mathbf w-\mathbf y)^T\mathrm d\mathbf w \end{aligned} dL=d[(Xwy)T(Xwy)]=2(Xwy)Tdw

    所以 ∇ L = 2 X ( X w − y ) \nabla L=2\mathbf X(\mathbf X\mathbf w-\mathbf y) L=2X(Xwy),为使梯度为零,即可解出

五.复杂函数的导数

假设 Y \mathbf Y Y是关于 X \mathbf X X的函数,若已经求出目标函数 f f f关于 Y \mathbf Y Y的梯度,依靠微分标准型即可得出目标函数 f f f关于 X \mathbf X X的梯度。

  1. f = f ( Y ) f=f(\mathbf Y) f=f(Y), Y = B X \mathbf Y=\mathbf B\mathbf X Y=BX
    d f = t r ( ( ∂ f ∂ Y ) T d Y ) = t r ( ( ∂ f ∂ Y ) T d ( B X ) ) = t r ( ( ∂ f ∂ Y ) T B d X ) = t r ( ( ∂ f ∂ X ) T d X ) \begin{aligned} \mathrm df&=\mathrm{tr}((\frac{\partial f}{\partial \mathbf Y})^T\mathrm d\mathbf Y)\\ &=\mathrm{tr}((\frac{\partial f}{\partial \mathbf Y})^T\mathrm d(\mathbf {BX}))\\ &=\mathrm{tr}((\frac{\partial f}{\partial \mathbf Y})^T\mathbf B\mathrm d\mathbf {X})\\ &=\mathrm{tr}((\frac{\partial f}{\partial \mathbf X})^T\mathrm d\mathbf X) \end{aligned} df=tr((Yf)TdY)=tr((Yf)Td(BX))=tr((Yf)TBdX)=tr((Xf)TdX)
    即可得出 ∂ f ∂ X = B T ∂ f ∂ Y \frac{\partial f}{\partial \mathbf X}=\mathbf B^T\frac{\partial f}{\partial \mathbf Y} Xf=BTYf

易证以下常用结论

  1. 若 x ∈ R m , y = f ( x ) ∈ R n , z = g ( x ) ∈ R n 则 若\mathbf{x} \in R^{m},\mathbf{y=f(x)} \in R^{n},\mathbf{z = g(x)}\in R^{n}则 xRm,y=f(x)Rn,z=g(x)Rn
    ∂ y T z ∂ x = ∂ y ∂ x z + ∂ z ∂ x y      ∈ R m (3-3) \frac{\partial \mathbf{y}^T\mathbf{z}}{\partial \mathbf x}=\frac{\partial \mathbf{y}}{\partial \mathbf x}\mathbf{z}+\frac{\partial \mathbf{z}}{\partial \mathbf x}\mathbf{y} \ \ \ \ \in R^m \tag{3-3} xyTz=xyz+xzy    Rm(3-3)

  2. 若 x ∈ R m , y = f ( x ) ∈ R , z = g ( x ) ∈ R n 则 若\mathbf{x} \in R^{m},y=f(\mathbf x) \in R,\mathbf{z = g(\mathbf x)}\in R^{n}则 xRm,y=f(x)R,z=g(x)Rn
    ∂ y z ∂ x = ∂ y ∂ x z T + ∂ z ∂ x y      ∈ R m × n (3-5) \frac{\partial y\mathbf{z}}{\partial \mathbf x}=\frac{\partial y}{\partial \mathbf x}\mathbf{z}^T+\frac{\partial \mathbf{z}}{\partial \mathbf x}y \ \ \ \ \in R^{m \times n} \tag{3-5} xyz=xyzT+xzy    Rm×n(3-5)

  3. 若 x ∈ R m , y = f ( x ) ∈ R n , z = g ( y ) ∈ R k 则 若\mathbf{x} \in R^{m},\mathbf{y=f(x)} \in R^{n},\mathbf{z = g(y)}\in R^{k}则 xRm,y=f(x)Rn,z=g(y)Rk

    ∂ z ∂ x = ∂ y ∂ x ∂ z ∂ y     ∈ R m × k (3-2) \frac{\partial \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{y}}{\partial\mathbf{x}}\frac{\partial \mathbf{z}}{\partial \mathbf{y}}\ \ \ \in R^{m \times k}\tag{3-2} xz=xyyz   Rm×k(3-2)

  4. f ( X ) , g ( X ) f(\mathbf X),g(\mathbf X) f(X),g(X)都是矩阵 X \mathbf X X的实值函数,则
    ∂ [ f ( X ) g ( X ) ] ∂ X = f ( X ) ∂ g ( X ) ∂ X + g ( X ) ∂ f ( X ) ∂ X \frac{\partial [f(\mathbf X)g(\mathbf X)]}{\partial \mathbf X}=f(\mathbf X)\frac{\partial g(\mathbf X)}{\partial \mathbf X}+g(\mathbf X)\frac{\partial f(\mathbf X)}{\partial \mathbf X} X[f(X)g(X)]=f(X)Xg(X)+g(X)Xf(X)

  5. g ( X ) ≠ 0 g(\mathbf X)\neq 0 g(X)=0
    ∂ [ f ( X ) / g ( X ) ] ∂ X = 1 g ( X ) 2 [ g ( X ) ∂ f ( X ) ∂ X − f ( X ) ∂ g ( X ) ∂ X ] \frac{\partial [f(\mathbf X)/g(\mathbf X)]}{\partial \mathbf X}=\frac{1}{g(\mathbf X)^2}[g(\mathbf X)\frac{\partial f(\mathbf X)}{\partial \mathbf X}-f(\mathbf X)\frac{\partial g(\mathbf X)}{\partial \mathbf X}] X[f(X)/g(X)]=g(X)21[g(X)Xf(X)f(X)Xg(X)]

  6. ∂ z ∂ x = ∂ y ∂ x ∂ z ∂ y     ∈ R m × k (3-2) \frac{\partial \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{y}}{\partial\mathbf{x}}\frac{\partial \mathbf{z}}{\partial \mathbf{y}}\ \ \ \in R^{m \times k}\tag{3-2} xz=xyyz   Rm×k(3-2)
    注意顺序是否颠倒(如果顺序不对则维度不匹配无法相乘)。

六.激活函数的导数

  1. y = 1 1 + exp ⁡ ( − x ) \mathbf y=\frac{1}{1+\exp(-\mathbf x)} y=1+exp(x)1

    标准的标量Sigmod函数的导数为。
    f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))
    当输入为 K K K维向量时,其导数为
    ∂ f ( x ) ∂ x = d i a g ( f ( x ) ⊙ ( 1 − f ( x ) ) ) \frac{\partial\mathbf f(\mathbf x)}{\partial \mathbf x}=\mathrm{diag}(f(\mathbf x)\odot(1-f(\mathbf x))) xf(x)=diag(f(x)(1f(x)))

  2. Softmax函数的导数。

    Softmax函数定义为
    z k = s f o t m a x ( x k ) = exp ⁡ ( x k ) ∑ i = 1 K exp ⁡ ( x i ) z_k=\mathrm{sfotmax(x_k)}=\frac{\exp(x_k)}{\sum_{i=1}^{K}\exp(x_i)} zk=sfotmax(xk)=i=1Kexp(xi)exp(xk)
    K K K维向量 x = [ x 1 , ⋯   , x k ] T \mathbf x=[x_1,\cdots,x_k]^T x=[x1,,xk]T来表示Softmax函数的输入,
    z = s o f t m a x ( x ) = 1 ∑ i = 1 K exp ⁡ ( x k ) [ exp ⁡ ( x 1 ) exp ⁡ ( x 2 ) ⋮ exp ⁡ ( x k ) ] = exp ⁡ ( x ) 1 K T exp ⁡ ( x ) \begin{aligned} \mathbf z&=\mathrm{softmax}(\mathbf x)\\ &=\frac{1}{\sum_{i=1}^{K}\exp(x_k)}\left[ \begin{matrix} \exp(x_1) \\ \exp(x_2) \\ \vdots\\ \exp(x_k) \end{matrix} \right]\\ &=\frac{\exp(\mathbf x)}{\mathbf 1_K^T\exp(\mathbf x)} \end{aligned} z=softmax(x)=i=1Kexp(xk)1exp(x1)exp(x2)exp(xk)=1KTexp(x)exp(x)
    Softmax函数的导数为
    ∂ s o f t m a x ( x ) ∂ x = ∂ exp ⁡ ( x ) 1 K T exp ⁡ ( x ) ∂ x = 1 1 k T exp ⁡ ( x ) ∂ exp ⁡ ( x ) ∂ x + ∂ 1 1 k T exp ⁡ ( x ) ∂ x ( exp ⁡ ( x ) ) T = d i a g ( exp ⁡ ( x ) ) 1 k T exp ⁡ ( x ) − ( 1 ( 1 K T exp ⁡ ( x ) ) 2 ) ( ∂ 1 K T exp ⁡ ( x ) ) ∂ x ( exp ⁡ ( x ) ) T = d i a g ( exp ⁡ ( x ) ) 1 k T exp ⁡ ( x ) − ( 1 ( 1 K T exp ⁡ ( x ) ) 2 ) d i a g ( exp ⁡ ( x ) ) 1 K T ( exp ⁡ ( x ) ) T = d i a g ( exp ⁡ ( x ) ) 1 k T exp ⁡ ( x ) − ( 1 ( 1 K T exp ⁡ ( x ) ) 2 ) exp ⁡ ( x ) ( exp ⁡ ( x ) ) T = d i a g ( exp ⁡ ( x ) 1 K T exp ⁡ x ) − exp ⁡ ( x ) 1 K T exp ⁡ ( x ) ( exp ⁡ ( x ) ) T 1 K T exp ⁡ ( x ) = d i a g ( s o f t m a x ( x ) ) − s o f t m a x ( x ) s o f t m a x ( x ) T \begin{aligned} \frac{\partial \mathrm{softmax(\mathbf x)}}{\partial \mathbf x}&=\frac{\partial \frac{\exp(\mathbf x)}{ \mathbf 1_K^T\exp(\mathbf x)}}{\partial \mathbf x}\\ \\ &=\frac{1}{\mathbf 1_k^T\exp(\mathbf x)}\frac{\partial \exp(\mathbf x)}{\partial \mathbf x}+\frac{\partial \frac{1}{\mathbf 1_k^T\exp(\mathbf x)}}{\partial \mathbf x}(\exp(\mathbf x))^T\\ \\ &=\frac{\mathrm{diag}(\exp(\mathbf x))}{\mathbf 1_k^T\exp(\mathbf x)}-(\frac{1}{(\mathbf 1_K^T\exp(\mathbf x))^2})\frac{(\partial \mathbf 1_K^T\exp(\mathbf x))}{\partial \mathbf x}(\exp(\mathbf x))^T\\ \\ &=\frac{\mathrm{diag}(\exp(\mathbf x))}{\mathbf 1_k^T\exp(\mathbf x)}-(\frac{1}{(\mathbf 1_K^T\exp(\mathbf x))^2})\mathrm{diag(\exp(\mathbf x))}\mathbf 1_K^T(\exp(\mathbf x))^T\\ \\ &=\frac{\mathrm{diag}(\exp(\mathbf x))}{\mathbf 1_k^T\exp(\mathbf x)}-(\frac{1}{(\mathbf 1_K^T\exp(\mathbf x))^2})\exp(\mathbf x)(\exp(\mathbf x))^T\\ \\ &=\mathrm{diag(\frac{\exp(\mathbf x)}{\mathbf 1_K^T\exp\mathbf x})}-\frac{\exp(\mathbf x)}{\mathbf 1_K^T\exp(\mathbf x)}\frac{(\exp(\mathbf x))^T}{\mathbf 1_K^T\exp(\mathbf x)}\\ \\ &=\mathrm{diag(softmax(\mathbf x))}-\mathrm{softmax(\mathbf x)}\mathrm{softmax(\mathbf x)}^T \end{aligned} xsoftmax(x)=x1KTexp(x)exp(x)=1kTexp(x)1xexp(x)+x1kTexp(x)1(exp(x))T=1kTexp(x)diag(exp(x))((1KTexp(x))21)x(1KTexp(x))(exp(x))T=1kTexp(x)diag(exp(x))((1KTexp(x))21)diag(exp(x))1KT(exp(x))T=1kTexp(x)diag(exp(x))((1KTexp(x))21)exp(x)(exp(x))T=diag(1KTexpxexp(x))1KTexp(x)exp(x)1KTexp(x)(exp(x))T=diag(softmax(x))softmax(x)softmax(x)T

七.多层感知机反向传播

已知 a d , z d , W d , b d , f \mathbf a^d,\mathbf z^d,\mathbf W^d,\mathbf b^d,\mathbf f ad,zd,Wd,bd,f,分别为第d层已激活输出,未激活输出,权重矩阵,偏置,激活函数。
a d = f ( z d ) z d = W d a d − 1 + b d \mathbf a^{d}=\mathbf f(\mathbf z^d)\\ \mathbf z^d=\mathbf W^d\mathbf a^{d-1}+\mathbf b^d ad=f(zd)zd=Wdad1+bd
现求损失函数对于第d层权重向量偏导。
d L = t r ( ( ∂ L ∂ W d ) T d W d ) = t r ( ( ∂ L ∂ z d ) T d z d ) = t r ( ( ∂ L ∂ z d ) T d ( W d a d − 1 ) ) = t r ( a d − 1 ( ∂ L ∂ z d ) T d W d ) \begin{aligned} \mathrm dL&=\mathrm{tr}((\frac{\partial L}{\partial \mathbf W^d})^T\mathrm d\mathbf W^d)\\ &=\mathrm{tr}((\frac{\partial L}{\partial \mathbf z^d})^T\mathrm d\mathbf z^d)\\ &=\mathrm{tr}((\frac{\partial L}{\partial \mathbf z^d})^T\mathrm d(\mathbf {W^d a^{d-1}}))\\ &=\mathrm{tr}(\mathbf a^{d-1}(\frac{\partial L}{\partial \mathbf z^d})^T\mathrm d\mathbf {W^d}) \end{aligned} dL=tr((WdL)TdWd)=tr((zdL)Tdzd)=tr((zdL)Td(Wdad1))=tr(ad1(zdL)TdWd)

所以 ∂ L ∂ W d = ∂ L ∂ z d ( a d − 1 ) T \frac{\partial L}{\partial \mathbf W^d}=\frac{\partial L}{\partial \mathbf z^d}(\mathbf a^{d-1})^T WdL=zdL(ad1)T

定义 ∂ L ∂ z d = d e f δ d \frac{\partial L}{\partial \mathbf z^d}\overset{\mathrm{def}}{=}\mathbf \delta^{d} zdL=defδd,记作每层的误差。
δ d = ∂ L ∂ z d = ∂ a d ∂ z d ∂ z d + 1 ∂ a d ∂ L ∂ z d + 1 \begin{aligned} \mathbf \delta^{d}&=\frac{\partial L}{\partial \mathbf z^d}\\ &=\frac{\partial \mathbf a^d}{\partial \mathbf z^d}\frac{\partial \mathbf z^{d+1}}{\partial \mathbf a^d}\frac{\partial L}{\partial \mathbf z^{d+1}}\\ \end{aligned} δd=zdL=zdadadzd+1zd+1L
又因
∂ a d ∂ z d = d i a g ( f ′ ( z d ) ) ∂ z d + 1 ∂ a d = ( W d + 1 ) T \frac{\partial \mathbf a^d}{\partial\mathbf z^{d}}=\mathbf{diag}(\mathbf f'(\mathbf z^d))\\ \frac{\partial \mathbf z^{d+1}}{\partial\mathbf a^{d}}=(\mathbf W^{d+1})^T zdad=diag(f(zd))adzd+1=(Wd+1)T
所以最后的结果为
δ d = d i a g ( f ′ ( z d ) ) ( W d + 1 ) T δ d + 1 ∂ L ∂ W d = δ d ( a d − 1 ) T \mathbf \delta^d=\mathbf{diag}(\mathbf f'(\mathbf z^d))(\mathbf W^{d+1})^T\mathbf \delta^{d+1} \\ \frac{\partial L}{\partial \mathbf W^d}=\mathbf \delta^d(\mathbf a^{d-1})^T δd=diag(f(zd))(Wd+1)Tδd+1WdL=δd(ad1)T

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值