当使用马尔可夫链蒙特卡罗进行推理时,我们需要一个快速混合的链,即快速移动通过后验分布的支持。但我不明白为什么我们需要这个属性,因为据我了解,接受的候选抽签应该并且将集中在后验分布的高密度部分。如果我的理解是真的,那么我们是否仍然希望链条穿过支撑(包括低密度部分)?
另外,如果我使用MCMC做优化,是否还需要关心快速混合,为什么?
感谢您分享您的想法!
当使用马尔可夫链蒙特卡罗进行推理时,我们需要一个快速混合的链,即快速移动通过后验分布的支持。但我不明白为什么我们需要这个属性,因为据我了解,接受的候选抽签应该并且将集中在后验分布的高密度部分。如果我的理解是真的,那么我们是否仍然希望链条穿过支撑(包括低密度部分)?
另外,如果我使用MCMC做优化,是否还需要关心快速混合,为什么?
感谢您分享您的想法!
理想的蒙特卡洛算法使用独立的连续随机值。在 MCMC 中,连续值不是独立的,这使得该方法的收敛速度比理想的 Monte Carlo 慢;但是,它混合得越快,在连续迭代中依赖性衰减得越快¹,并且收敛得越快。
¹我的意思是,连续的值很快“几乎独立于”初始状态,或者更确切地说,在某一点给定值 ,随着的增长,值很快变得“几乎独立于”;因此,正如 qkhhly 在评论中所说,“链不会一直停留在状态空间的某个区域”。
编辑:我认为以下示例可以提供帮助
假设您想通过 MCMC您从有序序列开始;在每个步骤中,您选择元素并随机打乱它们。在每一步,记录位置 1 的元素;这收敛到均匀分布。的值控制混合的快慢:时,慢;当时,连续元素是独立的,混合速度很快。
这是此 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; 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)
您可以在这里看到,对于(黑色),收敛速度很慢;对于(蓝色),它更快,但仍然比(红色)慢。
您还可以绘制固定迭代次数(例如 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:
> 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 收敛的一个方面。它确实与忘记马尔可夫链的初始值或分布的速度直接相关. 例如,数学概念-混合由度量定义
此外,之间的独立性仅在某些设置中相关。当以整合为目标时,负相关(又名对立模拟)优于独立性。
关于您的具体评论
...被接受的候选人抽签应该并且将集中在后验分布的高密度部分。如果我的理解是真的,那么我们是否仍然希望链条穿过支撑(包括低密度部分)?
MCMC 链按照与目标高度(在其静止状态下)的精确比例来探索目标,因此确实在更高密度区域花费了更多时间。当目标具有由低密度区域分隔的几个高密度组件时,链必须穿过低密度区域是相关的。(这也称为多模式设置。)缓慢混合可能会阻止链穿过如此低密度的区域。链不应该访问的唯一区域
激发对快速混合链的渴望的假设是您关心计算时间,并且您想要来自后验的代表性样本。前者取决于问题的复杂性:如果您有一个小/简单的问题,那么您的算法是否有效可能并不重要。如果您对后验不确定性或以高精度了解后验均值感兴趣,则后者非常重要。但是,如果您不关心具有代表性的后验样本,因为您只是使用 MCMC 进行近似优化,那么这对您来说可能不是很重要。