随机采样:Firefly Monte Carlo(一)

Firefly Monte Carlo: 照亮贝叶斯推断的新路径

在这里插入图片描述

在贝叶斯统计学中,马尔可夫链蒙特卡洛(MCMC)是一种强大的工具,用于从复杂的概率分布中生成样本。然而,当面对大型数据集时,传统的MCMC方法可能会因为需要评估所有数据点的后验分布而变得计算成本高昂。为了克服这一难题,Dougal Maclaurin在他的博士论文中提出了一种创新的MCMC算法——Firefly Monte Carlo(萤火虫蒙特卡洛)。

Firefly Monte Carlo的核心思想

Firefly Monte Carlo算法的核心在于引入了辅助变量的概念,这些辅助变量是一组伯努利随机变量,每个数据点对应一个。这些变量的条件分布被设计为能够在后验中有效地“打开”或“关闭”数据点,因此称为“萤火虫”。从而允许算法在每次迭代中只查询数据的一个潜在小子集,这些潜在变量的引入不会改变感兴趣的参数的边际分布,保持从精确的后验分布中模拟样本。唯一的要求是有可能为每个似然项提供一个“可折叠的”下界。

Firefly Monte Carlo算法概述

Firefly Monte Carlo是一种用于贝叶斯推断的MCMC算法,它通过引入辅助变量来减少每次迭代中需要评估的数据量,同时保持从完整数据的后验分布中采样的准确性。

算法的数学基础

  1. 目标分布:萤火虫蒙特卡洛算法解决了从概率模型的后验分布中采样的问题。我们将感兴趣的参数表示为 𝜃,并假设它们有一个先验分布 p(θ)。我们假设已经观察到了 N 个数据 x n {x_n} xn,并且这些数据在给定 𝜃的条件下,根据似然 p ( x n ∣ θ ) p(x_n | \theta) p(xnθ)是条件独立的。因此,我们的目标分布是:
    p ( θ ∣ { x n } n = 1 N ) ∝ p ( θ , { x n } n = 1 N ) = p ( θ ) ∏ n = 1 N p ( x n ∣ θ ) p(\theta | \{x_n\}_{n=1}^{N}) \propto p(\theta,\{x_n\}_{n=1}^{N}) = p(\theta) \prod_{n=1}^{N} p(x_n | \theta) p(θ{xn}n=1N)p(θ,{xn}n=1N)=p(θ)n=1Np(xnθ) …(1)

  2. 似然函数:第n个数据点的似然函数表示为 L n ( θ ) = p ( x n ∣ θ ) L_n(\theta) = p(x_n | \theta) Ln(θ)=p(xnθ)

  3. 辅助变量:传统的算法,如Metropolis-Hastings,要求在每次迭代中对非归一化后验进行完整的评估。当数据集很大时,评估所有Ѕ可能性是一个计算瓶颈。这就是我们试图用Firefly解决的问题。对于每个数据点n,引入一个二进制辅助变量 z n ∈ { 0 , 1 } z_n \in \{0, 1\} zn{0,1}和一个下界函数 B n ( θ ) B_n(\theta) Bn(θ),它是似然 L n ( θ ) L_n(\theta) Ln(θ)的严格正下界。满足条件: 0 < B n ( θ ) ≤ L n ( θ ) 0 < B_n(\theta) \leq L_n(\theta) 0<Bn(θ)Ln(θ)

  4. 辅助变量的条件分布:每个 z n ∈ { 0 , 1 } z_n \in \{0, 1\} zn{0,1}都有如下伯努利分布,这取决于参数:
    p ( z n ∣ x n , θ ) = [ L n ( θ ) − B n ( θ ) L n ( θ ) ] z n [ B n ( θ ) L n ( θ ) ] 1 − z n p(z_n | x_n, \theta) = \left[ \frac{L_n(\theta) - B_n(\theta)}{L_n(\theta)} \right]^{z_n} \left[ \frac{B_n(\theta)}{L_n(\theta)} \right]^{1-z_n} p(znxn,θ)=[Ln(θ)Ln(θ)Bn(θ)]zn[Ln(θ)Bn(θ)]1zn

  5. 增强的后验分布:通过辅助变量增强的后验分布可以表示为:
    p ( θ , { z n } n = 1 N ∣ { x n } n = 1 N ) ∝ p ( θ , { x n , z n } n = 1 N ) = p ( θ ) ∏ n = 1 N p ( x n ∣ θ ) p ( z n ∣ x n , θ ) p(\theta, \{z_n\}_{n=1}^N | \{x_n\}_{n=1}^N) \propto p(\theta, \{x_n, z_n\}_{n=1}^N) =p(\theta) \prod_{n=1}^N p(x_n | \theta) p(z_n | x_n, \theta) p(θ,{zn}n=1N{xn}n=1N)p(θ,{xn,zn}n=1N)=p(θ)n=1Np(xnθ)p(znxn,θ)

  6. 边际分布保持不变:尽管引入了辅助变量,参数 θ \theta θ的边际后验分布保持不变。推理如图所示:
    推理如图

  7. “点亮”数据点:对概率密度进行评估, 在给定 { z n } n = 1 N \{z_n\}_{n=1}^N {zn}n=1N的条件下,只有 z n = 1 z_n = 1 zn=1的似然项需要被评估。推理如下:
    在这里插入图片描述

  8. “真实”似然项 L n ( θ ) L_n(\theta) Ln(θ) 只出现在 z n = 1 z_n = 1 zn=1 的因子中,这些数据点被视为完整数据集的“小批量”子样本。

  9. 参数转换更新:如果大多数 z n = 0 z_n = 0 zn=0,则参数的转换更新将更加高效,因为这些更新只应用于 θ \theta θ 的条件分布 p ( θ ∣ { x n , z n } n = 1 N ) p(\theta | \{x_n, z_n\}_{n=1}^N) p(θ{xn,zn}n=1N)

  10. 下界函数的评估:尽管 L n ( θ ) L_n(\theta) Ln(θ)的评估可以减少,但我们必须在每次迭代中评估所有 ( N ) 个下界函数 B n ( θ ) B_n(\theta) Bn(θ)

  11. 下界函数的形式:如果我们选择 B n ( θ ) B_n(\theta) Bn(θ) 具有方便的形式,例如缩放的高斯分布或其他指数族分布,那么整个乘积 ∏ n = 1 N B n ( θ ) \prod_{n=1}^N B_n(\theta) n=1NBn(θ) 可以使用分布的充分统计量在 ( O(1) ) 时间内计算,这些统计量只需计算一次。

  12. 联合分布的重新排列:可以按照“伪先验” p ~ ( θ ) \tilde{p}(\theta) p~(θ) 和“伪似然” L ~ n ( θ ) \tilde{L}_n(\theta) L~n(θ) 重新排列联合分布,如下所示:
    p ( θ , { z n } n = 1 N ∣ { x n } n = 1 N ) ∝ p ~ ( θ ) ∏ n : z n = 1 L ~ n ( θ ) p(\theta, \{z_n\}_{n=1}^N | \{x_n\}_{n=1}^N) \propto \tilde{p}(\theta) \prod_{n:z_n=1} \tilde{L}_n(\theta) p(θ,{zn}n=1N{xn}n=1N)p~(θ)n:zn=1L~n(θ) …2
    其中,乘积仅对 z n = 1 z_n = 1 zn=1的 ( n ) 进行,并且我们定义了:
    p ~ ( θ ) = p ( θ ) ∏ n = 1 N B n ( θ ) \tilde{p}(\theta) = p(\theta) \prod_{n=1}^N B_n(\theta) p~(θ)=p(θ)n=1NBn(θ)
    L ~ n ( θ ) = L n ( θ ) − B n ( θ ) B n ( θ ) \tilde{L}_n(\theta) = \frac{L_n(\theta) - B_n(\theta)}{B_n(\theta)} L~n(θ)=Bn(θ)Ln(θ)Bn(θ)

  13. 马尔可夫链的生成:可以通过交替更新基于条件于 { z n } n = 1 N \{z_n\}_{n=1}^N {zn}n=1N θ \theta θ ,和基于条件于 θ \theta θ { z n } n = 1 N \{z_n\}_{n=1}^N {zn}n=1N,使用任何常规的MCMC算法来为联合分布 2生成一个马尔可夫链。

  14. 边缘分布的保持:强调 θ \theta θ的边缘分布仍然是给定的正确的后验分布,如公式 1所示。

