状态协方差矩阵
当机器人同时估计好几样东西时——比如它向东的位置、向北的位置,以及它朝向哪个方向——它持有的并不只是对每一样的一个最佳猜测;它还持有一份度量,衡量自己对每一样有多没把握,而且至关重要的是,衡量这些不确定性彼此之间有怎样的关联。状态协方差矩阵就是把这一切打包在一起的那张利落的小表格。在它的对角线上,坐着每一个单独量的不确定性(我向东的位置有多模糊?我的朝向呢?),而对角线之外,坐着的是相关性——在一件事上判断错了,往往会和在另一件事上也判断错相伴而行的那种方式。
把机器人对自己所在位置的判断想象成一团模糊的云,而不是一个清晰的点。一团又小又圆的云,意味着机器人很自信,且在每个方向上同样笃定。一团又长又细、还歪斜着的云,则意味着某种更微妙的情形:机器人沿某一条线把位置摸得相当清楚,沿另一条线却含含糊糊,而那份歪斜则说明这两份不确定性是相互关联的——比方说,它也许知道自己在某面墙边的某处,却不知道沿着墙走了多远。协方差矩阵恰恰就是描述那团云的大小、形状和歪斜的配方。对角线上的数字沿每条轴把它拉伸或压缩;对角线外的数字则把它扭斜、压扁,从而刻画出那些相关性。
正是这张矩阵,让机器人能够诚实地推理自己知道什么、不知道什么,它也是卡尔曼滤波器这类滤波器背后的引擎。每做一次预测,那团云就会胀大,因为移动会增添不确定性;每收到一次好的传感器读数,那团云就会缩小,因为新鲜的证据让画面更锐利。这个形状甚至会告诉机器人,哪个传感器最能帮上忙——如果云在南北方向上拉得很长,那么一次能把「北」钉死的测量,就远比一次把「东」钉死的测量更有价值。要是没有这套对不确定性的记账,机器人就会把一个胡乱的猜测和一个几乎确定的事实当成同样可信,它的估计很快就会土崩瓦解。
一台机器人沿着一条又长又没什么特征的走廊行驶,它精确地知道自己离两侧墙壁各有多远,却只能含糊地知道自己沿走廊走了多远。它的不确定性之云是一根又长又细、顺着走廊指过去的香肠——而协方差矩阵记录的,正是这种被拉长、且偏向一侧的形状。
协方差矩阵编码了机器人不确定性之云的大小与歪斜——在它没把握的方向上拉长,在它笃定的方向上收窄。
对角线上的项是方差(每个变量自身的不确定性);对角线外的项是协方差(两个变量的误差如何一同变动)。某个对角线外的项接近零,意味着那两个估计大致彼此独立。