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

机器算法验证 马尔可夫链蒙特卡罗
2022-02-08 19:25:29

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

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

感谢您分享您的想法!

3个回答

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

¹我的意思是,连续的值很快“几乎独立于”初始状态,或者更确切地说,在某一点给定值 ,随着的增长,值很快变得“几乎独立于”因此,正如 qkhhly 在评论中所说,“链不会一直停留在状态空间的某个区域”。XnXń+kXnk

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

假设您想通过 MCMC您从有序序列开始;在每个步骤中,您选择元素并随机打乱它们。在每一步,记录位置 1 的元素;这收敛到均匀分布。的值控制混合的快慢:时,慢;时,连续元素是独立的,混合速度很快。{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 迭代的连续估计: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=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)

直方图

你可以看到,在 (M1) 的情况下,100 次迭代后初始值的影响只会给你一个糟糕的结果。使用似乎没问题,标准偏差比使用更大。这是手段和sd: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

在完成之前的两个答案后,混合只是MCMC 收敛的一个方面。它确实与忘记马尔可夫链的初始值或分布的速度直接相关(Xn). 例如,数学概念α-混合由度量定义

α(n)=supA,B{|P(X0A,XnB)P(X0A)P(XnB)},nN,
其收敛到零的速度是混合的特征。收敛到目标分布的速度没有直接关系一个人可能会非常快速地收敛到目标,并且仍然保持链中元素之间的高度相关性。(Xn)π

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

关于您的具体评论

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

MCMC 链按照与目标高​​度(在其静止状态下)的精确比例来探索目标,因此确实在更高密度区域花费了更多时间。当目标具有由低密度区域分隔的几个高密度组件时,链必须穿过低密度区域是相关的。(这也称为多模式设置。)缓慢混合可能会阻止链穿过如此低密度的区域。链不应该访问的唯一区域(Xn)

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