GTSAM 中的鲁棒噪声模型与 M-估计 (GTSAM Robust Noise Model and M-Estimator)

news2024/12/28 5:57:06

Title: GTSAM 中的鲁棒噪声模型与 M-估计 (GTSAM Robust Noise Model and M-Estimator)


文章目录

  • 前言
  • I. 噪声模型
  • II. 鲁棒回归 —— M 估计
    • 1. 线性回归
    • 2. 损失函数
    • 3. 加权最小二乘
  • III. 鲁棒噪声模型
    • 1. 鲁棒目标函数
    • 2. 非线性加权最小二乘
    • 3. 迭代重加权最小二乘法
  • V. 总结
  • 参考文献


前言

查看 GTSAM 文档[1] (/gtsam/doc/robust.pdf) 过程中做了一些推导, 记录一下.

主要围绕对因子图优化计算中对离群点的抑制而展开.


I. 噪声模型

借用 gtsam4.2 中文档 /doc/html/a04892.html 对噪声模型因子的描述.

gtsam::NoiseModelFactor Class Reference

A nonlinear sum-of-squares factor with a zero-mean noise model implementing the density
P ( z ∣ x ) ∝ exp ⁡ ( − 0.5 ∣ z − h ( x ) ∣ C 2 ) P(z|x) \propto \exp(−0.5 |z−h(x)|^2_C) P(zx)exp(0.5∣zh(x)C2)
Templated on the parameter type X and the values structure Values.

There is no return type specified for h(x). Instead, we require the derived class implements
e r r o r _ v e c t o r ( x ) = h ( x ) − z ≈ A δ x − b error\_vector(x)= h(x)−z \approx A \delta x − b error_vector(x)=h(x)zAδxb
This allows a graph to have factors with measurements of mixed type.

The noise model is typically Gaussian, but robust and constrained error models are also supported.

由之前的博文 “因子图、边缘化与消元算法的抽丝剥茧” 中的定义, 构建因子图
Φ ( Θ ) = ∏ i ϕ i ( Θ i ) (I-1) \Phi(\Theta) = \prod_i \phi_i(\Theta_i) \tag{I-1} Φ(Θ)=iϕi(Θi)(I-1)
其中 Θ ≜ ( X , L ) \Theta \triangleq (X, L) Θ(X,L), Θ i ≜ N ( ϕ i ) \Theta_i \triangleq \mathcal{N}(\phi_i) ΘiN(ϕi), Θ i \Theta_i Θi 即为与因子 ϕ i \phi_i ϕi 有关的变量 (包括机器人状态变量与路标变量).

如果每个因子都具有高斯噪声/高斯分布,
ϕ i ( Θ i ) ∝ exp ⁡ ( − 1 2 ∥ h i ( Θ i ) − z i ∥ Σ i 2 ) (I-2) \phi_i(\Theta_i) \propto \exp\left(-\frac{1}{2} \| h_i(\Theta_i) - z_i\|_{\Sigma_i}^2 \right) \tag{I-2} ϕi(Θi)exp(21hi(Θi)ziΣi2)(I-2)
其中 h i ( ⋅ ) h_i(\cdot) hi() z i z_i zi 分别为测量函数和测量值, ∑ i \sum_i i 为测量值 z i z_i zi 的误差协方差矩阵.

那么, 可以对因子图求最大后验估计 (MAP, Maximum a Posteriori),
Θ ∗ = arg ⁡ max ⁡ Θ   Φ ( Θ ) = arg ⁡ max ⁡ Θ ( ∏ i ϕ i ( Θ i ) ) (I-3) \Theta^{\ast} =\underset{\Theta}{\arg\max} \,\Phi(\Theta) = \underset{\Theta}{\arg\max} \left(\prod_i \phi_i(\Theta_i)\right) \tag{I-3} Θ=ΘargmaxΦ(Θ)=Θargmax(iϕi(Θi))(I-3)
如果对式 (I-1) 两边先求 − log ⁡ -\log log 运算再求极小值可得[2], [3]
Θ ∗ = arg ⁡ min ⁡ Θ [ − log ⁡ Φ ( Θ ) ] = arg ⁡ min ⁡ Θ   1 2 ∑ i ∥ h i ( Θ i ) − z i ∥ Σ i 2 (I-4) \Theta^{\ast} = \underset{\Theta}{\arg\min}\left[-\log \Phi(\Theta)\right]= {\underset{\Theta}{\arg \min}} \, \frac{1}{2} \sum_i \| h_i(\Theta_i) - z_i \|_{\Sigma_i}^2 \tag{I-4} Θ=Θargmin[logΦ(Θ)]=Θargmin21ihi(Θi)ziΣi2(I-4)
这样就将高斯噪声模型描述下的因子图的最大后验推理等价转换非线性最小二乘问题.

