¿Cómo explicaría Markov Chain Monte Carlo (MCMC) a un laico?

240

Quizás el concepto, por qué se usa y un ejemplo.

Neil McGuigan
fuente
14
Aquí está mi artículo favorito sobre el tema: citeseerx.ist.psu.edu/viewdoc/…
En este sitio encontrará una buena representación gráfica de MCMC y algunos enlaces útiles.
Sergey
3
Para comprender el algoritmo MCMC, debe comprender para qué se utiliza realmente y cómo converge en una distribución determinada. Escribí en un blog sobre toda la intuición y sus aplicaciones. Puede visitarlos aquí: mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Rahul Agarwal
Consulte el siguiente repositorio donde se presenta una explicación detallada de MCMC. github.com/bashhwu/Sampling-based-inference/blob/master/…
Bashar Mohammad

Respuestas:

223

Primero, necesitamos entender qué es una cadena de Markov. Considere el siguiente ejemplo del clima de Wikipedia. Suponga que el clima en cualquier día puede clasificarse en dos estados solamente: soleado y lluvioso. En base a la experiencia pasada, sabemos lo siguiente:

P(Next day is Sunny|Given today is Rainy)=0.50

Como el clima del día siguiente es soleado o lluvioso, se deduce que:

P(Next day is Rainy|Given today is Rainy)=0.50

Del mismo modo, dejemos:

P(Next day is Rainy|Given today is Sunny)=0.10

Por lo tanto, se deduce que:

P(Next day is Sunny|Given today is Sunny)=0.90

Los cuatro números anteriores se pueden representar de manera compacta como una matriz de transición que representa las probabilidades de que el clima se mueva de un estado a otro de la siguiente manera:

P=[SRS0.90.1R0.50.5]

Podríamos hacer varias preguntas cuyas respuestas siguen:


P1: Si el clima es soleado hoy, ¿cuál es el clima probable mañana?

A1: Dado que no sabemos con certeza qué va a suceder, lo mejor que podemos decir es que hay un posibilidades de que sea soleado y un que llueva.10 %90%10%


P2: ¿Qué tal dos días a partir de hoy?

A2: predicción de un día: soleado, lluvioso. Por lo tanto, dentro de dos días:10 %90%10%

El primer día puede estar soleado y al día siguiente también puede estar soleado. Las posibilidades de que esto ocurra son: .0.9×0.9

O

El primer día puede ser lluvioso y el segundo día puede ser soleado. Las posibilidades de que esto ocurra son: .0.1×0.5

Por lo tanto, la probabilidad de que el clima sea soleado en dos días es:

