马尔可夫链蒙特卡洛(MCMC)方法广泛应用于从复杂后验分布中提取样本,尤其在贝叶斯推断中。Metropolis-Hastings是一种常用的MCMC算法,为此任务提供了一个通用框架。然而,它依赖于寻找一个有效的提议分布,$q(\theta'|\theta^{(t-1)})$,这个过程可能具有挑战性并通常需要仔细调整。吉布斯采样提供了一种替代的MCMC方法,它巧妙地避免了对显式提议分布的需求,前提是统计模型具有特定的条件结构。当联合后验分布$p(\theta | D)$复杂,而其全条件分布更容易处理时,这种方法尤其有效。条件分布的作用吉布斯采样的核心思想很简单:我们不是试图同时从联合后验分布$p(\theta | D)$中对整个参数向量$\theta = (\theta_1, \theta_2, ..., \theta_k)$进行采样,而是根据所有其他参数的当前值,单独对每个参数(或参数块)进行采样。吉布斯采样的主要要求是能够推导并从每个参数$\theta_i$的全条件分布中进行采样。这是$\theta_i$在给定所有其他参数$\theta_{-i} = (\theta_1, ..., \theta_{i-1}, \theta_{i+1}, ..., \theta_k)$和数据$D$情况下的分布:$$ p(\theta_i | \theta_{-i}, D) = p(\theta_i | \theta_1, ..., \theta_{i-1}, \theta_{i+1}, ..., \theta_k, D) $$为什么这会更容易?在许多分层模型或具有共轭先验的模型中,这些全条件分布会大大简化。有时,它们甚至变成可以轻松采样的标准分布(如正态、伽马、贝塔等)。之所以如此,是因为以其他变量为条件,实际上是在条件概率的表达式中将它们视为固定常数,这通常会简化从联合后验推导出的函数形式。请记住,联合后验与似然乘以先验成比例:$p(\theta|D) \propto p(D|\theta)p(\theta)$。$\theta_i$的全条件分布与此联合密度成比例,仅被视为$\theta_i$的函数,同时保持所有其他$\theta_j$($j \neq i$)为常数。吉布斯采样算法假设我们要从联合后验$p(\theta_1, ..., \theta_k | D)$中提取样本。吉布斯采样器按以下步骤进行:初始化: 选择一组初始参数值$\theta^{(0)} = (\theta_1^{(0)}, \theta_2^{(0)}, ..., \theta_k^{(0)})$。这可以是随机的,也可以基于先验知识或更简单的估计方法(如最大似然估计)。迭代: 对于每次迭代 $t = 1, 2, ..., T$:从全条件分布中对$\theta_1^{(t)}$进行采样: $$ \theta_1^{(t)} \sim p(\theta_1 | \theta_2^{(t-1)}, \theta_3^{(t-1)}, ..., \theta_k^{(t-1)}, D) $$使用$\theta_1$的最新更新值,从全条件分布中对$\theta_2^{(t)}$进行采样: $$ \theta_2^{(t)} \sim p(\theta_2 | \theta_1^{(t)}, \theta_3^{(t-1)}, ..., \theta_k^{(t-1)}, D) $$对所有参数直到$\theta_k$继续此过程: $$ \theta_i^{(t)} \sim p(\theta_i | \theta_1^{(t)}, ..., \theta_{i-1}^{(t)}, \theta_{i+1}^{(t-1)}, ..., \theta_k^{(t-1)}, D) $$最后,对$\theta_k^{(t)}$进行采样: $$ \theta_k^{(t)} \sim p(\theta_k | \theta_1^{(t)}, \theta_2^{(t)}, ..., \theta_{k-1}^{(t)}, D) $$输出: 采样的向量序列$(\theta^{(1)}, \theta^{(2)}, ..., \theta^{(T)})$形成一个马尔可夫链,其平稳分布是目标后验$p(\theta | D)$。丢弃初始预热期后,这些样本可以用于近似后验。请注意,在同一次迭代中,每个参数都使用其他参数的最新可用值进行更新。这种顺序更新是吉布斯采样的特点。digraph G { rankdir=LR; bgcolor="transparent"; node [shape=point, color="#495057"]; edge [arrowhead=vee, color="#495057"]; start [label=" 初始状态 \n θ⁽⁰⁾ = (θ₁⁽⁰⁾, θ₂⁽⁰⁾)", shape=plaintext, fontcolor="#495057"]; s1 [pos="1,1!", label="θ⁽⁰⁾"]; s2 [pos="3,1!", label=""]; s3 [pos="3,3!", label="θ⁽¹⁾"]; s4 [pos="5,3!", label=""]; s5 [pos="5,5!", label="θ⁽²⁾"]; s6 [pos="7,5!", label=""]; s7 [pos="7,7!", label="..."]; start -> s1 [style=dashed]; s1 -> s2 [label=" 采样 θ₁⁽¹⁾ ~ p(θ₁|θ₂⁽⁰⁾,D)", fontcolor="#1c7ed6"]; s2 -> s3 [label=" 采样 θ₂⁽¹⁾ ~ p(θ₂|θ₁⁽¹⁾,D)", fontcolor="#ae3ec9"]; s3 -> s4 [label=" 采样 θ₁⁽²⁾ ~ p(θ₁|θ₂⁽¹⁾,D)", fontcolor="#1c7ed6"]; s4 -> s5 [label=" 采样 θ₂⁽²⁾ ~ p(θ₂|θ₁⁽²⁾,D)", fontcolor="#ae3ec9"]; s5 -> s6 [label=" 采样 θ₁⁽³⁾ ~ p(θ₁|θ₂⁽²⁾,D)", fontcolor="#1c7ed6"]; s6 -> s7 [label=" 采样 θ₂⁽³⁾ ~ p(θ₂|θ₁⁽³⁾,D)", fontcolor="#ae3ec9"]; }针对双参数模型$\theta = (\theta_1, \theta_2)$的吉布斯采样。每一步都涉及根据另一个参数的当前值对一个参数进行采样,实际上沿着轴平行移动。吉布斯采样为何有效?吉布斯采样可以看作Metropolis-Hastings算法的一个特例。对于更新$\theta_i$的步骤,提议分布就是全条件分布$p(\theta_i | \theta_{-i}^{(current)}, D)$。结果是,对于这个特定的提议,Metropolis-Hastings接受概率总是1。因此,每个提议的样本都被接受,如果从条件分布中采样速度快,则使算法更简单、计算更高效。与其他MCMC方法一样,样本序列形成一个马尔可夫链,在温和条件下,该链作为其平稳分布收敛到目标后验分布。优点与考量优点:(多数情况下)无需调整: 与Metropolis-Hastings不同,你无需设计或调整提议分布。“提议”通过全条件分布由模型结构本身定义。高接受率: 样本实际上总是被100%接受。简单性: 如果全条件分布已知且易于采样(例如,标准分布),则实现通常很简单。考量:推导条件分布: 主要前提是能够推导并实现针对所有全条件分布$p(\theta_i | \theta_{-i}, D)$的采样器。这并非总是可能或容易。如果即使一个条件分布难以处理,标准吉布斯也无法直接使用(尽管可能存在混合方法)。相关性与混合: 如果参数在后验分布中高度相关,吉布斯采样可能效率低下。想象从一个沿着细对角线集中的分布中采样。沿着轴平行移动(正如吉布斯所做)会导致沿着对角线的非常小的移动,从而导致连续样本之间的高度自相关以及后验空间缓慢的遍历(混合)。该链可能需要很长时间才能遍历参数空间的相应区域。收敛性: 理论上虽然有保证,但实际中收敛可能很慢,特别是在高相关性情况下。仔细的收敛诊断(稍后介绍)是必不可少的。分块吉布斯采样减轻由相关性引起的缓慢混合的一种策略是分块吉布斯采样。我们并非单独采样每个$\theta_i$,而是可以将高度相关的参数分组为“块”,并从其联合条件分布中一起采样,条件是块外部的所有参数。例如,如果$\theta_1$和$\theta_2$高度相关但相对独立于$\theta_3$,我们可能会从$p(\theta_1, \theta_2 | \theta_3, D)$中联合采样$(\theta_1, \theta_2)$,然后从$p(\theta_3 | \theta_1, \theta_2, D)$中采样$\theta_3$。这要求能够从块的联合条件分布中采样,这在某些情况下可能可行,并且可以显著改善混合。何时使用吉布斯采样吉布斯采样是贝叶斯实践者MCMC工具包中的一个有用工具。它在以下情况中表现突出:模型结构允许轻松推导出所有参数的全条件分布。这些条件分布是标准分布,可以轻松从中生成样本。参数之间的后验相关性不会过高,或者可以有效使用分块采样。它经常用于分层模型和特定结构,例如用于主题建模的潜在狄利克雷分配(LDA),我们将在课程后面遇到。即使并非所有条件分布都可处理,吉布斯步骤有时也可以与混合采样器中的Metropolis-Hastings步骤结合使用。因此,理解吉布斯采样不仅作为独立算法很重要,而且作为更复杂MCMC策略的构成部分也同样重要。