纪念卡尔曼滤波器发明60周年
零数学基础
最近我想写点关于卡尔曼滤波器的科普材料,一查今年恰好是卡尔曼博士发表他那篇著名而影响深远的论文60周年,这样写这篇小文就似乎有了那么一点仪式感。
标题起得有点恶俗,类似于什么xxxx傻瓜书,十分钟学会xxxx等等。不过其实倒是很符合这篇文章的内容;实际上我甚至觉得另外一个标题可能更合适些——零数学基础理解卡尔曼滤波理论。
卡尔曼滤波理论自从因50年前阿波罗登月项目成功而一举成名后,至今已被广泛应用在自动化、控制、社会经济、金融分析等领域,具有极高的应用价值。也因此很多人都非常想学会这个重要的理论工具。但卡尔曼滤波理论的大量数学公式如同刺猬一般让人望而生畏,感觉无从下手,也因此一直迈不出第一步。0数学基础,是不是夸张了些?
大凡科学理论,终其根本是一种哲学思想,体现的是思考者对事物本源的认识,而数学的作用只是对思想做量化建模和分析的工具。思想是可以独立于不同的工具而存在的。从这个意义上讲,理解卡尔曼博士的思想,的确不需要任何数学工具。你现在看到的那么多描述卡尔曼滤波器的数学公式,只是在现有的数学工具集下,卡尔曼博士思想的一种表现形式。而在另外一种量化分析工具集下,他的思想的表现形式可能完全不同。所以学习一种理论时,我倾向于剥离其数学工具的表象,先理解其不依附于特定工具的思想和认知方法。
人人自带卡尔曼滤波
首先要弄清的是,卡尔曼滤波理论所有的工作可以归结为一点,都是为了更准确地预测(predict)出系统下一个状态,当然你也可以把这个工作称为估计(estimate)。这两个词在卡尔曼滤波理论中的定义是有差别的,但在目前这个阶段的科普中我们暂时先不区分。
很容易理解的是,现实世界中的任何一个系统,都充满了各种各样的干扰因素。所以你如果只是在纸上根据一个严格的数学公式来计算未来状态的话,那当然会跟实际结果大相径庭。因此我们必须要把干扰因素考虑进来。
如何分析干扰因素?当我们关心干扰的时候,我们其实是在关心不确定性(或者叫可能性,准确度等等)问题——干扰一般都是随机的,这样一来我们就必须在根据公式计算出来的值上叠加一个随机量,也因此得到了一个有一定随机程度的数值,这个值在一定的范围内随机波动。那到底取哪个值呢?既然是随机的,那我们只能猜一个,但通常我们并不会随便猜,而是很自然地会猜自己觉得最有可能的那个值——当然怎样才算最有可能,那就得看我们自己的经验如何了。
OK,现在我们对系统状态有了一个估计值,这个估计有一定概率是对的,也有可能是错的。如果我们能接受这个结果,那么这个事情就到此为止了。但通常我们都想尽可能再准确一点,怎么办呢?——生活中很常见的办法是,当自己拿不定主意的时候,再找个人来商量出出主意啊!
各位不要笑,这个朴素的办法背后的其实蕴含了深刻的哲学原理——看问题多一个不同角度往往更接近真相:-) 现在你的朋友来了,那么他也如法炮制猜了一个数,这个数毫无疑问跟你猜的肯定不一样,因为他的经验值肯定更你不一样嘛;那现在问题来了,那到底听谁的呢?你们进行了热烈的讨论,最终你们虽然没有完全达成一致,但还是达成了部分共识——你们都同意这个值至少在某个范围内是最有可能的,因此最终你和你朋友一起给出了这个系统状态的估计值,这个值的范围被缩小到了你和你朋友都认可的那个范围里。因为有了你朋友的支持,你现在感觉对这个结论的信心增强了。
现在归纳一下我们到底做了什么?
1. 你自己对系统做了一个猜测,有一定可能是对的,也有可能是错的,并且你感到不是很有把握。
2. 保险起见,你找了一个朋友来出出主意,经过讨论后融合了他的意见,现在有了一个两个人都觉得更有信心的结论。
3. 如果对这个结论还不满意的话,这个过程其实可以一直重复下去;朋友还可以再邀请一个他的朋友来帮忙,把他的朋友的意见也融合进来。
4. 当然朋友是不能随便找的。如果这个朋友对你的问题毫无经验,那你跟他讨论只会让你感到更加心烦意乱,这个情况就叫不确定性增加了。所以你要找一个靠谱一些的朋友,这样才能减少不确定性。至于怎样算“靠谱”相信你自然是有个标准的。
好了,到此为止,卡尔曼滤波的核心思想其实已经讲完了。你肯定会惊讶地问,这难道不是我们在日常生活中最正常最自然不过的行为吗?
没错,可以这么说,每个人实际上都是自带卡尔曼滤波器的,这方面文科生理科生都一样;只是你并没有察觉这一点,没有把这个过程用数学工具抽象出来上升到理论高度,再应用到不同领域来解决问题而已。而这一切正是60年前卡尔曼博士所做的工作。卡尔曼博士察觉到,在真实世界中,虽然每个单独的测量都会产生随机误差,但通过不同的方式和不同的角度对系统进行多个测量,可以提供更多系统状态的相关信息,把这些信息进行融合可以有效提高我们对系统状态预测的准确性。
1969年,也就是卡尔曼博士发表论文之后的第9年,NASA在阿波罗登月项目中,用卡尔曼滤波器理论控制月球轨道舱和登月仓成功对接。
抽象和升华
在上面的这个例子里,有几个关键点值得关注,第一个是在猜测或给出结论时的“把握”,或者说是“不确定性”;第二个就是你请的朋友的“靠谱”程度;第三个就是你和你的朋友讨论时“融合”不同意见的方法和过程。这三点实际上决定了你最终作出决定的质量。抓住这三个要素进行数学建模,就开启了迈向卡尔曼滤波的数学表现形式的第一步。
卡尔曼滤波的具体数学表现形式我就不写了,因为这方面的教材很多,没有必要重复,大家可以选择适合自己的进一步阅读。
对于文科生来说,数学工具可能使用起来的不是那么自如。但是也不要紧,我前面讲过,数学只是描述思想的工具中的一种,还有其他的表达方式。所以我也很期待从这里开始,能看到各位用自己擅长的方式来精彩演绎这一理论。
多样性是幸福本源
写到这里我自己忍不住都有些感叹。世界奇妙至此,往往此界困扰众生的问题,却不经意间在另一时空给出了答案。罗素曾在他的《西方哲学史》中写道:多样性乃是幸福的本源。罗素自己也是个伟大的数学家,然而他却没有对这一句论述给出证明。数百年来无数人为此辩论争斗甚至付出生命代价,究竟为什么我们的世界需要多样性?维护多样性是否值得我们付出那样巨大的代价?
卡尔曼滤波理论当然还算不上一个完整的最终证明,但是他的巨大成功为罗素的这一观点提供了有力的理论和应用支持,那就是保持多样性有助于接近世界的本源。我们在不断探索世界的多样性过程中,能够不断以不同方式,从不同角度揭示更多事物的内部信息,也终将使我们越来越接近世界的本源。单一世界是没有生命力的,只能和本源渐行渐远而自行消亡。
网友评论