En términos simples, ¿cómo funciona Gibbs Sampling?

El algoritmo de muestreo de Gibbs es una solución a una pregunta básica e importante: ¿cómo muestreas los valores de una distribución de probabilidad?

Veamos primero casos simples. Suponga que su distribución tiene una sola variable X que toma dos valores:

P (X = 0) = 0.5 y P (X = 1) = 0.5

¿Cómo muestreas un valor de X? Simple, lanza una moneda. Si sus cabezas, X = 1, de lo contrario X = 0. Y si usted es un programa de computadora, llame a rand () (o cualquier generador uniforme de números aleatorios de su elección) y si rand ()> 0.5, entonces X = 1, de lo contrario X = 0.

(Nota: asumimos que rand () devuelve números reales en el intervalo [0,1])

Esta fue una distribución binomial . ¿Qué pasa si tienes una distribución multinomial ? Digamos que quieres modelar el lanzamiento de un dado:

P (X = i) = 1/6, para i en 1 … 6

Simple. Llame a rand () nuevamente, pero divida el intervalo [0,1] en 6 partes iguales, y devuelva el valor de X correspondiente a la parte en la que cae el valor de rand (). (Por supuesto, si eres un ser humano sano, simplemente lanzas un dado. Pero aquí estamos hablando de computadoras).

Todo esto fue agradable y fácil. Vamos a darle vida. ¿Qué sucede si tiene una distribución multinomial en más de una variable?

P (X_1, X_2, … X_n)

Hay casos en que incluso esto resulta ser un juego de niños. Por ejemplo, si las variables son independientes , puede factorizar la distribución multivariada como un producto de distribuciones univariadas y tomar muestras de cada una de ellas por separado como antes, simplificando la vida (de la computadora).

P (X_1, X_2, … X_n) = P (X_1) * P (X_2) * … * P (X_n)

Muestras de cada P (X_i) para obtener un valor de X_i, y así obtener un conjunto de valores para todos X_1 … X_n.

Pero no nos gustan los problemas fáciles. Queremos el tipo duro y general. Supongamos que es difícil tomar muestras directamente de la distribución conjunta , es decir P (X_1, X_2, … X_n). Es importante apreciar la inutilidad de nuestro enfoque anterior en este entorno general. Es posible que la distribución no tenga una forma “buena” como una distribución binomial o multinomial, y puede que tampoco tenga factorización en tales distribuciones “buenas”.

El muestreo de Gibbs proporciona un método para aproximar eficientemente esta distribución conjunta bajo una condición: deberíamos poder muestrear fácilmente de la distribución condicional de cada X_i, es decir, P (X_i | X_1 … X_ (i-1), X_ (i + 1) … X_n).

(Nota: esta condición se cumple al realizar inferencias en las redes bayesianas, que es una de las aplicaciones más importantes del muestreo de Gibbs desde una perspectiva de aprendizaje automático).

El truco es que muestreas iterativamente de la distribución condicional de cada X_i, ciclando el valor de i de 1 a n, una gran cantidad de veces. De este modo, obtienes una secuencia de muestras de X_i:

X_1_0 … X_n_0, X_1_1 … X_n_1, X_1_2 … X_n_2 … X_1_k … X_n_k …

que agrupamos como tuplas de (X_1 … X_n):

(X_1 … X_n) _0, (X_1 … X_n) _1, (X_1 … X_n) _2 … (X_1 … X_n) _k …

(¡Perdona la notación!)

La página de wikipedia ofrece una descripción formal de este proceso http://en.wikipedia.org/wiki/Gib…. Pero debería ser suficiente decir que si cada distribución condicional es una distribución multinomial (o alguna otra distribución “buena”), entonces usted muestra una X_i usando nuestro enfoque anterior. Mientras muestrea un X_i particular, fija los valores de las otras variables a sus últimos valores muestreados. Además, comienza con cualquier asignación aleatoria a las variables, porque resulta que la asignación inicial no importa.

¡La teoría es que, cuando haces esto una gran cantidad de veces, terminas con algo muy cercano a una muestra tomada de la distribución conjunta real! (Por supuesto, con un * que dice ‘se aplican condiciones’).

