Perché dovremmo preoccuparci della miscelazione rapida nelle catene MCMC?


21

Quando lavoriamo con la catena di Markov Monte Carlo per trarre l'inferenza, abbiamo bisogno di una catena che si mescoli rapidamente, cioè si muova rapidamente attraverso il supporto della distribuzione posteriore. Ma non capisco perché abbiamo bisogno di questa proprietà, perché da quello che capisco, i disegni di canditi accettati dovrebbero e si concentreranno nella parte ad alta densità della distribuzione posteriore. Se ciò che capisco è vero, allora vogliamo ancora che la catena si muova attraverso il supporto (che include la parte a bassa densità)?

Inoltre, se utilizzo MCMC per l'ottimizzazione, devo ancora occuparmi della miscelazione rapida e perché?

Grazie per aver condiviso i tuoi pensieri!


È noto nella letteratura MCMC che quando una catena di Markov è geometricamente ergodica, ha un decadimento alfa-miscelazione esponenzialmente rapido. Non sono chiaro come X_ {n} possa convergere rapidamente alla distribuzione target e tuttavia mantenere un'alta correlazione tra campioni successivi. Ci sono dei semplici esempi? Grazie per eventuali input!

Risposte:


16

L'algoritmo Monte Carlo ideale utilizza valori casuali successivi indipendenti . In MCMC, i valori successivi non sono indipendenti, il che rende il metodo più convergente del Monte Carlo ideale; tuttavia, più velocemente si mescola, più velocemente la dipendenza decade in iterazioni successive¹ e più velocemente converge.

¹ intendo qui che i valori successivi sono rapidamente "quasi indipendente" dello stato iniziale, ovvero che, dato il valore in un punto, i valori X ñ + k diventa rapidamente "quasi indipendente" X n come k cresce; così, come dice qkhhly nei commenti, "la catena non rimane bloccata in una certa regione dello spazio degli stati".XnXń+kXnk

Modifica: penso che il seguente esempio possa essere d'aiuto

Immagina di voler stimare la media della distribuzione uniforme su di MCMC. Si inizia con la sequenza ordinata ( 1 , , n ) ; ad ogni passaggio, hai scelto k > 2 elementi nella sequenza e li mescoli casualmente. Ad ogni passo, l'elemento nella posizione 1 viene registrato; questo converge alla distribuzione uniforme. Il valore di k controlla la rapidità di miscelazione: quando k = 2 , è lento; quando k = n , gli elementi successivi sono indipendenti e la miscelazione è veloce.{1,,n}(1,,n)k>2kk=2k=n

Ecco una funzione R per questo algoritmo 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);
}

Appliciamolo per e tracciamo la stima successiva della media μ = 50 lungo le iterazioni 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)

convergenza mcmc

Puoi vedere qui che per (in nero), la convergenza è lenta; per k = 50 (in blu), è più veloce, ma ancora più lento rispetto a k = 99 (in rosso).k=2k=50k=99

È inoltre possibile tracciare un istogramma per la distribuzione della media stimata dopo un numero fisso di iterazioni, ad esempio 100 iterazioni:

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)

istogrammi

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
Non credo che l'affermazione "più velocemente si mescola, più velocemente la dipendenza decade in iterazioni successive" è corretta. Le iterazioni successive dipenderanno sempre, ad esempio, utilizzando l'algoritmo Metropolis-Hastings. Il mixaggio ha a che fare con la velocità con cui i tuoi campioni convergono verso la distribuzione target, non con quanto iterazioni successive dipendenti.
Macro

Questo è lo stesso: se converge rapidamente alla distribuzione target, la dipendenza dallo stato iniziale decade rapidamente ... ovviamente questo sarà lo stesso in qualsiasi punto della catena (che avrebbe potuto essere scelto come stato iniziale). Penso che la parte finale dell'esempio sopra sia illuminante per questo aspetto.
Elvis

1
Sì, la dipendenza dai decadimenti dello stato iniziale, non necessariamente la dipendenza tra iterazioni successive.
Macro

Ho scritto "in iterazioni successive", non "tra". Intendo davvero "insieme" ... questo è ambiguo, correggerò.
Elvis

2
Penso di capire cosa significhi miscelare rapidamente. Non è che la catena si sposta su ogni parte del supporto della distribuzione target. Piuttosto, si tratta più della catena non bloccata in una parte del supporto.
qkhhly,

10

(Xn)α

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

Xn

A proposito del tuo commento specifico che

... il candidato accettato disegna dovrebbe e si concentrerà nella parte ad alta densità della distribuzione posteriore. Se ciò che capisco è vero, allora vogliamo ancora che la catena si muova attraverso il supporto (che include la parte a bassa densità)?

(Xn)


1
+1 Mille grazie per il commento sulla simulazione antitetica, è fantastico
Elvis

ααα0

ρβ

3

Le presunzioni che motivano il desiderio di una catena di miscelazione rapida sono che ti preoccupi del tempo di calcolo e che desideri un campione rappresentativo dal posteriore. Il primo dipenderà dalla complessità del problema: se hai un problema piccolo / semplice, potrebbe non importare molto se il tuo algoritmo è efficiente. Quest'ultimo è molto importante se sei interessato all'incertezza posteriore o conosci la media posteriore con alta precisione. Tuttavia, se non ti interessa avere un campione rappresentativo del posteriore perché stai solo usando MCMC per fare un'ottimizzazione approssimativa, questo potrebbe non essere molto importante per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.