Jacobian矩阵和梯度矩阵

记号标识

标量:常规小写字母;
向量:加粗的小写字母: x = [ x 1 , ⋯   , x m ] T ∈ R m \bm x=[x_1,\cdots,x_m]^T \in \mathbb{R}^m x=[x1,,xm]TRm ;
实矩阵:加粗的大写字母: X = [ x 1 , ⋯   , x n ] T ∈ R m × n \bm X =[\bm x_1,\cdots,\bm x_n]^T \in \mathbb R^{m \times n} X=[x1,,xn]TRm×n
函数的表示亦是如此,打字费劲,不做演示,小写 f f f表示标量scalar函数,小写粗体 f \bm f f表示列向量函数,大写粗体 F \bm F F表示矩阵函数。

Jacobian矩阵

1 × m 1\times m 1×m行向量偏导算子记为:
D x = d e f ∂ ∂ x T = ( ∂ ∂ x 1 , ⋯   , ∂ ∂ x m ) D_x \overset{def}{=}\frac{\partial}{\partial\bm x^T}=\left(\frac{\partial}{\partial x_1},\cdots,\frac{\partial}{\partial x_m}\right) Dx=defxT=(x1,,xm)
由此可以看出,Jacobian矩阵的核心在于,当求偏导时:

  • 自变量 x \bm x x转置为行向量 x T \bm x^T xT或者自变量矩阵 X \bm X X转置为 X T \bm X^T XT;
  • 如果函数为列向量 f \bm f f时,函数按照原方向展开;

所以,Jacobian矩阵简单来讲,就是求偏导时,自变量按照水平方向展开,函数按竖直方向展开。

有关Jacobian矩阵的更多内容,请参照张贤达《矩阵分析与应用》第三章3.1节

梯度矩阵(这是重点)

采用列向量形式定义的偏导算子称为列向量偏导算子,习惯上称为梯度算子,而梯度在机器学习中是一个经常用到的概念。
梯度算子计作 ∇ x \nabla_x x,定义为:
∇ x = d e f ∂ ∂ x = ( ∂ ∂ x 1 , ⋯   , ∂ ∂ x m ) T \nabla_x\overset{def}{=}\frac{\partial}{\partial\bm x}=\left(\frac{\partial}{\partial x_1},\cdots,\frac{\partial}{\partial x_m}\right)^T x=defx=(x1,,xm)T
因此,实值标量函数 f ( x ) f(\bm x) f(x)的梯度向量 ∇ x f ( x ) \nabla_\bm xf(\bm x) xf(x) m × 1 m\times1 m×1的列向量,定义为:
∇ x f ( x ) = d e f ∂ f ( x ) ∂ x = ( ∂ f ( x ) ∂ x 1 , ⋯   , ∂ f ( x ) ∂ x m ) T \nabla_xf(\bm x)\overset{def}{=}\frac{\partial f(\bm x)}{\partial\bm x}=\left(\frac{\partial f(\bm x)}{\partial x_1},\cdots,\frac{\partial f(\bm x)}{\partial x_m}\right)^T xf(x)=defxf(x)=(x1f(x),,xmf(x))T
由此可知:梯度矩阵的核心是:

  • 自变量列向量 x \bm x x按照原本列的形式进行铺陈;
  • 列向量函数 f \bm f f或矩阵函数 F \bm F F按照形式进行铺排;
梯度方向的负方向 − ∇ x f ( x ) -\nabla_\bm xf(\bm x) xf(x)称为函数 f f f在点 x \bm x x梯度流(gradient flow),从梯度向量的定义可以看出(没有基础当然看不出来):
(1) 在梯度流方向,函数 f ( x ) f(\bm x) f(x)以最大速率下降;
(2) 在梯度正方向,函数 f ( x ) f(\bm x) f(x)以最大速率上升。
方向导数和梯度向量关系密切,方向导数的最大值为梯度向量的模长 ∥ ∇ x f ( x ) ∥ 2 \|\nabla_\bm xf(\bm x)\|_2 xf(x)2,日后有机会可以一说。

更加广义的表达方式对比实值矩阵函数 F ( X ) \bm F(\bm X) F(X)的梯度矩阵和Jacobian矩阵:
∇ X F ( X ) = ∂ v e c T F ( X ) ∂ v e c X = ( ∂ v e c F ( X ) ∂ v e c T X ) T = ( D X F ( X ) ) T \nabla_\bm X \bm F(\bm X)=\frac{\partial vec^T\bm F(\bm X)}{\partial vec \bm X}=\left(\frac{\partial vec\bm F(\bm X)}{\partial vec^T\bm X}\right)^T=\left(D_\bm X\bm F(\bm X)\right)^T XF(X)=vecXvecTF(X)=(vecTXvecF(X))T=(DXF(X))T
其中: ∂ v e c X \partial vec \bm X vecX表示将自变量矩阵 X \bm X X转化为列向量,转化的方式是按列顺次拼接,最终以的形式铺陈; ∂ v e c T F ( X ) \partial vec^T \bm F(\bm X) vecTF(X)表示将实值矩阵函数 F ( X ) \bm F(\bm X) F(X)转化为行向量,转化的方式依旧按列顺次拼接,最终以的形式铺陈。其他同理。

总之,矩阵函数的梯度矩阵是其Jacobian矩阵的转置【Transposition】。

你可能感兴趣的:(机器学习数学原理)