视觉惯性单目SLAM (五)矩阵微积分

1. 基本概念

  • 矩阵微积分:Matrix Calculus

  • 线

  • 矩阵函数(包括向量函数)对标量的导数:等于它的各个元素对标量的导数,且是同阶的矩阵

  • 张量积( Kronecker product of matrices ⊗ ; a.k.a, tensor product.)

    ARm×n,BRp×q

    BA=B11AB21ABp1AB12AB22ABp2AB1qAB2qABpqARpm×qn

  • 阿达玛积(Hadamard product:
    ARm×n,BRm×n

    AB=[aijbij]

1.1 常用求导操作

  • (aTx)x=a

  • (aTxb)x=abT

  • (aTxTb)x=baT

  • Gradient and Hessian

    • f(x)=xTAx+bTx

    • 梯度:

      xf=fx=(A+AT)x+b

    • 海森矩阵:

      2fxxT=A+AT

  • 基本规则

    • A=0(A)

    • (X+Y)=X+Y

    • (αX)=αX

  • 乘法规则

    • (XY)=(X)Y+X(Y)

    • (XY)=(X)Y+X(Y)

    • (XY)=(X)Y+X(Y)

  • 行列式的导数(Derivatives of Determinants)

    • (det(X))=det(X)tr(X1(X))

    • (ln(det(X)))=tr(X1(X)

  • 链式法则(The Chain Rule)

    • 设:
      U=f(X)

      则:
      g(U)X=g(f(X))X
    • 链式法则为:
      g(U)xij=k=1ml=1ng(U)ukluklxij

      g(U)Xij=tr[(g(U)U)TUXij]
  • 迹的导数(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(y,列向量 m×1) Matrix(Y) m×n
Scalar(x) dydx dydx=[yix]m×1(y) dYdx=[yijx]m×n(线)
Vector(x)
(列向量 n×1)
dydx=[yxj]1×n() dydx=[yixj]m×n()
Matrix(X)
(m×n)
dydX=[yxji]n×m()

2.1 向量对标量求导(Vector-by-scalar)

  • yyix,简称:向量函数(Vector Function)
    y=y1y2ym
  • x

  • dydx

    dydx=y1xy2xymx

  • dydx表示向量y的切向量(tangent vector)

  • yR1Rm

2.2 标量对向量求导(梯度:Scalar-by-vector)

  • RnR1
  • y

  • x

    x=x1x2xn

  • dydxGradeint
    y(x)=y=dydx=[yx1,yx2,,yxn]
  • :它表示一个标量场在空间Rn中的梯度(Gradient),在物理学中,电场是电势的矢量梯度。

2.2.1 梯度(Gradient)

  • :对于一个可微的、多变量的实值函数f(x1,x2,,xn),其梯度是一个向量,且向量的元素为fxi(x)

    gradf=f(x)=f=[fx1,fx2,,fxn]

  • :依据具体使用环境而定

  • :
    这里写图片描述
    这里写图片描述

  • Jacobian: Jacobian矩阵是1个具有n个变量的向量函数的梯度的推广。即一个多变量的实值函数求偏导生成一个梯度向量,而m个多变量的实值函数求偏导生成一个Jacobian矩阵(由多个梯度行向量组成)。

  • f:RnR1:GradientVector

  • f:RnRm:JacobianMatrix

  • :表示在梯度方向变化的快慢,即陡峭程度(长度越大,变化越大)

  • :表示在指定点最陡的方向(即切线斜率最大的方向)

  • x0fx/

2.2.2 方向导数(Directionial Derivative)

  • 梯度向量方向表示最陡的方向,方向导数描述指定方向的陡峭程度(如爬山,沿着最陡的方向可能比较困难,选一个合适的陡峭的路上山比较可行)

  • directionalderivative:空间矢量x的标量函数fx在单位向量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)=limh0f(x+hv)f(x)h,h

    • 如果函数fx处可微,则沿着任意向量v的方向导数都存在,且为:

      vf(x)=f(x)v

    • 一个多元的可微函数在点x处沿着向量v方向的方向导数的物理含义:当以速度v移动通过点x时,f相对于时间(t)的瞬时变化率
    • 求和规则(sum rule):
      v(f+g)=vf+vg
    • 常数因子规则(constant factor rule: c为任意常数):
      v(cf)=cvf
    • 乘法规则(product rule):
      v(fg)=gvf+fvg
    • 链式法则(chain rule):如果g在点p处可微,且hg(p)处可微,则有:
      v(hg)(p)=h(g(p))vg(p)

2.3 向量对向量求导(Vector-by-vector)

  • y(Vector Function):向量的元素为输入向量x函数(因变量)

    y=y1y2ym

  • x(Input Vector):向量的元素的自变量

    x=x1x2xn

  • dydxJacobianMatrix
    dydx=y1x1y2x1ymx1y1x2y2x2ymx2y1xny2xnymxn
  • 向量函数对向量的导数表示:推进(或差),或雅可比矩阵(pushforward (or differential), or the Jacobian matrix.)。

2.3.1 雅可比矩阵(Jacobian Matrix)

  • :向量值函数对所有自变量的一阶偏导数生成的矩阵为Jacobian Matrix
  • f:RnRm,xRn,f(x)RmfJacobianJm×n
    x=x1xn,f=f1fm

    Jf(x)=J=[fx1fxn]=f1x1fmx1f1xnfmxn

  • Jf=Jf(x)=J=Df=(f1,,fm)(x1,,xn)

  • Jij=fixj
  • :如果向量函数f在点x可微,Jacobian Matrix定义了从RnRm的线性变换,且x线

  • m=1,rowvectorf(x)

    • 对于多变量标量值函数变为:梯度
    • 对于单变量标量值函数变为:导数
    • 对于多变量向量值函数变为:Jacobian Matrix
    • 可用于描述强加给图像局部的拉伸、旋转、平移变换
    • (x,y)=f(x,y)Jf(x,y)xy
  • 线

    • pRnfpJf(p)线Jf(p)p线
      f(x)=f(p)+Jf(p)(xp)+o(||xp||)
    • xp,||xp||xp
    • 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
  • 线
    这里写图片描述

2.4 矩阵对标量求导(Matrix-by-scalar)

  • :可用于解决最小化问题
  • Y:Matrix function (矩阵的元素为自变量x的函数 )
    Y=y11y21ym1y12y22ym2y1ny2nymn
  • x

  • 线tangentmatrix

dYdx=y11xy21xym1xy12xy22xym2xy1nxy2nxymnx

2.5 标量对矩阵求导(Scalar-by-matrix)

  • :可用于解决最小化问题,如Kalmanfilter
  • y
  • X
    X=x11x21xm1x12x22xm2x1nx2nxmn
  • yXgradientmatrix
    Xy(X)=dydX=yx11yx12yx1nyx21yx22yx2nyxm1yxm2yxmn
  • f(X)
    • f(X):其自变量为矩阵X
    • f(X)在矩阵Y方向的方向导数为:
      Yf=tr(dfdXY),tr

3. 标量对向量的二阶求导(海森矩阵)


    • Hessian Matrix是一个多变量标量值函数的二阶偏导组成的方阵
    • f:RnR,xRn,f(x)RfHn×n
      H=2fx1x12fx2x12fxnx12fx1x22fx2x22fxnx22fx1xn2fx2xn2fxnxn
    • 元素法表示为:
      Hij=2fxixj

    • 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
      H(f(x))=J(f(x))T
  • Hessian
    • 就是形容其在该点附近特征向量方向的凹凸性,特征值越大,凸性越强。
  • Hessiann×n:

    • 由于二阶导数具有对称性,即:
      xi(fxj)=xj(fxi)
    • 所以有:
      H=HT
  • Criticalpoints/St