1. 基本概念
矩阵微积分:Matrix Calculus
微积分的核心思想:局部线性化
矩阵函数(包括向量函数)对标量的导数:等于它的各个元素对标量的导数,且是同阶的矩阵
张量积( Kronecker product of matrices ⊗ ; a.k.a, tensor product.)
A∈Rm×n,B∈Rp×q
B⊗A=⎡⎣⎢⎢⎢⎢⎢B11AB21A⋮Bp1AB12AB22A⋮Bp2A⋯⋯⋱⋯B1qAB2qA⋮BpqA⎤⎦⎥⎥⎥⎥⎥∈Rpm×qn- 阿达玛积(Hadamard product:
∘
)
A∈Rm×n,B∈Rm×n
A∘B=[aij∗bij]
1.1 常用求导操作
- ∂(aTx)∂x=a
- ∂(aTxb)∂x=abT
- ∂(aTxTb)∂x=baT
Gradient and Hessian
- f(x)=xTAx+bTx
梯度:
∇xf=∂f∂x=(A+AT)x+b海森矩阵:
∂2f∂x∂xT=A+AT
基本规则
∂A=0(A是常量)
∂(X+Y)=∂X+∂Y
∂(αX)=α∂X
乘法规则
∂(X∘Y)=(∂X)∘Y+X∘(∂Y)
∂(XY)=(∂X)Y+X(∂Y)
∂(X⊗Y)=(∂X)⊗Y+X⊗(∂Y)
行列式的导数(Derivatives of Determinants)
- ∂(det(X))=det(X)tr(X−1(∂X))
- ∂(ln(det(X)))=tr(X−1(∂X)
链式法则(The Chain Rule)
- 设:
U=f(X)
则:∂g(U)∂X=∂g(f(X))∂X - 链式法则为:
∂g(U)∂xij=∑k=1m∑l=1n∂g(U)∂ukl∂ukl∂xij
∂g(U)∂Xij=tr[(∂g(U)∂U)T∂U∂Xij]
- 设:
迹的导数(Derivatives of Traces)
函数 f 是函数
F 的标量导数(f() is the scalar derivative of F())- ∂tr(F(X)∂X=f(X)T
-
∂∂Xtr(XA)=AT
-
∂∂Xtr(AXB)=ATBT
-
∂∂Xtr(AXTB)=BA
-
∂∂Xtr(XTA)=A
-
∂∂Xtr(X2)=2XT
- 弗罗伯尼范数求导(Derivatives of Frobenius Norm)
- 弗罗伯尼范数:
||A||F=∑ij|Aij|2−−−−−−−−√=tr(AAH)−−−−−−−√
- 导数:
∂∂X||X||2F=2X=∂∂Xtr(XXH)
- 弗罗伯尼范数:
1.2 导数公式
2. 矩阵一阶求导规则汇总
偏导数/偏微分:Partial Derivatives
矩阵导数:Matrix Derivatives
自变量(independent variable):可以为标量(Scalar)、向量(Vector)、矩阵(Matrix)
因变量(dependent variable):可以为标量(Scalar)、向量(Vector)、矩阵(Matrix)
行:为因变量类型( y,y,Y 函数类型)
列:为自变量类型( x,x,X )
下表中, i 代表行, j 代表列
向量: 是一个只有一列的矩阵
因变量向量/标量的维数:决定导数的行数
自变量向量/标量的维数:决定导数的列数
下表中使用 dd与∂∂意思相同
类型 | Scalar( y ) | Vector( | Matrix(
Y
) |
---|---|---|---|
Scalar( x ) | dydx=[∂yi∂x]m×1 ( 向量y的切向量 ) | dYdx=[∂yij∂x]m×n ( 切线矩阵 ) | |
Vector(
x
) (列向量 n×1 ) | dydx=[∂y∂xj]1×n ( 梯度行向量 ) | dydx=[∂yi∂xj]m×n ( 雅可比矩阵) | |
Matrix(
X
) ( | dydX=[∂y∂xji]n×m ( 梯度矩阵 ) |
2.1 向量对标量求导(Vector-by-scalar)
-
向量y:向量中每个元素yi为自变量x的函数
,简称:向量函数(Vector Function)
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥ 标量x
向量对标量求导:dydx
dydx=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂ym∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥几何意义 : dydx 表示向量 y 的切向量(tangent vector)
映射 : y:R1→Rm
2.2 标量对向量求导(梯度:Scalar-by-vector)
- 映射:Rn→R1
求导结果:梯度
标量y
向量x
x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥-
标量对向量求导:dydx,其结果为梯度(Gradeint)
∇y(x)=∇y=dydx=[∂y∂x1,∂y∂x2,⋯,∂y∂xn] - 几何意义 :它表示一个标量场在空间 Rn 中的梯度( Gradient ),在物理学中,电场是电势的矢量梯度。
2.2.1 梯度(Gradient)
梯度定义 :对于一个可微的、多变量的实值函数 f(x1,x2,⋯,xn) ,其梯度是一个向量,且向量的元素为 ∂f∂xi(x),上体定义如下:
gradf=∇f(x)=∇f=[∂f∂x1,∂f∂x2,⋯,∂f∂xn]梯度是行向量还是列向量? :依据具体使用环境而定
图片的梯度表示:
Jacobian矩阵与梯度的关系: Jacobian矩阵是1个具有n个变量的向量函数的梯度的推广。即一个多变量的实值函数求偏导生成一个梯度向量,而m个多变量的实值函数求偏导生成一个Jacobian矩阵(由多个梯度行向量组成)。
f:Rn→R1:求偏导生成(梯度向量GradientVector)
f:Rn→Rm:求偏导生成(雅可比矩阵JacobianMatrix)
梯度向量的长度 :表示在梯度方向变化的快慢,即陡峭程度(长度越大,变化越大)
梯度向量的方向 :表示在指定点最陡的方向(即切线斜率最大的方向)
如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)
2.2.2 方向导数(Directionial Derivative)
梯度向量方向表示最陡的方向,方向导数描述指定方向的陡峭程度(如爬山,沿着最陡的方向可能比较困难,选一个合适的陡峭的路上山比较可行)
方向导数用梯度表示(directionalderivative) :空间矢量 x 的标量函数 f(x) 在单位向量 v 方向上的方向导数用梯度定义如下:
∇vf(x)=∇f(x)⋅v
∇vf(x):方向导数;∇f(x):为函数f(x)的梯度;(⋅):为点乘(dotproduct)
或简记为:∇vf=dfdxv方向导数(是一个标量<一个数>)的定义 :
- 标量函数
f(x)
f(x)=f(x1,x2,⋯,xn) - 沿着向量
v
方向
v=[v1,v2,⋯,vn] 的 方向导数 定义为:
∇vf(x)=limh→0f(x+hv)−f(x)h,h为标量如果函数 f 点
x 处可微,则沿着任意向量 v 的方向导数都存在,且为:
∇vf(x)=∇f(x)⋅v
- 标量函数
f(x)
方向导数的意义 :
- 一个多元的可微函数在点
x
处沿着向量
v
方向的方向导数的物理含义:当以速度
v
移动通过点
x
时,
f
相对于时间
(t) 的瞬时变化率
- 一个多元的可微函数在点
x
处沿着向量
v
方向的方向导数的物理含义:当以速度
v
移动通过点
x
时,
f
相对于时间
方向导数的性质 :
- 求和规则(sum rule):
∇v(f+g)=∇vf+∇vg - 常数因子规则(constant factor rule:
c
为任意常数):
∇v(cf)=c∇vf - 乘法规则(product rule):
∇v(fg)=g∇vf+f∇vg - 链式法则(chain rule):如果
g
在点
p 处可微,且 h 在g(p) 处可微,则有:
∇v(h∘g)(p)=h′(g(p))∇vg(p)
- 求和规则(sum rule):
2.3 向量对向量求导(Vector-by-vector)
向量函数y (Vector Function):向量的元素为输入向量 x的 函数(因变量)
y=⎡⎣⎢⎢⎢⎢y1y2⋯ym⎤⎦⎥⎥⎥⎥输入向量x (Input Vector):向量的元素的自变量
x=⎡⎣⎢⎢⎢x1x2⋯xn⎤⎦⎥⎥⎥-
向量对向量求导:dydx,其结果为雅可比矩阵(JacobianMatrix)
dydx=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂ym∂x1∂y1∂x2∂y2∂x2⋮∂ym∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥ - 向量函数对向量的导数表示:推进(或差),或雅可比矩阵(pushforward (or differential), or the Jacobian matrix.)。
- 向量对标量求导、标量对向量求导:是向量对向量求导的特例 。
2.3.1 雅可比矩阵(Jacobian Matrix)
- 定义 :向量值函数对所有自变量的一阶偏导数生成的矩阵为Jacobian Matrix
-
f:Rn→Rm,x∈Rn,f(x)∈Rm,函数f的Jacobian是Jm×n
:
x=⎡⎣⎢⎢x1⋮xn⎤⎦⎥⎥,f=⎡⎣⎢⎢f1⋮fm⎤⎦⎥⎥
Jf(x)=J=[∂f∂x1⋯∂f∂xn]=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂f1∂x1⋮∂fm∂x1⋯⋱⋯∂f1∂xn⋮∂fm∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥ -
所有表示方法
:
Jf=Jf(x)=J=Df=∂(f1,⋯,fm)∂(x1,⋯,xn) -
矩阵元素法表示为
:
Jij=∂fi∂xj 雅可比矩阵的重要性 :如果向量函数 f 在点
x 可微,Jacobian Matrix定义了从 Rn→Rm 的线性变换,且 是向量函数在点x附近最好的线性近似 。如果m=1,向量函数只有一个函数,此雅可比矩阵变为一个行向量(rowvector),即梯度∇f(x)
雅可比矩阵与梯度和导数的关系 :
- 对于多变量标量值函数变为:梯度
- 对于单变量标量值函数变为:导数
- 对于多变量向量值函数变为:Jacobian Matrix
用于局部变换 :
- 可用于描述强加给图像局部的拉伸、旋转、平移变换
- 如 (x′,y′)=f(x,y)用于变换一个图像,则Jf(x,y)则描述了(x,y)邻域像素是如何变换的
最好的局部线性近似 :
-
若p是Rn中一点,则f在点p可微,其偏导数为Jf(p),则线性变换Jf(p)是点p附近最好的线性近似,即
f(x)=f(p)+Jf(p)(x−p)+o(||x−p||) - 当 x→p,||x−p||是x与p间的距离
-
若p是Rn中一点,则f在点p可微,其偏导数为Jf(p),则线性变换Jf(p)是点p附近最好的线性近似,即
海森矩阵的来源 :
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
-
非线性变换实例图
2.4 矩阵对标量求导(Matrix-by-scalar)
- 用途 :可用于解决最小化问题
-
矩阵函数Y
:Matrix function (矩阵的元素为自变量
x
的函数 )
Y=⎡⎣⎢⎢⎢⎢⎢y11y21⋮ym1y12y22⋮ym2⋯⋯⋱⋯y1ny2n⋮ymn⎤⎦⎥⎥⎥⎥⎥ 标量x
矩阵对标量的导数(切线矩阵tangentmatrix)
2.5 标量对矩阵求导(Scalar-by-matrix)
- 用途 :可用于解决最小化问题,如 Kalmanfilter 。
- 标量函数y
-
矩阵自变量X
X=⎡⎣⎢⎢⎢⎢⎢x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn⎤⎦⎥⎥⎥⎥⎥ -
标量y对矩阵X求导,其结果为梯度矩阵(gradientmatrix)
∇Xy(X)=dydX=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1n∂y∂x21∂y∂x22⋮∂y∂x2n⋯⋯⋱⋯∂y∂xm1∂y∂xm2⋮∂y∂xmn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥ -
标量函数f(X)的方向导数
:
- f(X):其自变量为矩阵X
- f(X)在矩阵Y方向的方向导数为:
∇Yf=tr(dfdXY),tr为矩阵的迹
3. 标量对向量的二阶求导(海森矩阵)
-
定义
:
- Hessian Matrix是一个多变量标量值函数的二阶偏导组成的方阵
- 几何意义:它描述了多变量函数的局部曲率
-
f:Rn→R,x∈Rn,f(x)∈R,如果函数f的二阶偏导数存在且在函数域内连续,则Hn×n为:
H=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x1∂x1∂2f∂x2∂x1⋮∂2f∂xn∂x1∂2f∂x1∂x2∂2f∂x2∂x2⋮∂2f∂xn∂x2⋯⋯⋱⋯∂2f∂x1∂xn∂2f∂x2∂xn⋮∂2f∂xn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥ - 元素法表示为:
Hij=∂2f∂xi∂xj
-
海森矩阵的来源
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
H(f(x))=J(∇f(x))T
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
-
Hessian矩阵的特征值
:
- 就是形容其在该点附近特征向量方向的凹凸性,特征值越大,凸性越强。
Hessian矩阵是n×n方阵,且是对称矩阵 :
- 由于二阶导数具有对称性,即:
∂∂xi(∂f∂xj)=∂∂xj(∂f∂xi) - 所以有:
H=HT
- 由于二阶导数具有对称性,即:
Criticalpoints/Stationarypoint(临界点/驻点)
- 如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)
- 在点 x 处的海森矩阵的行列式被称为:判别式(discriminant)
- 如果此判别式为
0 ,则点 x 被称为:函数f 的退化临界点(degenerate critical point)或非莫尔斯临界点(non-Morse critical point) - 如果此判别式不为
0
,则点
x 被称为:函数 f 非退化临界点的(non-degenerate)或莫尔斯临界点 (Morse critical point )
用途 :- 海森矩阵在莫尔斯理论(Morse theory)和突变理论(catastrophe theory)中具有重要作用,因为它的内核和特征值可以对临界点进行分类
海森矩阵的性质 :
- 凸函数的Hessian Matrix是半正定的(positive semi-definite(M为对称,对于任意列向量z,有 zTMz≥0 ))
- 如果Hessian矩阵在点
x
是正定的(positive definite (M为对称,对于任意列向量z,有
zTMz>0 )),则 x 是f 的孤立局部极小值点 - 如果Hessian矩阵在点
x
是负定的(negative definite (M为对称,对于任意列向量z,有
zTMz<0 )),则 x 是f 的孤立局部极大值点 - 如果Hessian矩阵有正的和负的特征值,则x是f的一个鞍点(saddle point)
4. 导数 VS 梯度 VS 雅可比矩阵 VS 海森矩阵四者的关系
映射 | 函数类型 | 一阶求导 | 二阶求导 |
---|---|---|---|
f:R1→R1 | 标量值函数 | 导数 | 0 |
f:Rn→R1 | 标量值函数 | 梯度 | 海森矩阵 |
f:Rn→Rm | 向量值函数 | 雅可比矩阵 |
参考:
1)https://en.wikipedia.org/wiki/Matrix_calculus
2)http://select.cs.cmu.edu/class/10725-S10/recitations/r4/Matrix_Calculus_Algebra.pdf
3)https://ccrma.stanford.edu/~dattorro/matrixcalc.pdf
4)http://www.janmagnus.nl/misc/mdc2007-3rdedition