Tại sao chúng ta nên quan tâm đến việc trộn nhanh trong chuỗi MCMC?


21

Khi làm việc với chuỗi Markov Monte Carlo để rút ra suy luận, chúng ta cần một chuỗi kết hợp nhanh chóng, tức là di chuyển nhanh chóng sự hỗ trợ của phân phối sau. Nhưng tôi không hiểu tại sao chúng ta cần tài sản này, bởi vì từ những gì tôi hiểu, các loại kẹo được chấp nhận nên và sẽ tập trung ở phần mật độ cao của phân phối sau. Nếu những gì tôi hiểu là đúng, thì chúng ta vẫn muốn chuỗi chuyển qua hỗ trợ (bao gồm phần mật độ thấp)?

Ngoài ra, nếu tôi đang sử dụng MCMC để tối ưu hóa, tôi vẫn cần quan tâm đến việc trộn nhanh và tại sao?

Cảm ơn bạn đã chia sẻ suy nghĩ của bạn!


Trong tài liệu của MCMC, người ta biết rằng khi một chuỗi Markov có tính hình học, nó có sự phân rã alpha nhanh theo cấp số nhân. Tôi không rõ làm thế nào X_ {n} có thể hội tụ nhanh chóng đến phân phối mục tiêu và vẫn duy trì mối tương quan cao giữa các mẫu liên tiếp. Có ví dụ đơn giản nào không? Cảm ơn cho bất kỳ đầu vào!

Câu trả lời:


16

Thuật toán Monte Carlo lý tưởng sử dụng các giá trị ngẫu nhiên liên tiếp độc lập . Trong MCMC, các giá trị liên tiếp không độc lập, điều này làm cho phương thức hội tụ chậm hơn so với lý tưởng Monte Carlo; tuy nhiên, nó trộn càng nhanh, sự phụ thuộc càng phân rã nhanh hơn trong các lần lặp liên tiếp và nó hội tụ càng nhanh.

Ý tôi ở đây là các giá trị liên tiếp nhanh chóng "gần như độc lập" với trạng thái ban đầu, hay đúng hơn là với giá trị tại một thời điểm, các giá trị trở nên "gần như độc lập" với khi tăng lên; vì vậy, như qkhhly nói trong các bình luận, "chuỗi không bị kẹt trong một khu vực nhất định của không gian nhà nước".XnXń+kXnk

Chỉnh sửa: Tôi nghĩ ví dụ sau có thể giúp

Hãy tưởng tượng bạn muốn ước tính giá trị trung bình của phân phối đồng đều trên bởi MCMC. Bạn bắt đầu với chuỗi thứ tự ; ở mỗi bước, bạn chọn phần tử trong chuỗi và trộn ngẫu nhiên chúng. Ở mỗi bước, phần tử ở vị trí 1 được ghi lại; điều này hội tụ để phân phối thống nhất. Giá trị của kiểm soát độ nhanh trộn: khi thì chậm; khi{1,,n}(1,,n)k>2kk=2 , các phần tử liên tiếp là độc lập và trộn nhanh.k=n

Đây là hàm R cho thuật toán MCMC này:

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);
}

Hãy áp dụng nó cho và vẽ ước tính liên tiếp của giá trị trung bình μ = 50 dọc theo các lần lặp 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)

hội tụ mcmc

Bạn có thể thấy ở đây với (màu đen), sự hội tụ chậm; với k = 50 (màu xanh lam), nó nhanh hơn, nhưng vẫn chậm hơn so với k = 99 (màu đỏ).k=2k=50k=99

Bạn cũng có thể vẽ biểu đồ cho phân phối giá trị trung bình ước tính sau một số lần lặp cố định, ví dụ 100 lần lặp:

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)

biểu đồ

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
Tôi không nghĩ câu "nó trộn càng nhanh, sự phụ thuộc càng giảm nhanh trong các lần lặp kế tiếp" là chính xác. Các lần lặp lại liên tiếp sẽ luôn phụ thuộc vào việc sử dụng thuật toán Metropolis-Hastings. Việc trộn phải liên quan đến việc các mẫu của bạn hội tụ đến phân phối mục tiêu nhanh như thế nào, chứ không phải là các lần lặp kế tiếp phụ thuộc như thế nào.
Macro

Điều này cũng tương tự: nếu nó hội tụ nhanh để phân phối mục tiêu, thì sự phụ thuộc từ trạng thái ban đầu sẽ phân rã nhanh ... tất nhiên điều này sẽ giống nhau ở bất kỳ điểm nào của chuỗi (có thể được chọn làm trạng thái ban đầu). Tôi nghĩ rằng phần cuối cùng của ví dụ trên là khai sáng cho khía cạnh này.
Elvis

1
Có, sự phụ thuộc từ phân rã trạng thái ban đầu, không nhất thiết là sự phụ thuộc giữa các lần lặp kế tiếp.
Macro

Tôi đã viết "trong các lần lặp lại liên tiếp", không phải "giữa". Tôi thực sự có nghĩa là "cùng" ... điều này là mơ hồ, tôi sẽ sửa.
Elvis

2
Tôi nghĩ rằng tôi hiểu những gì trộn nhanh có nghĩa là. Không phải là chuỗi di chuyển đến mọi bộ phận hỗ trợ của phân phối mục tiêu. Thay vào đó, đó là nhiều hơn về chuỗi không bị mắc kẹt trong một số hỗ trợ.
qkhhly

10

(Xn)α

α(n)= =bữa tốiMột,B{|P(X0Một,XnB)-P(X0Một)P(XnB)},nN,
(Xn)π

Xn

Về nhận xét cụ thể của bạn rằng

... Ứng viên được chấp nhận rút thăm nên và sẽ tập trung ở phần mật độ cao của phân phối sau. Nếu những gì tôi hiểu là đúng, thì chúng ta vẫn muốn chuỗi chuyển qua hỗ trợ (bao gồm phần mật độ thấp)?

(Xn)


1
+1 Cảm ơn rất nhiều vì đã nhận xét về mô phỏng phản diện, điều này thật tuyệt
Elvis

αα-α0

ρβ

3

Các giả định thúc đẩy mong muốn về một chuỗi trộn nhanh là bạn quan tâm đến thời gian tính toán và bạn muốn có một mẫu đại diện từ phía sau. Cái trước sẽ phụ thuộc vào mức độ phức tạp của vấn đề: nếu bạn có một vấn đề nhỏ / đơn giản, việc thuật toán của bạn có hiệu quả không thành vấn đề. Điều thứ hai là rất quan trọng nếu bạn quan tâm đến sự không chắc chắn sau hoặc biết ý nghĩa sau với độ chính xác cao. Tuy nhiên, nếu bạn không quan tâm đến việc có một mẫu đại diện của hậu thế bởi vì bạn chỉ đang sử dụng MCMC để thực hiện tối ưu hóa gần đúng, điều này có thể không quan trọng lắm đối với bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.