这些信息概述了Firefly Monte Carlo算法如何处理数据的子集以提高计算效率,并通过引入辅助变量和下界函数来保持目标后验分布的不变性的数学依据

总结:数据点的“点亮”和“熄灭”机制,

  1. “暗”数据点:在给定的迭代中,那些 z n = 0 z_n = 0 zn=0的数据点被称为“暗”数据点。在模拟马尔可夫链时,不需要计算这些“暗”数据点的似然性。

  2. “点亮”数据点:在 z n z_n zn的马尔可夫转换空间中,一些“暗”数据点在转换过程中会变成“亮”的,即它们的 z n = 1 z_n = 1 zn=1,然后在随后的迭代中包含这些“亮”数据点的似然性进行计算。

  3. 算法的动态性:随着 z n z_n zn的更新,数据点似乎像萤火虫一样闪烁,因为它们在“点亮”和“熄灭”之间变化,这种动态变化过程类似于萤火虫的闪烁。

  4. 选择下界和采样 z n z_n zn的细节:选择下界和高效采样 z n z_n zn的具体细节将在后续章节中讨论。目前,算法的高层次框架已经完整。

算法的可视化

在这里插入图片描述

  1. 似然函数的表示:对于一维逻辑回归模型,单一数据点 ( x ) 的似然函数 L n ( θ ) L_n(\theta) Ln(θ) 可以表示为两个部分:一个下界 B n ( θ ) B_n(\theta) Bn(θ)(用蓝色阴影表示),以及剩余部分(用橙色阴影表示)。

  2. 辅助变量的引入:引入一个伯努利随机变量 z n z_n zn,它可以在新的更高维度空间中构建一个马尔可夫链。通过边缘化(即忽略) z n z_n zn,可以恢复原始的似然函数。

  3. 避免计算:如果下界 B n ( θ ) B_n(\theta) Bn(θ)远大于似然函数与下界乘积 L n ( θ ) ⋅ B n ( θ ) L_n(\theta) \cdot B_n(\theta) Ln(θ)Bn(θ)的差值,那么马尔可夫链将倾向于占据 z n = 0 z_n = 0 zn=0的状态,从而避免在每次迭代中评估 L n ( θ ) L_n(\theta) Ln(θ)

  4. 计算效率:这种方法通过减少似然函数的计算次数来提高计算效率,特别是在处理大型数据集时。

  5. 算法的直观理解:通过将似然函数分解为两部分,Firefly Monte Carlo算法能够有效地处理数据点,并且只在必要时计算完整的似然函数。

结论

本文重点描述了Firefly Monte Carlo算法的数学原理,但是这个算法具体是怎么实现的呢,他的效果怎么样呢?下一篇博文继续介绍。

参考文献
Maclaurin, D. (2016). “Firefly Monte Carlo”, Chapter 3 in “Modeling, Inference and Optimization with Composable Differentiable Procedures”, PhD Thesis, Harvard University.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值