本文根据 Student Dave’s Tutorials for Bayesian Ninjas,有感而发。

故事情节

忍者(ninja)躲在树上,树脚下有一片灌木草丛,草丛中一只鹌鹑(quail)正在孵蛋,只闻其声不见其形。鹌鹑不时鸣叫(squawk),忍者只能听到大概的方位。叫的次数越多,鹌鹑暴露位置的可能性就越大。最后忍者放出一枚手里剑,鹌鹑死了。

如下面图 1 所示:

Figure 1: 忍者与鹌鹑

Figure 1: 忍者与鹌鹑

概率传递理论

根据贝叶斯公式:

\begin{equation} \label{eq:bayes-theorem} P(H|D) = \frac{P(H)P(D|H)}{P(D)} \end{equation}

其中 \(P(H|D)\) 为后验概率;\(P(H)\) 为先验概率;\(H\) 为假设(Hypothesis);\(D\) 为观测数据(Data);\(P(D|H)\) 表示在已知假设 \(H\) 下得到测量结果 \(D\) 的概率(Likelihood)。\(P(D)\) 表示数据的发生概率,一般而言较难计算。(\(P(D)=\sum_i P(H_i)P(D|H_i)\), 其中 \(H_i\) 构成互不相容的完备事件)。方程\eqref{eq:bayes-theorem}中的分子 \(P(H)P(D|H)=P(H,D)\) 表示联合概率分布函数,后验概率 \(P(H|D)\) 是 \(P(H,D)\) 的条件概率。\(P(D)\) 的作用主要在于对分子进行归一化。

Figure 2: 联合概率分布

Figure 2: 联合概率分布

如图 2 所示,\(P(H,D)\) 为二元联合概率分布,两个自变量是随机变量 \(H\) 和 \(D\) 。因此对 \(H-D\) 坐标平面的面积分为 1。红蓝曲线为二元函数 \(P(H,D)\) 在相应边缘条件下的轮廓线。对红蓝曲线下的概率分布进行归一化(分别除以曲线下的面积 \(P(D)\) 和 \(P(H)\))就得到相应的条件概率分布。蓝色线对应 \(P(D|H)\), 红色线则代表后验概率 \(P(H|D)\) 。

改写\eqref{eq:bayes-theorem}式得到: \[ P(H_k|D_{1:k}) = \frac{P(H_k|D_{1:k-1})P(D_k|H_k)}{P(D_k|D_{1:k-1})} \] 其中 \(k\) 表示测量次数;\(H_k\) 表示第 \(k\) 次测量时的系统状态;\(D_{1:k-1}=\{D_1,D_2,\dots,D_{k-1}\}\) 表示前 \(k-1\) 次测量得到的信息。当 \(k=1\) 时,上式变为 \(P(H_1|D_1) = \frac{P(H_1)P(D_1|H_1)}{P(D_1)}\) 。先验概率 \(P(H_k|D_{1:k-1})\) 是在第 \(k\) 次测量之前对系统状态的预测,建立在前 \(k-1\) 次测量的数据基础上。根据预测,产生新测量结果 \(D_k\) 的可能性是 \(P(D_k|H_k)\) 。在经过第 \(k\) 次测量 \(D_k\) 后,得到后验概率 \(P(H_k|D_{1:k})\) 。下一回合再次对系统状态 \(H_{k+1}\) 进行预测。这是一个概率传递过程,第 \(k\) 次测量的后验概率成为第 \(k+1\) 次测量的先验概率。取 \(P(H_{k+1}|D_{1:k})=P(H_k|D_{1:k})\), 后验概率被作为知识,预测下一步的系统状态。通过学习新的信息 \(D_k\), 将系统状态从 \(H_k\) 更新到 \(H_{k+1}\) 。这种递归方法称为递归贝叶斯滤波器(Recursive Bayesian Filter)。

根据马尔科夫性质:\(P(H_{k+1}|H_0,H_1,H_2,\dots,H_k)=P(H_{k+1}|H_k)\); 即只有当前状态能用来预测系统的未来,过去的历史状态对于预测未来无关。由 \(P(H_{k+1}|D_{1:k})=P(H_k|D_{1:k})\) 可以看出,这是一个典型的马尔科夫链(Markov chain)。

分析案例

鹌鹑没有走动,在同一位置 \(o\) 处鸣叫了 \(N\) 次。忍者看不见鹌鹑,其位置对于忍者处于黑箱状态。鹌鹑的叫声是黑箱唯一输出的信息。一开始,忍者只能认为鹌鹑以均匀概率分布于草丛中。当他听到鹌鹑的叫声 \(S\) 时,就能判断出鹌鹑的大致区域,相当于一次测量。由于听觉的不确定性造成测量的误差,所以忍者听到的鹌鹑叫声 \(S\) 按照一定的概率(高斯正态分布)分布于真实位置 \(o\) 的周围草丛中。对忍者来说,鹌鹑(quail)的位置是一个随机变量 \(Q\), 叫声使其不再是均匀分布,而是提炼出一些更可能的区域。忍者每听到一次鸣叫就刷新一次判断,利用得到的信息不断逼近鹌鹑的真实位置。

对于本案例来说,鹌鹑的位置 \(Q\) 是黑箱内的系统状态,忍者听到的叫声 \(S\) 是黑箱输出的信息。所以由上式得:

\begin{equation} \label{eq:quail-location} P(Q_k|S_{1:k}) = \frac{P(Q_k|S_{1:k-1})P(S_k|Q_k)}{P(S_k|S_{1:k-1})} \end{equation}

式子表示当忍者听到鹌鹑第 \(k\) 次叫声后,对鹌鹑位置的估计(后验)。分子中 \(P(Q_k|S_{1:k-1})\) 表示忍者根据前 \(k-1\) 次叫声对鹌鹑位置的估计(先验);\(P(S_k|Q_k)\) 表示忍者听觉造成的不确定性(测量),即实际位置在 \(Q_k\) 处的鹌鹑叫一声,在忍者听来分布在一块区域,例如 \(S_k\) 处的概率。在计算时,式\eqref{eq:quail-location}中分母往往是不重要的,重要的是将分子归一化(即将所有不相容的分子概率加起来作为分母),使结果满足概率分布的归一化条件。

Student Dave’s Tutorials 对于各种滤波器都有视频介绍,如常用于跟踪的卡尔曼滤波器,基于蒙特卡洛方法的粒子滤波器等。只是他的视频发布在 Youtube 上,需要翻墙才能观看,“工欲善其事必先利其器”嘛!下面给出他的网址。

题外话

忍者和鹌鹑的故事让我想起了《三体》中对黑暗森林的描述。地球文明就是那只鹌鹑,忍者则是宇宙中的超级文明。人类不停的对宇宙广播自己的信息,诸如 “嘿,有人么?我在这里!”,就像鹌鹑的傻叫。广播的次数越多,信息越丰富,太阳系暴露坐标的可能性就越大,招来打击是迟早的事情。忍者放出的手里剑,正如三体人的强互作用力探测器“水滴”、或是其他超级文明手中的“光粒”或“二向箔”。在黑暗森林中生存,一定要目光远大、未雨绸缪,更要学会隐藏自己。藏在黑域中能够永久的避免打击,黑域就像黑洞,信息只能流入却不能流出,看上去是一片死亡之地。只有死亡才是真正的安全声明,死神永生!