雅克比矩阵理解

Reference:

  1. 高翔,张涛 《视觉SLAM十四讲》
  2. 雅可比矩阵和雅可比行列式
  3. Jacobian prerequisite knowledge

相关文章跳转:

  1. 雅克比矩阵理解
  2. 解析解与数值解
  3. Ceres 曲线拟合
  4. g2o 曲线拟合

1.概述

f : R n → R m f:\mathbb{R}^{n} \rightarrow \mathbb{R}^{m} f:RnRm 是一个函数,它的输入是向量 x ∈ R n x\in \mathbb{R}^{n} xRn,输出是向量 y = f ( x ) ∈ R m y=f(x)\in \mathbb{R}^{m} y=f(x)Rm
{ y 1 = f 1 ( x 1 , … , x n ) y 2 = f 2 ( x 1 , … , x n ) ⋯ y m = f m ( x 1 , … , x n ) \left\{\begin{array}{l}y_{1}=f_{1}\left(x_{1}, \ldots, x_{n}\right) \\ y_{2}=f_{2}\left(x_{1}, \ldots, x_{n}\right) \\ \cdots \\ y_{m}=f_{m}\left(x_{1}, \ldots, x_{n}\right)\end{array}\right. y1=f1(x1,,xn)y2=f2(x1,,xn)ym=fm(x1,,xn)

那么雅可比矩阵是一个 m × n m×n m×n 矩阵,通常被定义为:
J = [ ∂ f ∂ x 1 ⋯ ∂ f ∂ x n ] = [ ∂ f 1 ∂ x 1 ⋯ ∂ f 1 ∂ x n ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ⋯ ∂ f m ∂ x n ] \mathbf{J}=\left[\begin{array}{lll}\frac{\partial \mathbf{f}}{\partial x_{1}} & \cdots & \frac{\partial \mathbf{f}}{\partial x_{n}}\end{array}\right]=\left[\begin{array}{ccc}\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{array}\right] J=[x1fxnf]= x1f1x1fmxnf1xnfm

由于矩阵描述了向量空间中的运动----变换,而雅克比矩阵看作是将点 ( x 1 , . . . , x n ) (x_1,...,x_n) (x1,...,xn) 转换到点 ( y 1 , . . . , y n ) (y_1,...,y_n) (y1,...,yn),或者说是从一个 n n n 维的欧氏空间转换到 m m m 维的欧氏空间。

1.1 示例

已知函数 F : R 3 → R m F:\mathbb{R}^{3} \rightarrow \mathbb{R}^{m} F:R3Rm 分量为:
        y 1 = x 1 y_1=x_1 y1=x1
        y 2 = 5 x 3 y_2=5x_3 y2=5x3
        y 3 = 4 x 2 2 − 2 x 3 y_3=4x_2^2-2x_3 y3=4x222x3
        y 4 = x 3 sin ⁡ x 1 y_4=x_3\sin x_1 y4=x3sinx1

则函数 F F F 的雅克比矩阵为:
J F ( x 1 , x 2 , x 3 ) = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 1 ∂ x 3 ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ∂ y 2 ∂ x 3 ∂ y 3 ∂ x 1 ∂ y 3 ∂ x 2 ∂ y 3 ∂ x 3 ∂ y 4 ∂ x 1 ∂ y 4 ∂ x 2 ∂ y 4 ∂ x 3 ] = [ 1 0 0 0 0 5 0 8 x 2 − 2 x 3 cos ⁡ x 1 0 sin ⁡ x 1 ] \mathbf{J}_{\mathbf{F}}\left(x_{1}, x_{2}, x_{3}\right)=\left[\begin{array}{lll} \frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{1}}{\partial x_{2}} & \frac{\partial y_{1}}{\partial x_{3}} \\ \frac{\partial y_{2}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{2}} & \frac{\partial y_{2}}{\partial x_{3}} \\ \frac{\partial y_{3}}{\partial x_{1}} & \frac{\partial y_{3}}{\partial x_{2}} & \frac{\partial y_{3}}{\partial x_{3}} \\ \frac{\partial y_{4}}{\partial x_{1}} & \frac{\partial y_{4}}{\partial x_{2}} & \frac{\partial y_{4}}{\partial x_{3}} \end{array}\right]=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 0 & 5 \\ 0 & 8 x_{2} & -2 \\ x_{3} \cos x_{1} & 0 & \sin x_{1} \end{array}\right] JF(x1,x2,x3)= x1y1x1y2x1y3x1y4x2y1x2y2x2y3x2y4x3y1x3y2x3y3x3y4 = 100x3cosx1008x20052sinx1

