贝叶斯计算具体围绕两个步骤展开,分别为:计算后验分布$p(θ| y)$和计算后验预测分布$p(\tilde{y} | y)$。
阅读相关材料可知,对于一些简单的案例,我们可以以闭合形式进行分析计算;或直接使用标准分布(正态分布、伽马分布、贝塔分布、泊松分布等)的预编程案例和相应的数值进行计算。然而,对于复杂或不寻常的模型或高维模型,往往需要更复杂的算法来近似后验分布,通常通过组合不同的算法才能实现最高效的计算。使用Bayes定理时,我们经常使用乘积$p(θ)p(y |θ)$,即“先验乘以似然”,它与后验密度成正比。本文简要概述这些近似计算积分的原理与过程。
- 后验预测分布$p(\tilde{y} | y)$,指的是在给定已知样本数据下,预测新数据所使用的分布。因此,这个分布是关于数据,而非参数的分布。通常运用于使用机器学习方法进行数据预测的场景。在使用机器学习方法进行预测的过程中,我们会使用训练集拟合一个模型,并利用模型去预测测试集中的数据。而在这里,后验预测分布实际上就是我们结合先验分布$p(θ)$与已知数据$y$得到的一个模型。
- 后验分布$p(θ|y)$或$p_{posterior}(θ)$,指的是我们用已有数据对参数先验分布进行更新得到的分布。
虽然二者的含义完全不同,但他们之间存在着紧密的联系。可以说,后验预测分布正是通过后验分布得到的。我们发现,通过全概率公式,我们可以得到:
在这里,当我们仔细审视这个推导过程时可以发现,使用
事实上,我们在贝叶斯统计中并不一定需要严格区分前验分布与后验分布,在对参数
下面介绍一些近似计算积分的原理和过程:
数值积分,用于求定积分的近似值,也称为“求积”,是指通过计算有限个点的函数值来计算连续函数上的积分的方法。在数值分析中,数值积分是计算定积分数值的方法和理论。在数学分析中,给定函数的定积分的计算不总是可行的,许多定积分不能用已知的积分公式得到精确值。
数值积分是利用黎曼积分等数学定义,用数值逼近的方法近似计算给定的定积分值。借助于电子计算设备,数值积分可以快速而有效地计算复杂的积分。 通过增加评估函数的点数,可以获得所需的精度。数值积分方法可分为模拟(随机)方法(如蒙特卡罗)和确定性函数方法(如许多求积规则方法)。
(1)模拟方法(Simulation methods):
模拟(随机)方法是指从期望分布
(2)确定性函数方法(Deterministic methods):
确定性数值积分方法基于评估选定点
最简单的确定性方法是在具有相等权重的网格中评估被积函数。网格方法( Grid methods) 可以自适应地从后验模式开始网格形成。对于一个部分具有某种特定形式的高斯被积函数,存在特定的求积规则可以用更少的被积函数评估给出更准确的估计。其有界和无界区域都存在正交规则。
分布(解析)近似,其用一些更简单的参数分布近似后验,可以直接计算积分;也可以使用分布近似作为模拟方法的起点。可以称之为“忽略一些信息的粗略估计”。
在进行更精细的近似或采用其他复杂方法之前,使用一些简单的非迭代方法获得目标分布位置的粗略估计(即模型中参数的点估计)是很有用的。丢弃掉模型和数据的一部分,然后创建一个简单的问题,可以方便地找到参数估计值。例如在分层模型中,可以先粗略估计超参数
当某些数据丢失时,分布近似是补齐数据的一种好的方法,即根据可用数据简单地估算缺失值。这种粗略估计通常既方便又可靠,因为它们可以直接通过使用计算机相应的程序进行计算。
在简单的非分层贝叶斯模型中,相应参数通常很容易直接从后验分布中得出,尤其是在假设共轭先验分布的情况下。而对于更复杂的问题,直接模拟法和拒绝采样法可以帮助我们分析、分解分布并对这些分布进行部分模拟。首先从超参数的边缘后验分布中采样,然后根据数据和模拟的超参数绘制其他参数。很多时候我们可以对“较大”问题的“部分”执行直接模拟和分析积分方法,
(1)通过在点网格处计算直接逼近(Direct approximation by calculating at a grid of points)
对于最简单的离散近似,首先计算目标密度函数
(2)从预测分布进行模拟(Simulating from predictive distributions)
一旦我们从后验分布
(3)拒绝采样(Rejection sampling)
假设我们想获得概率密度
- 我们可以从与
$g$ 成比例的概率密度中得出。 不要求$g(θ)$ 积分为 1,但$g(θ)$ 必须有一个有限积分。 - 重要性比(importance ratio)
$\frac{p(θ|y)}{ g(θ)}$ 必须有一个已知的界限; 也就是说,必须存在已知的常数$M$ ,对于所有的$θ$ ,$\frac{p(θ|y)}{ g(θ)} ≤ M$。
拒绝采样算法分两步进行:
- 从与
$g(θ)$ 成比例的概率密度中随机采样$θ$ 。 - 以概率$\frac{p(θ|y)}{ Mg(θ)}$ ,接受
$θ$ 作为$p$ 的一个抽样。 如果描述的$θ$ 被拒绝,则返回步骤 1。
用于拒绝采样的近似密度
使用符号选择函数
拒绝抽样一般用于从标准单变量分布中进行抽样,是一种极其方便与快截的方法。 如果截断部分中密度质量的比例不接近 1,它也可以用于常规的截断多元分布( truncated multivariate distributions)。
重要性采样是一种与拒绝抽样相关的方法,也是 Metropolis 算法的前身,用于对从目标分布的近似值中抽取的随机样本计算期望值。
如果
其中可以使用估计值$S$绘制
其中因子:
$$ w(θ^s ) = \frac{q(θ^s|y)}{ g (θ^s)}$$
称为重要性比率或重要性权重。 回想一下,$q$是我们对非归一化密度的一般表示法; 也就是说,$q(θ|y)$ 等于
通常建议对上面表达式中的分子和分母使用相同的随机抽取集,以减少估计中的抽样误差。如果可以选择
重要性抽样估计的准确性和效率:
一般来说,如果没有对精确和近似密度进行某种形式的数学分析,我们总是有可能遗漏一些非常大但很少见的重要性的权重。 但是,检查采样重要性权重的分布可能有助于发现可能的问题。 它可以帮助我们检查最大重要性比率的对数的直方图:如果最大比率相对于平均值太大,估计通常会很差。 相比之下,我们不必担心重要性比小的行为,因为它们对上面方程的影响很小。
在现存的科学研究中,存在许多用于常用模型(例如分层线性和逻辑回归)以及一些非参数模型的完全贝叶斯推理的程序。这些实现使用了其余同学们编写的贝叶斯计算算法的各种组合。
我们看到(至少)四个原因需要一个用于拟合贝叶斯模型的自动化通用程序。
-
首先,许多应用统计学家和主题研究人员想要拟合贝叶斯模型,但不具备数学、统计和计算机技能来对推理步骤进行编程。经济学家和政治学家可以通过一行代码或单击菜单进行回归,流行病学家可以进行逻辑回归,社会学家可以拟合结构方程模型,心理学家可以拟合方差分析,教育研究人员可以拟合分层线性模型。我们希望所有这些人都能够拟合贝叶斯模型(包括前面提到的所有特殊情况。但也允许泛化,例如鲁棒误差模型、混合分布和各种任意函数形式,更不用说框架了 包括先验信息)。
-
一般贝叶斯程序的第二个用途是用于教学。 学生可以先运用程序自动推理,专注于模型的结构而不是计算,之后再学习代数和计算。当然,学习代数及计算方面更深入的理解是有用的,最终了解推理和计算背后的原因也是有帮助的,因为我们理解模型的一种方式是通过与稍微简单或更复杂的类似模型进行比较,而我们理解模型拟合过程的一种方式是将其视为一个从数据和假设映射到推论。 即使在使用黑匣子或“推理引擎”(黑箱理论)时,我们也经常想回过头来看看我们的后验分布的实质性重要特征是从哪里来的。
-
编写自动化通用程序的第三个动机是作为一个用于实现新模型的编程环境,以及让用户对自己的模型进行编程,从而能够专注于更重要的统计问题。
-
最后,通用贝叶斯程序的第四个潜在好处是它可以比自定义代码更快。用经济学术语讲,即为存在规模经济。由于自动程序将被多次使用,我们便可以通过各种方式对其进行优化、并行实施,并包含需要更多编码工作且在困难问题上运行速度更快的算法。
总的来说,没有任何程序可以真正通用。任何这样的软件都应该是开放的和可访问的(开源的),然后存在一些地方让骨灰级用户(大佬)可以改变、更新程序或 “握住它的手”(hold its hand ,以确保程序能够做它应该做的事情。