学:学生,教:教师,李:李晓榕。
李:再讨论一个原理,大家多少都知道:一个问题难以求得通解时,唯一的出路是以特制胜——充分考虑利用特殊性,也就是特殊化。明确提出来,有相当的指导意义。
学:听起来有点玄,怎么以特制胜呢?
李:毫不玄奥。百思不得其通解时,只能牺牲“通”而求助于“特”。这有各种体现。一个具体办法是加条件,使之更具体,就是只考虑某类特殊情况,在某个条件下解决问题。理论上就是加假设,但不一定用假设这种形式。做一个假设,相当于把问题切了一块,变小了,假设越强,问题变得越小。我把这种方法称为
条件化(conditioning)方法,
简称为条件法。我曾经想做演讲专门谈谈条件法的强大功能。条件法是概率论中对付非独立随机问题最强大、最有用的工具,是鞅论的基础。其实,统计界关于贝叶斯学派的长期争论,根源也在此。现实问题错综复杂,先验信息五花八门,要想统一解决所有各种先验信息情况下的统计问题是不可能的。归根结底,频率学派和贝叶斯学派都采用条件法,但假设的条件不同,建立了各自的理论。频率学派不承认先验信息,而贝叶斯学派则假设已知完备的先验信息。它们分别对应于两种极端情况。早先,一派总想打倒另一派,互相指责,指出对方的局限、不合理之处。其实,由上述可见,它们明显各有利弊,都以偏概全,想打倒另一派就是有点儿自以为是。在统计界,贝叶斯学派的势力不断增强,但恐怕仍处于下风。与此相反,动态系统的滤波往往需要递推,而贝叶斯框架很适合于递推滤波。所以我的不少熟人、同事是铁杆的贝叶斯信徒。我是个“机会主义者”,我看情况、视机会而定:如果先验信息丰富,我倾向于用贝叶斯方法;先验信息贫乏,我就倾向于用非贝叶斯方法。与此类似,参数统计与非参数统计的区别也在于此。它们都用条件法,但条件各异:前者假设问题被一个参数模型有效描述,后者假设没有或不知道这么一个模型。注意,它们也分处两极。我认为,如果先验信息丰富得足以建立一个不错的参数模型,采用参数方法更好,否则可以考虑非参数方法。
教:为什么它们都是针对极端情况呢?
李:极端情况最明确,往往也就最容易对付,因而理论上往往是对极端情况首先突破的。 也正因为如此,各种有关稳健和鲁棒的学科分支,比如稳健统计、鲁棒控制等,往往基于minmax,也就是优化在最恶劣条件下的效果。介于两极之间的中间情况覆盖面广,森罗万象,难以在理论上统一解决。出路一般仍是特殊化,找到对其中某一类情况的明确而又统一的描述,进而求解。各个学科的方法往往可以分成两大类:基于模型的和不基于模型的。前者通过模型来确定条件法中的条件,后者针对不存在模型信息的情况,而不是已有信息不足以确定模型。所以,这又是两个极端。
学:什么方法是不基于模型的?能不能举个例子说明一下?
李:科学旨在对数据大范围、大面积的压缩,这是所谓思维经济原理。模型就是背景知识高度浓缩的一种简化形式。在传统科学中,基于模型的方法明显处于主导地位,但近半个世纪以来,非模型法茁壮成长,日渐强大。参数统计是基于模型的,而非参数统计就是典型的不基于模型的方法。信号分析的傅里叶变换法是不基于模型的,非线性问题的神经网络法也是不基于模型的。这类方法的共性是,他们的基础是广泛适用的东西,本质上不依赖于关于对象的相关背景知识和先验信息。计算机学科,特别是人工智能、机器学习中的大多数方法都不基于模型。这类方法不需要对象的背景知识和先验信息,所以它们的应用面广而容易,从而易于走红以致被滥用。它们的局限是,它们靠大量数据取胜,数据量不够则效果不佳。依我之见,不该偷懒,最好设法把它们与背景知识和先验信息有机地结合起来。作为我的研究专长之一的多模型法,就介于基于模型和不基于模型的两极之间。它假设问题可以有多个模型,其种类可以大不相同,我们事先不知道哪个最好,所以都用上,只是这些模型的权重(比如概率)大小不同,取决于与数据的吻合程度。可见,多模型方法比传统的基于模型的方法适用面更广,它以多取胜,代价是运算量大。
学:用多个模型似乎还是不如用最好的一个模型,因为不好的模型多少也分到一点权重。
李:这个观点似是而非。首先,事先不知道哪个模型最好,所以用最好的那一个模型是海市蜃楼,可望而不可即。其次,任何一个相对简单的模型都不一定始终是最好的。换言之,最好的模型并非一层不变,它可能随着场景、情况和时间的变化而变化。不用多个模型,就难以适应变化。再说,多模型所组成的团队,成员相辅相成,取长补短,可说是“模型融合”。三个臭皮匠,赛过诸葛亮,其综合结果比个人英雄主义的产物更好。多模型方法已有三代。第一代以其输出结果是汇总、综合各成员的输出而胜于基于单一模型的方法,尤其因为汇总、综合是事后进行的,而不像单一模型方法必须事先选定模型。第二代强调团队内部的配合,因而胜于不讲内部配合的第一代。我提出的第三代注重团队的组成,它可以聘用新成员、解聘不再称职的老成员,因而胜于团队成员固定的前两代。我已经有了第四代的初步想法,不过,要良好实现,恐怕还是任重道远。
教:我们所知道的多模型方法都是用于动态滤波的,比如目标跟踪和故障检测,没想到您把它上升到这么高的层次上。它在其他领域也用上了吗?
李:是的,多模型方法也已在控制、建模等领域一显身手。我们正在开创多模型决策方法。
学:为什么强调明确而统一的描述?没有这样一个描述,就不能求解吗?
李:解是基于描述的。没有明确的描述,就很难有行之有效的解。没有统一的描述,就很难有统一解。大多数实际问题属于中间情况,如果已有的方法是针对极端情况的,没有明确统一的描述,人们只能勉为其难,就事论事地解决,根本谈不上统一解决。
学:对我来说,上面这些例子似乎太高深、太笼统了,您能不能举个条件法更具体的例子?
李:好的。用于动态滤波、特别是机动目标跟踪的交互式多模型(IMM)算法就是条件法的成功范例之一。与GPB1算法中的汇总、融合的本质E[x_k|z_(k-1)]相比,它的优越性完全植根于一个明智的条件化步骤:E[x_k|z_(k-1),m_k],其中额外的条件m_k是k时刻假设为真的模型。这个额外的条件,加得很明智,这是IMM算法全部优势的根源所在。另外,我提出过一个“混态条件平均性能预测器”,对于评价混态估计算法的性能特别有效。它就是利用条件化这一强大方法,将性能分析的解析法与计算机结合起来,使得复杂算法的性能预测成为可能。
学:您的这个“性能预测器”到底是什么呢?
李:对于一个复杂算法,性能分析太难,因为无法靠数学整个推导出来,计算机仿真的结果又太随机、太依赖于场景的方方面面。搞来搞去,我意识到:要对付的是一种递推算法,每一步都能具体推导出来,但是无法对付步与步之间的复杂变化。结果就用条件法,把这种变化的根源作为一种条件拎出来。这个条件就是混态系统的模式序列,它是从问题中提取出的一个数学抽象,可以说是对场景动态本质的一种简洁描述。给定这个序列,就能算每步的量,进而算出算法的平均性能。(附带说一句,hybrid systems之名来源于它的状态既有普通连续取值的分量,又有离散取值或逻辑分量,所以译为“混态系统”比“混合系统”更准确清晰。)用这个方法对付两个重要算法、进一步升华后,我到处找,看有没有人做出类似的。结论是,这是个新方法。此前,性能估算方法主要有三类:一是性能分析,它解析地得到性能与某些关键参数之间的关系,相当于建立一个性能模型。送进这些关键参数,输出就是性能。二是计算机仿真,用蒙特卡罗法,大家都很清楚。三是上界或者下界,这种界只能半定量地确定性能。我的这种方法,不属于其中任何一类,我把它叫做“性能预测器”,它是一个算法,用于计算某些算法的平均性能。叫它“器”是因为它没有完全的解析形式,送进场景模式序列,它靠计算机算出算法的平均性能,就像卡尔曼滤波器是个算法,但每步都是数学公式。我这个结果也是计算机和数学的结合,每步内的公式都是在给定的模式序列上理论推导出的,但要算出结果,离开计算机不成。另外,与随机仿真不同,它的结果是确定的。后来,我在一本书中专门写了一章谈它,说它不同于其他方法,自成新的一类。它虽然更复杂一点,但发展都是这样,先做解析的,情况复杂后才忍痛割爱。比如,特殊函数之前的函数都是封闭的。问题复杂后这就无法回避,就要人机结合。正如Mathematica的创始人Stephen Wolfram在《A New Kind of Science》(《一种新科学》)中所说的那样,一个子程序也可以是一个很好的数学模型,它动摇了微分方程作为数学模型唯我独尊的地位。
教:这个方法在思想上确实很有创意。
李:前面说要在了解已有方法之前解决问题,这个研究是我的切身例子之一。另一个特殊化办法是
分而治之,
就是切块、分割、各个击破(divide and conquer)。这个方法源于上述特殊化原理,是典型的计算机科学方法,就是if……then……。其中if就是分割,then就是击破,可以解决大量复杂问题。一个问题复杂是因为含有很多不同内容,一旦切小就单纯多了、好对付多了。分而治之是科学之血,在科学中无处不在,它是西方思维有别于中国传统思维的一大典型特色。科学科学,分“科”之学,离 “分”不成。中国传统当然也有分而击之的思想,但地位没有这么崇高。世界极其复杂,盘根错节。如果不分而击之,就像面对一个大刺猬,不知如何下手。所以,面对一个庞杂的问题,非分而治之不可。正因如此,笛卡尔把它标举成有效思维的四大原理之一。
学:笛卡尔的其他几个原理是什么?
李:①除非清楚得不容置疑,不要认定任何东西是理所当然的,②分而治之,③循序渐进,由浅入深,先易后难,④思维要尽可能全面、滴水不漏。这些原理是他在《Discours de la Méthode》(《方法谈》)中提出的,他认为严守它们就能解决所有思维难题。不少学者认为这四条确实是思维的良好起点。
学:您读过笛卡尔这本书的原著吗?
李:原著是用法文写的,我读过两种英译本。这本书很薄,其实他的书都不厚,不像后来康德、黑格尔等。分而击之的主要难点在于怎么分。莱布尼兹一针见血地指出:不讲分解技巧,笛卡尔法则就不大有用。无经验者对问题分解不当,反而会增加困难。(The rule of Descartes is of little use as long as the art of dividing…remains unexplained…By dividing his problem into unsuitable parts, the unexperienced problem-solver may increase his difficulty.)分解策略之一是按容易求解的方式来分,之二是在弱耦合处下手,切断联系。广义地说,分而治之也包括条件法,也就是将一复杂问题分解出一部分加以求解,而不管其他部分。这时不妨从最易得手处入手。举例来说,我研究多模型法中的模型集设计问题,得到两种一般方法,在研究第三种方法时遇到了困难。 想了很久,解决不了,无奈,我将其特殊化,做了一个比较合理但并非始终成立的假设而解决了问题。分而击之有很多好处,比如,解决了一个子问题有助于培养信心和兴趣,虽然特殊化了,至少还是解决了部分问题。不过,分得越细,意义越小。分而击之虽能解决极为复杂的问题,但这种解不够优雅是其明显不足。如果分块后每块都能解决,最好再设法把它们综合起来,我把这种方法叫做
分解-融合法
(decompose and fuse)或“分进合击法”。计算机学科的通病是不大考虑怎样把这些块融合起来。
教:您能不能多说说分解-融合法?怎么把分块再融合起来?
李:怎么“合击”确实是关键。分解-融合法是分合相辅,以分求合,寓合于分。它首先化整为零,各个击破,然后相互呼应,统筹解决。融合时着眼于协调各部分,找到和谐的一体。最简单的例子是全概率公式:P{A} = P{A|B1}P{B1} + … + P{A|Bn}P{Bn},其中将空间分割成B1,…,Bn 是分解,求P{A|B1},…,P{A|Bn}是各个击破,而以概率P{B1},…,P{Bn}为权重的加权和就是融合。该公式提供了用分解-融合法求概率P{A}的一种方法,是概率论的一个基本定律和工具。分解-融合法的常用形式之一是这种先分解再做加权和,也就是叠加。基于最小均方误差的多模型方法的基础就是这样一种分解-融合法。我第一次明确提出分解-融合法,是十几年前:我研究具有雷达电子对抗的目标跟踪,首先设法区分电子对抗量测与其他量测,各个击破,然后将它们融合。其实,前人早已明确提出这种方法,只是我当时孤陋寡闻而已。后来我看到波利亚在《How to Solve It?》(《怎样解题》)中花了一定篇幅讨论分解-重组法(decomposing and recombining)。再后来,我意识到分解-融合法其实就是分析与综合的一种有机结合,而分析和综合可是老生常谈。做个总结,以特制胜有多方面,我们说了三个主要的:条件化,分而击之,分解-融合。