Jacobian矩阵和梯度矩阵

参考:《矩阵分析与应用》第3章 3.1 Jacobian矩阵与梯度矩阵

pytorchautograd包中,利用Jacobian(雅格比)矩阵进行梯度的计算

学习实值标量函数、实值向量函数和实值矩阵函数相对于实向量变元或矩阵变元的偏导

计算符号

  • 实向量变元:$x=[x_{1},…,x_{m}]^T\in R^{m}$
  • 实矩阵变元:$X=[x_{1},…,x_{n}]\in R^{m\times n}$
  • 实值标量函数
    • $f(X)\in R$,其变元是$m\times 1$实值向量$x$,记作$f:R^{m}\rightarrow R$
    • $f(X)\in R$,其变元是$m\times n$实矩阵$X$,记作$f:R^{m\times n}\rightarrow R$
  • $p$维实列向量函数
    • $f(x)\in R^{p}$,其变元是$m\times 1$实值向量$x$,记作$f:R^{m}\rightarrow R^{p}$
    • $f(X)\in R^{p}$,其变元是$m\times n$实矩阵$X$,记作$f:R^{m}\rightarrow R^{p}$
  • $p\times q$维实矩阵函数
    • $f(x)\in R^{p\times q}$,其变元是$m\times 1$实值向量$x$,记作$f:R^{m}\rightarrow R^{p\times q}$
    • $f(X)\in R^{p\times q}$,其变元是$m\times n$实矩阵$X$,记作$f:R^{m}\rightarrow R^{p\times q}$

实值函数的分类

函数类型向量变元$x\in R^{m}$矩阵变元$X\in R^{m\times n}$
标量函数$f\in R$$f(x), \ f: R^{m}\rightarrow R$$f(X), \ f: R^{m\times n}\rightarrow R$
向量函数$f\in R^{p}$$f(x), \ f: R^{m}\rightarrow R^{p}$$f(X), \ f: R^{m\times n}\rightarrow R^{p}$
矩阵函数$F\in R^{p\times q}$$F(x), \ f: R^{m}\rightarrow R^{p\times q}$$F(X), \ F: R^{m\times n}\rightarrow R^{p\times q}$

行向量偏导算子和Jacobian矩阵

实值标量函数

定义实向量变元$x=[x_{1},…,x_{m}]^T$,$1\times m$行向量偏导算子记为

对于实值标量函数$f(x)$而言,对于$x$的偏导向量是一个$1\times m$行向量

当变元为实值矩阵$X\in R^{m\times n}$时,其偏导向量有两种表示形式

或者

$D_{X}f(X)$称为实值标量函数$f(X)$关于矩阵变元$X$的$Jacobian$矩阵

$D_{vecX}f(X)$称为实值标量函数$f(X)$关于矩阵变元$X$的行偏导向量

两者之间关系

即实值标量函数$f(X)$的行向量偏导$D_{vecX}f(X)$等于$Jacobian$矩阵的转置$D_{X}^{T}f(X)$的列向量化$vec(D_{X}^{T}f(X)$的转置

实值矩阵函数

计算实值矩阵函数$F(X)=[f_{kl}]_{k=1,l=1}^{p,q}\in R^{p\times q}$对于矩阵变元$X\in R^{m\times n}$的行偏导矩阵:

先通过列向量化,将$p\times q$矩阵函数$F(X)$转换成$pq\times 1$列向量

然后,将该列向量对变元$X$的列向量化的转置$(vecX)^T$求偏导,给出$pq\times mn$维$Jacobian$矩阵

具体表达式如下:

列向量偏导算子和梯度矩阵

采用列向量形式定义的偏导算子称为列向量偏导算子,又称为梯度算子

实值标量函数

定义实向量变元$x=[x_{1},…,x_{m}]^T$,$1\times m$行向量偏导算子记为

对于实值标量函数$f(x)$而言,对于$x$的偏导向量$\bigtriangledown_{x}f(x)$是一个$m\times 1$列向量

将实值矩阵变元$X\in R^{m\times n}$列向量化后,关于矩阵变元$X$的梯度向量为

或者

前者称为实值标量函数$f(X)$关于实值矩阵变元$X$的列向量偏导算子

后者称为实值标量函数$f(X)$关于实值矩阵变元$X$的梯度矩阵

所以实值标量函数$f(X)$的梯度矩阵等于$Jacobian$矩阵的转置

实值矩阵函数

计算实值矩阵函数$F(X)\in R^{p\times q}$对于矩阵变元$X\in R^{m\times n}$的梯度矩阵

先通过列向量化,将$p\times q$矩阵函数$F(X)$转换成$pq\times 1$列向量

然后,将该列向量对变元$X$的列向量化$vecX$求偏导,给出$pq\times mn$维梯度矩阵

具体表达式如下:

所以实值矩阵函数$f(X)$的梯度矩阵等于$Jacobian$矩阵的转置

偏导和梯度计算

实值函数对于矩阵变元$X$的梯度计算有如下性质和法则

  1. 若$f(X)=c$为常数,其中$X\in R^{m\times n}$,则梯度$\frac {\partial c}{\partial X}=O_{m\times n}$(维数相容原则
  2. 线性法则。若$f(X)$和$g(X)$分别是矩阵$X$的实值函数,$c_{1}$和$c_{2}$为实常数,那么
  1. 乘积法则。若$f(X), g(X)$和$h(X)$都是矩阵$X$的实值函数,则

以及

  1. 商法则。若$g(X)\neq 0$,则
  1. 链式法则。令$X$为$m\times n$矩阵,且$y=f(X)$和$g(y)$分别是以矩阵$X$和标量$y$为变元的实值函数,则

实值标量函数

针对实值标量函数有如下推论

  1. 实值函数$f(x)=x^{T}Ax$的行偏导向量为$Df(x)=x^{T}(A+A^{T})$,梯度向量为$\bigtriangledown_{X}f(x)=(Df(X))^{T}=(A^{T}+A)x$
  2. 实值函数$f(x)=a^{T}XX^{T}b$,其中$X\in R^{m\times n},a,b\in R^{n\times 1}$,$Jacobian$矩阵为$D_{X}f(X)=X^{T}(ba^{T}+ab^{T})$,梯度矩阵为$\bigtriangledown_{X}f(x)=(ab^{T}+ba^{T})X$
  3. 实值函数$f(X)=tr(XB)$,其中$X\in R^{m\times n}, b\in R^{n\times m}, tr(BX)=tr(XB)$,所以$Jacobian$矩阵为$D_{X}tr(XB)=D_{X}tr(BX)=B$,梯度矩阵为$\bigtriangledown_{X}tr(XB)=\bigtriangledown_{X}tr(BX)=B^{T}$

以推论一为例,假设

所以

坚持原创技术分享,您的支持将鼓励我继续创作!