1.2 意义

如果 p p p R n \mathbb{R}^{n} Rn 中的一点, F F F p p p 处可微, J F ( p ) J_F(p) JF(p) 是这点的导数。在此情况下, J F ( p ) J_F(p) JF(p) 这个线性映射即 F F F 在点 p p p 附近的最优线性逼近(局部线性),也就是说,当 x x x 足够靠近 p p p 时,存在:
F ( x ) ≈ F ( p ) + J F ( p ) ⋅ ( x − p ) F(x) \approx F(p)+ J_F(p)\cdot(x-p) F(x)F(p)+JF(p)(xp)

用几何方式表述:
以二维情况为例,给定一函数:
f ( [ x y ] ) = [ f 1 ( x , y ) f 2 ( x , y ) ] = [ x + sin ⁡ ( y ) y + sin ⁡ ( x ) ] f\left(\left[\begin{array}{l}x \\ y\end{array}\right]\right)=\left[\begin{array}{l}f_1(x,y) \\ f_2(x,y)\end{array}\right]=\left[\begin{array}{l}x+\sin (y) \\ y+\sin (x)\end{array}\right] f([xy])=[f1(x,y)f2(x,y)]=[x+sin(y)y+sin(x)]

现在把所有 ( x , y ) (x,y) (x,y) 点,移动到 ( x + sin ⁡ y , y + sin ⁡ x ) (x+\sin y,y+\sin x) (x+siny,y+sinx),它会变成如下样子:

在这里插入图片描述
这不是一个线性变换,所有的输出线已不是平行且平均分布的网格线。

要弄清楚发生了什么,聚焦于一个点比较好,已知点 p = ( − 2 , 1 ) p=(-2,1) p=(2,1),则 f ( [ − 2 1 ] ) = [ − 2 + sin ⁡ 1 1 + sin ⁡ − 2 ] f\left(\left[\begin{array}{l}-2 \\ 1\end{array}\right]\right)=\left[\begin{array}{l}-2+ \sin 1 \\ 1 + \sin -2\end{array}\right] f([21])=[2+sin11+sin2]

这种变化较为棘手,每个点的变换不能只用相同四个数字的二维矩阵。但是这种函数变换也有一些比较简单的性质-----局部线性:这意味着如果我们回到初始的位置,然后放大某一个点,可以从图中放大视角看到,这个变换虽然不是线性的,但它比刚刚更像是一个线性函数,这些线更像网格线,保持平行且等距(图左),当放大更大倍数时,看起来更像某个线性函数变换(图右):

考虑在原始坐标系中,向右一小步,微小的沿着 x x x 方向的一小步,这一小步会在变换之后变成在输出空间中的一小步:它不再是单纯沿着 x x x 方向了,它除了有向右的分量,还有向下的分量。

在这里插入图片描述
继续看上图,输出量移动的 x x x 分量为 ∂ f 1 / ∂ x \partial f_1/\partial x f1/x;移动的 y y y 分量为 ∂ f 2 / ∂ x \partial f_2/\partial x f2/x,这两个量均是由 x x x 方向的微小改变 ∂ x \partial x x 引起的。随着图像放大视角,这个量一般是一个常数。

同理沿着 y y y 方向一小步,可以得到下图在输出空间中的一小步

在这里插入图片描述
此时完整的 Jacobian Matrix 可得:
[ ∂ f 1 / ∂ x ∂ f 1 / ∂ y ∂ f 2 / ∂ x ∂ f 2 / ∂ y ] = [ 1 cos ⁡ y cos ⁡ x 1 ] \left[\begin{array}{ll} \partial f_1/\partial x & \partial f_1/\partial y \\ \partial f_2/\partial x & \partial f_2/\partial y \\ \end{array}\right]= \left[\begin{array}{ll} 1 & \cos y \\ \cos x & 1 \\ \end{array}\right] [f1/xf2/xf1/yf2/y]=[1cosxcosy1]

矩阵内,第一个列向量表明了第一个基向量的去处,第二个列向量表明了第二个基向量的去处。

