标量:常规小写字母;
向量:加粗的小写字母: x = [ x 1 , ⋯   , x m ] T ∈ R m \bm x=[x_1,\cdots,x_m]^T \in \mathbb{R}^m x=[x1,⋯,xm]T∈Rm ;
实矩阵:加粗的大写字母: 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]T∈Rm×n
函数的表示亦是如此,打字费劲,不做演示,小写 f f f表示标量scalar函数,小写粗体 f \bm f f表示列向量函数,大写粗体 F \bm F F表示矩阵函数。
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=def∂xT∂=(∂x1∂,⋯,∂xm∂)
由此可以看出,Jacobian矩阵的核心在于,当求偏导时:
所以,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=def∂x∂=(∂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)=def∂x∂f(x)=(∂x1∂f(x),⋯,∂xm∂f(x))T
由此可知:梯度矩阵的核心是:
更加广义的表达方式对比实值矩阵函数 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)=∂vecX∂vecTF(X)=(∂vecTX∂vecF(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】。