为什么我们要关心MCMC链中的快速混合?


21

在使用马尔可夫链蒙特卡洛法进行推理时,我们需要一个快速混合的链,即快速移动后验分布的支持。但我不明白为什么需要此属性,因为据我了解,可接受的候选抽取应该并且将集中在后验分布的高密度部分。如果我理解的是正确的,那么我们是否仍希望链条穿过支撑物(包括低密度部分)?

此外,如果我使用MCMC进行优化,是否还需要关心快速混合,为什么?

感谢您分享您的想法!


在MCMC文献中已知,当马尔可夫链是几何遍历的时,它具有指数级快速的alpha混合衰减。我不清楚X_ {n}如何快速收敛到目标分布,又如何在连续样本之间保持高度相关性。有没有简单的例子?感谢您的任何投入!

Answers:


16

理想的蒙特卡洛算法使用独立的连续随机值。在MCMC中,连续的值不是独立的,这使得该方法的收敛速度比理想的Monte Carlo方法慢。但是,它混合得越快,相依性在连续迭代中的衰减就越快¹,并且收敛速度也越快。

¹我的意思是这里说的连续值是迅速“几乎独立”的初始状态的,或者更确切地说,该给定的值在一个点上,值X ń + ķ变得迅速“几乎独立”的X Ñ作为ķ生长; 因此,正如qkhhly在评论中说的那样,“链条不会一直卡在状态空间的某个区域中”。XnXń+kXnk

编辑:我认为以下示例可以帮助

假设您想通过MCMC 估算上的均匀分布的均值。从有序序列1 n )开始 ; 在每一步中,您都选择了序列中的k > 2个元素,并随机对其进行洗牌。在每个步骤中,记录位置1处的元素;这收敛到均匀分布。k的值控制混合速度:当k = 2时,它很慢;当k = 2时,它很慢。当k = n时,连续元素是独立的,并且混合很快。{1,,n}(1,,n)k>2kk=2k=n

这是此MCMC算法的R函数:

mcmc <- function(n, k = 2, N = 5000)
{
  x <- 1:n;
  res <- numeric(N)
  for(i in 1:N)
  {
    swap <- sample(1:n, k)
    x[swap] <- sample(x[swap],k);
    res[i] <- x[1];
  }
  return(res);
}

让我们将其应用于,并绘制沿MCMC迭代的均值μ = 50的连续估计:n=99μ=50

n <- 99; mu <- sum(1:n)/n;

mcmc(n) -> r1
plot(cumsum(r1)/1:length(r1), type="l", ylim=c(0,n), ylab="mean")
abline(mu,0,lty=2)

mcmc(n,round(n/2)) -> r2
lines(1:length(r2), cumsum(r2)/1:length(r2), col="blue")

mcmc(n,n) -> r3
lines(1:length(r3), cumsum(r3)/1:length(r3), col="red")

legend("topleft", c("k = 2", paste("k =",round(n/2)), paste("k =",n)), col=c("black","blue","red"), lwd=1)

mcmc收敛

您可以在此处看到,对于(黑色),收敛速度很慢;对于k = 50(蓝色),它比k = 99(红色)更快,但仍然较慢。k=2k=50k=99

您还可以绘制直方图,以计算固定次数(例如100次迭代)后估计平均值的分布:

K <- 5000;
M1 <- numeric(K)
M2 <- numeric(K)
M3 <- numeric(K)
for(i in 1:K)
{
  M1[i] <- mean(mcmc(n,2,100));
  M2[i] <- mean(mcmc(n,round(n/2),100));
  M3[i] <- mean(mcmc(n,n,100));
}

dev.new()
par(mfrow=c(3,1))
hist(M1, xlim=c(0,n), freq=FALSE)
hist(M2, xlim=c(0,n), freq=FALSE)
hist(M3, xlim=c(0,n), freq=FALSE)

直方图

k=2k=50k=99

> mean(M1)
[1] 19.046
> mean(M2)
[1] 49.51611
> mean(M3)
[1] 50.09301
> sd(M2)
[1] 5.013053
> sd(M3)
[1] 2.829185

4
我认为“混合得越快,依赖性在连续迭代中衰减得越快”的说法是正确的。例如,连续迭代将始终依赖于Metropolis-Hastings算法。混合与样本收敛到目标分布的速度有关,而不是与连续迭代的依赖性有关。
2012年

这是相同的:如果它快速收敛到目标分布,则来自初始状态的依存度会快速衰减...当然,在链的任何点(可能被选择为初始状态)都将是相同的。我认为以上示例的最后一部分对这方面很有启发。
猫王

1
是的,对初始状态的依赖会衰减,而在连续迭代之间不一定会依赖。
2012年

我写的是“连续迭代”,而不是“之间”。我真的是说“沿”……这是模棱两可的,我会纠正的。
猫王

2
我想我知道快速混合的含义。这并不是说链条移动到目标分布支持的每个部分。相反,更多的是链条没有卡在支撑的某些部分。
2012年

10

(Xn)α

X nπ

α(n)=supA,B{|P(X0A,XnB)P(X0A)P(XnB)},nN,
(Xn)π

此外,之间的独立性仅在某些设置中相关。以整合为目标时,负相关性(又称对立模拟)优于独立性。Xn

关于您的具体评论

...可接受的候选抽奖应该并且将集中在后验分布的高密度部分。如果我理解的是正确的,那么我们是否仍希望链条穿过支撑物(包括低密度部分)?

MCMC链按照与目标高​​度(在静止状态下)的高度成正比的方式探索目标,因此确实会在密度较高的区域花费更多的时间。当目标具有由低密度区域分隔的几个高密度成分时,链必须穿过较低密度的区域至关重要。(这也称为多峰设置。)缓慢混合可能会阻止链条穿过此类低密度区域。链上永远不应该访问的唯一区域是目标分布下概率为零的区域。(Xn)


1
+1非常感谢关于对立模拟的评论,这很酷
Elvis 2012年

@西安(+1):这是我发现的()混合的第一个明确定义,两个问题(1)是否存在混合以外的其他混合类型,以及(2)实际上没有任何混合可用的度量,因为在定义中我看不到如何计算链与该最高点的混合。接下来,我看到不足以收敛,是否有收敛的度量?α - α →交通0ααα0

ρβ

3

激发对快速混合链的渴望的假设是,您关心计算时间,并且希望从后验中获得代表性样本。前者将取决于问题的复杂性:如果您有一个小/简单的问题,那么算法是否有效可能无关紧要。如果您对后验不确定性感兴趣或以高精度知道后验均值,则后者非常重要。但是,如果您不关心后验的代表性样本,因为您只是使用MCMC进行近似优化,那么这对您而言可能并不重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.