近似贝叶斯计算 ABC 是什么?不算似然,靠模拟来做贝叶斯推断
近似贝叶斯计算(Approximate Bayesian Computation,ABC)是一类不需要计算似然函数就能进行贝叶斯推断的方法。它适用于这样的情况:我们有一个可以用来模拟数据的模型,但模型非常复杂,无法写出或者计算出“在给定参数下观测到这些数据的概率”,也就是似然函数。
它要解决的问题
贝叶斯推断的核心是根据观测到的数据,更新我们对模型参数的认识,得到参数的后验分布。按照贝叶斯定理,后验分布正比于先验分布乘以似然函数。对于很多简单的模型,似然函数可以直接写出来。但在很多科学领域中,研究者使用的是非常复杂的模拟模型:比如模拟一种传染病在人群中的传播过程,模拟一个物种在漫长的进化历史中基因的变化,模拟生态系统中多个物种之间的相互作用。这些模型包含大量随机的环节,给定一组参数,可以很容易地在计算机上运行一次模拟、生成一组数据,但几乎不可能写出精确的似然函数。传统的贝叶斯方法在这里就无能为力了。
基本的思路:模拟、比较、筛选
近似贝叶斯计算的想法非常直观:既然算不出似然,那就直接用模拟来代替。最基本的方法叫拒绝采样,步骤如下:从参数的先验分布中随机地抽取一组参数;用这组参数运行模型,模拟出一组数据;比较模拟出的数据和真实观测到的数据,看它们是否足够接近;如果足够接近,就保留这组参数,否则就丢弃;重复以上步骤很多次,所有被保留下来的参数,就构成了对后验分布的一个近似。
直观地说,那些能够模拟出与真实数据相似结果的参数,更可能是真实的参数。当判断“足够接近”的标准无限地严格时,得到的就是精确的后验分布。
“近似”体现在哪里
在实际中,模拟出的数据几乎不可能和观测数据一模一样,尤其当数据量很大时。因此需要做两件事:一是用少数几个概括性的统计量来代表整个数据集,比如平均值、方差、某些关键的比例,这叫摘要统计量,只比较这些统计量,而不是比较全部的原始数据;二是设定一个容忍度,只要摘要统计量之间的距离小于这个容忍度,就认为足够接近。这两点都会引入近似的误差:摘要统计量可能丢失了数据中的部分信息,容忍度越大,得到的后验分布越不准确,但容忍度越小,被接受的参数越少,需要进行的模拟次数就越多,计算代价越高。
发展和应用
近似贝叶斯计算的思想最早出现在 20 世纪 80 年代,在 20 世纪 90 年代末被用于群体遗传学,研究人类和其他物种的进化历史,比如推断人口的规模变化、迁徙的时间。2002 年,Mark Beaumont 等人的工作推动了这一方法的普及。为了提高效率,研究者提出了基于马尔可夫链蒙特卡罗的 ABC 方法和序贯蒙特卡罗 ABC 方法,让参数的抽取更集中在有希望的区域。如今,它被广泛用于流行病学、生态学、系统生物学、天文学等领域。近年来,结合神经网络的“基于模拟的推断”方法快速发展,用神经网络直接从模拟数据中学习后验分布或似然函数,可以看作近似贝叶斯计算思想的延伸。