Nonlinear Least Squares

\[ \mathbf{x^{*}} = argmin| \mathbf{f(x)} |^2_{\mathbf{\Omega}} \]

其中\(\mathbf{f(x)}\)满足均值为0,方差为\(\mathbf{R} = \mathbf{\Omega}^{-1}\)的正态分布。

设初始值为\(\mathbf{x_0}\),求解\(\delta\mathbf{x}\),使得\(argmin|\mathbf{f(x_0 + \delta x)}|^{2}_{\mathbf{\Omega}}\)最小。

\[ \begin{aligned} r &=\boldsymbol{f}\left(\boldsymbol{x}_{0}+\delta \boldsymbol{x}\right)^{T} \boldsymbol{\Omega} \boldsymbol{f}\left(\boldsymbol{x}_{0}+\delta \boldsymbol{x}\right) \\ &=\left(\boldsymbol{f}\left(\boldsymbol{x}_{0}\right)+\boldsymbol{J} \delta \boldsymbol{x}\right)^{T} \boldsymbol{\Omega}\left(\boldsymbol{f}\left(\boldsymbol{x}_{0}\right)+\boldsymbol{J} \delta \boldsymbol{x}\right) \\ &=\boldsymbol{f}\left(\boldsymbol{x}_{0}\right)^{T} \boldsymbol{\Omega} \boldsymbol{f}\left(\boldsymbol{x}_{0}\right)+2 \delta \boldsymbol{x}^{T} \boldsymbol{J}^{T} \boldsymbol{\Omega} \boldsymbol{f}\left(\boldsymbol{x}_{0}\right)+\delta \boldsymbol{x}^{T} \boldsymbol{J}^{T} \boldsymbol{\Omega} \boldsymbol{J} \delta \boldsymbol{x} \end{aligned} \]

当\(r\)对导数为0时,取得最小值:

\[ \frac{\partial r}{\partial\delta \mathbf{x}} = 2 \mathbf{J}^T\mathbf{\Omega}\mathbf{J}\delta \mathbf{x} + 2\mathbf{J}^T\mathbf{\Omega}\mathbf{f}(\mathbf{x}_0) = \mathbf{0} \]

得:

\[ \mathbf{J}^t\mathbf{\Omega}\mathbf{J}\delta \mathbf{x} = -\mathbf{J}^T\mathbf{\Omega}\mathbf{f}(\mathbf{x}_0) \]

状态更新:

\[ \mathbf{x}_1 = \mathbf{x}_0 + \delta \mathbf{x} \]

为了减少outlier对求解的影响,可以加入Huber Loss Function实现鲁棒性估计。

\[ \begin{aligned} \boldsymbol{x}^{*} &=\operatorname{argmin} \sum_{i} \rho\left(\left|\boldsymbol{f}_{i}(\boldsymbol{x})\right|_{\boldsymbol{\Omega}_{i}}^{2}\right) \\ &=\operatorname{argmin} \sum_{i} \rho\left(r_{i}\right) \end{aligned} \]

其中Huber Loss如下:

\[ \rho(r)= \begin{cases}r & r^{1 / 2}<\gamma \\ 2 \gamma \cdot r^{1 / 2}-\gamma^{2} & r^{1 / 2} \geq \gamma\end{cases} \]

\(\gamma\)一般取卡放分布95%的值。

当\(\rho(r)\)对\(\delta \mathbf{x}\)的导数为0取得最小值:

\[ \begin{aligned} \partial \rho(r) / \partial \delta \boldsymbol{x} &=\partial \rho(r) / \partial r . \partial r / \partial \delta \boldsymbol{x} \\ &=2 \boldsymbol{J}_{\rho} \boldsymbol{J}^{T} \mathbf{\Omega} \boldsymbol{J} \delta \boldsymbol{x}+2 \boldsymbol{J}_{\rho} \boldsymbol{J}^{T} \boldsymbol{\Omega} \boldsymbol{f}\left(\boldsymbol{x}_{0}\right) \\ &=2 \sum_{i} \boldsymbol{J}_{i}^{T} \boldsymbol{J}_{\rho_{i}} \mathbf{\Omega} \boldsymbol{J}_{i} \delta \boldsymbol{x}+2 \boldsymbol{J}_{i}^{T} \boldsymbol{J}_{\rho_{i}} \boldsymbol{\Omega}_{i} \boldsymbol{f}_{i}\left(\boldsymbol{x}_{0}\right) \\ &=\mathbf{0} \end{aligned} \]

其中:

\[ \boldsymbol{J}_{\rho}= \begin{cases}1 & r^{1 / 2}<\gamma \\ \frac{\gamma}{r^{1 / 2}} & r^{1 / 2} \geq \gamma\end{cases} \]

迭代公式:

\[ \sum_{i} \boldsymbol{J}_{i}^{T} \boldsymbol{J}_{\rho_{i}} \boldsymbol{\Omega} \boldsymbol{J}_{i} \delta \boldsymbol{x}=-\boldsymbol{J}_{i}^{T} \boldsymbol{J}_{\rho_{i}} \boldsymbol{\Omega}_{i} \boldsymbol{f}_{i}\left(\boldsymbol{x}_{0}\right) \]

可以看到Huber Loss Function自动降低outlier权重。使得估计鲁棒性提高。

Extended Kalman Filter

在EKF更新过程中:

\[ \begin{aligned} \mathbf{e} &= \mathrm{z}_{\mathrm{k}+1}-\hat{\mathbf{z}}_{\mathrm{k}+1 \mid \mathrm{k}} \\ K_{k+1}&=P_{k+1 \mid k} H_{k+1}^{\mathrm{T}}\left(H_{k+1} P_{k+1 \mid k} H_{k+1}^{\mathrm{T}}+R_{k+1}\right)^{-1} \\ \hat{\boldsymbol{x}}_{k+1 \mid \mathrm{k}+1}&=\hat{\boldsymbol{x}}_{k+1 \mid \mathrm{k}}+K_{k+1}\left(e\right) \\ P_{k+1 \mid k+1} &=\left(I-K_{k+1} H_{k+1}\right) P_{k+1 |\mathrm{k}} \end{aligned} \]

可以加入huber核函数,降低outlier的权重,增大协方差。

\[ \begin{aligned} K_{k+1}&=P_{k+1 \mid k} H_{k+1}^{\mathrm{T}}\left(H_{k+1} P_{k+1 \mid k} H_{k+1}^{\mathrm{T}}+R_{k+1} * J_{\rho}^{-1} \right)^{-1} \end{aligned} \]

其中:

\[ r = \mathbf{e}^T(H_{k+1} P_{k+1 \mid k} H_{k+1}^{\mathrm{T}}+R_{k+1}) \mathbf{e} \]
\[ J_{\rho} = \partial{\rho(r)}/\partial{r} \]

Reference

[1] https://zhuanlan.zhihu.com/p/524339818
[2] Comparison of Several Nonlinear Filters for a Benchmark Tracking Problem