卡尔曼和他的故事
以下文章发表于《系统与控制纵横》2016年第3卷第2期
2016年7月3日,我正兴高采烈地把《卡尔曼滤波及其实时应用》英文第5版整理成册(该书最初是我和博士导师崔锦泰(Charles K. Chui)教授在1985年写成、由Springer-Verlag在1987年出版),一个突如其来的邮件让我的心绪跌到了谷底:“听说卡尔曼去世了。”没有任何犹豫,我立即把邮件转发给长辈何毓琦(Larry Yu-Chi Ho)先生求证,因为我知道他们是多年的好朋友。何先生回邮道:“Yes, unfortunately.”于是我沮丧地在新版书前言中加上了沉重的一句:“This new edition is dedicated to the memory of Rudolf E. Kalman (May 19, 1930–July 2, 2016).”
Rudolf E. Kalman(1930-2016)
鲁道夫·卡尔曼在1930年5月19日出生于匈牙利首都布达佩斯的一个犹太人家庭,他的匈牙利名字是Kálmán Rudolf Emil。卡尔曼对基础科学和工程技术甚至今天大数据分析的贡献是毋庸赘言的。
2016年9月5日,麻省理工学院(MIT)航空航天及工程制造历史学教授大卫·敏德尔(David Mindell)和 MIT媒体艺术与科学教授及媒体实验室前主任弗兰克·莫斯(Frank Moss)在《麻省理工学院技术评论》(MIT Technology Review)中写了一篇题为“How an Inventor You've Probably Never Heard of Shaped the Modern World”的纪念卡尔曼的文章,其中提到:
1943 年,卡尔曼的电气工程师父亲领着全家移民到了美国。卡尔曼于1953 和 1954 年在 MIT 先后获得电子工程学士和硕士学位,但没能通过 MIT 的博士资格考试,之后转往哥伦比亚大学,于 1957年获得博士学位,导师是 John Ralph Ragazzini(1912–1988),论文题目是“Analysis and Synthesis of Linear Systems Operating on Randomly Sampled Data”。
随后,1957-1958年间,卡尔曼在位于纽约州Poughkeepsie 镇的IBM Research Laboratory当技术员。1958-1964年他到了马里兰州巴尔德摩市由著名数学家 Solomon Lefschetz 创办的 Research Institute for Advanced Studies(RIAS)做数学研究。由于在这段时间里关于“卡尔曼滤波”的重要贡献,1964年他被斯坦福大学聘为教授,先后在电子、机械和运筹三个学系工作过,直至1971年。
在1969-1972年间,他曾在法国国立巴黎高等矿业学院(École Nationale Supérieure des Mines de Paris)的自动控制研究中心(Centre de recherche en automatique)担任过科学顾问。1971年,卡尔曼到了佛罗里达州位于Gainesville市的佛罗里达大学出任Graduate Research Professor 并任该校数学系统理论研究中心主任,至1992年62岁时退休。从1973年开始,卡尔曼还在瑞士苏黎世理工学院(Eidgenössische Technische Hochschule,简称 ETH,in Zürich)挂职教授并兼数学系统理论研究中心主任。卡尔曼一生指导的博士研究生并不多,有记录留在学术界的共14个,在1966-2000年间毕业。
卡尔曼30岁时一举成名,正所谓“三十而立”,但到退休前后才被选为美国国家工程院院士(1991)、美国艺术与科学院院士(1993)、美国国家科学院院士(1994)。他还是匈牙利、法国和俄罗斯科学院外籍院士,并被授予多个荣誉博士学位和荣誉教授称号。
2016年7月2日凌晨,卡尔曼在佛罗里达的家中安然辞世,享年86岁。7月8日早上,卡尔曼的亲人(妻子Constantina nee Stavrou、儿子 Andrew 和女儿Elisabeth 以及8个孙子女)和朋友在告别仪式之后把他安葬在Gainesville 市郊的 Forest Meadows 墓地。
卡尔曼一生获得的奖项不算太多,但都很有份量,一览如下:
卡尔曼获奥巴马总统授予美国国家科学奖章(2009)
前面提到,1958-1964年间卡尔曼在由著名数学家 Solomon Lefschetz 创办的 RIAS做数学研究。Lefschetz 是从法国École Centrale de Paris 毕业后来到美国的,后来在1970年获得美国数学学会Steele Prize大奖。1958年,卡尔曼把理查德·布希(Richard S. Bucy)从霍普金斯应用物理实验室介绍到了 RIAS,然后两人紧密合作。1958-1959年间,他们在前人(主要是Wiener, Kolmogorov, Shannon等)工作的基础上,把频域上的滤波理论和技术搬到了时域,在系统状态空间里对滤波问题进行处理。
首先是布希指出,在有限维状态空间条件下,用于推导维纳滤波的Wiener-Hopf方程等价于一个Riccati方程。然后卡尔曼和布希进一步发现,他们想要极小化的系统状态向量线性估计的那个方差矩阵正好满足这个Riccati方程!这关键的一步导致了后来熟知的 Kalman-Bucy Filter(卡尔曼-布希滤波器)。
卡尔曼1954年在MIT完成的硕士论文是关于离散时间线性动力系统的研究,因此他很自然地把卡尔曼-布希滤波器进行离散化,并得到了一套完整的递推公式,即今天熟知的Kalman Filter(卡尔曼滤波器)。卡尔曼滤波的主要优点是把维纳滤波的最优估计理论发展成可以实时递推计算的程式,因而让最优估计数学理论真正派上了用场。
说起来,“Kalman Filter”还是何毓琦先生首先建议命名的呢,那时他正好在RIAS访问卡尔曼。何毓琦回忆说,卡尔曼后来在2008 Draper Prize获奖致辞中还特别感谢了他。当然,这个“卡尔曼滤波器”称谓的合理性也来自如下的史实:卡尔曼本人首先在1960年发表了离散时间滤波算法,然后才和布希联名于1961年发表连续时间滤波算法,特别是前者在后来半个多世纪的数字技术年代里发挥得异常成功并已变得无可替代。
不过,超时代的卡尔曼滤波出师不利。何毓琦先生回忆道:“当时几乎所有控制方面的著名工作都在Fourier与Laplace变换后的所谓频域里进行。Kalman的方法则在动态系统上使用了时域微分方程模型。这在当时是非常离经叛道的,主流观点对此质疑很多。”另外,一些数学家认为卡尔曼的推导并不严格。几番周折之后,卡尔曼关于离散和连续时间滤波算法的这两篇奠基性论文不得不发表在机械工程(Transactions of the ASME,Series D, Journal of Basic Engineering)而不是电机工程或系统工程(当然更不是应用数学)杂志上。此外,卡尔曼1960年关于最优控制理论的奠基性论文也只好发表在墨西哥数学学会通报(Boletin de la Sociedad Matematica Mexicana)。
当年卡尔曼备受非议,其实还有一个更重要的原因。在卡尔曼文章发表的前一年,即1959年,精通雷达轨道跟踪理论的物理学家Peter Swerling 已经在天文科学杂志(Journal of The Astronautical Sciences)上发表了一个基于和Riccati方程等价的另一个方程的递推最小均方误差的估计算法,使用地面观测数据来估计卫星轨道。这个算法和卡尔曼滤波原理是一样的。当然,通过比较可以看出,卡尔曼滤波需要的条件较弱并且同时适合于平稳及非平稳随机过程,此外在Riccati方程计算处理中有更好的数值稳定性。
总之,那些年,卡尔曼成绩斐然却很不得意。就在那关键的时刻,出现了一个关键的人物。1960年,时任美国宇航局加利福尼亚州Ames Research Center(ARC)动力分析处主任的斯坦尼·施密特(Stanley F. Schmidt)正在一个史无前例的载人登月计划中主持导航项目。当年,宇宙飞船从陀螺仪、加速度计和雷达等传感器上获取的测量数据中充满了不确定性误差和随机噪声,严重地威胁着高速飞向月球并降落其岩石表面的宇宙飞船及宇航员的安全。因此他们必须从测量数据中把噪声滤掉,以便对飞船所处位置和运动速度作出非常精确的估算。施密特听闻卡尔曼有个很厉害的新算法,便邀请卡尔曼访问ARC并听取了他关于新型滤波器的报告,然后又到RIAS回访了他。
经过多方认证和周密思考之后,施密特认定了卡尔曼滤波算法能为他在宇航局主持的载人登月计划提供所需要的精确轨道估计和严格控制方法,决定在阿波罗-11号登月计划中的导航系统里采用卡尔曼滤波算法。1961年初,施密特让ARC和MIT同时进行实际数据的大型计算机仿真。当时最先进的数字计算机是IBM 704,但那台老式机器进行的是15-bit定点运算,操作不了把非线性系统线性化后的扩展卡尔曼滤波(Extended Kalman Filter,初期称为Kalman-Schmidt Filter),因为精确计算要求进行36-bit浮点运算。
怎么办呢?当时有一个在阿波罗项目管辖下的仪器实验室中实习的MIT数学系研究生詹姆斯·珀特(James E. Potter),他在一个周五下午讨论班里听到了这个棘手的计算问题,便把难题带了回家过周末。周一上班,他就为课题组带来了令所有人惊喜无比的答案:只需对算法中一些关键的对称矩阵作Cholesky平方根分解,就能让那台老式计算机胜任扩展卡尔曼滤波所需要进行的全部高精度计算!于是它被写进了阿波罗导航系统的计算机程序里,帮助宇航船在地球和月亮之间飞了个来回,并且在文献里留下了一个后来被广泛使用的平方根卡尔曼滤波算法。
阿波罗-11号导航系统计算机程序
(Apollo 11 Lunar Module Landing Program Codes)
取自Y. A. Loukissas and D. Mindell, MIT Design,
vol. 30, no. 2, pp. 4-16, 2014
阿波罗号飞船登月的成功使得卡尔曼和他的滤波器声名鹊起,也使卡尔曼的其他开创性工作如状态空间及其分解、能控性、能观性、系统最小实现、LQG等理论和方法得到广泛认可,它们在随后半个多世纪里一直引领控制理论和系统科学的主流。为此,从1981 年开始,发表卡尔曼第一篇滤波算法的美国机械工程学会(ASME)旗下的动力系统与控制技术委员会每年都颁发卡尔曼最佳论文奖(Rudolf Kalman Best Paper Award)。
Rudolf E. Kalman (1974)
卡尔曼滤波诞生后不久就传到了中国。1937年12月在MIT获博士学位后旋即回国的张钟俊院士(1915-1995)是最早关注卡尔曼滤波技术的中国学者之一。1964年,张钟俊先生就开创性地把卡尔曼滤波技术应用到了远航仪进行接收信号处理。1980年,张钟俊到佛罗里达访问了卡尔曼,翌年把卡尔曼请到了北京和上海访问。
在北京,卡尔曼访问了中科院系统科学研究所和北京大学数学系。据黄琳院士回忆,他当时很欣喜地协助时任数学系主任后任校长的丁石孙先生接待卡尔曼并参与安排他的学术座谈会。有趣的是,卡尔曼在发言时一开口就说:“现在人们都知道有牛顿力学,我相信将来大家都会知道有卡尔曼滤波。”
更有趣的是,卡尔曼在北京的另一场报告讲完后,一位听众提问:“有人说卡尔曼滤波与维纳滤波本质上是一样的。你对这种讲法怎么看?”卡尔曼沉思了片刻,反问道:“你知道为什么苏联首先发射了载人宇宙飞船,但却是美国人首先登上月球呢?”他环顾四周见没人回答,就说:“是因为当时苏联人不懂卡尔曼滤波。”在上海,韩正之教授(张钟俊院士的博士后)记得卡尔曼在上海交通大学和上海科学会堂分别讲了控制理论的发展和系统建模问题。同样颇有意思的是,并没有数学学位的卡尔曼要求在所有会议广告和通知上注明他是一个数学家。
张钟俊和卡尔曼(佛罗里达,1980年)[韩正之提供]
尽管早已誉满天下,卡尔曼后半生依然孜孜不倦地致力于学术研究和学术活动。他从1960年第一届International Federation of Automatic Control(IFAC)学术大会开始就经常参加这个系列会议并多次做技术性的报告。2005年卡尔曼在布拉格召开的第16届 IFAC大会上的演说结束时,他显示的ppt最后一页留下了后来为大家津津乐道的名言:
卡尔曼出席第一届IFAC,莫斯科(1960),第二排左边第二位
(取自O. A. Stepanov, Gyroscopy and Navigation,
vol.2, no. 2,2011)
最近几年,卡尔曼与剑桥大学Malcolm Smith教授及其弟子香港大学陈志强(MichaelZ. Q. Chen)博士一直有密切的联络交流,对无源网络综合的理论与计算问题提出过不少指导性意见。我参与了一篇相关研究合作论文,末尾我们还特别感谢了卡尔曼的无私帮助。不过那是后话。
卡尔曼在和陈志强讨论无源网络时写下的一页手稿(2013)
自古名人多轶事。据说,可能是出道时饱尝挫折苦楚的缘故,卡尔曼成名后变得有点自负。
美国数学学会把1986 年的Steele Prize(for Seminal Contribution to Research)授予卡尔曼。历史上获得这个大奖的多是泰斗级的数学家,例如1983年的得奖者是陈省身(for Lifetime Achievement)。1986年的颁奖典礼是在得克萨斯州(Texas)的San Antonio市举行的美国数学学会第93届年会中进行。
我当年在 Texas A&M 大学和导师一起刚向出版社送交了前面提到的《卡尔曼滤波及其实时应用》一书,而且学校离会议地点不到半天车程,于是我们师生俩便兴致冲冲地来到了会场。可是颁奖典礼上卡尔曼并没有出现,其致辞由他人代读,令我十分诧异和失望。当时听到周边的人议论说,是卡尔曼不高兴数学家们以前对他的批评,特别是认为这个奖项姗姗来迟,于是就托词不来了。
1991年,美国国家工程院(NAE)遴选了卡尔曼当新院士。据何毓琦先生回忆,卡尔曼或许出于同样的偏激情绪也没有前去参加颁授仪式。显然,和香农(Claude E. Shannon)一样,卡尔曼的不幸在于其研究领域决定了他不可能获得诺贝尔物理奖和图灵奖。据闻卡尔曼经常对别人抱怨说,即使是这样,他也应该获得诺贝尔经济学奖。
至此,讲完了我所知道关于卡尔曼的故事。蓦然回首,我相当欣喜自己很早就认知了卡尔曼滤波算法及其意义。1966年“文革”开始时我是个高中学生。1967年一天,我在同学家遇到了从吉林大学到广州访友的数学教师陈铭俊先生(1934-2008)。当时他正津津有味地推导卡尔曼滤波公式,见我好奇,便说现在已经没人读书了,你还对数学如此有兴趣?接下来,我们成了忘年好友。
他花了好几天时间给我私下义务授课,首先复习了最小二乘法,然后解释了线性代数中向量和矩阵的概念以及概率论中数学期望和方差等概念,最后就直接把我带进了卡尔曼滤波的主题。虽然具体的数学推导我全然不懂,但却明白了他归纳起来的一句话:卡尔曼滤波是线性无偏极小误差方差的递推算法。
之后,他还断断续续地义务给我上了多次辅导课,让我终于理解了卡尔曼滤波原理还学到了其他一些数学知识。于是有了我后来研究生期间和博士导师一起写的生平第一本书:《卡尔曼滤波及其实时应用》,1987年出版。1992年,我把一篇关于卡尔曼滤波逼近算法收敛性的论文奉献给恩师陈铭俊教授,感谢他在25年前把时为中学生的我带进了卡尔曼滤波研究领域。