当在点 ( − 2 , 1 ) (-2,1) (2,1) 评估每一个偏导时,将会得到确切的数字来组成一个 2 ∗ 2 2*2 22 矩阵,这个矩阵表示这个点放大之后的线性变换的样子

1.3 雅克比矩阵应用

  • 高斯牛顿法
    考虑一条满足以下方程的曲线: y = e x p ( a x 2 + b x + c ) + w y=exp(ax^2+bx+c)+w y=exp(ax2+bx+c)+w
    其中, a , b , c a,b,c a,b,c 为曲线的参数, w w w 为高斯噪声,满足 w ∼ ( 0 , σ 2 ) w \sim(0,\sigma^2) w(0,σ2)
    假设有 N N N 个关于 x , y x,y x,y 的观测数据点,需要根据这些数据点求出曲线的参数。可以求解下面的最小二乘问题以估计曲线参数:
                                                             min ⁡ a , b , c 1 2 ∑ i = 1 N ∥ y i − exp ⁡ ( a x i 2 + b x i + c ) ∥ 2 \min _{a, b, c} \frac{1}{2} \sum_{i=1}^{N}\left\|y_{i}-\exp \left(a x_{i}^{2}+b x_{i}+c\right)\right\|^{2} mina,b,c21i=1N yiexp(axi2+bxi+c) 2
    在这个问题中,待估计的变量是 a , b , c a,b,c a,b,c,而不是 x x x。我们的程序里先根据模型生成 x , y x,y x,y 的真值,然后在真值中添加高斯分布的噪声(生成带噪声数据)。随后,使用高斯牛顿法从带噪声的数据拟合参数模型。

    定义误差为:
                                                             e i = y i − exp ⁡ ( a x i 2 + b x i + c ) e_{i}=y_{i}-\exp \left(a x_{i}^{2}+b x_{i}+c\right) ei=yiexp(axi2+bxi+c)
    那么,可以求出每个误差项对于状态变量的导数:
                                                             ∂ e i ∂ a = − x i 2 exp ⁡ ( a x i 2 + b x i + c ) \frac{\partial e_{i}}{\partial a}=-x_{i}^{2} \exp \left(a x_{i}^{2}+b x_{i}+c\right) aei=xi2exp(axi2+bxi+c)
                                                             ∂ e i ∂ b = − x i exp ⁡ ( a x i 2 + b x i + c ) \frac{\partial e_{i}}{\partial b}=-x_{i} \exp \left(a x_{i}^{2}+b x_{i}+c\right) bei=xiexp(axi2+bxi+c)
                                                             ∂ e i ∂ c = − exp ⁡ ( a x i 2 + b x i + c ) \frac{\partial e_{i}}{\partial c}=-\exp \left(a x_{i}^{2}+b x_{i}+c\right) cei=exp(axi2+bxi+c)
    于是雅克比矩阵 J i = [ ∂ e i ∂ a , ∂ e i ∂ b , ∂ e i ∂ c ] T J_i=[\frac{\partial e_{i}}{\partial a},\frac{\partial e_{i}}{\partial b},\frac{\partial e_{i}}{\partial c}]^T Ji=[aei,bei,cei]T
    假设有100个观测数据点,高斯牛顿法的增量方程为:
                                                             ( ∑ i = 1 100 J i ( σ 2 ) − 1 J i T ) Δ x k = ∑ i = 1 100 − J i ( σ 2 ) − 1 e i \left(\sum_{i=1}^{100} \boldsymbol{J}_{i}\left(\sigma^{2}\right)^{-1} \boldsymbol{J}_{i}^{\mathrm{T}}\right) \Delta \boldsymbol{x}_{k}=\sum_{i=1}^{100}-J_{i}\left(\sigma^{2}\right)^{-1} e_i (i=1100Ji(σ2)1JiT)Δxk=i=1100Ji(σ2)1ei
    其中 Δ x k \Delta x_k Δxk 为增量。
    求解上述线性方程: H x = b Hx=b Hx=b
    其中 J J T JJ^T JJT 作为牛顿法中二阶海塞(Hessian)矩阵的近似,从而省略了计算 H H H 的过程。

2. 雅克比行列式

如果 m = n m=n m=n,可以定义雅克比矩阵 J J J 的行列式,也就是雅克比行列式(Jacobian determinant)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值