P(Sunny 2 days from now=0.9×0.9+0.1×0.5=0.81+0.05=0.86

Del mismo modo, la probabilidad de que llueva es:

P(Rainy 2 days from now=0.1×0.5+0.9×0.1=0.05+0.09=0.14


En álgebra lineal (matrices de transición), estos cálculos corresponden a todas las permutaciones en las transiciones de un paso al siguiente (soleado a soleado ( ), soleado a lluvioso ( ), lluvioso a soleado ( ) o lluvioso a lluvioso ( )) con sus probabilidades calculadas:S 2 R R 2 S R 2 RS2SS2RR2SR2R

ingrese la descripción de la imagen aquí

En la parte inferior de la imagen vemos cómo calcular la probabilidad de un estado futuro ( o ) dadas las probabilidades (función de masa de probabilidad, ) para cada estado (soleado o lluvioso) en el tiempo cero (ahora o ) como una simple multiplicación de matrices.t + 2 P M F t 0t+1t+2PMFt0

Si se mantiene la previsión de un tiempo como este se dará cuenta de que con el tiempo el pronóstico ésimo día, donde es muy grande (por ejemplo ), se instala a las probabilidades siguientes 'equilibrio':n 30nn30

P(Sunny)=0.833

y

P(Rainy)=0.167

En otras palabras, su pronóstico para el día -ésimo y la día -ésimo siguen siendo los mismos. Además, también puede comprobar que las probabilidades de "equilibrio" no dependen del clima actual. Obtendría el mismo pronóstico para el clima si comienza asumiendo que el clima de hoy es soleado o lluvioso.n + 1nn+1

El ejemplo anterior solo funcionará si las probabilidades de transición de estado satisfacen varias condiciones que no discutiré aquí. Pero, observe las siguientes características de esta cadena de Markov 'agradable' (agradable = las probabilidades de transición satisfacen las condiciones):

Independientemente del estado inicial inicial, eventualmente alcanzaremos una distribución de probabilidad de equilibrio de los estados.

Markov Chain Monte Carlo explota la característica anterior de la siguiente manera:

Queremos generar sorteos aleatorios a partir de una distribución objetivo. Luego identificamos una forma de construir una cadena de Markov 'agradable' de tal manera que su distribución de probabilidad de equilibrio sea nuestra distribución objetivo.

Si podemos construir tal cadena, entonces comenzamos arbitrariamente desde algún punto e iteramos la cadena de Markov muchas veces (como la forma en que pronosticamos el clima veces). Eventualmente, los sorteos que generamos aparecerían como si vinieran de nuestra distribución objetivo.n

Luego, aproximamos las cantidades de interés (p. Ej., La media) al tomar el promedio de la muestra de los sorteos después de descartar algunos sorteos iniciales, que es el componente de Monte Carlo.

Hay varias formas de construir cadenas de Markov 'agradables' (por ejemplo, muestra de Gibbs, algoritmo de Metropolis-Hastings).

Antoni Parellada
fuente
2
Es una respuesta muy bien escrita. Sin embargo, probablemente perdería la atención del laico en el punto donde se discuten las matrices de transición.
rraadd88
1
Gran respuesta. Creo que sería útil explicar antes (o con más detalle) el hecho de que el objetivo final es determinar cierta cantidad de interés (por ejemplo, la media o el modo de los parámetros inferidos). Esto es correcto ¿verdad?
Austin Shin
101

Creo que se puede obtener una intuición agradable y simple del algoritmo Metropolis-Hastings (cadena de independencia).

Primero, ¿cuál es el objetivo? El objetivo de MCMC es extraer muestras de alguna distribución de probabilidad sin tener que conocer su altura exacta en ningún punto. La forma en que MCMC logra esto es "deambular" en esa distribución de tal manera que la cantidad de tiempo que pasa en cada ubicación sea proporcional a la altura de la distribución. Si el proceso de "deambular" está configurado correctamente, puede asegurarse de que se logre esta proporcionalidad (entre el tiempo empleado y la altura de la distribución).

Intuitivamente, lo que queremos hacer es caminar por alguna superficie (grumosa) de tal manera que la cantidad de tiempo que pasamos (o # muestras extraídas) en cada ubicación sea proporcional a la altura de la superficie en esa ubicación. Entonces, por ejemplo, nos gustaría pasar el doble de tiempo en una colina que está a una altitud de 100m que en una colina cercana que está a una altitud de 50m. Lo bueno es que podemos hacer esto incluso si no conocemos las alturas absolutas de los puntos en la superficie: todo lo que tenemos que saber son las alturas relativas . por ejemplo, si una colina A es dos veces más alta que B, entonces nos gustaría pasar el doble de tiempo en A que en B.

La variante más simple del algoritmo Metropolis-Hastings (muestreo de la cadena de independencia) logra esto de la siguiente manera: supongamos que en cada paso de tiempo (discreto), elegimos una nueva ubicación "propuesta" aleatoria (seleccionada de manera uniforme en toda la superficie). Si la ubicación propuesta es más alta que donde estamos ahora, muévase a ella. Si la ubicación propuesta es más baja, muévase a la nueva ubicación con probabilidad p, donde p es la relación entre la altura de ese punto y la altura de la ubicación actual. (es decir, lanzar una moneda con una probabilidad p de obtener cara; si sale cara, muévase a la nueva ubicación; si sale cruz, quédese donde estamos). Mantenga una lista de las ubicaciones en las que ha estado en cada paso del tiempo, y esa lista tendrá (asintóticamente) la proporción correcta de tiempo en cada parte de la superficie.

Existen esquemas más complicados para proponer nuevas ubicaciones y las reglas para aceptarlas, pero la idea básica sigue siendo: (1) elegir una nueva ubicación "propuesta"; (2) determine cuánto más alto o más bajo se compara esa ubicación con su ubicación actual; (3) es probable que permanezca donde está o muévase a esa ubicación de manera que respete el objetivo general de pasar un tiempo proporcional a la altura de la ubicación.

¿Para qué sirve esto? Supongamos que tenemos un modelo probabilístico del clima que nos permite evaluar A * P (clima), donde A es una constante desconocida. (Esto sucede a menudo: muchos modelos son convenientes para formular de tal manera que no pueda determinar qué es A). Por lo tanto, no podemos evaluar exactamente P ("lluvia mañana"). Sin embargo, podemos ejecutar el muestreador MCMC por un tiempo y luego preguntar: qué fracción de las muestras (o "ubicaciones") terminaron en el estado "lluvia mañana". Esa fracción será el pronóstico del tiempo probabilístico (basado en el modelo).

jpillow
fuente
66
+1. En mi opinión, 'deambular' es la analogía más intuitiva entre las que se enumeran en esta página.
Zhubarb
"sin tener que saber su altura exacta en ningún momento" Esta no es la restricción principal de MCMC.
JeremyKun
Desearía que esta explicación esté en los libros de texto para que no tengamos que perder tiempo golpeando cabezas tanto tiempo para entender lo que MH está haciendo.
Lunes
89

Probablemente diría algo como esto:

"Cada vez que queremos hablar sobre probabilidades, realmente estamos integrando una densidad. En el análisis bayesiano, muchas de las densidades que encontramos no son analíticamente manejables: solo puedes integrarlas, si es que puedes integrarlas en absoluto - con mucho sufrimiento. Entonces, lo que hacemos es simular mucho la variable aleatoria, y luego calcular las probabilidades de nuestros números aleatorios simulados. Si queremos saber la probabilidad de que X sea menor que 10, contamos el proporción de variables aleatorias simuladas resulta menor a 10 y utilícelo como nuestra estimación. Esa es la parte de "Monte Carlo", es una estimación de probabilidad basada en números aleatorios. Con suficientes números aleatorios simulados, la estimación es muy buena, pero sigue siendo inherentemente al azar.

"Entonces, ¿por qué" Cadena de Markov "? Porque bajo ciertas condiciones técnicas, puede generar un proceso sin memoria (también conocido como Markovian) que tiene la misma distribución limitante que la variable aleatoria que está tratando de simular. Puede iterar cualquiera de número de diferentes tipos de procesos de simulación que generan números aleatorios correlacionados (basados ​​solo en el valor actual de esos números), y tiene la garantía de que una vez que reúna suficientes resultados, terminará con una pila de números que se ve " como si "de alguna manera hubieras logrado tomar muestras independientes de la complicada distribución que querías saber.

"Entonces, por ejemplo, si quiero estimar la probabilidad de que una variable aleatoria normal estándar sea menor que 0.5, podría generar diez mil realizaciones independientes a partir de una distribución normal estándar y contar el número menor que 0.5; digamos que obtuve 6905 que fueron menos de 0.5 de cada 10000 muestras totales, mi estimación para P (Z <0.5) sería 0.6905, que no está muy lejos del valor real. Esa sería una estimación de Monte Carlo.

La lista de números que obtengo del procedimiento se distribuirá como un gran número de sorteos de algo que genera variables aleatorias normales. Esto me daría una simulación de Markov Chain Monte Carlo para una variable aleatoria normal estándar. Si usara esto para estimar probabilidades, sería una estimación de MCMC ".

Rico
fuente
77
Esa es una buena explicación, pero no para un laico no técnico. ¡Sospecho que el OP quería saber cómo explicárselo, por ejemplo, al MBA que lo contrató para hacer un análisis estadístico! ¿Cómo describiría MCMC a alguien que, en el mejor de los casos, comprende el concepto de una desviación estándar (la varianza, sin embargo, puede ser demasiado abstracta)?
Harlan
10
@Harlan: Es una línea difícil de atravesar; si alguien no sabe al menos qué es una variable aleatoria, por qué podríamos querer estimar las probabilidades y tener una idea confusa de una función de densidad, entonces no creo que sea posible explicar de manera significativa cómo o por qué de MCMC para ellos, solo el "qué", que en este caso se reduciría a "es una forma de resolver numéricamente un problema que de otro modo sería imposible mediante la simulación, como lanzar una moneda mucho para estimar la probabilidad de que caiga en la cara".
Rico
1
+1 para el último párrafo. Con un mínimo de tecnicismos, transmite bien la idea.
whuber
Buena explicación. Creo que esto es genial para una persona no técnica.
SmallChess
Duda: en el último párrafo, ¿por qué la lista de números parece provenir de una distribución normal? ¿Es por el teorema del límite central? Además, ¿qué pasaría si quisiéramos simular alguna otra distribución?
Manoj Kumar
37

Imagina que quieres encontrar una mejor estrategia para vencer a tus amigos en el juego de mesa Monopoly. Simplifica las cosas que importan en el juego a la pregunta: ¿en qué propiedades aterrizan más las personas? La respuesta depende de la estructura del tablero, las reglas del juego y los lanzamientos de dos dados.

Una forma de responder la pregunta es esta. Simplemente sigue una sola pieza alrededor del tablero mientras lanzas los dados y sigues las reglas. Cuente cuántas veces aterriza en cada propiedad (o programe una computadora para que haga el trabajo por usted). Eventualmente, si tiene suficiente paciencia o ha programado las reglas lo suficientemente bien en su computadora, obtendrá una buena imagen de las propiedades que generan más negocios. Esto debería ayudarte a ganar más a menudo.

Lo que ha hecho es un análisis de Markov Chain Monte Carlo (MCMC). El tablero define las reglas. El lugar donde aterrizas a continuación solo depende de dónde estás ahora, no de dónde has estado antes y las probabilidades específicas están determinadas por la distribución de los lanzamientos de dos dados. MCMC es la aplicación de esta idea a sistemas matemáticos o físicos como el clima del mañana o dónde terminará un grano de polen al azar por las moléculas de gas.

negro mate
fuente
1
La explicación suena como una simple simulación de Monte Carlo, pero ¿qué pasa con Markov Chain? ¿Cómo se relaciona Markov Chain con esta simulación de Monte Carlo?
Emran Hussain el
La respuesta de @Emran Graham Cookson parece explicar una conexión entre el monopolio y las cadenas de Markov.
Glen_b
El monopolio se puede modelar como una cadena de Markov donde cada propiedad / espacio es un nodo / estado. Cuando estás en un espacio en particular, tienes varias probabilidades de moverte a los siguientes 12 espacios (si usas 2 dados): estos son los bordes / conexiones en la cadena de Markov. Es fácil calcular la probabilidad de cada borde / conexión: gwydir.demon.co.uk/jo/probability/calcdice.htm#sum
32

OK, aquí está mi mejor intento de una explicación informal y cruda.

Una cadena de Markov es un proceso aleatorio que tiene la propiedad de que el futuro depende solo del estado actual del proceso y no del pasado, es decir, no tiene memoria. Un ejemplo de un proceso aleatorio podría ser la bolsa de valores. Un ejemplo de una Cadena de Markov sería un juego de mesa como Monopoly o Snakes and Ladders donde su posición futura (después de lanzar el dado) dependería solo de dónde comenzó antes del lanzamiento, no ninguna de sus posiciones anteriores. Un ejemplo de libro de texto de una cadena de Markov es el "paseo del borracho". Imagine a alguien que está borracho y puede moverse solo hacia la izquierda o hacia la derecha un paso. El borracho se mueve hacia la izquierda o hacia la derecha con la misma probabilidad. Esta es una Cadena de Markov donde la posición futura / próxima del borracho depende solo de dónde se encuentre actualmente.

Los métodos de Monte Carlo son algoritmos computacionales (simplemente conjuntos de instrucciones) que toman muestras al azar de algún proceso en estudio. Son una forma de estimar algo que es demasiado difícil o que lleva mucho tiempo encontrar de manera determinista. Básicamente son una forma de simulación por computadora de algún proceso matemático o físico. El apodo de Monte Carlo proviene de la analogía entre un casino y la generación de números aleatorios. Volviendo a nuestro ejemplo de juego de mesa anterior, quizás queremos saber si algunas propiedades en el tablero de Monopoly se visitan con más frecuencia que otras. Un experimento de Monte Carlo implicaría tirar los dados repetidamente y contar el número de veces que aterrizas en cada propiedad. También se puede usar para calcular integrales numéricas. (Muy informalmente, podemos pensar en una integral como el área bajo el gráfico de alguna función. ) La integración de Monte Carlo funciona muy bien en funciones de alta dimensión al tomar una muestra aleatoria de puntos de la función y calcular algún tipo de promedio en estos diversos puntos. Al aumentar el tamaño de la muestra, la ley de los grandes números nos dice que podemos aumentar la precisión de nuestra aproximación cubriendo cada vez más la función.

Estos dos conceptos se pueden unir para resolver algunos problemas difíciles en áreas como la inferencia bayesiana, la biología computacional, etc., donde las integrales multidimensionales deben calcularse para resolver problemas comunes. La idea es construir una cadena de Markov que converja a la distribución de probabilidad deseada después de varios pasos. El estado de la cadena después de una gran cantidad de pasos se utiliza como muestra de la distribución deseada y se repite el proceso. Existen muchos algoritmos MCMC diferentes que utilizan diferentes técnicas para generar la cadena de Markov. Los más comunes incluyen Metropolis-Hastings y Gibbs Sampler.

Graham Cookson
fuente
1
Una buena explicación de hecho. Solo una confusión no se borra. Como dijiste, "la idea es construir una Cadena de Markov que converja a la Distribución de Probabilidad deseada". Parece que ya conocemos la distribución de probabilidad de estado estable para los estados, entonces, ¿por qué necesitaríamos construir una cadena de Markov? El propósito de la cadena de Markov es proporcionarnos la distribución de estado estable, que ya tenemos en primer lugar, ¿no es así? A menos que haya querido decir, todavía es necesario obtener una cadena de Markov para calcular la probabilidad de estado de n + 1 en función del estado actual.
Emran Hussain el
16

Extracto de Métodos Bayesianos para Hackers

El paisaje bayesiano

NNp1p2

Exp(3)Exp(10)

La siguiente visualización demuestra esto. Cuanto más rojo oscuro sea el color, mayor será la probabilidad previa de que las incógnitas estén en esa ubicación. Por el contrario, las áreas con un azul más oscuro representan que nuestros prioritarios asignan muy poca probabilidad a las incógnitas que están allí.

ingrese la descripción de la imagen aquí

Estos son ejemplos simples en el espacio 2D, donde nuestros cerebros pueden entender bien las superficies. En la práctica, los espacios y las superficies generados por nuestros antecedentes pueden tener dimensiones mucho más altas.

XXempuja hacia arriba la superficie original para hacer montañas altas . La cantidad de empuje hacia arriba es resistida por la probabilidad previa, de modo que menos probabilidad previa significa más resistencia. Por lo tanto, en el caso anterior de doble exponencial anterior, una montaña (o varias montañas) que podrían entrar en erupción cerca de la esquina (0,0) sería mucho más alta que las montañas que erupcionan más cerca de (5,5), ya que hay más resistencia cerca (5,5). La montaña, o quizás de manera más general, las cadenas montañosas, reflejan la probabilidad posterior de dónde es probable que se encuentren los parámetros verdaderos.

λ

ingrese la descripción de la imagen aquí

Uniform(0,5)

El punto negro representa los parámetros verdaderos. Incluso con 1 punto de muestra, como se simuló anteriormente, las montañas intentan contener el parámetro verdadero. Por supuesto, la inferencia con un tamaño de muestra de 1 es increíblemente ingenua, y elegir un tamaño de muestra tan pequeño fue solo ilustrativo.

Explorando el paisaje usando el MCMC

NNNdesde la distribución posterior, no la distribución en sí. Extendiendo nuestra analogía montañosa hasta su límite, MCMC realiza una tarea similar a preguntar repetidamente "¿Qué tan probable es que este guijarro que encontré sea de la montaña que estoy buscando?", Y completa su tarea devolviendo miles de guijarros aceptados con la esperanza de reconstruir La montaña original. En la jerga MCMC y PyMC, la secuencia devuelta de "guijarros" son las muestras, más a menudo llamadas las trazas .

Cuando digo MCMC busca en forma inteligente, me refiero a MCMC será de esperar que convergen hacia las zonas de alta probabilidad posterior. MCMC hace esto explorando posiciones cercanas y moviéndose a áreas con mayor probabilidad. De nuevo, quizás "converger" no es un término exacto para describir la progresión de MCMC. La convergencia generalmente implica moverse hacia un punto en el espacio, pero MCMC se mueve hacia un área más amplia en el espacio y camina aleatoriamente en esa área, recogiendo muestras de esa área.

Al principio, devolver miles de muestras al usuario puede parecer una forma ineficiente de describir las distribuciones posteriores. Yo diría que esto es extremadamente eficiente. Considere las posibilidades alternativas ::

  1. Devolver una fórmula matemática para las "cadenas montañosas" implicaría describir una superficie N-dimensional con picos y valles arbitrarios.
  2. Devolver el "pico" del paisaje, mientras que matemáticamente es posible y algo sensato de hacer, ya que el punto más alto corresponde a la estimación más probable de las incógnitas, ignora la forma del paisaje, lo cual hemos argumentado anteriormente es muy importante para determinar la confianza posterior. en incógnitas

Además de las razones computacionales, probablemente la razón más fuerte para devolver muestras es que podemos usar fácilmente La Ley de los Números Grandes para resolver problemas que de otra manera no se podrían resolver. Pospongo esta discusión para el próximo capítulo.

Algoritmos para realizar MCMC

Hay una gran familia de algoritmos que realizan MCMC. Simplemente, la mayoría de los algoritmos se pueden expresar a un alto nivel de la siguiente manera:

1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data 
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.

De esta manera nos movemos en la dirección general hacia las regiones donde existen las distribuciones posteriores, y recolectamos muestras con moderación en el viaje. Una vez que alcanzamos la distribución posterior, podemos recolectar fácilmente muestras, ya que probablemente todas pertenecen a la distribución posterior.

Si la posición actual del algoritmo MCMC está en un área de probabilidad extremadamente baja, que suele ser el caso cuando el algoritmo comienza (generalmente en una ubicación aleatoria en el espacio), el algoritmo se moverá en posiciones que probablemente no sean posteriores pero mejor que todo lo demás cerca. Por lo tanto, los primeros movimientos del algoritmo no reflejan el posterior.

Cam.Davidson.Pilon
fuente
2
Entiendo que el problema estaba relacionado específicamente con MCMC, y no con la inferencia bayesiana, pero en el contexto de los paisajes bayesianos, encuentro que MCMC es muy comprensible.
Cam.Davidson.Pilon
10

Por lo tanto, aquí hay muchas respuestas parafraseadas de libros de texto de estadísticas / probabilidad, Wikipedia, etc. Creo que tenemos "laicos" donde trabajo; Creo que están en el departamento de marketing. Si alguna vez tengo que explicarles algo técnico, aplico la regla "mostrar no contar". Con esa regla en mente, probablemente les mostraría algo como esto.

La idea aquí es tratar de codificar un algoritmo que pueda enseñar a deletrear, no aprendiendo todas las cientos (¿miles?) De reglas como Al agregar un final a una palabra que termina con una e silenciosa, suelte la e final si el final comienza con una vocal . Una razón que no funcionará es que no conozco esas reglas (ni siquiera estoy seguro de que la que acabo de recitar sea correcta). En cambio, voy a enseñarle a deletrear mostrándole un montón de palabras correctamente escritas y dejando que extraiga las reglas de esas palabras, que es más o menos la esencia del aprendizaje automático, independientemente del algoritmo: extracción de patrones y reconocimiento de patrones .

El criterio de éxito es deletrear correctamente una palabra que el algoritmo nunca ha visto antes (me doy cuenta de que puede suceder por pura casualidad, pero eso no se le ocurrirá a los muchachos de marketing, por lo que lo ignoraré, además voy a tener el algoritmo intente deletrear no una palabra, sino muchas, por lo que no es probable que seamos engañados por algunas conjeturas afortunadas).

Hace aproximadamente una hora, descargué (como un archivo de texto sin formato) del excelente sitio del Proyecto Gutenberg, la novela de Herman Hesse Siddhartha . Usaré las palabras de esta novela para enseñarle al algoritmo cómo deletrear.

Así que codifiqué el siguiente algoritmo que escaneaba esta novela, tres letras a la vez (cada palabra tiene un carácter adicional al final, que es 'espacio en blanco', o el final de la palabra). Las secuencias de tres letras pueden decirle mucho: por ejemplo, la letra 'q' casi siempre va seguida de 'u'; la secuencia 'ty' generalmente ocurre al final de una palabra; z rara vez lo hace, y así sucesivamente. (Nota: podría haberlo facilitado con palabras completas para entrenarlo a hablar en oraciones completas, exactamente la misma idea, solo algunos ajustes al código).

Sin embargo, nada de esto involucra a MCMC, eso sucede después del entrenamiento, cuando le damos al algoritmo algunas letras al azar (como semilla) y comienza a formar 'palabras'. ¿Cómo construye el algoritmo palabras? Imagine que tiene el bloque 'qua'; ¿Qué letra agrega a continuación? Durante el entrenamiento, el algoritmo construyó una matriz de frecuencia * de secuencia de éter masiva * a partir de todas las miles de palabras en la novela. En algún lugar de esa matriz se encuentra el bloque de tres letras 'qua' y las frecuencias de los caracteres que podrían seguir la secuencia. El algoritmo selecciona una letra basada en esas frecuencias que posiblemente podrían seguirla. Entonces, la letra que el algoritmo selecciona a continuación depende de, y únicamente de, los últimos tres en su cola de construcción de palabras.

Entonces ese es un algoritmo de Markov Chain Monte Carlo.

Creo que quizás la mejor manera de ilustrar cómo funciona es mostrar los resultados en función de los diferentes niveles de capacitación. El nivel de entrenamiento varía al cambiar el número de pasadas que el algoritmo hace a través de la novela: cuanto más pasadas, mayor es la fidelidad de sus matrices de frecuencias de secuencia de letras. A continuación se muestran los resultados, en forma de cadenas de 100 caracteres producidos por el algoritmo, después del entrenamiento en la novela 'Siddharta'.


Una sola pasada a través de la novela, Siddhartha :

luego silba a Ger Wiff, todo de pie, te levantas lívido, el miedo, la fangosa succión

(Inmediatamente, se aprendió a hablar galés casi perfecto; no esperaba eso).


Después de dos pasadas por la novela:

el espectáculo de ack wor prenskinith era un par de veces que ya se veía allí la teatina de la tierra.


Después de 10 pases:

a pesar de que debería orar con ack ahora tener agua su perro palanca dolor pies cada uno no la memoria débil


Y aquí está el código (en Python, estoy casi seguro de que esto podría hacerse en R usando un paquete MCMC, del cual hay varios, en solo 3-4 líneas)

def create_words_string(raw_string) :
  """ in case I wanted to use training data in sentence/paragraph form; 
      this function will parse a raw text string into a nice list of words;
      filtering: keep only words having  more than 3 letters and remove 
      punctuation, etc.
  """
  pattern = r'\b[A-Za-z]{3,}\b'
  pat_obj = re.compile(pattern)
  words = [ word.lower() for word in pat_obj.findall(raw_string) ]
  pattern = r'\b[vixlm]+\b'
  pat_obj = re.compile(pattern)
  return " ".join([ word for word in words if not pat_obj.search(word) ])

def create_markov_dict(words_string):
  # initialize variables
  wb1, wb2, wb3 = " ", " ", " "
  l1, l2, l3 = wb1, wb2, wb3
  dx = {}
  for ch in words_string :
    dx.setdefault( (l1, l2, l3), [] ).append(ch)
    l1, l2, l3 = l2, l3, ch
  return dx

def generate_newtext(markov_dict) :
  simulated_text = ""
  l1, l2, l3 = " ", " ", " "
  for c in range(100) :
    next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
    simulated_text += next_letter
    l1, l2, l3 = l2, l3, next_letter
  return simulated_text

if __name__=="__main__" :
  # n = number of passes through the training text
  n = 1
  q1 = create_words_string(n * raw_str)
  q2 = create_markov_dict(q1)
  q3 = generate_newtext(q2)
  print(q3)
Doug
fuente
12
Has creado un modelo de Markov para deletrear en inglés y ajustarlo a los datos. Pero el muestreo del modelo ajustado no es MCMC. (¿Cuál es la "distribución deseada" de la que toma muestras? Claramente, no la distribución sobre "palabras correctamente escritas en inglés", ya que el modelo todavía comete errores después del entrenamiento). No pretendo criticar el ejercicio; Es una buena demostración de un modelo de cadena de Markov para el lenguaje. Pero la idea clave de MCMC es diseñar una cadena de Markov para que su distribución de equilibrio corresponda a alguna distribución que tenga en mente, y no es obvio que esto lo logre.
jpillow
2

MCMC se usa típicamente como una alternativa a las técnicas de simulación crudas de Monte Carlo. Tanto MCMC como otras técnicas de Monte Carlo se usan para evaluar integrales difíciles, pero MCMC se puede usar de manera más general.

Por ejemplo, un problema común en estadística es calcular el resultado medio relacionado con algún modelo probabilístico / estocástico. Las técnicas MCMC y Monte Carlo resolverían este problema al generar una secuencia de resultados simulados que podríamos usar para estimar la media real.

Tanto las MCMC como las técnicas crudas de Monte Carlo funcionan ya que la proporción a largo plazo de simulaciones que son iguales a un resultado dado será igual * a la probabilidad modelada de ese resultado. Por lo tanto, al generar suficientes simulaciones, los resultados producidos por ambos métodos serán precisos.

* Digo igual aunque en general debería hablar sobre conjuntos medibles. Un laico, sin embargo, probablemente no estaría interesado en esto *

Sin embargo, mientras que el Monte Carlo crudo implica producir muchas simulaciones independientes, cada una de las cuales se distribuye de acuerdo con la distribución modelada, MCMC implica generar una caminata aleatoria que a largo plazo "visita" cada resultado con la frecuencia deseada.

El truco para MCMC, por lo tanto, es elegir una caminata aleatoria que "visitará" cada resultado con las frecuencias deseadas a largo plazo.

Un ejemplo simple podría ser simular a partir de un modelo que dice que la probabilidad del resultado "A" es 0.5 y del resultado "B" es 0.5. En este caso, si comencé la caminata aleatoria en la posición "A" y prescribí que en cada paso cambiara a la otra posición con una probabilidad de 0.2 (o cualquier otra probabilidad que sea mayor que 0), podría estar seguro de que después de un largo número de pasos que la caminata aleatoria habría visitado cada uno de "A" y "B" en aproximadamente el 50% de los pasos, de acuerdo con las probabilidades prescritas por nuestro modelo.

Este es obviamente un ejemplo muy aburrido. Sin embargo, resulta que MCMC a menudo es aplicable en situaciones en las que es difícil aplicar Monte Carlo estándar u otras técnicas.

Puede encontrar un artículo que cubre los conceptos básicos de lo que es y por qué funciona aquí:

http://wellredd.uk/basics-markov-chain-monte-carlo/

Richard Redding
fuente
Estamos tratando de construir un repositorio permanente de información estadística de alta calidad en forma de preguntas y respuestas. Tratamos de evitar respuestas de solo enlace que están sujetas a rotura de enlace; Como tal, esto es más un comentario que una respuesta por derecho propio. Si puede, podría expandirlo, quizás dando un resumen de la información en el enlace (o podríamos convertirlo en un comentario para usted).
Glen_b
1

Soy un analista de ADN que utiliza un software de genotipo probabilístico completamente continuo para interpretar la evidencia de ADN y tengo que explicar cómo funciona esto ante un jurado. Es cierto que simplificamos demasiado y me doy cuenta de que parte de esta simplificación sacrifica la precisión de detalles específicos en nombre de mejorar la comprensión general. Pero, dentro del contexto de un jurado que comprende cómo se utiliza este proceso en la interpretación del ADN sin títulos académicos y años de experiencia profesional, obtienen la esencia :)

Antecedentes: el software utiliza MCMC de Metropolis Hastings y un modelo biológico que imita el comportamiento conocido de los perfiles de ADN (el modelo se basa en los datos de validación generados por el laboratorio que analiza muchos perfiles de ADN de condiciones conocidas que representan el rango encontrado en el trabajo de caso desconocido). Hay 8 cadenas independientes y evaluamos la convergencia para determinar si se debe volver a ejecutar aumentando la grabación y luego acepta (la grabación predeterminada es 100k acepta y luego 400k acepta)

Cuando la fiscalía / defensa le preguntó acerca de MCMC: explicamos que significa la cadena de Markov Monte Carlo y representa una clase / clase especial de algoritmo utilizado para resolver problemas complejos y que un algoritmo es solo una palabra elegante que se refiere a una serie de procedimientos o rutina llevado a cabo por una computadora ... los algoritmos mcmc operan proponiendo una solución, simulando esa solución, luego evaluando qué tan bien esa simulación refleja los datos de evidencia reales que se observan ... una simulación que se ajusta bien a la observación de evidencia tiene una probabilidad mayor que un simulación que no se ajusta bien a la observación ... sobre muchos muestreos / conjeturas repetidas de soluciones propuestas, las cadenas de Markov se alejan de las soluciones de baja probabilidad hacia las soluciones de alta probabilidad que mejor se ajustan / explican el perfil de evidencia observado, hasta que finalmente se alcanza el equilibrio logradolo que significa que el algoritmo tiene una capacidad limitada para muestrear nuevas propuestas que producen probabilidades significativamente mayores

Cuando se le preguntó sobre la metrópoli Hastings: explicamos que es un refinamiento del algoritmo MCMC que describe su proceso de toma de decisiones aceptando o rechazando una propuesta ... por lo general, esto se explica con una analogía del juego infantil "caliente / frío", pero es posible que haya considerado usar desliza hacia la derecha o hacia la izquierda "cuando el jurado es especialmente joven !! : p Pero usando nuestra analogía frío / calor, siempre aceptamos una conjetura en caliente y ocasionalmente aceptamos una conjetura en frío una fracción del tiempo y explicamos que el propósito de aceptar a veces la conjetura en frío es asegurar que las cadenas muestren una gama más amplia de posibilidades como en oposición a quedarse atrapado en una propuesta particular antes del equilibrio real

Editado para agregar / aclarar: con la analogía frío / calor, explicamos que en el juego de los niños, el líder elige un objeto / área objetivo dentro de la habitación y los jugadores se turnan para adivinar en qué dirección moverse en relación con su posición / posición actual. El líder les dice que cambien de posición / hagan el movimiento si es una suposición acertada y pierden su turno / permanecen en posición si es una suposición fría. Del mismo modo, dentro de nuestro software, la decisión de moverse / aceptar depende solo de la probabilidad de la propuesta en comparación con la probabilidad de la posición actualmente ocupada ... SIN EMBARGO, el objetivo está predefinido / conocido por el líder en el juego infantil mientras que el el objetivo dentro de nuestro software no está predefinido, es completamente desconocido (también por qué '

Como dije, súper súper básico y absolutamente sin detalles técnicos en aras de mejorar la comprensión, nos esforzamos por explicar en un nivel de educación de secundaria. Siéntete libre de hacer sugerencias. Los incorporaré.

tiffCAKE
fuente
0

Esta pregunta es amplia pero las respuestas son a menudo bastante casuales. Alternativamente, puede ver este documento que ofrece una descripción matemática concisa de una amplia clase de algoritmos MCMC, incluidos los algoritmos de Metropolis-Hastings, muestreo de Gibbs, Metrópolis dentro de Gibbs y métodos de variables auxiliares, muestreo de corte, propuestas recursivas, muestreo direccional, Langevin y Montecarlo hamiltoniano, muestreo NUTS, algoritmos pseudo-marginales de Metropolis-Hastings y Montecarlo hamiltoniano pseudo-marginal, según lo discutido por los autores.

Aquí se da una reseña creíble

Encontraré más tiempo para elaborar su contenido en el formato de stackexchange.

Cielo azul
fuente
0

f(x,y)=z=x2+2xy(x,y)f(x,y)f(x,y)

f(x,y,z,t,s,...,zzz)

Este video (a partir de las 5:50) tiene una muy buena declaración de intuición.

Imagine que desea muestrear puntos que están en las ramas verdes (multidimensionales) en esta imagen. Si arroja puntos por todo el súper espacio negro y verifica su valor, está desperdiciando mucha energía de muestreo (búsqueda). Por lo tanto, tendría más sentido controlar su estrategia de muestreo (que se puede automatizar) para elegir puntos más cercanos a las ramas verdes (donde es importante). Las ramas verdes se pueden encontrar al ser golpeadas una vez accidentalmente (o controladas), y el resto del esfuerzo de muestreo (puntos rojos) se generará después. La razón por la que el rojo se siente atraído por la línea verde es por la matriz de transición de la cadena de Markov que funciona como su motor de muestreo.

Entonces, en términos simples, MCMC es un método de muestreo que ahorra energía (bajo costo), especialmente cuando se trabaja en un espacio masivo y 'oscuro' (multidimensional).

ingrese la descripción de la imagen aquí

Amir
fuente
1
Creo que tenemos una definición diferente de "laico"
Neil McGuigan
jajaja. También puedo agregar el Monte-Carlo para un "laico", pero el muestreo / Monte-Carlo no era una pregunta.
Amir