Чому ми повинні дбати про швидке змішування в ланцюгах MCMC?


21

Працюючи з ланцюжком Маркова Монте-Карло, щоб зробити висновок, нам потрібна ланцюг, яка швидко перемішується, тобто швидко переміщується через опору заднього розподілу. Але я не розумію, для чого нам потрібна ця властивість, тому що, наскільки я розумію, прийнята кандидатура повинна і концентрується у частині високої щільності заднього розподілу. Якщо те, що я розумію, відповідає дійсності, то чи все-таки ми хочемо, щоб ланцюг рухався через опору (яка включає частину низької щільності)?

Крім того, якщо я використовую MCMC для оптимізації, мені все-таки потрібно дбати про швидке змішування і чому?

Дякую, що поділилися своїми думками!


У літературі MCMC відомо, що коли ланцюг Маркова геометрично ергодичний, він експоненціально швидко розкладається альфа-змішуванням. Мені незрозуміло, як X_ {n} міг би швидко наближатися до цільового розподілу і в той же час підтримувати високу кореляцію між послідовними зразками. Чи є прості приклади? Дякуємо за будь-які матеріали!

Відповіді:


16

Ідеальний алгоритм Монте-Карло використовує незалежні послідовні випадкові значення. У MCMC послідовні значення не є незалежними, що змушує метод сходитися повільніше, ніж ідеальний Монте-Карло; однак, чим швидше вона змішується, тим швидше залежність зменшується в послідовних ітераціях¹, і тим швидше вона конвергується.

¹ Я маю в виду тут , що послідовні значення швидко «практично НЕ залежить» від початкового стану, або , вірніше , що з урахуванням значення в одній точці, значення Х ń + K стали швидко «майже НЕ залежить» від X п , як до зростає; так, як говорить qkhhly у коментарях, "ланцюг не затримується в певному регіоні простору держави".XnXń+kXnk

Редагувати: Я думаю, що наступний приклад може допомогти

Уявіть, що ви хочете оцінити середнє значення рівномірного розподілу по за MCMC. Ви починаєте з упорядкованої послідовності ( 1 , , n ) ; на кожному кроці ви вибирали k > 2 елементи в послідовності і випадковим чином переміщуєте їх. На кожному кроці записується елемент у положенні 1; це сходить до рівномірного розподілу. Значення k керує швидкістю перемішування: коли k = 2 , вона повільна; коли k = n , послідовні елементи незалежні і перемішування відбувається швидко.{1,,n}(1,,n)k>2kk=2k=n

Ось функція R для цього алгоритму MCMC:

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

Застосуємо його для та побудуємо послідовну оцінку середнього μ = 50 вздовж ітерацій 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 = 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. Змішування пов'язане з тим, наскільки швидко ваші зразки сходяться до цільового розподілу, а не наскільки залежні послідовні ітерації.
Макрос

Це те саме: якщо він швидко переходить до цільового розподілу, залежність від початкового стану швидко розпадається ... звичайно, це буде те саме в будь-якій точці ланцюга (яку можна було обрати як початковий стан). Я думаю, що заключна частина вищевказаного прикладу є просвітницькою для цього аспекту.
Елвіс

1
Так, залежність від початкового стану розпадається, не обов'язково залежність між послідовними ітераціями.
Макрос

Я писав "в послідовних ітераціях", а не "між". Я справді маю на увазі "разом" ... це неоднозначно, я виправлю.
Елвіс

2
Я думаю, що я розумію, що швидке змішування означає. Справа не в тому, що ланцюг рухається до кожної частини підтримки цільового розподілу. Скоріше, мова йде більше про те, щоб ланцюг не застряг у певній частині опори.
qkhhly

10

(Xn)α

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

Xn

Про ваш конкретний коментар це

... прийнятий кандидат малює повинен і буде зосереджений у частині високої щільності заднього розподілу. Якщо те, що я розумію, відповідає дійсності, то чи все-таки ми хочемо, щоб ланцюг рухався через опору (яка включає частину низької щільності)?

(Xn)


1
+1 Велике спасибі за коментар щодо антитетичного моделювання, це круто
Елвіс

ααα0

ρβ

3

Припущення, що мотивують прагнення до ланцюга, що швидко змішується, - це те, що ви дбаєте про час обчислень і бажаєте представницької вибірки з задньої частини. Перша буде залежати від складності проблеми: якщо у вас є невелика / проста проблема, це може не мати великого значення, чи ваш алгоритм ефективний. Останнє дуже важливо, якщо ви зацікавлені в задній невизначеності або знаєте заднє середнє з високою точністю. Однак якщо вам не байдуже мати репрезентативний зразок задня частина, оскільки ви просто використовуєте MCMC для наближеної оптимізації, це може бути для вас не дуже важливим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.