Mengapa kita harus peduli tentang pencampuran cepat dalam rantai MCMC?

21

Ketika bekerja dengan rantai Markov, Monte Carlo untuk menarik kesimpulan, kita membutuhkan rantai yang bercampur dengan cepat, yaitu bergerak melalui dukungan distribusi posterior dengan cepat. Tetapi saya tidak mengerti mengapa kita membutuhkan properti ini, karena dari apa yang saya pahami, gambar yang diterima menarik harus dan akan terkonsentrasi di bagian kepadatan tinggi dari distribusi posterior. Jika apa yang saya pahami benar, maka apakah kita masih ingin rantai bergerak melalui dukungan (yang termasuk bagian kepadatan rendah)?

Selain itu, jika saya menggunakan MCMC untuk melakukan optimasi, apakah saya masih perlu peduli tentang pencampuran cepat dan mengapa?

Terima kasih telah berbagi pemikiran Anda!

qkhhly
sumber
Telah diketahui dalam literatur MCMC bahwa ketika rantai Markov secara geometri ergodik, rantai tersebut mengalami peluruhan pencampuran alfa yang cepat secara eksponensial. Saya tidak jelas bagaimana X_ {n} dapat konvergen dengan cepat ke target distribusi dan masih mempertahankan korelasi tinggi antara sampel berturut-turut. Apakah ada contoh sederhana? Terima kasih atas masukan apa pun!

Jawaban:

16

Algoritma Monte Carlo yang ideal menggunakan nilai acak berturut-turut independen . Dalam MCMC, nilai-nilai berturut-turut tidak independen, yang membuat metode ini menyatu lebih lambat daripada Monte Carlo yang ideal; namun, semakin cepat campurannya, semakin cepat ketergantungan akan berurutan dalam iterasi yang berurutan¹, dan semakin cepat konvergen.

Mean Maksud saya di sini bahwa nilai-nilai berturut-turut dengan cepat "hampir tidak tergantung" dari keadaan awal, atau lebih tepatnya yang diberi nilai pada satu titik, nilai-nilai X ń + k menjadi cepat "hampir independen" dari X n ketika k tumbuh; jadi, seperti yang dikatakan qkhhly dalam komentar, "rantai tidak terus terjebak di wilayah tertentu dari ruang negara".XnXń+kXnk

Sunting: Saya pikir contoh berikut dapat membantu

Bayangkan Anda ingin memperkirakan rata-rata distribusi seragam pada oleh MCMC. Anda mulai dengan urutan yang diurutkan ( 1 , , n ) ; pada setiap langkah, Anda memilih k > 2 elemen dalam urutan dan acak secara acak. Pada setiap langkah, elemen di posisi 1 direkam; ini menyatu dengan distribusi seragam. Nilai k mengontrol kecepatan pencampuran: ketika k = 2 , itu lambat; ketika k = n , elemen berturut-turut independen dan pencampurannya cepat.{1,...,n}(1,...,n)k>2kk=2k=n

Berikut adalah fungsi R untuk algoritma MCMC ini:

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

Mari kita terapkan untuk , dan plot estimasi berturut-turut dari μ = 50 di sepanjang iterasi 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)

konvergensi mcmc

Anda dapat melihat di sini bahwa untuk (hitam), konvergensi lambat; untuk k = 50 (berwarna biru), itu lebih cepat, tetapi masih lebih lambat daripada dengan k = 99 (berwarna merah).k=2k=50k=99

Anda juga dapat memplot histogram untuk distribusi estimasi rata-rata setelah jumlah iterasi yang tetap, misalnya 100 iterasi:

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)

histogram

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
Elvis
sumber
4
Saya tidak berpikir pernyataan "semakin cepat bercampur, semakin cepat ketergantungan meluruh dalam iterasi berturut-turut" benar. Iterasi yang berurutan akan selalu tergantung dengan menggunakan algoritma Metropolis-Hastings, misalnya. Pencampuran berkaitan dengan seberapa cepat sampel Anda bertemu untuk distribusi target, bukan seberapa bergantung iterasinya.
Makro
Ini sama: jika ia menyatu dengan cepat ke target distribusi, ketergantungan dari keadaan awal meluruh cepat ... tentu saja ini akan sama di setiap titik rantai (yang bisa dipilih sebagai keadaan awal). Saya pikir bagian terakhir dari contoh di atas mencerahkan untuk aspek ini.
Elvis
1
Ya, ketergantungan dari kondisi awal meluruh, tidak harus ketergantungan antara iterasi berturut-turut.
Makro
Saya menulis "dalam iterasi berturut-turut", bukan "antara". Maksud saya "sepanjang" ... ini ambigu, saya akan memperbaiki.
Elvis
2
Saya pikir saya mengerti apa artinya pencampuran dengan cepat. Bukan berarti rantai bergerak ke setiap bagian dari dukungan distribusi target. Sebaliknya, ini lebih tentang rantai yang tidak macet di bagian tertentu dari dukungan.
qkhhly
10

(Xn)α

α(n)=supSEBUAH,B{|P(X0SEBUAH,XnB)-P(X0SEBUAH)P(XnB)},nN,
(Xn)π

Xn

Tentang komentar spesifik Anda itu

... calon yang diterima menarik harus dan akan berkonsentrasi pada bagian kepadatan tinggi dari distribusi posterior. Jika apa yang saya pahami benar, maka apakah kita masih ingin rantai bergerak melalui dukungan (yang termasuk bagian kepadatan rendah)?

(Xn)

Xi'an
sumber
1
+1 Terima kasih banyak atas komentar tentang simulasi antitesis, ini keren
Elvis
αα-α0
ρβ
3

Anggapan yang memotivasi keinginan untuk rantai pencampuran cepat adalah bahwa Anda peduli tentang waktu komputasi dan bahwa Anda ingin sampel yang representatif dari posterior. Yang pertama akan tergantung pada kompleksitas masalah: jika Anda memiliki masalah kecil / sederhana, mungkin tidak masalah apakah algoritma Anda efisien. Yang terakhir ini sangat penting jika Anda tertarik pada ketidakpastian posterior atau mengetahui mean posterior dengan presisi tinggi. Namun, jika Anda tidak ingin memiliki sampel yang representatif dari posterior karena Anda hanya menggunakan MCMC untuk melakukan perkiraan optimasi, ini mungkin tidak terlalu penting bagi Anda.

Ben Lauderdale
sumber