噪声模型在整个因子图中的作用可由式 (I-2) 体现. 由 gtsam::NoiseModelFactor Class Reference 可知, 除了上述我们最熟悉的高斯噪声模型以外, 也支持鲁棒噪声模型 —— 本文的主角.


II. 鲁棒回归 —— M 估计

因为我们所谓的 “二乘” 是误差的平方, 一旦出现一个误差值远远偏离于正常误差, 在经过平方后, 该粗差对目标函数的影响巨大. 即存在离群值 (Outlier) 时,

最小二乘估计获得的结果可能远离真值, 则估计结果不可靠/不可信, 是离群值污染了正常的数据.

针对最小二乘法的这个问题, 逐渐发展出鲁棒回归 (Robust Regression), 其中最通用的方法是 M 估计 (M-Estimation)[4]. M 估计是基于最小二乘估计发展起来的一种抗差估计 (Robust Estimation) 方法.

本章节对 M 估计进行介绍[4]并简单推导, 再在下一章节中应用于因子图.


1. 线性回归

假设对如下线性模型进行 n n n 观测:
y i = β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β k x i k + ε i ( i = 1 , 2 , ⋯   , n ) (II-1-1) y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \cdots + \beta_k x_{ik} +\varepsilon_i \qquad(i=1,2,\cdots,n) \tag{II-1-1} yi=β0+β1xi1+β2xi2++βkxik+εi(i=1,2,,n)(II-1-1)
定义 b ≜ [ β 0 β 1 β 2 ⋯ β k ] T \mathbf{b}\triangleq \begin{bmatrix}\beta_0 & \beta_1 &\beta_2 &\cdots &\beta_k \end{bmatrix}^{\small\rm T} b[β0β1β2βk]T 为待估计参数 (或待估计变量), x i ′ ≜ [ 1 x i 1 x i 2 ⋯ x i k ] \mathbf{x}_i^{'} \triangleq \begin{bmatrix}1 & x_{i1} &x_{i2} &\cdots &x_{ik}\end{bmatrix} xi[1xi1xi2xik] 为扩展的数据向量. 则上式可以简写为
y i = x i ′ b + ε i (II-1-2) y_i = \mathbf{x}_i^{'} \mathbf{b} + \varepsilon_i \tag{II-1-2} yi=xib+εi(II-1-2)
对应的预测值为
y ^ i = x i ′ b (II-1-3) \hat{y}_i = \mathbf{x}_i^{'} \mathbf{b} \tag{II-1-3} y^i=xib(II-1-3)
残差/误差为
e i = y i − y ^ i = y i − x i ′ b (II-1-4) e_i = y_i - \hat{y}_i = y_i - \mathbf{x}_i^{'} \mathbf{b} \tag{II-1-4} ei=yiy^i=yixib(II-1-4)


2. 损失函数

在回归模型式 (II-1-1)下, 用来量化估计模型的预测值与真实值的不一致程度 (量化回归效率) 的工具称为损失函数, 记为 ρ ( e i ) \rho(e_i) ρ(ei).

最常用的损失函数是均方误差 (Mean Square Error, MSE), 也称为 L2 损失, 即
ρ L 2 ( e i ) = e i 2 (II-2-1) \rho_{L_2}(e_i) = e_i^2 \tag{II-2-1} ρL2(ei)=ei2(II-2-1)
L2 损失就是最小二乘法对应的损失函数. 根据本节前部的分析, L2 损失对离群值不鲁棒. 同时, 其最优特性依赖于高斯假设, 当遇见非高斯噪声时, 估计结果也变得不可靠[5].

第二种常用的损失函数为平局绝对误差 (Mean Absolute Error, MAE), 也称为 L1 损失, 即
ρ L 1 ( e i ) = ∣ e i ∣ (II-2-2) \rho_{L_1}(e_i) = | e_i | \tag{II-2-2} ρL1(ei)=ei(II-2-2)
因为 L1 面对离群点时误差不再是平方放大, 鲁棒性有了提高.

但 L1 在中心点不可导, 是缺陷之一.

另外, 在梯度下降算法中, MSE 能够快速准确地收敛, 而 MAE 收敛速度较慢.

也就是 MSE 和 MAE 各有优缺点, 那么自然希望能够构建取长补短的损失函数.

第三种常用的损失函数是 Huber 损失函数 (Huber Loss), 也称为平滑 L1 损失. 表达式为
ρ H ( e ) = { 1 2 e 2 , for    ∣ e ∣ ≤ k k ∣ e ∣ − 1 2 k 2 , for    ∣ e ∣ > k (II-2-3) \rho_{H}(e) =\left\{ \begin{array}{cl} \frac{1}{2} e^2, & & \text{for}\; |e| \le k\\ k|e|-\frac{1}{2}k^2, &&\text{for} \; |e|>k \end{array} \right. \tag{II-2-3} ρH(e)={21e2,ke21k2,forekfore>k(II-2-3)
其中 k k k 是一个非负参数, 用来控制损失函数的二次区域与线性区域的范围. 当残差大于 k k k 时采用 L1 损失, 残差小于等于 k k k 时采用 L2 损失.

Huber 损失函数结合了 L1 损失和 L2 损失的优点, 比起 L2 损失来它对离群值更鲁棒, 同时在中心点处可导[5].

当采用梯度下降类算法时, 迭代值进入 k k k 范围内后算法能够快速地收敛.

以上三类损失函数的图形如下所示.

loss_function
Fig. 1 三类损失函数与对应的权重函数

3. 加权最小二乘

我们先不区别具体的损失函数, 回到线性回归问题 (II-1-1).

一般情况下, 测量数据的组数 n n n 大于估计变量的维度 k + 1 k+1 k+1, 否则就成了欠定问题了.

要使这个回归估计获得最佳的参数估计 b ∗ \mathbf{b}^{\ast} b, 需要将其转换为如下优化问题
b ∗ = arg ⁡ min ⁡ b ∑ i = 1 n ρ ( e i ) = arg ⁡ min ⁡ b ∑ i = 1 n ρ ( y i − x i ′ b ) (II-3-1) \mathbf{b}^{\ast} = \underset{\mathbf{b}}{\arg\min} \sum_{i=1}^{n} \rho (e_i) = \underset{\mathbf{b}}{\arg\min} \sum_{i=1}^{n} \rho (y_i - \mathbf{x}_i^{'} \mathbf{b}) \tag{II-3-1} b=bargmini=1nρ(ei)=bargmini=1nρ(yixib)(II-3-1)
进一步, 求极小值转换为求函数驻点
0 = ∂ [ ∑ i = 1 n ρ ( y i − x i ′ b ) ] ∂ b = ∑ i = 1 n ∂ ρ ( e i ) ∂ e i ∂ ( y i − x i ′ b ) ∂ b = ∑ i = 1 n ∂ ρ ( e i ) ∂ e i   x i ′ (II-3-2) \begin{aligned} 0 &=\frac{\partial\left[\sum_{i=1}^{n} \rho (y_i - \mathbf{x}_i^{'} \mathbf{b})\right]}{\partial \mathbf{b}}\\ &= \sum_{i=1}^{n} \frac{\partial\rho (e_i)}{\partial e_i} \frac{\partial(y_i - \mathbf{x}_i^{'} \mathbf{b})}{\partial \mathbf{b}} \\&= \sum_{i=1}^{n} \frac{\partial\rho (e_i)}{\partial e_i} \ \mathbf{x}_i^{'} \\ \end{aligned} \tag{II-3-2} 0=b[i=1nρ(yixib)]=i=1neiρ(ei)b(yixib)=i=1neiρ(ei) xi(II-3-2)
定义影响曲线 (Influence Curve) 为 ψ = ρ ′ ≜ ∂ ρ ( e i ) ∂ e i \psi = \rho{'} \triangleq \frac{\partial \rho(e_i)}{\partial e_i} ψ=ρeiρ(ei).

定义权重函数 (Weight Function) 为 w ( e i ) ≜ ψ ( e i ) e i w(e_i) \triangleq \frac{\psi(e_i)}{e_i} w(ei)eiψ(ei). 三类损失函数对应的权重函数如 Fig. 1 所示.

式 (II-3-2) 可改写为
∑ i = 1 n w ( e i ) ‾   ( y i − x i ′ b ) ‾   x i ′ = 0 (II-3-3) \sum_{i=1}^{n} \underline{w(e_i)}\ \underline{(y_i - \mathbf{x}_i^{'} \mathbf{b})}\ \mathbf{x}_i^{'} = 0 \tag{II-3-3} i=1nw(ei) (yixib) xi=0(II-3-3)

在数值计算中, 将权重函数 w ( e i ) w(e_i) w(ei) 看做是由上一迭代点 e i [ k − 1 ] e_i^{[k-1]} ei[k1] 计算得到的标量权重值, 而不再视作参数 b \mathbf{b} b 的函数, 记为 w ~ i ≜ w ( e i [ k ] ) \tilde{w}_i \triangleq w (e_i^{[k]}) w~iw(ei[k]).

在上述数值假设下, 式 (II-3-3) 可以进一步写成
∑ i = 1 n w ~ i ( y i − x i ′ b ) x i ′ = 0 (II-3-4) \sum_{i=1}^{n} \tilde{w}_i (y_i-\mathbf{x}_i'\mathbf{b}) \mathbf{x}_i'=0 \tag{II-3-4} i=1nw~i(yixib)xi=0(II-3-4)
同时, 构造如下加权最小二乘问题
min ⁡ 1 2 ∑ i = 1 n w ~ i e i 2 = min ⁡ 1 2 ∑ i = 1 n w ~ i ( y i − x i ′ b ) 2 (II-3-5) \min \frac{1}{2} \sum_{i=1}^{n} \tilde{w}_i e_i^2 = \min \frac{1}{2} \sum_{i=1}^{n} \tilde{w}_i (y_i - \mathbf{x}_i^{'} \mathbf{b})^2 \tag{II-3-5} min21i=1nw~iei2=min21i=1nw~i(yixib)2(II-3-5)
同样求函数极值转变为求驻点
∑ i = 1 n w ~ i ( y i − x i ′ b ) ∂ ( y i − x i ′ b ) ∂ b = ∑ i = 1 n w ~ i ‾   ( y i − x i ′ b ) ‾   x i ′ = 0 (II-3-6) \sum_{i=1}^{n}\tilde{w}_i (y_i - \mathbf{x}_i^{'} \mathbf{b}) \frac{\partial (y_i - \mathbf{x}_i^{'} \mathbf{b})}{\partial \mathbf{b}} = \sum_{i=1}^{n}\underline{\tilde{w}_i}\ \underline{(y_i - \mathbf{x}_i^{'} \mathbf{b})}\ \mathbf{x}_i^{'} = 0\tag{II-3-6} i=1nw~i(yixib)b(yixib)=i=1nw~i (yixib) xi=0(II-3-6)
式 (II-3-4) 与式 (II-3-6) 的驻点完全一致, 那么回归问题式 (II-3-1) 与加权最小二乘问题 (II-3-5) 在局部点上等价.

那么由迭代计算式 (II-3-5) 极小值就能获得 (II-3-1) 的极小值. 而应用最小二乘法数值方法迭代求解加权最小二乘问题式 (II-3-5) 的计算方法称为迭代重加权最小二乘法 (Iteratively Reweighted Least Squares, IRLS).


III. 鲁棒噪声模型

1. 鲁棒目标函数

对鲁棒回归 (M 估计) 有了基本认识后, 我们再回到噪声模型, 这次需要结合鲁棒回归.

为了减少离群点对因子图最优化目标的影响, 引入鲁棒损失函数 (Robust Loss Function), 比如上文介绍的 Huber Loss.

那么因子图的最小二乘目标就不再适用了, 而变为
Θ ∗ = arg ⁡ min ⁡ Θ ∑ i ρ ( m i ) (III-1-1) \Theta^{\ast} = {\underset{\Theta}{\arg \min}} \sum_i \rho(m_i) \tag{III-1-1} Θ=Θargminiρ(mi)(III-1-1)
其中 m i m_i mi 为马氏距离 (Mahalanobis Distance)
m i ≜ [ h i ( Θ i ) − z i ] T Σ i − 1 [ h i ( Θ i ) − z i ] = ∥ h i ( Θ i ) − z i ∥ Σ i (III-1-2) m_i \triangleq \sqrt{\left[h_i(\Theta_i) - z_i\right]^{\small\rm T} \Sigma_i^{\small -1} \left[h_i(\Theta_i) - z_i\right]} = \| h_i(\Theta_i) - z_i \|_{\Sigma_i} \tag{III-1-2} mi[hi(Θi)zi]TΣi1[hi(Θi)zi] =hi(Θi)ziΣi(III-1-2)
对应于式 (II-1-4) 中的残差/误差. 式 (III-1-1) 也可以写成
Θ ∗ = arg ⁡ min ⁡ Θ ∑ i ρ ( ∥ h i ( Θ i ) − z i ∥ Σ i ) (III-1-3) \Theta^{\ast} = {\underset{\Theta}{\arg \min}} \sum_i \rho(\| h_i(\Theta_i) - z_i \|_{\Sigma_i}) \tag{III-1-3} Θ=Θargminiρ(hi(Θi)ziΣi)(III-1-3)


2. 非线性加权最小二乘

先对非线性测量误差进行线性化处理
h i ( Θ i ) − z i = h i ( Θ i [ k − 1 ] + Δ i ) − z i ≈ h i ( Θ i [ k − 1 ] ) + H i Δ i − z i = H i Δ i − d i (III-2-1) \begin{aligned} h_i(\Theta_i) - z_i &= h_i(\Theta_i^{[k-1]}+\Delta_i) - z_i \\ &\approx h_i(\Theta_i^{[k-1]}) + H_i\Delta_i - z_i\\ &= H_i\Delta_i - d_i \end{aligned} \tag{III-2-1} hi(Θi)zi=hi(Θi[k1]+Δi)zihi(Θi[k1])+HiΔizi=HiΔidi(III-2-1)
其中 H i ≜ ∂ h i ( Θ i ) ∂ Θ i ∣ Θ i [ k − 1 ] H_i \triangleq \left. \frac{\partial h_i (\Theta_i)}{\partial \Theta_i}\right|_{\Theta_i^{[k-1]}} HiΘihi(Θi) Θi[k1], d i = z i − h i ( Θ i [ k − 1 ] ) d_i = z_i - h_i(\Theta_i^{[k-1]}) di=zihi(Θi[k1]). 代入式 (III-1-2) 得到线性化后的马氏距离
m i ≈ ∥ H i Δ i − d i ∥ Σ i = ( H i Δ i − d i ) T Σ − 1 ( H i Δ i − d i ) (III-2-2) m_i \approx \| H_i\Delta_i - d_i \|_{\Sigma_i} =\sqrt{( H_i\Delta_i - d_i)^{\small \rm T} \Sigma^{\small -1} ( H_i\Delta_i - d_i)} \tag{III-2-2} miHiΔidiΣi=(HiΔidi)TΣ1(HiΔidi) (III-2-2)

m i 2 ≈ ∥ H i Δ i − d i ∥ Σ i 2 = ( H i Δ i − d i ) T Σ − 1 ( H i Δ i − d i ) (III-2-3) m_i^2 \approx \| H_i\Delta_i - d_i \|_{\Sigma_i}^2 ={( H_i\Delta_i - d_i)^{\small \rm T} \Sigma^{\small -1} ( H_i\Delta_i - d_i)} \tag{III-2-3} mi2HiΔidiΣi2=(HiΔidi)TΣ1(HiΔidi)(III-2-3)
线性化后的新变量为 Δ i \Delta_i Δi. 线性化后的优化目标式 (III-1-1) 就变为
Δ ∗ = arg ⁡ min ⁡ Δ ∑ i ρ ( m i ) (III-2-4) \Delta^{\ast} = {\underset{\Delta}{\arg \min}} \sum_i \rho(m_i) \tag{III-2-4} Δ=Δargminiρ(mi)(III-2-4)
参照上一章节线性回归的推导, 下面简单推导因子图目标函数对应的加权最小二乘目标函数式.

式 (III-2-4) 求极小值就是求对应目标函数的驻点
0 = ∂ [ ∑ i ρ ( m i ) ] ∂ Δ i = ∑ i ∂ ρ ( m i ) ∂ Δ i = ∑ i ∂ ρ ( m i ) ∂ m i ∂ m i ∂ m i 2 ∂ m i 2 ∂ ( H i Δ i − d i ) ∂ ( H i Δ i − d i ) ∂ Δ i = ∑ i ∂ ρ ( m i ) ∂ m i 1 2 m i ( H i Δ i − d i ) T ( 2 Σ i − 1 ) H i = ∑ i ρ ′ ( m i ) m i ( H i Δ i − d i ) T Σ i − 1 H i (III-2-5) \begin{aligned} \mathbf{0} &= \frac{\partial \left[ \sum_i \rho(m_i)\right]}{\partial \Delta_i} = \sum_i \frac{\partial \rho(m_i)}{\partial \Delta_i}\\ & = \sum_i \frac{\partial \rho(m_i)}{\partial m_i} \frac{\partial m_i}{\partial m_i^2} \frac{\partial m_i^2}{\partial (H_i \Delta_i-d_i)} \frac{\partial (H_i \Delta_i-d_i)}{\partial \Delta_i}\\ &= \sum_i \frac{\partial \rho(m_i)}{\partial m_i} \frac{1}{ 2m_i} (H_i \Delta_i-d_i)^{\small \rm T} ( 2\Sigma_i^{\small -1}) H_i \\ &= \sum_i \frac{ \rho'(m_i)}{ m_i} (H_i \Delta_i-d_i)^{\small \rm T} \Sigma_i^{\small -1} H_i \end{aligned} \tag{III-2-5} 0=Δi[iρ(mi)]=iΔiρ(mi)=imiρ(mi)mi2mi(HiΔidi)mi2Δi(HiΔidi)=imiρ(mi)2mi1(HiΔidi)T(2Σi1)Hi=imiρ(mi)(HiΔidi)TΣi1Hi(III-2-5)
其中 ρ ′ ( m i ) = ∂ ρ ( m i ) ∂ m i \rho'(m_i) =\frac{\partial \rho(m_i)}{\partial m_i} ρ(mi)=miρ(mi), 另外计算中用到 [Identity 8-b] Partial Derivative of a Quadratic Form (Numerator-Layout Notation).

构造等价的加权最小二乘问题
arg ⁡ min ⁡ Δ 1 2 ∑ i ρ ′ ( m i [ k − 1 ] ) m i [ k − 1 ] ∥ H i Δ i − d i ∥ Σ i 2 (III-2-6) {\underset{\Delta}{\arg \min}} \frac{1}{2} \sum_i \frac{\rho'(m_i^{[k-1]})}{m_i^{[k-1]}} \| H_i \Delta_i -d_i\|_{\Sigma_i}^2 \tag{III-2-6} Δargmin21imi[k1]ρ(mi[k1])HiΔidiΣi2(III-2-6)
其中 m i [ k − 1 ] m_i^{[k-1]} mi[k1] 是迭代计算中上一迭代步中已确定了 m i m_i mi 标量值.

求式 (III-2-6) 中目标函数的驻点
0 = 1 2 ∑ i ρ ′ ( m i [ k − 1 ] ) m i [ k − 1 ] ∂ ∥ H i Δ i − d i ∥ Σ i 2 ∂ Δ i = ∑ i ρ ′ ( m i [ k − 1 ] ) m i [ k − 1 ] ( H i Δ i − d i ) T Σ i − 1 H i (III-2-7) \begin{aligned} \mathbf{0} & = \frac{1}{2} \sum_i \frac{\rho'(m_i^{[k-1]})}{m_i^{[k-1]}} \frac{\partial \| H_i \Delta_i -d_i\|_{\Sigma_i}^2}{\partial \Delta_i}\\ &= \sum_i \frac{\rho'(m_i^{[k-1]})}{m_i^{[k-1]}} (H_i \Delta_i -d_i)^{\small\rm T} \Sigma_i^{\small -1} H_i \end{aligned}\tag{III-2-7} 0=21imi[k1]ρ(mi[k1])ΔiHiΔidiΣi2=imi[k1]ρ(mi[k1])(HiΔidi)TΣi1Hi(III-2-7)
比较式 (III-2-5) 和式 (III-2-7), 可知在 m i [ k − 1 ] m_i^{[k-1]} mi[k1] 时两者驻点一致, 就是式 (III-2-4) 和式 (III-2-6) 的最优目标在 m i [ k − 1 ] m_i^{[k-1]} mi[k1] 时等价 (一致).

我们每一步迭代计算式 (III-2-6) 的优化值, 就是在求线性化后的因子图目标函数的优化值, 作为原始非线性因子图目标函数 (III-1-1) 的优化值的增量更新.

也就是说, 我们为了防止离群点污染优化目标而引入鲁棒损失函数后, 一样有办法计算因子图的优化值.


3. 迭代重加权最小二乘法

基于上面的鲁棒噪声模型、加权最小二乘问题等推导, 我们就可以理解的针对因子图的迭代重加权最小二乘法.

算法: 针对非线性鲁棒噪声问题的非线性信赖域方法[1]

设置变量初始值 Θ \Theta Θ

while (迭代未收敛) do

  计算每一个因子误差的马氏距离 m i [ k − 1 ] = ∥ h i ( x i [ k − 1 ] ) − z i ∥ Σ i m_i^{[k-1]} = \| h_i(x_i^{[k-1]})-z_i\|_{\Sigma_i} mi[k1]=hi(xi[k1])ziΣi

  计算每一个因子的权重 w ~ i = ρ ′ ( m i [ k − 1 ] ) / m i [ k − 1 ] \tilde{w}_i = \rho'(m_i^{[k-1]})/m_i^{[k-1]} w~i=ρ(mi[k1])/mi[k1]

  构造加权最小二乘问题 1 2 ∑ i w ~ i ∥ h i ( Θ i ) − z i ∥ Σ i 2 \frac{1}{2} \sum_i \tilde{w}_i \|h_i(\Theta_i) - z_i\|_{\Sigma_i}^2 21iw~ihi(Θi)ziΣi2

  线性化最小二乘问题得到 1 2 ∑ i w ~ i ∥ H i Δ i − d i ∥ Σ i 2 \frac{1}{2} \sum_i \tilde{w}_i \|H_i \Delta_i - d_i\|_{\Sigma_i}^2 21iw~iHiΔidiΣi2

  解线性化最小二乘问题

  维持信赖域

  基于列文伯格-马夸尔特法或狗腿法更新 Θ \Theta Θ

end


V. 总结

本文介绍了因子图计算中的鲁棒噪声模型、鲁棒参数估计、M-估计、非线性加权最小二乘问题、迭代重加权最小二乘法等.

主要围绕因子图计算中的离群点抑制以获得不受污染的优化估计——这一关键目标进行叙述和推导.

(如有问题请指出, 谢谢!)


参考文献

[1] Fan Jiang, Yetong Zhang, “GTSAM Robust Noise Model”, https://github.com/borglab/gtsam/blob/develop/doc/robust.pdf, 2020.02

[2] Frank Dellaert, Michael Kaess, “Factor Graphs for Robot Perception”, Foundations and Trends in Robotics, Vol. 6, No. 1-2 (2017) 1–139

[3] Jing Dong, “GTSAM 4.0 Tutorial —— Theory, Programming, and Applications”, https://dongjing3309.github.io/files/gtsam-tutorial.pdf, 2016.11.19

[4] John Fox, Sanford Weisberg, “Robust Regression”, http://users.stat.umn.edu/~sandy/courses/8053/handouts/robust.pdf, 2013.10.08

[5] 俞搏天, “p-Huber 损失函数及其鲁棒性研究”, 应用数学进展, 9(12): 2283-2291, 2020

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1472126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第 2 章 微信小程序的构成 (代码导读)断更,后续继续更新

2.1 小程序项目的基本结构 Hello World!程序.mp4 文泉云盘 -- 图书二维码资源管理系统兆泰源二维码管理系统https://www.wqyunpan.com/resourceDetail.html?id284928&openIdoUgl9wdyNYHu9EcAe-GEwbQdZilY&qrcodeId242916&signc2lnbm1PUmNxSndPWGFOck…

rhel8配置bond遇到的问题汇总

操作环境信息 配置bond mode=4 两块网卡的配置信息 bond卡的配置信息(标红是后来加上的) 遇到的问题 rhel8 使用NetworkManage 管理网络,而不使用network,经常用到的命令是nmcli 拉起bond0后,因为没有获取到ip地址,每隔一段时间就会将网卡down掉,出现nic link is down …

代码随想录算法训练营第四三天 | 最后一块石头的重量 II、目标和、一和零

目录 最后一块石头的重量 II目标和一和零 LeetCode 1049. 最后一块石头的重量 II LeetCode 494. 目标和 LeetCode 474.一和零 最后一块石头的重量 II class Solution {// dp[j] 容量为j 的背包,最多可以背最大重量为dp[j]。// dp[j] Math.max(dp[j], dp[j - sto…

zabbix3.4.6 源码安装

Step1: 下载 https://www.zabbix.com/download 选中一下。download Zabbix Sources PackageReleaseDateRelease NotesZabbix ManualDownloadZabbix 3.4Server, Proxy, Agent, GUI3.4.615 January, 2018 Download step2 :拷贝在redhat 6.3_X86_86(192…

基于huggingface加载openai/clip-vit-large-patch14-336视觉模型demo

文章目录 引言一、模型加载二、huggingface梯度更新使用三、图像处理四、模型推理五、整体代码总结 引言 本文介绍如何使用huggingface加载视觉模型openai/clip-vit-large-patch14-336,我之所以记录此方法源于现有大模型基本采用huggingface库来加载视觉模型和大语…

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…

nginx(二)

nginx的验证模块 输入用户名和密码 第一步先下载httpd 这个安装包 第二步编辑子配置文件 然后去网页访问192.168.68.3/admin/ 连接之后,会出现404,404出现是因为没给网页写页面 如果要写页面,则在/opt/html,建立一个admin&#x…

算法沉淀——动态规划之路径问题(leetcode真题剖析)

算法沉淀——动态规划之路径问题 01.不同路径02.不同路径 II03.珠宝的最高价值04.下降路径最小和05.最小路径和06.地下城游戏 01.不同路径 题目链接:https://leetcode.cn/problems/unique-paths/ 一个机器人位于一个 m x n 网格的左上角 (起始点在下图…

探索C语言位段的秘密

位段 1. 什么是位段2. 位段的内存分配3. 位段的跨平台问题4. 位段的应用4. 使用位段的注意事项 1. 什么是位段 我们使用结构体实现位段,位段的声明和结构体是类似的,有两个不同: 位段的成员必须是int,unsigned int,或…

IO进程线程作业day7

信号灯集共享内存 自定义头文件 #ifndef SEM_H_ #define SEM_H_ //创建信号灯集, int creat_t(int number); //申请释放资源 int P(int semid,int semno); //申请释放资源 int V(int semid,int semno); //删除信号灯集 int del(int semid); #endif信号灯集函数集合 #include…

多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型

多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型 目录 多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.多维时序 | Matlab实现GRU-MATT门控循环单元融…

wcf 简单实践 数据绑定 数据更新ui

1.概要 2.代码 2.1 xaml <Window x:Class"WpfApp3.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expr…

《数据治理简易速速上手小册》第2章 数据治理框架的建立(2024 最新版)

文章目录 2.1 确立数据治理目标2.1.1 基础知识2.1.2 重点案例&#xff1a;提升零售业数据质量2.1.3 拓展案例 1&#xff1a;银行的数据安全加强2.1.4 拓展案例 2&#xff1a;医疗机构的合规性数据报告 2.2 数据治理框架的关键要素2.2.1 基础知识2.2.2 重点案例&#xff1a;制药…

VM-UNet:视觉Mamba UNet用来医学图像分割 论文及代码解读

VM-UNet 期刊分析摘要贡献方法整体框架1. Vision Mamba UNet (VM-UNet)2. VSS block3. Loss function 实验1.对比实验2.消融实验 可借鉴参考代码使用 期刊分析 期刊名&#xff1a; Arxiv 论文主页&#xff1a; VM-UNet 代码&#xff1a; Code 摘要 在医学图像分割领域&#x…

JANGOW: 1.0.1

kali:192.168.223.128 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -p- 192.168.223.154 开启了21 80端口 web看一下&#xff0c;有个busque.php参数是buscar,但是不知道输入什么&#xff0c;尝试文件包含失败 扫描目录 dirsearch -u http://192.168.223.154 dirse…

mysql 分表实战

本文主要介绍基于range分区的相关 1、业务需求&#xff0c;每日160w数据&#xff0c;每月2000w;解决大表数据读写性能问题。 2、数据库mysql 8.0.34&#xff0c;默认innerDB;mysql自带的逻辑分表 3、分表的目的:解决大表性能差&#xff0c;小表缩小查询单位的特点(其实优化的精…

人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)

人事管理系统目录 目录 基于Springboot的人事管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、员工管理 3、公告信息管理 4、公告类型管理 5、培训管理 6、培训类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…

2024年环境安全科学、材料工程与制造国际学术会议(ESSMEM2024)

【EI检索】2024年环境安全科学、材料工程与制造国际学术会议&#xff08;ESSMEM2024) 会议简介 我们很高兴邀请您参加将在三亚举行的2024年环境安全科学、材料工程和制造国际学术会议&#xff08;ESSMEM 2024&#xff09;。 ESSMEM2024将汇集世界各国和地区的研究人员&…

CrackRTF1

由此可知为六位密码且<100000自动退出 发现是哈希加密&#xff0c;经过网上查找后了解到 0x8004u 为 SHA1 加密&#xff0c;故从网上寻找脚本并进行爆破 密码为123321 找到一个取巧的网站 MD5免费在线解密破解_MD5在线加密-SOMD5 Flag{N0_M0re_Free_Bugs}

Mysql索引讲解及创建

索引介绍 1.什么是索引&#xff1f; 索引是存储引擎中一种数据结构&#xff0c;或者说数据的组织方式&#xff0c;又称之为键key&#xff0c;是存储引擎用于快速找到记录的 一种数据结构。 为数据建立索引就好比是为书建目录&#xff0c;或者说是为字典创建音序表&#xff0c;…