Sin embargo, podemos vivir con las condiciones, dos de las cuales son:

  1. La secuencia de muestras aleatorias {X_1 … X_n} obtenidas forman una Cadena de Markov, con muestras cercanas que están correlacionadas. Entonces, si se requieren muestras independientes, solo toma muestras que están muy separadas entre sí en la secuencia, es decir, solo toma aquellas para las cuales k = 100, 200, 300, etc.
  2. Hay un período inicial de quemado, es decir, las muestras iniciales en la secuencia no representan con precisión la distribución conjunta. Entonces, simplemente suelta las primeras muestras, es decir, comienza con la muestra en k = 100 (o 1000 si lo desea)

En otras palabras, para k grande, (X_1 … X_n) _k se acerca a una muestra tomada de la distribución conjunta original P (X_1, X_2, … X_n).

Este es un resultado bastante sorprendente (y útil). Sin embargo, resulta ser algo bastante común entre los algoritmos MCMC como este.

En este mundo, tiene muchas cosas inciertas, como si lloverá mañana, cuántas personas se quedarán en casa para visitar Quora mañana o cuántos votos positivos de su respuesta. Y afortunadamente, estas cosas están algo correlacionadas, por ejemplo, si llueve mañana, más personas se quedarán en casa, y su respuesta tendrá más probabilidades de ser leída y votada, ¡sí!

¿Entonces, qué debería hacer? hmm …

Primero, recopila datos de ciertas cosas, como en los últimos 100 días, cómo es el día anterior a un día lluvioso, cuántas personas visitan Quora en un día lluvioso y cuál es el número promedio de votos a favor de mis respuestas, etc.

Y luego, construyes algunas relaciones cuantitativas entre estas ciertas cosas y las cosas inciertas, y sé que suena loco, pero es factible con estadísticas simples, así que, solo omito detalles al respecto, oops …

OK, pero en el mundo real, todavía no sabes cómo van a funcionar las cosas mañana, ¿verdad? Entonces, vas al mundo de Gibbs y le preguntas al Dios de las muestras de Gibbs sobre este problema, explicas todas las relaciones cuantitativas y todas las cosas inciertas en este problema.

él dice: “Yo tampoco tengo idea, porque hay muchas cosas inciertas, pero si solo hay UNA cosa incierta en tu problema, podría darte mi mejor suposición “.

Piensas: “Diablos, no, este dios es tan débil … lo que sea, nadie puede predecir el futuro, ya no me importa”. Entonces, decides arruinar a este Dios. “mañana llueve, y XXX personas visitarán a Quora mañana, entonces, ¿cuántas personas votarán mi respuesta?”.

Dios dice: “¡Bien! Aquí está mi respuesta, 7 votos a favor mañana”.

Decides equivocarte aún más, vuelves a preguntar: “Está bien, ¿qué tal mañana llueve y recibo 7 votos a favor?” Dejas la pregunta de cuántas personas visitan Quora mañana como inciertas, y usas la respuesta de Dios como algo seguro.

Dios dice: “¡Bien! Aquí está mi respuesta, XXX1”.

Empiezas a encontrarlo interesante y vuelves a preguntar: “Está bien, dime si mañana llueve si recibí 7 votos a favor y hay XXX1 personas que visitan Quora”.

Dios dice: “¡Bien! ¡Aquí está mi respuesta, lluvioso!”

Y sigues preguntando y preguntando jugando este aburrido juego, y Dios sigue respondiendo, y tienes una secuencia de tuplas, (7, XXX1, lluvioso), (10, XXX2, soleado), (8, XXX3, lluvioso) …

“¿Qué voy a hacer con esta secuencia?” Finalmente, estás cansado de este aburrido juego y le cuentas el truco a Dios.

“En realidad, así es como debería trabajar”. Dios responde sin sorpresa. “Eres un niño inteligente, lleva esta secuencia a casa y lo resolverás”.

No se va a su casa, sino que va a preguntarle a otro dios llamado Wikipedia, Wikipedia le dice que aunque cada elemento de la secuencia depende del anterior, estas tuplas pueden tratarse como un conjunto de muestras extraídas de las distribuciones conjuntas de estos Tres variables desconocidas. Y no tienes idea de qué habla Dios Wikipedia, así que decides irte a casa y dormir bien.

Toda la información confidencial se ha eliminado y reemplazado por cadenas iniciadas con XXX.

Aquí hay un buen artículo llamado “Gibbs Sampling for the Uninitiated” por Resnik y Hardisty:

http://www.umiacs.umd.edu/~resni

Como otros han mencionado, el problema que intenta resolver el muestreo de Gibbs es tomar algunas muestras de alguna distribución.

