视觉惯性单目SLAM (五)矩阵微积分
1. 基本概念
矩阵微积分:Matrix Calculus
微积分的核心思想:局部线性化\color {red}{微积分的核心思想:局部线性化}
矩阵函数(包括向量函数)对标量的导数:等于它的各个元素对标量的导数,且是同阶的矩阵
张量积( Kronecker product of matrices ⊗ ; a.k.a, tensor product.)
A∈Rm×n,B∈Rp×qA \in R^{m \times n}, \quad B \in R^{p \times q}
B⊗A=⎡⎣⎢⎢⎢⎢⎢B11AB21A⋮Bp1AB12AB22A⋮Bp2A⋯⋯⋱⋯B1qAB2qA⋮BpqA⎤⎦⎥⎥⎥⎥⎥∈Rpm×qnB \otimes A = \begin{bmatrix} B_{11}A & B_{12}A & \cdots & B_{1q}A \\ B_{21}A & B_{22}A & \cdots & B_{2q}A \\ \vdots & \vdots & \ddots & \vdots \\ B_{p1}A & B_{p2}A & \cdots & B_{pq}A \\ \end{bmatrix} \in R^{pm \times qn}
- 阿达玛积(Hadamard product: ∘\circ)
A∈Rm×n,B∈Rm×n
A \in R^{m \times n}, \quad B \in R^{m \times n}
A∘B=[aij∗bij]A \circ B = [a_{ij} * b_{ij}]
1.1 常用求导操作
- ∂(aTx)∂x=a
\frac {\partial \;( a^T \mathbf x)} {\partial \mathbf x} =a
- ∂(aTxb)∂x=abT
\frac {\partial \;(a^T \mathbf x b)}{\partial \mathbf x} = ab^T
- ∂(aTxTb)∂x=baT
\frac {\partial \;(a^T \mathbf x^T b)}{\partial \mathbf x} = ba^T
Gradient and Hessian
- f(x)=xTAx+bTx
f(\mathbf x) = \mathbf x^T A \mathbf x + b^T \mathbf x
梯度:
∇xf=∂f∂x=(A+AT)x+b\nabla_{\mathbf x}f = \frac {\partial f}{\partial \mathbf x} = (A+A^T) \mathbf x + b
海森矩阵:
∂2f∂x∂xT=A+AT\frac {\partial ^2f}{\partial \mathbf x \partial \mathbf x^T} = A+A^T
基本规则
∂A=0(A是常量)\partial A = 0 \quad (A是常量)
∂(X+Y)=∂X+∂Y\partial (X + Y) = \partial X +\partial Y
∂(αX)=α∂X\partial (\alpha X) = \alpha \; \partial X
乘法规则
∂(X∘Y)=(∂X)∘Y+X∘(∂Y)\partial (X \circ Y) = (\partial X) \circ Y + X \circ (\partial Y)
∂(XY)=(∂X)Y+X(∂Y)\partial (XY) = (\partial X) Y + X (\partial Y)
∂(X⊗Y)=(∂X)⊗Y+X⊗(∂Y)\partial (X \otimes Y) = (\partial X) \otimes Y + X \otimes (\partial Y)
行列式的导数(Derivatives of Determinants)
- ∂(det(X))=det(X)tr(X−1(∂X))
\partial (det(X)) = det(X) \; tr(X^{-1} (\partial X))
- ∂(ln(det(X)))=tr(X−1(∂X)
\partial (ln(det(X))) = tr(X^{-1} \; (\partial X)
链式法则(The Chain Rule)
- 设:
U=f(X)
U = f(X)
则:∂g(U)∂X=∂g(f(X))∂X\frac {\partial g(U)}{\partial X} = \frac {\partial g(f(X))}{\partial X}
- 链式法则为:
∂g(U)∂xij=∑k=1m∑l=1n∂g(U)∂ukl∂ukl∂xij
\frac {\partial g(U)}{\partial x_{ij}} = \sum_{k=1}^m\sum_{l=1}^n \frac {\partial g(U)}{\partial u_{kl}} \frac {\partial u_{kl}}{\partial x_{ij}}
∂g(U)∂Xij=tr[(∂g(U)∂U)T∂U∂Xij]\frac {\partial g(U)}{\partial X_{ij}} = tr[ (\frac {\partial g(U)}{\partial U})^T \frac {\partial U}{\partial X_{ij}}]
- 设:
迹的导数(Derivatives of Traces)
函数ff是函数FF的标量导数(f() is the scalar derivative of F())
- ∂tr(F(X)∂X=f(X)T
\frac {\partial tr(F(X)}{\partial X} = f(X)^T
- ∂∂Xtr(XA)=AT
\frac {\partial}{\partial X} tr(XA) = A^T
- ∂∂Xtr(AXB)=ATBT
\frac {\partial}{\partial X} tr(AXB) = A^TB^T
- ∂∂Xtr(AXTB)=BA
\frac {\partial}{\partial X} tr(AX^TB) = BA
- ∂∂Xtr(XTA)=A
\frac {\partial}{\partial X} tr(X^TA) = A
- ∂∂Xtr(X2)=2XT
\frac {\partial}{\partial X} tr(X^2) = 2X^T
- 弗罗伯尼范数求导(Derivatives of Frobenius Norm)
- 弗罗伯尼范数:
||A||F=∑ij|Aij|2−−−−−−−−√=tr(AAH)−−−−−−−√
||A||_F = \sqrt{\sum_{ij}|A_{ij}|^2} = \sqrt{tr(AA^H)}
- 导数:
∂∂X||X||2F=2X=∂∂Xtr(XXH)
\frac {\partial}{\partial X}||X||_F^2 = 2X = \frac {\partial}{\partial X}tr(XX^H)
- 弗罗伯尼范数:
1.2 导数公式
2. 矩阵一阶求导规则汇总
偏导数/偏微分:Partial Derivatives
矩阵导数:Matrix Derivatives
自变量(independent variable):可以为标量(Scalar)、向量(Vector)、矩阵(Matrix)
因变量(dependent variable):可以为标量(Scalar)、向量(Vector)、矩阵(Matrix)
行:为因变量类型(y,y,Yy, \mathbf y, Y函数类型)
列:为自变量类型(x,x,Xx, \mathbf x, X)
下表中,ii\;代表行,jj\;代表列
向量: 是一个只有一列的矩阵
因变量向量/标量的维数:决定导数的行数
自变量向量/标量的维数:决定导数的列数
下表中使用dd与∂∂意思相同\frac {d}{d}与 \frac{\partial}{\partial}意思相同
类型 | Scalar(yy) | Vector(y\mathbf y,列向量 m×1m \times 1) | Matrix(YY) m×nm \times n |
---|---|---|---|
Scalar(xx) | dydx\frac {dy}{dx} | dydx=[∂yi∂x]m×1\frac {d \mathbf y}{dx} = \begin{bmatrix} \frac {\partial y_i}{\partial x}\end{bmatrix}_{m \times 1}(向量y的切向量\color {red}{向量y的切向量}) | dYdx=[∂yij∂x]m×n\frac {dY}{dx} = \begin{bmatrix} \frac {\partial y_{ij}}{\partial x}\end{bmatrix}_{m \times n}(切线矩阵\color {red}{切线矩阵}) |
Vector(x\mathbf x) (列向量 n×1n \times 1) |
dydx=[∂y∂xj]1×n\frac {dy}{d \mathbf x} = \begin{bmatrix} \frac {\partial y}{\partial x_j}\end{bmatrix}_{1 \times n}(梯度行向量\color {red}{梯度行向量}) | dydx=[∂yi∂xj]m×n\frac {d \mathbf y}{d \mathbf x} = \begin{bmatrix} \frac {\partial y_i}{\partial x_j}\end{bmatrix}_{m \times n}(雅可比矩阵)\color {red}{雅可比矩阵)} | |
Matrix(XX) (m×nm \times n) |
dydX=[∂y∂xji]n×m\frac {dy}{dX} = \begin{bmatrix} \frac {\partial y}{\partial x_{ji}}\end{bmatrix}_{\color {red}{n \times m}}(梯度矩阵\color {red}{梯度矩阵}) |
2.1 向量对标量求导(Vector-by-scalar)
- 向量y:向量中每个元素yi为自变量x的函数\color {red}{向量\mathbf y: 向量中每个元素y_i为自变量x的函数},简称:向量函数(Vector Function)
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥
\mathbf y = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix}
标量x\color {red}{标量x}
向量对标量求导:dydx\color {red}{向量对标量求导:\frac {d \mathbf y}{dx}}
dydx=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂ym∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥\frac {d \mathbf y}{dx} = \begin{bmatrix} \frac {\partial y_1}{\partial x} \\ \frac {\partial y_2}{\partial x} \\ \vdots \\ \frac {\partial y_m}{\partial x} \end{bmatrix}
几何意义\color {red}{几何意义}:dydx\frac {d \mathbf y}{dx}表示向量y\mathbf y的切向量(tangent vector)
映射\color {red}{映射}:y:R1→Rm\mathbf y:R^1 \to R^m
2.2 标量对向量求导(梯度:Scalar-by-vector)
- 映射:Rn→R1\color {red}{映射:R^n \to R^1}
求导结果:梯度\color {red}{求导结果:梯度}
标量y\color {red}{标量 y}
向量x\color {red}{向量 \mathbf x}
x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥\mathbf x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}
- 标量对向量求导:dydx,其结果为梯度(Gradeint)\color {red}{标量对向量求导:\frac {dy}{d \mathbf x},其结果为梯度(Gradeint)}
∇y(x)=∇y=dydx=[∂y∂x1,∂y∂x2,⋯,∂y∂xn]
\nabla y(x) = \nabla y = \frac {dy}{d \mathbf x} = \begin{bmatrix} \frac {\partial y}{\partial x_1}, \frac {\partial y}{\partial x_2}, \cdots, \frac {\partial y}{\partial x_n} \end{bmatrix}
- 几何意义\color {red}{几何意义}:它表示一个标量场在空间RnR^n中的梯度(GradientGradient),在物理学中,电场是电势的矢量梯度。
2.2.1 梯度(Gradient)
梯度定义\color {red}{梯度定义}:对于一个可微的、多变量的实值函数f(x1,x2,⋯,xn)f(x_1, x_2, \cdots, x_n),其梯度是一个向量,且向量的元素为∂f∂xi(x),上体定义如下:\frac {\partial f}{\partial x_i}(x),上体定义如下:
gradf=∇f(x)=∇f=[∂f∂x1,∂f∂x2,⋯,∂f∂xn]grad \; f =\nabla f(x) =\nabla f = \begin{bmatrix} \frac {\partial f}{\partial x_1}, \frac {\partial f}{\partial x_2}, \cdots, \frac {\partial f}{\partial x_n} \end{bmatrix}
梯度是行向量还是列向量?\color {red}{梯度是行向量还是列向量?}:依据具体使用环境而定
图片的梯度表示:\color {red}{图片的梯度表示:}
Jacobian矩阵与梯度的关系:\color {red}{Jacobian矩阵与梯度的关系:} Jacobian矩阵是1个具有n个变量的向量函数的梯度的推广。即一个多变量的实值函数求偏导生成一个梯度向量,而m个多变量的实值函数求偏导生成一个Jacobian矩阵(由多个梯度行向量组成)。
f:Rn→R1:求偏导生成(梯度向量GradientVector)\color {red}{f:R^n \to R^1: 求偏导生成(梯度向量 Gradient \; Vector)}
f:Rn→Rm:求偏导生成(雅可比矩阵JacobianMatrix)\color {red}{f:R^n \to R^m: 求偏导生成(雅可比矩阵 Jacobian \; Matrix)}
梯度向量的长度\color {red}{梯度向量的长度}:表示在梯度方向变化的快慢,即陡峭程度(长度越大,变化越大)
梯度向量的方向\color {red}{梯度向量的方向}:表示在指定点最陡的方向(即切线斜率最大的方向)
如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)\color {red}{如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)}
2.2.2 方向导数(Directionial Derivative)
梯度向量方向表示最陡的方向,方向导数描述指定方向的陡峭程度(如爬山,沿着最陡的方向可能比较困难,选一个合适的陡峭的路上山比较可行)
方向导数用梯度表示(directionalderivative)\color {red}{方向导数用梯度表示(directional \; derivative)}:空间矢量x\mathbf x的标量函数f(x)f(\mathbf x)在单位向量v\mathbf v方向上的方向导数用梯度定义如下:
∇vf(x)=∇f(x)⋅v\nabla_{\mathbf v} f(\mathbf x) = \nabla f(\mathbf x) \cdot \mathbf v
∇vf(x):方向导数;∇f(x):为函数f(x)的梯度;(⋅):为点乘(dotproduct) \color {red}{\nabla_{\mathbf v} f(\mathbf x):方向导数; \quad \nabla f(\mathbf x):为函数f(x)的梯度;\quad (\cdot):为点乘(dot \; product) }
或简记为:∇vf=dfdxv\nabla_{\mathbf v} f= \frac {df}{d \mathbf x} \mathbf v
方向导数(是一个标量<一个数>)的定义\color {red}{方向导数(是一个标量)的定义}:
- 标量函数f(x)f(\mathbf x)
f(x)=f(x1,x2,⋯,xn)
f(\mathbf x) = f(x_1, x_2, \cdots, x_n)
- 沿着向量v\mathbf v方向
v=[v1,v2,⋯,vn]
\mathbf v = \begin{bmatrix} v_1, v_2, \cdots, v_n \end{bmatrix}
的方向导数\color {red}{方向导数}定义为:
∇vf(x)=limh→0f(x+hv)−f(x)h,h为标量\nabla_{\mathbf v} f(\mathbf x) = \lim_{h \to 0} \frac {f(\mathbf x + h \mathbf v) - f(\mathbf x)}{h}, \quad h为标量
如果函数ff点x\mathbf x处可微,则沿着任意向量v\mathbf v的方向导数都存在,且为:
∇vf(x)=∇f(x)⋅v\nabla_{\mathbf v} f(\mathbf x) = \nabla f(\mathbf x) \cdot \mathbf v
- 标量函数f(x)f(\mathbf x)
方向导数的意义\color {red}{方向导数的意义}:
- 一个多元的可微函数在点x\mathbf x处沿着向量v\mathbf v方向的方向导数的物理含义:当以速度v\mathbf v移动通过点x\mathbf x时,ff相对于时间(t)(t)的瞬时变化率
方向导数的性质\color {red}{方向导数的性质}:
- 求和规则(sum rule):
∇v(f+g)=∇vf+∇vg
\nabla_{\mathbf v}(f+g) = \nabla_{\mathbf v}f + \nabla_{\mathbf v}g
- 常数因子规则(constant factor rule: cc为任意常数):
∇v(cf)=c∇vf
\nabla_{\mathbf v}(cf) = c\nabla_{\mathbf v}f
- 乘法规则(product rule):
∇v(fg)=g∇vf+f∇vg
\nabla_{\mathbf v}(fg) = g\nabla_{\mathbf v}f + f\nabla_{\mathbf v}g
- 链式法则(chain rule):如果gg在点pp处可微,且hh在g(p)g(p)处可微,则有:
∇v(h∘g)(p)=h′(g(p))∇vg(p)
\nabla_{\mathbf v}(h \circ g)(p) = h'(g(p)) \; \nabla_{\mathbf v}g(p)
- 求和规则(sum rule):
2.3 向量对向量求导(Vector-by-vector)
向量函数y\color {red}{向量函数\mathbf y}(Vector Function):向量的元素为输入向量x的\mathbf x的函数(因变量)
y=⎡⎣⎢⎢⎢⎢y1y2⋯ym⎤⎦⎥⎥⎥⎥\mathbf y = \begin{bmatrix} y_1 \\ y_2 \\ \cdots\\ y_m \end{bmatrix}
输入向量x\color {red}{输入向量\mathbf x}(Input Vector):向量的元素的自变量
x=⎡⎣⎢⎢⎢x1x2⋯xn⎤⎦⎥⎥⎥\mathbf x = \begin{bmatrix} x_1 \\ x_2 \\ \cdots\\ x_n \end{bmatrix}
- 向量对向量求导:dydx,其结果为雅可比矩阵(JacobianMatrix)\color {red}{向量对向量求导:\frac {d \mathbf y}{d \mathbf x},其结果为雅可比矩阵(Jacobian Matrix)}
dydx=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂ym∂x1∂y1∂x2∂y2∂x2⋮∂ym∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
\frac {d \mathbf y}{d \mathbf x} = \begin{bmatrix} \frac {\partial y_1}{\partial x_1} & \frac {\partial y_1}{\partial x_2} & \cdots & \frac {\partial y_1}{\partial x_n } \\ \frac {\partial y_2}{\partial x_1} & \frac {\partial y_2}{\partial x_2} & \cdots & \frac {\partial y_2}{\partial x_n } \\ \vdots & \vdots & \ddots & \vdots \\ \frac {\partial y_m}{\partial x_1} & \frac {\partial y_m}{\partial x_2} & \cdots & \frac {\partial y_m}{\partial x_n } \end{bmatrix}
- 向量函数对向量的导数表示:推进(或差),或雅可比矩阵(pushforward (or differential), or the Jacobian matrix.)。
- 向量对标量求导、标量对向量求导:是向量对向量求导的特例\color {red}{向量对标量求导、标量对向量求导:是向量对向量求导的特例}。
2.3.1 雅可比矩阵(Jacobian Matrix)
- 定义\color {red}{定义}:向量值函数对所有自变量的一阶偏导数生成的矩阵为Jacobian Matrix
- f:Rn→Rm,x∈Rn,f(x)∈Rm,函数f的Jacobian是Jm×n\color {red}{f: R^n \to R^m, \; x \in R^n, \; f(x) \in R^m, \quad 函数f的Jacobian是J_{m \times n}}:
x=⎡⎣⎢⎢x1⋮xn⎤⎦⎥⎥,f=⎡⎣⎢⎢f1⋮fm⎤⎦⎥⎥
x = \begin{bmatrix} x_1 \\ \vdots \\ x_n \end{bmatrix}, f = \begin{bmatrix} f_1 \\ \vdots \\ f_m \end{bmatrix}
Jf(x)=J=[∂f∂x1⋯∂f∂xn]=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂f1∂x1⋮∂fm∂x1⋯⋱⋯∂f1∂xn⋮∂fm∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥J_f(x) = J = \begin{bmatrix} \frac {\partial f}{\partial x_1} & \cdots & \frac {\partial f}{\partial x_n} \end{bmatrix}=\begin{bmatrix} \frac {\partial f_1}{\partial x_1} & \cdots & \frac {\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac {\partial f_m}{\partial x_1} & \cdots & \frac {\partial f_m}{\partial x_n} \end{bmatrix}
- 所有表示方法\color {red}{所有表示方法}:
Jf=Jf(x)=J=Df=∂(f1,⋯,fm)∂(x1,⋯,xn)
J_f = J_f(x) = J = Df = \frac {\partial (f_1, \cdots, f_m)}{\partial (x_1, \cdots, x_n)}
- 矩阵元素法表示为\color {red}{矩阵元素法表示为}:
Jij=∂fi∂xj
J_{ij} = \frac {\partial f_i}{\partial x_j}
雅可比矩阵的重要性\color {red}{雅可比矩阵的重要性}:如果向量函数ff在点xx可微,Jacobian Matrix定义了从Rn→RmR^n \to R^m的线性变换,且是向量函数在点x附近最好的线性近似\color {red}{是向量函数在点x附近最好的线性近似}。
如果m=1,向量函数只有一个函数,此雅可比矩阵变为一个行向量(rowvector),即梯度∇f(x)\color {red}{如果m=1,向量函数只有一个函数,此雅可比矩阵变为一个行向量(row \; vector),即 梯度\nabla_f(x)}
雅可比矩阵与梯度和导数的关系\color {red}{雅可比矩阵与梯度和导数的关系}:
- 对于多变量标量值函数变为:梯度
- 对于单变量标量值函数变为:导数
- 对于多变量向量值函数变为:Jacobian Matrix
用于局部变换\color {red}{用于局部变换}:
- 可用于描述强加给图像局部的拉伸、旋转、平移变换
- 如(x′,y′)=f(x,y)用于变换一个图像,则Jf(x,y)则描述了(x,y)邻域像素是如何变换的(x',y') = f(x,y)用于变换一个图像,则J_f(x,y)则描述了(x,y)邻域像素是如何变换的
最好的局部线性近似\color {red}{最好的局部线性近似}:
- 若p是Rn中一点,则f在点p可微,其偏导数为Jf(p),则线性变换Jf(p)是点p附近最好的线性近似,即若p是R^n中一点,则f在点p可微,其偏导数为J_f(p),则线性变换J_f(p)是点p附近最好的线性近似,即
f(x)=f(p)+Jf(p)(x−p)+o(||x−p||)
f(x) = f(p) + J_f(p) (x-p) + o(||x-p||)
- 当x→p,||x−p||是x与p间的距离x \to p,||x-p||是x与p间的距离
- 若p是Rn中一点,则f在点p可微,其偏导数为Jf(p),则线性变换Jf(p)是点p附近最好的线性近似,即若p是R^n中一点,则f在点p可微,其偏导数为J_f(p),则线性变换J_f(p)是点p附近最好的线性近似,即
海森矩阵的来源\color {red}{海森矩阵的来源}:
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
- 非线性变换实例图\color {red}{非线性变换实例图}
2.4 矩阵对标量求导(Matrix-by-scalar)
- 用途\color {red}{用途}:可用于解决最小化问题
- 矩阵函数Y\color {red}{矩阵函数Y}:Matrix function (矩阵的元素为自变量xx的函数 )
Y=⎡⎣⎢⎢⎢⎢⎢y11y21⋮ym1y12y22⋮ym2⋯⋯⋱⋯y1ny2n⋮ymn⎤⎦⎥⎥⎥⎥⎥
Y = \begin{bmatrix} y_{11} & y_{12} & \cdots & y_{1n} \\ y_{21} & y_{22} & \cdots & y_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ y_{m1} & y_{m2} & \cdots & y_{mn} \\ \end{bmatrix}
标量x\color {red}{标量x}
矩阵对标量的导数(切线矩阵tangentmatrix)\color {red}{矩阵对标量的导数(切线矩阵 tangent \; matrix)}
\frac {dY}{dx} = \begin{bmatrix} \frac {\partial y_{11}}{\partial x} & \frac {\partial y_{12}}{\partial x} & \cdots & \frac {\partial y_{1n}}{\partial x} \\ \frac {\partial y_{21}}{\partial x} & \frac {\partial y_{22}}{\partial x} & \cdots & \frac {\partial y_{2n}}{\partial x} \\ \vdots & \vdots & \ddots & \vdots \\ \frac {\partial y_{m1}}{\partial x} & \frac {\partial y_{m2}}{\partial x} & \cdots & \frac {\partial y_{mn}}{\partial x} \\ \end{bmatrix}
2.5 标量对矩阵求导(Scalar-by-matrix)
- 用途\color {red}{用途}:可用于解决最小化问题,如KalmanfilterKalman \; filter 。
- 标量函数y\color {red}{标量函数y}
- 矩阵自变量X\color {red}{矩阵自变量X}
X=⎡⎣⎢⎢⎢⎢⎢x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn⎤⎦⎥⎥⎥⎥⎥
X = \begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} \\ \end{bmatrix}
- 标量y对矩阵X求导,其结果为梯度矩阵(gradientmatrix)\color {red}{标量y对矩阵X求导,其结果为梯度矩阵(gradient \; matrix)}
∇Xy(X)=dydX=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1n∂y∂x21∂y∂x22⋮∂y∂x2n⋯⋯⋱⋯∂y∂xm1∂y∂xm2⋮∂y∂xmn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
\nabla_X y(X) = \frac {dy}{dX} = \begin{bmatrix} \frac {\partial y}{\partial x_{11}} & \frac {\partial y}{\partial x_{21}} & \cdots & \frac {\partial y}{\partial x_{m1}} \\ \frac {\partial y}{\partial x_{12}} & \frac {\partial y}{\partial x_{22}} & \cdots & \frac {\partial y}{\partial x_{m2}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac {\partial y}{\partial x_{1n}} & \frac {\partial y}{\partial x_{2n}} & \cdots & \frac {\partial y}{\partial x_{mn}} \\ \end{bmatrix}
- 标量函数f(X)的方向导数\color {red}{标量函数f(X)的方向导数}:
- f(X):其自变量为矩阵X
- f(X)在矩阵Y方向的方向导数为:
∇Yf=tr(dfdXY),tr为矩阵的迹
\nabla _Yf = tr(\frac {d f}{d X}Y), \quad tr为矩阵的迹
3. 标量对向量的二阶求导(海森矩阵)
- 定义\color {red}{定义}:
- Hessian Matrix是一个多变量标量值函数的二阶偏导组成的方阵
- 几何意义:它描述了多变量函数的局部曲率\color {red}{几何意义:它描述了多变量函数的局部曲率}
- f:Rn→R,x∈Rn,f(x)∈R,如果函数f的二阶偏导数存在且在函数域内连续,则Hn×n为:f: R^n \to R, x \in R^n, f(x) \in R,如果函数f的二阶偏导数存在且在函数域内连续,则H_{n \times 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⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
H = \begin{bmatrix} \frac {\partial^2 f}{\partial x_1 \partial x_1 } & \frac {\partial^2 f}{\partial x_1 \partial x_2 } & \cdots & \frac {\partial^2 f}{\partial x_1 \partial x_n } \\ \frac {\partial^2 f}{\partial x_2 \partial x_1 } & \frac {\partial^2 f}{\partial x_2 \partial x_2 } & \cdots & \frac {\partial^2 f}{\partial x_2 \partial x_n } \\ \vdots & \vdots & \ddots & \vdots \\ \frac {\partial^2 f}{\partial x_n \partial x_1 } & \frac {\partial^2 f}{\partial x_n \partial x_2 } & \cdots & \frac {\partial^2 f}{\partial x_n \partial x_n } \\ \end{bmatrix}
- 元素法表示为:
Hij=∂2f∂xi∂xj
H_{ij} = \frac {\partial^2f}{\partial x_i \partial x_j}
- 海森矩阵的来源\color {red}{海森矩阵的来源}
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
H(f(x))=J(∇f(x))T
H(f(x)) = J(\nabla f(x))^T
- 多变量标量值函数的梯度的Jacobian Matriax就是海森矩阵,它是此函数的二阶导数
- Hessian矩阵的特征值\color {red}{Hessian矩阵的特征值}:
- 就是形容其在该点附近特征向量方向的凹凸性,特征值越大,凸性越强。
Hessian矩阵是n×n方阵,且是对称矩阵\color {red}{Hessian矩阵是n×n方阵,且是对称矩阵}:
- 由于二阶导数具有对称性,即:
∂∂xi(∂f∂xj)=∂∂xj(∂f∂xi)
\frac {\partial }{\partial x_i} \left(\frac {\partial f }{\partial x_j} \right) = \frac {\partial }{\partial x_j} \left(\frac {\partial f }{\partial x_i} \right)
- 所以有:
H=HT
H = H^T
- 由于二阶导数具有对称性,即:
Criticalpoints/Stationarypoint(临界点/驻点)\color {red}{Critical \; points/Stationary \; point(临界点/驻点)}
- 如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)\color {red}{如果标量函数的梯度某点x为0,则称f在点x有一个临界点/驻点(可能为极大值点、或极小值点、或拐点)}
- 在点xx处的海森矩阵的行列式被称为:判别式(discriminant)
- 如果此判别式为00,则点xx被称为:函数ff的退化临界点(degenerate critical point)或非莫尔斯临界点(non-Morse critical point)
- 如果此判别式不为00,则点xx被称为:函数ff非退化临界点的(non-degenerate)或莫尔斯临界点 (Morse critical point )
用途\color {red}{用途}:
- 海森矩阵在莫尔斯理论(Morse theory)和突变理论(catastrophe theory)中具有重要作用,因为它的内核和特征值可以对临界点进行分类
海森矩阵的性质\color {red}{海森矩阵的性质}:
- 凸函数的Hessian Matrix是半正定的(positive semi-definite(M为对称,对于任意列向量z,有zTMz≥0z^TMz \ge 0))
- 如果Hessian矩阵在点xx是正定的(positive definite (M为对称,对于任意列向量z,有zTMz>0z^TMz >0)),则xx是ff的孤立局部极小值点
- 如果Hessian矩阵在点xx是负定的(negative definite (M为对称,对于任意列向量z,有zTMz<0z^TMz )),则xx是ff的孤立局部极大值点
- 如果Hessian矩阵有正的和负的特征值,则x是f的一个鞍点(saddle point)
4. 导数 VS 梯度 VS 雅可比矩阵 VS 海森矩阵四者的关系
映射 | 函数类型 | 一阶求导 | 二阶求导 |
---|---|---|---|
f:R1→R1f:R^1 \to R^1 | 标量值函数 | 导数 | 0 |
f:Rn→R1f:R^n \to R^1 | 标量值函数 | 梯度 | 海森矩阵 |
f:Rn→Rmf:R^n \to R^m | 向量值函数 | 雅可比矩阵 |
参考:
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
视觉惯性单目SLAM (五)矩阵微积分相关推荐
- 视觉惯性单目SLAM (三)优化方法
1. 最小二乘法 最小二乘法:Least Squares Method (LSM) 函数: y=f(x,θ) y = f ( x , θ ) y=f(x,\theta) θ θ \theta为待估参数 ...
- 视觉惯性单目SLAM (二) 算法基础知识
1. 基本概念 视觉惯性:Visual-Inertial (VI) VI ORB-SLAM:视觉惯性ORB-SLAM VI ORB-SLAM输入: IMU数据(用B表示,加速度:aB:角速度:ωB\m ...
- 视觉惯性单目SLAM (一)算法描述
1.视觉惯性ORB-SLAM基本知识 视觉惯性:Visual-Inertial (VI) VI ORB-SLAM:视觉惯性ORB-SLAM VI ORB-SLAM输入: IMU数据(用B表示,加速度: ...
- Attention SLAM:一种从人类注意中学习的视觉单目SLAM
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨泡椒味的口香糖 来源丨GiantPandaCV 0. 引言 当人们在一个环境中四处走动时,他们通 ...
- 单目slam基础 特点匹配 光流匹配 单应变换恢复变换矩阵 本质矩阵恢复变换矩阵 深度滤波
非滤波单目slam基础 非滤波方法的单目视觉SLAM系统综述 论文 直接法 特征点法 混合法区别与联系 按照 2D−2D 数据关联方式的不同 ,视觉定位方法可以分为直接法.非直接法和混合法1. 直接法 ...
- ORB-SLAM:精确多功能单目SLAM系统
ORB-SLAM: a Versatile and Accurate Monocular SLAM System Taylor Guo, 2016年3月18日-9:00 原文发表于:IEEE Tran ...
- 基于交汇的多机器人协作单目SLAM
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源丨泡泡机器人SLAM 标题:Multirobot Collaborative Monocular ...
- 用于自动驾驶的混合稀疏-稠密单目SLAM系统
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨泡椒味的口香糖 来源丨 GiantPandaCV 0. 引言 随着自动驾驶系统的推广,越来越多 ...
- PSL‑SLAM:PSL‑SLAM: a monocular SLAM system using points and structure lines in Manh 曼哈顿世界中的点线单目SLAM
文章下载地址:https://download.csdn.net/download/weixin_50508111/85811572 一.文章简介 1. 文章类型/时间/作者/所属单位: 期刊论文/2 ...
最新文章
- 机器学习 凝聚态物理_机器学习遇到了凝聚的问题
- Artifact到底是什么
- android PPPoE拨号调试记录
- 硅谷谍战: Menlo Park某VC是CIA开的, 你们公司实习生可能是科技间谍…
- 旋转合并照片墙-特效照片墙
- OFD转PDF格式免费在线转换
- 利安德巴赛尔任命Peter Vanacker任首席执行官;纬湃科技斩获长城汽车逆变器大额订单 | 能动...
- 清华大学何平:央行数字货币具备许多优势 但不可盲目推进
- java 将5mb以内图片压缩至200kb以下
- Zotero中文文献管理
- 用户同步管理及集群初始配置-集群搭建步骤7
- 计算机学院年会,全国高等院校计算机基础教育研究会2019学术年会在我校成功举办...
- 英语软件的日志怎么写
- B+树真的不难,楼下菜大爷都能学得会的B+树!(数据结构可视化神器推荐)
- Emlog博客主题模板 ZanBlog3 优化版 V4
- 如何用 JS 实现 3D 赛车效果
- Android闪闪发光字体Shimmer效果
- 对无人机高度环的思考和第一次炸机体验
- 优秀自我简介200字_优秀大学生自我介绍200字
- java手机电池充电代码_Android中获取电池电量实例代码
热门文章
- Java210道常见的面试
- 在virtualbox中导入.vmdk文件
- mac 查看端口_交换机端口对应的mac地址与IP地址
- 峰值检测电路和精密整流电路
- 如何在html添加悬浮页面,如何设置悬浮窗口?
- 二建《机电》案例 100 问
- [含lw+源码等]微信小程序考勤签到管理系统+后台管理系统[包运行成功]Java毕业设计计算机毕设
- 最佳平方逼近 matlab,最佳平方逼近的Matlab
- 13.创建活动、布局、活动关联布局、注册活动
- 电机与运动控制笔记整理(三)——异步电机概述