Jacobian矩阵和梯度矩阵

pytorchautograd包中,利用Jacobian(雅格比)矩阵进行梯度的计算。学习实值标量函数、实值向量函数和实值矩阵函数相对于实向量变元或矩阵变元的偏导

计算符号

  • 实向量变元:
  • 实矩阵变元:
  • 实值标量函数
    • ,其变元是实值向量,记作
    • ,其变元是实矩阵,记作
  • 维实列向量函数
    • ,其变元是实值向量,记作
    • ,其变元是实矩阵,记作
  • 维实矩阵函数
    • ,其变元是实值向量,记作
    • ,其变元是实矩阵,记作

实值函数的分类

| 函数类型 | 向量变元 | 矩阵变元 |
|:——–: |:——–: |—— |
| 标量函数 | | |
| 向量函数 | | |
| 矩阵函数 | | |

行向量偏导算子和Jacobian矩阵

实值标量函数

定义实向量变元行向量偏导算子记为

对于实值标量函数而言,对于的偏导向量是一个行向量

当变元为实值矩阵时,其偏导向量有两种表示形式

或者

称为实值标量函数关于矩阵变元矩阵

称为实值标量函数关于矩阵变元行偏导向量

两者之间关系

即实值标量函数的行向量偏导等于矩阵的转置的列向量化的转置

实值矩阵函数

计算实值矩阵函数对于矩阵变元的行偏导矩阵:

先通过列向量化,将矩阵函数转换成列向量

然后,将该列向量对变元的列向量化的转置求偏导,给出矩阵

具体表达式如下:

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

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

实值标量函数

定义实向量变元行向量偏导算子记为

对于实值标量函数而言,对于的偏导向量是一个列向量

将实值矩阵变元列向量化后,关于矩阵变元的梯度向量为

或者

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

后者称为实值标量函数关于实值矩阵变元的梯度矩阵

所以实值标量函数的梯度矩阵等于矩阵的转置

实值矩阵函数

计算实值矩阵函数对于矩阵变元的梯度矩阵

先通过列向量化,将矩阵函数转换成列向量

然后,将该列向量对变元的列向量化求偏导,给出维梯度矩阵

具体表达式如下:

所以实值矩阵函数的梯度矩阵等于矩阵的转置

偏导和梯度计算

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

  1. 为常数,其中,则梯度维数相容原则
  2. 线性法则。若分别是矩阵的实值函数,为实常数,那么

  1. 乘积法则。若都是矩阵的实值函数,则

以及

  1. 商法则。若,则

  1. 链式法则。令矩阵,且分别是以矩阵和标量为变元的实值函数,则

实值标量函数

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

  1. 实值函数的行偏导向量为,梯度向量为
  2. 实值函数,其中矩阵为,梯度矩阵为
  3. 实值函数,其中,所以矩阵为,梯度矩阵为

以推论一为例,假设

所以

相关阅读

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