Tomemos un ejemplo simple: supongamos que tiene una escuela con un grupo de estudiantes. Geeks, deportistas, porristas y góticos, y quieres saber cuántos de cada uno hay.

Ahora, si hubiera una asamblea escolar, esto sería realmente fácil. Si todos están en la misma habitación, todos mezclados, puede poner una venda en los ojos, seleccionar aleatoriamente algunos de ellos y contar cuántos de cada tipo de estudiante tiene. Esto funciona totalmente!

El problema es que las asambleas escolares son pocas y distantes entre sí y en días normales no todos se reúnen en una gran sala y se mezclan. Entonces, ¿Qué haces? Afortunadamente, algo interesante sucede:

  • Todos los días a las 3 p.m., todos los deportistas y porristas se reúnen en el campo de deportes y canoodle mientras todos los geeks y góticos se reúnen en el club av y comentan sobre su difícil situación.
  • Todos los días a las 5 p.m., todos los deportistas y los geeks se reúnen en Mervyn’s para comprar algunos caquis, mientras que los góticos y las porristas se reúnen en Sephora para comprar maquillaje llamativo.

Entonces tu estrategia es esta. Primero elija una ubicación inicial, digamos el campo de deportes.

  1. A los 3, muestre aleatoriamente entre las personas que se encuentran en su ubicación (si es el campo deportivo, muestreará aleatoriamente entre deportistas y porristas). Es decir, ponte la venda de los ojos espeluznante y comienza a buscar a tientas hasta que encuentres a alguien.
  2. Si esa persona es un deportista o un geek, planea estar en Mervyn’s a las 5. Si esa persona es gótica o animadora, planea estar en Sephora.
  3. En el lugar prescrito en el paso 2, nuevamente, póngase la venda de los ojos y comience a agarrar hasta encontrar a alguien.
  4. Si esa persona es un deportista o una porrista, planea estar en el campo de deportes mañana a las 3, de lo contrario, planea estar en el club av.
  5. Ve al paso 1.

Sigue haciendo esto. Al final, cuenta cuántos deportistas, animadoras, geeks y góticos has tocado. Sorprendentemente, es probable que la proporción sea la misma que si las hubiera obtenido en una habitación. Este procedimiento es el muestreo de Gibbs: se usa cuando es difícil obtener muestras de todos a la vez, pero es fácil de hacer entre sectores de la población en cada paso.

Para complementar estas respuestas, tal vez una explicación visual podría ayudar. Digamos que nuestro objetivo es tomar muestras de una distribución p (x, y):

Fuente: Aviso de redireccionamiento

Lo cual, en un contexto bayesiano, puede ser una distribución posterior con (quizás) una constante de normalización desconocida o alguna otra dificultad analítica. Sin embargo, quizás las distribuciones condicionales univariadas (p (x | y) yp (y | x)) son analíticamente manejables y podemos tomar muestras de ellas (por ejemplo, en R o Python). Tal vez la distribución condicional p (x | y) se parece a una mezcla univariable manejable como esta:

Fuente: Archivo: Bimodal.png

Luego podemos tomar muestras de esta distribución univariada para obtener una muestra de X, y luego tomar muestras de p (y | x) para obtener una muestra de Y (que parece que sería otra buena distribución de mezcla manejable) e iterar. A la larga, esta visualización debería ilustrar por qué esta podría ser una forma efectiva de explorar la masa bajo la densidad de (X, Y).

Para matemáticas un poco más, no es demasiado difícil ver lo siguiente. Suponga que (x_0, y_0) se extrae de la distribución conjunta de (X, Y). Entonces, una muestra (x_1, y_0) obtenida manteniendo y_0 y extrayendo de la densidad condicional p (x | y) tiene una densidad de probabilidad p (X = x_1 | Y = y_0) p (Y = y_0) = p (X = x_1 , Y = y_0). ¡Entonces esto también debería producir una muestra de la distribución conjunta de (X, Y), esencialmente directa por la definición de una distribución de probabilidad condicional! Por simetría, el mismo argumento debería sostenerse para dibujar de p (y | x). Por lo tanto, al repetir este procedimiento, ¡estamos cerca de garantizar que a largo plazo extraeremos la distribución de (X, Y)!

