从最小二乘法到卡尔曼滤波

87bcb8c443052f1fd90792b4a40bdf2b.gif

© 作者 | 李承蒙

学校 | 桂林电子科技大学

研究方向 | 计算机视觉

本文旨在梳理总结学习到的一些知识。由于笔者水平有限,文中难免存在一些不严谨和错误之处,诚请各位批评指正。

最近看了一篇文章,文章从最小二乘法的角度推导了卡尔曼滤波的公式(链接在文末)。看完后震惊不已,很受启发,于是写了这篇文章。一是为了倒逼输出从而达到知新的效果,二是为了记录一下自己的理解以便日后自己翻阅。

9714d175c7fd4958ec3631909dbe5758.png


最小二乘法

最小二乘法是解决曲线拟合问题最常用的方法,本质是进行参数估计。实现方式是先使用待定系数法设出拟合函数,然后使用拟合函数和观测数据构造出目标函数来评估拟合效果,并取拟合效果最好时的拟合函数。拟合函数由参数和事先选定的一组线性无关的函数(这里我们姑且叫它基函数)构成,基函数已事先确定,求解拟合函数的问题便转变为参数估计的问题。

是一组观测数据:

f4576a72eecbe659bfe0b4c368875636.png

假定其噪声(随机变量) 分别为: 。

并且 ,噪声之间互不相关。

为拟合函数,其中 为参数(也就是我们求解的重点)、 为事先选定的一组线性无关的函数:

df5459b0dbcb9cf3abbcac8d05f79a59.png

为目标函数:

f43e64bf80b23104aa63b44a484a5f6b.png

其中除以 的目的是加权,噪声方差越大的观测数据其权值越小,保证整体结果不会被个别噪声较大的数据所影响。同时也满足了高斯-马尔可夫定理的要求:

高斯-马尔可夫定理

在线性回归模型中,如果误差满足零均值、同方差且互不相关,则回归系数的最佳线性无偏估计BLUE, Best Linear Unbiased Estimator)就是普通最小二乘法估计。

我们的目的便是使 取到最小值,将此时得到的 作为最佳的拟合函数。

举个例子:

c17e1ec055e20f833f138b40cfa47f17.png

如马同学的这张图为例,图中的 至 便是观测数据并且每个都对应 轴上的一个坐标。通过观察我们可以取拟合函数为 ,其中 便是我们要估计的参数。

构造目标函数:

39a843c89b506abe1b93c9dae66ac800.png

分别对 求偏导,当满足下式时目标函数 取到最小值,可求出参数 :

7795a4bd528208037bbe84f3443a1fba.png

从而得到拟合函数 。当然如果你对拟合出的函数不满意,可以再取其他的函数作为拟合函数并去估计其参数。

cf3b0fba87773c4444d8643838a4eb14.png


一个简单的状态估计问题

ca1ada4c0722045ebfb8e555fa3b1126.png

还是这张图,不过这次我们给坐标轴一些物理意义。横坐标代表时间,纵坐标代表位置,我们将其视为一维的匀速运动目标的位置-时间图。你可以想象成一个小车沿着直线匀速前进,你每隔一段时间观测它一次并记录位置和时间数据。

分我们定义状态量 ,其中 代表目标所处的位置, 代表目标当前的速度。

观测数据 :

01dc37769d118f038270eb81b1de1d73.png

自然还有我们刚刚得出来的拟合函数 

自然还有我们刚刚得出来的拟合函数 。

不过在被赋予了物理意义之后它现在长这样: ,其中 代表函数与纵轴的截距,也就是 时刻时的位置, 代表目标的运动速度。不过我们对目标 0 时刻的位置不感兴趣,我们对它当前的状态估计值感兴趣,于是有:

cd27c89c8c68320e5a76636dc617d548.png

其中 代表对当前目标位置的估计值, 代表对当前目标速度的估计值。这样的拟合函数 才是我们想要的,它包含了目标在 时刻的位置与速度。换句话说,我们通过这五个观测数据得到了目标在 时刻的状态估计值

于是,如果我们能继续获得更多的观测数据(一直到 ),那么有:

a37d9fe2bf3697990519043715a9948d.png

从而有:

b783c1b7df6ecc08c93dd72686ae2add.png

于是:

5c066d51059f2fa0675932b7759a3dda.png

其中 为 时刻下的观测矩阵,它将目标 时刻下的状态 转化观测值 。

这是个很怪的拟合函数,非常反直觉。它的观测方式似乎是使用最新的状态估计值,去获得其他时间节点上的观测值;如此一来它既是在对状态进行观测,又是实现了不同时刻间状态的转移。但我们根本不关心拟合函数本身,我们只关心构成它的参数。它的参数包含了目标当前时刻的状态估计值 。如果我们不断地继续获得数据,我们也能不断地对拟合函数的参数进行估计,从而得出目标最新的状态估计值。

99662d6094779c8616d94543308adef7.png


铺垫

但是我们发现这个方法 太 慢 了。随着迭代推进,每一次迭代都需要用到历史的所有数据来估计目标当前的状态。也就是说随着运行时间增长,积累的历史数据越多,计算出目标当前状态估计值所需要的时间也就越长。

我们先把最小二乘法拓展为矩阵形式来看一看。

将历史观测量合起来:

8641d44ebbb874f48e8c73a89c09b186.png

观测噪声:

b3b4909be15a77aacc70c2dfbb10ce16.png

同理,也把对应的观测矩阵合起来:

d9a3cdf91469ee9c6d0c4f7bcf825cd4.png

对于目标函数:

bb0cb8332d0dd9f6d4bd0a0adbde7c6c.png

b2c457ee96464a899911493a720e724f.png

a68ea90ead37c2dcb319cd031ebb76de.png

虽然变成了矩阵形式,但最小二乘法的思想没有变,通过类比一维的情况可以快速的理解矩阵形式。 

我们不妨来实实在在的求一下矩阵形式下拟合函数的参数。

在当前我们已经有 个观测数据的情况下,我们对当前目标的状态估计量求导,并令其为零:

8045fa076a2ca0feb96eee7a771a8631.png

于是就有:

ab8d789df90fe84a91b910a96304fb14.png

上式中的 便是我们目前获得到的观测量数量,可见随着迭代的进行我们的运算量会越来越大。

我们肯定无法接受这一点!

所以我们还需要更进一步。

040ec2e06100c62344a0f5cbb82be925.png


递推最小二乘法

我们的目的就是避免运算量随着时间而增长,所以必须想方设法将 改为递推形式。换句话说,只使用 时刻的各种数据来推算 时刻的状态,而不是像现在这样将所有的历史信息全部用上。但是忘记历史意味着背叛,所以我们选一个折中的办法——“只送大脑”,我们可以递推地求解目标每个时刻状态的协方差矩阵。这样可以将历史信息蕴含在协方差矩阵中,达到我们的目的。

对于:

53a05c20f35e49b80e6a624f70310db3.png

有以下性质:

a7c2c8ae91d3244f840f252731a04857.png

e17727f53cf710a17cc503a71f34fb13.png

c7af73896cd43af4764d18d5cb0402f1.png

于是求解 的协方差矩阵  :

74ef58d2d81330fab76949296d8bce77.png

其中:

58f0829f9803c203a12930544c615af5.png

所以:

5d9740cde650fbfcf17729fd68f717de.png

并且我们发现 。

然后我们把 拆开可以看到:

d5512f780e50c08be13434feb70a0b80.png

记 于是有状态协方差矩阵递推公式:

2535a1cd51ed7c23f952d8ff3287bedd.png

同理把 拆开可得:

9d2ab8adfa501bf02aff5024aec03623.png

并且我们知道 ,于是推理可得:

e3537e744ac429cb55c47079a100b86a.png

于是:

2604b7a0b464ecf06684d36f94458f76.png

至此我们得到了以下公式:

313a07ea5a370dea5e5124d5e89cfd28.png

600d3f88a58fac302086eb82b5ef6ab2.png

式 的形式非常有趣,它以 为基准,并通过 的方式来估计 时刻观测量的误差( 表示对 时刻观测量的估计),最后乘以 并补偿到 上。我们一般称 这样的系数为观测增益。这种综合了观测数据与状态数据的计算方式已经有些接近卡尔曼滤波了,但是只有更新过程,几乎没有预测过程。比如在 式中的 和 式中的 完全可以替换成由他们自己经过预测后得出的 时刻的估计量,然后再进行更新,这也是卡尔曼滤波的思想之一。

问题的根源在于我们怪异而又反直觉的观测矩阵。它虽然叫观测矩阵,但它耦合了观测与状态转移两个功能。观测指的是将状态量转化为观测量的过程,状态转移指的是将某时刻的状态转化为另一个时刻的状态。与卡尔曼滤波相比,递推最小二乘法在整个递推过程中缺少了程噪声。所以我们需要对其进行解耦合,重新定义观测矩阵与状态转移矩阵。

0f7e24f352dba1805c03b8843f34bb91.png


从最小二乘法到卡尔曼滤波

让我们先用正常的方式来描述目标状态的递推过程:

fad6d31ae0f1fbdeb31980365516ec2f.png

状态转移矩阵,它可以将 时刻的状态转变为 时刻的。其中 为目标在 时刻的先验状态量,也就是说它是我们使用 时刻的状态预测得来的。 为 时刻的后验状态量,也就是经过上轮递推后得到的 时刻的最优状态估计值。