Sin embargo, digo cerca, porque técnicamente hay otras condiciones (aperiodicidad e irreductibilidad) que deben verificarse. Para los detalles matemáticos, ver un maravilloso artículo de Tierney 1994: Cadenas de Markov para explorar las distribuciones posteriores.

Eres un maestro de mazmorras que alberga mazmorras y dragones y un jugador lanza el hechizo de Eldritch Chaotic Weather (SECW). Nunca has oído hablar de este hechizo antes, pero resulta que está bastante involucrado. El jugador te entrega un libro denso y dice: “el efecto de este hechizo es que ocurre uno de los eventos en este libro”. El libro contiene la friolera de 1000 efectos diferentes, y lo que es más, los eventos tienen diferentes ‘probabilidades relativas’. El libro te dice que el evento más probable es ‘bola de fuego’; todas las probabilidades de los otros eventos se describen en relación con la probabilidad de ‘bola de fuego’; por ejemplo: en la página 155, dice que ‘tormenta de patos’ es la mitad de probable que ‘bola de fuego’.
¿Cómo es usted, el maestro de mazmorras, para probar un evento aleatorio de este libro? Así es como puedes hacerlo:
El algoritmo de aceptación-rechazo:
1) Tira un d1000 para decidir un evento ‘candidato’.
2) Suponga que el evento candidato es 44% más probable que el evento más probable, ‘bola de fuego’. Luego acepte al candidato con una probabilidad del 44%. (Tira un d100 y acepta si el rollo es 44 o inferior. De lo contrario, vuelve al paso 1 hasta que aceptes un evento).
3) El evento aceptado es su muestra aleatoria.
Se garantiza que el algoritmo de aceptación-rechazo muestrea de la distribución con las probabilidades relativas especificadas.
Después de tirar muchos dados, finalmente terminas aceptando un candidato: ‘convocar rana’. Respira un suspiro de alivio, ya que ahora puede volver al negocio (de rutina en comparación) de manejar la batalla entre los troll-orcos y los dragones-elfos.
Sin embargo, para no quedarse atrás, otro jugador decide lanzar ‘Lv. 2 tormenta de efecto cibernético arcano. Para este hechizo, se producen dos efectos aleatorios diferentes: un ataque generado aleatoriamente y un beneficio de personaje generado aleatoriamente. El manual para este hechizo es tan grande que solo puede caber en un CD. El jugador te inicia y te muestra una página. Su mandíbula cae: la entrada para cada ataque es casi tan grande como el manual para el hechizo anterior, porque enumera una probabilidad relativa para cada posible beneficio adicional

‘Cuchilla cúprica’
El beneficio más probable que acompaña a este ataque es el ‘aura de Hotelling’
‘Jackal Vision’ tiene un 33% más de probabilidades de acompañar este ataque que ‘Hotelling aura’
‘Orejas tostadoras’ tiene un 20% más de probabilidades de acompañar este ataque que el ‘aura de Hotelling’


Del mismo modo, la probabilidad de que ocurra un hechizo de ataque en particular depende de la probabilidad de que ocurra el beneficio.
Sería justificado preguntarse si una distribución de probabilidad adecuada puede incluso definirse dada esta información. Bueno, resulta que si hay uno, se especifica de manera única por las probabilidades condicionales dadas en el manual. ¿Pero cómo probarlo?
Afortunadamente para ti, el CD viene con una muestra automatizada de Gibbs, porque tendrías que pasar una eternidad haciendo lo siguiente a mano.
Algoritmo de muestra de Gibbs
1) Elige un hechizo de ataque al azar
2) Use el algoritmo de aceptación-rechazo para elegir el beneficio condicional en el ataque
3) Olvídate del hechizo de ataque que elegiste en el paso 1. Elige un nuevo hechizo de ataque usando el algoritmo de aceptación-rechazo condicional al beneficio en el paso 2
4) Vaya al paso 2, repita para siempre (aunque usualmente 10000 iteraciones serán suficientes)
5) Lo que sea que tenga su algoritmo en la última iteración, es su muestra.
Verá, en general, los muestreadores MCMC solo tienen garantía asintótica de generar muestras a partir de una distribución con las probabilidades condicionales especificadas. Pero en muchos casos, los muestreadores MCMC son la única solución práctica disponible.

En lugar de calcular analíticamente la distribución conjunta de alta dimensión, deambule por el espacio e infiera a partir de lo que el espacio le hace, cómo se forma.

En términos simples, ¿cómo funciona Gibbs Sampling?