同时我们用 来表示过程噪声,其中 代表位置噪声, 代表速度噪声,且有:

962b9ce13f321c149764c51e3c0b3d2f.png

注意,我们将 视为一个随机变量,且有:

6ac419ae1ef3a691c05c641d79b08ff0.png

同时设

6a1ff70683262863bb5b12b619cc05a7.png

并称 为过程噪声协方差矩阵。

现在我们再去求一次状态协方差矩阵:

9d3ac03b55ceb279e75beedbea1dab7a.png

其中:

4a0d86c9360c8df9f59f6ec5b4d82970.png

但要注意的是此时( 时刻)计算的状态协方差矩阵为先验状态协方差矩阵 ,也就是我们根据 时刻的状态协方差矩阵推算得出的。

现在我们获得了预测过程的公式:

d2c574d3ae64ccec7e70552a5937d43e.png

935c9bb90b5af3e6ffde2ba8b8263b1a.png

从而对应的更新过程公式应该改写为:

6ba9ae107ddb18eb83593e6183830369.png

08ba5f45be4b152d835f5114d909183f.png

发现式 到 中只出现过 ,也就是观测矩阵的下标只有 。观测矩阵在下标为 (也就是最新的时刻)时只具有观测意义,不存在状态转移。因为在定义时观测矩阵 的意义是将最新时刻 目标的状态转变为 时刻的观测量(可以看二、中举的例子),当 时便只有观测意义。于是我们不需要重新定义观测矩阵,当前的式子符合我们的要求。

66a3d777c055c4d29aee6bb5223a070f.png


总结

最小二乘法求解最小目标函数的过程与卡尔曼滤波中求解协方差矩阵迹的最小值的过程非常相似,只不过最小二乘法是使用所有数据来进行优化,而卡尔曼滤波通过对迹求导来获得最优卡尔曼增益。我们可以通过构造特殊拟合函数的方式来让最小二乘法来递推运作,从而只传递状态噪声。然后定义状态转移过程,并加入过程噪声来描述状态转移误差。

相比使用贝叶斯公式与正态分布假设来推导卡尔曼滤波,最小二乘法推导的条件更为宽松。使用贝叶斯公式来推导时需要假设所有的噪声服从正态分布,而最小二乘法推导仅需要满足高斯-马尔可夫定理(噪声零均值、同方差、不相关)即可。当然推导卡尔曼滤波的方法并不只这两种,但了解的越多理解越深刻,对学习也更有帮助。

从递推最小二乘法推导出卡尔曼滤波的过程并不严谨,直接使用先验估计来替换掉递推最小二乘法中的一些项。如果以后有更加严谨的方式我会补上证明。

outside_default.png

参考文献

outside_default.png

[1] https://zhuanlan.zhihu.com/p/67250500

[2] https://zhuanlan.zhihu.com/p/339118204

[3] https://www.zhihu.com/question/37031188/answer/411760828

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

362481a6e8503e8613a6001675cf9916.png

e4d3a469271bcf510b87bf22c5ffcc91.png

e9d3c5e6f2819c0a14dabeadb4a809be.png

e83deddf5b42f13b60072e08c9c0f9b8.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

979f63211d4051f7f2aeaa7124646fac.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

de93882163b5314d4d638c9793d0a2e6.png

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最小二乘法是一种数学优化方法,通过最小化测量数据与理论模型之间的残差平方和,来估计出模型中的未知参数。最小二乘法广泛应用于回归分析、曲线拟合等领域。它可以根据测量数据得到最佳拟合曲线或平面,并用于预测和估计。最小二乘法的主要思想是通过调整参数值,使得测量数据与模型之间的误差最小化。 卡尔曼滤波是一种用于估计系统状态的滤波器,它利用系统的动态模型和测量数据,通过迭代递推的方法,来估计系统的状态,并进行滤波和预测。卡尔曼滤波在控制系统、机器人导航、信号处理等领域广泛应用。它通过融合系统模型和测量数据,可以准确地估计出系统的状态,并对未来状态进行预测。 最小二乘法卡尔曼滤波在某些方面有联系,但也有一些不同之处。最小二乘法是一种参数估计方法,而卡尔曼滤波是一种状态估计方法。最小二乘法通过最小化残差平方和来估计参数值,而卡尔曼滤波则通过迭代递推的方式来估计系统的状态。 在实际应用中,最小二乘法卡尔曼滤波常常结合使用。比如,在目标跟踪问题中,最小二乘法可以用来拟合目标的运动模型,而卡尔曼滤波则可以用来估计目标的当前状态和预测目标的未来状态。这样可以更准确地进行目标跟踪和预测。 综上所述,最小二乘法卡尔曼滤波是两种不同的数学方法,分别用于参数估计和状态估计。它们在某些情况下有联系,并可以结合使用来解决一些实际问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值