La programación bayesiana es un sistema formal y una metodología para definir modelos probabilísticos y resolver problemas cuando no se dispone de toda la información necesaria.
Edwin Thompson Jaynes propuso considerar la probabilidad como una alternativa y extensión de la lógica para el razonamiento racional con información incompleta e incierta. En su libro seminal The Theory of Probability: The Logic of Science [1] , desarrolló esta teoría y propuso lo que llamó un "robot", que no era un dispositivo físico, sino una máquina de inferencia que automatiza el razonamiento probabilístico, algo así como un Prólogo de una teoría de probabilidades en lugar de lógica. La programación bayesiana [2] es una implementación formal y concreta de este "robot".
La programación bayesiana también se puede considerar como un sistema algebraico formal para especificar modelos gráficos , como, por ejemplo, redes bayesianas , redes bayesianas dinámicas filtros de Kalman o modelos ocultos de Markov . De hecho, la programación bayesiana generaliza las redes bayesianas y tiene un poder expresivo equivalente a los gráficos de factores .
El programa bayesiano es un medio para especificar una familia de distribuciones de probabilidad.
Los siguientes son los componentes básicos de un programa bayesiano:
La descripción especifica un método eficiente para calcular la distribución de probabilidad conjunta de un conjunto de variables para un conjunto dado de datos experimentales y alguna definición de . Esta distribución conjunta se denota como .
Para especificar conocimientos previos , el programador debe hacer lo siguiente:
Deje que el conjunto contenga subconjuntos, las variables se definen como , cada una de las cuales corresponde a uno de estos subconjuntos. Cada variable se obtiene como una conjunción de variables pertenecientes al -ésimo subconjunto. Una aplicación recursiva del teorema de Bayes conduce a
La aplicación de la hipótesis de la independencia condicional nos permite hacer más simplificaciones. La hipótesis de independencia condicional para una variable se define por la elección de alguna variable entre las variables presentes en la conjunción . Denotando por la conjunción de las variables elegidas y tomando
Obtenemos
Esta simplificación de una distribución conjunta como producto de distribuciones más simples se llama descomposición de la regla de la cadena
Esto asegura que cada variable aparezca a la izquierda de la línea condicional al menos una vez, lo cual es una condición necesaria y suficiente para escribir cálculos matemáticamente correctos. .
FormulariosCada distribución que ocurre en el producto se asocia luego con una forma paramétrica (es decir, una función ) o con una pregunta a otro programa baysiano .
Cuando es la forma , es en general un vector de parámetros que pueden depender de , o , o de ambos. Cuando algunos de estos parámetros se calculan utilizando el conjunto de datos , se produce el entrenamiento.
Una característica importante de la programación bayesiana es la capacidad de utilizar preguntas a otros programas bayesianos como parte de la definición de un nuevo programa bayesiano. se obtiene mediante la salida producida por otro programa bayesiano dada la definición y los datos . Esto es similar a llamar a una subrutina en la programación clásica y proporciona una manera fácil de construir modelos jerárquicos .
Deje que se dé una descripción (es decir ), la pregunta se obtiene dividiéndola en tres conjuntos: las variables investigadas (inglés buscadas ) , variables conocidas (inglés conocidas ) y variables libres (inglés libres ) .
Las tres variables , y se definen como la conjunción de las variables pertenecientes a estos conjuntos.
Una pregunta se define como un conjunto de distribuciones
compuesto de "preguntas específicas" como un cardenal , donde cada pregunta instanciada es una distribución
Para una distribución conjunta dada , siempre es posible calcular cualquier pregunta aplicando la siguiente derivación general:
donde la primera igualdad se deriva de la regla de marginación , la segunda se deriva del teorema de Bayes y la tercera corresponde a la segunda aplicación de la marginación. El denominador resulta ser un término de normalización y puede ser reemplazado por una constante .
Teóricamente, esto te permite resolver cualquier problema de inferencia bayesiana. Sin embargo, en la práctica, en casi todos los casos, el coste de un cálculo exhaustivo y preciso resulta demasiado elevado.
Sustituyendo la distribución conjunta por su descomposición, obtenemos
que suele ser una expresión mucho más sencilla de calcular, ya que la dimensión del problema se reduce significativamente por la descomposición en el producto de distribuciones de menor dimensión.
El objetivo del filtrado de spam bayesiano es eliminar los correos electrónicos no deseados.
La formulación de este problema es bastante simple. Los correos electrónicos deben clasificarse en una de dos categorías: no spam y spam. La única información disponible para clasificar los correos electrónicos es su contenido: el conjunto de palabras. El uso de palabras sin tener en cuenta su orden en una oración a menudo se conoce como el modelo de la bolsa de palabras .
Además, el clasificador debe ser capaz de adaptarse a su usuario y aprender de la experiencia. Partiendo de la configuración inicial estándar, el clasificador debe cambiar sus parámetros internos si el usuario no está de acuerdo con su decisión. Por tanto, se adaptará al criterio del usuario para distinguir entre no spam y spam. Mejorará sus propios resultados a medida que encuentre más y más correos electrónicos clasificados.
VariablesLas siguientes variables son necesarias para escribir este programa:
Estas variables binarias resumen toda la información sobre el correo electrónico.
DescomposiciónPartiendo de la definición de la distribución conjunta y aplicando recursivamente el teorema de Bayes , se obtiene:
Esta es una expresión matemática exacta.
Se puede simplificar radicalmente asumiendo que la probabilidad de que una palabra aparezca en una categoría de texto determinada (spam o no) es independiente de la aparición de otras palabras. Tal suposición es bayesiana ingenua y, por lo tanto, este filtro de spam es un modelo bayesiano ingenuo .
Por ejemplo, un programador podría suponer que
y eventualmente obtener
Esta suposición se conoce como la suposición Naive Bayes . Es "ingenuo" en el sentido de que la independencia entre las palabras obviamente no es cierta. Por ejemplo, ignora por completo el hecho de que la ocurrencia de un par de palabras puede ser más significativa que las ocurrencias aisladas. Sin embargo, el programador puede aceptar esta hipótesis y puede desarrollar este modelo y su salida asociada para probar qué tan confiable y eficiente es.
Formas paramétricasPara poder calcular la distribución conjunta, el programador ahora debe especificar las distribuciones presentes en la descomposición:
donde es el número de ocurrencias de la palabra th en correos electrónicos que no son spam y es el número total de correos electrónicos que no son spam. De manera similar, es el número de ocurrencias de la palabra th en correos electrónicos no deseados y es el número total de correos electrónicos no deseados.
Identificaciónlos formularios aún no se han definido por completo porque los parámetros , y aún no tienen valores.
La identificación de estos parámetros se puede realizar mediante el procesamiento por lotes de un grupo de correos electrónicos clasificados o mediante la actualización incremental de los parámetros mediante la clasificación de los correos electrónicos por parte del usuario a medida que llegan.
Ambos métodos se pueden combinar: el sistema puede comenzar con valores predeterminados iniciales de estos parámetros dados desde una base de datos generalizada, y luego un aprendizaje incremental ajusta el clasificador para cada usuario individual.
PreguntaLa pregunta que se le hace al programa es: “¿cuál es la probabilidad de que ese texto sea spam, si se sabe qué palabras están presentes en él y cuáles no?”. Se puede formalizar como
que se puede calcular así:
En esta expresión, el denominador resulta ser la constante de normalización . No es necesario calcularlo para saber si estamos ante spam. Por ejemplo, un truco simple para calcular una razón:
Este cálculo es más rápido y conveniente porque solo requiere productos.
Programa bayesianoEl programa de filtro de spam bayesiano se define completamente como
Los filtros bayesianos (a menudo denominados estimación bayesiana recursiva ) son modelos probabilísticos generales para procesos que se desarrollan a lo largo del tiempo. Numerosos modelos son casos especiales de este enfoque general, como el filtro de Kalman o el modelo oculto de Markov .
VariablesLa descomposición se basa en:
La elección de formas paramétricas no está limitada, y diferentes opciones conducen a diferentes modelos bien conocidos: consulte los filtros de Kalman y los modelos ocultos de Markov a continuación.
PreguntaUna pregunta común para estos modelos es : ¿cuál es la distribución de probabilidad del estado en el tiempo t dadas las observaciones desde el tiempo hasta t ?
El caso más general es el filtrado bayesiano, para el cual , lo que significa que el estado en el momento actual se determina con observaciones previas conocidas.
Sin embargo, también es posible extrapolar el estado futuro utilizando observaciones pasadas, o suavizar para reconstruir el estado pasado a partir de observaciones realizadas antes o después de un cierto punto en el tiempo.
Se pueden hacer preguntas más avanzadas, como se muestra a continuación en la sección HMM.
Los filtros bayesianos tienen una propiedad recursiva muy interesante que contribuye en gran medida a su atractivo. puede calcularse simplemente usando la siguiente fórmula:
Otra forma interesante de ver esta ecuación es considerar la existencia de dos fases: la fase de anticipación y la fase de evaluación:
Los conocidos filtros de Kalman [3] son un caso especial de los filtros bayesianos.
Están dados por el siguiente programa bayesiano:
Usando estas hipótesis y una fórmula recursiva, el problema de inferencia para responder una pregunta común se puede resolver analíticamente. Esto da como resultado un algoritmo extremadamente eficiente, lo que explica la popularidad de los filtros Kalman y sus numerosas aplicaciones cotidianas.
Cuando no hay transiciones lineales obvias y modelos de observación, a menudo aún es posible, aplicando una expansión de Taylor de primer orden , considerar que estos modelos son localmente lineales. Esta generalización suele denominarse filtro de Kalman extendido .
Modelo oculto de MarkovLos modelos ocultos de Markov (HMM) son otro caso especial muy popular de filtros de Kalman.
Están dados por el siguiente programa bayesiano:
¿Cuál es la secuencia más probable de estados que conducen al estado actual, dadas las observaciones anteriores?
La respuesta a esta pregunta se puede obtener a través de un algoritmo muy eficiente: el algoritmo de Viterbi .
Además, se desarrolló el algoritmo Baum-Welsh para HMM .
En los últimos 15 años, la programación bayesiana se ha aplicado en muchas universidades para desarrollar aplicaciones en robótica y modelos en las ciencias de la vida [4] .
RobóticaEn robótica, la programación bayesiana se ha aplicado en robótica autónoma [5] [6] [7] [8] [9] , sistemas CAD robóticos [10] , sistemas avanzados de asistencia al conductor [11] , control robótico de manipuladores , robótica móvil [12] [13] , interacción hombre-robot [14] , interacción hombre-vehículo (modelos bayesianos de conductor autónomo) [15] [16] [17] [18] [19] [20 ] , programación y aprendizaje de avatares en videojuegos [21] y juegos de estrategia en tiempo real ( IA ). [22]
Ciencias de la vidaEn las ciencias de la vida, la programación bayesiana se ha utilizado en las ciencias de la visión para reconstruir la forma a partir del movimiento [23] , para modelar la interacción visual-vestibular [24] y para estudiar el movimiento ocular sacádico [25] ; en la percepción y control del habla para estudiar la asimilación temprana del habla [26] y el surgimiento de sistemas articular-acústicos [27] ; para modelar la percepción y el control del texto escrito a mano [28] .
La programación bayesiana tiene aplicaciones potenciales en el reconocimiento y la síntesis de voz , el reconocimiento de imágenes y el procesamiento del lenguaje natural . Aquí utiliza los principios de componibilidad (construir representaciones abstractas a partir de partes), causalidad (construir complejos a partir de partes) y aprender a aprender (utilizar conceptos previamente reconocidos para facilitar la creación de nuevos conceptos) [29] .
La comparación entre los enfoques probabilísticos (no solo la programación bayesiana) y las teorías de la posibilidad sigue siendo un tema de debate.
Las teorías de la posibilidad como, por ejemplo, los conjuntos borrosos [30] , la lógica borrosa [31] y la propia teoría de la posibilidad [32] ofrecen diversas alternativas para modelar la incertidumbre utilizando la probabilidad. Argumentan que la probabilidad es insuficiente o inconveniente para modelar ciertos aspectos del conocimiento incompleto o incierto.
La defensa del enfoque probabilístico se basa principalmente en el teorema de Cox , que consta de cuatro postulados sobre el razonamiento racional bajo incertidumbre. Muestra que el único modelo matemático que satisface estos postulados es la teoría de la probabilidad. La prueba es que cualquier otro enfoque que no sea la teoría de la probabilidad viola uno de estos postulados.
El objetivo de la programación probabilística es combinar el ámbito de los lenguajes de programación clásicos con el modelado probabilístico (especialmente las redes bayesianas ) para poder lidiar con la incertidumbre y al mismo tiempo usar el poder expresivo de los lenguajes de programación para describir complejos. modelos
Los lenguajes de programación clásicos extendidos incluyen lenguajes lógicos, como se propone en Probabilistic Horn Abduction [ 33 ] , Independent Choice Logic [34] , PRISM [35] y ProbLog lenguaje Prolog .
También puede ser una extensión de lenguajes de programación funcional (esencialmente LISP y Scheme ) como IBAL o Church . Los lenguajes subyacentes de la extensión también pueden estar orientados a objetos , como en el caso de BLOG y FACTORIE, o más estándar, como en CES y FIGARO . Archivado el 1 de febrero de 2016 en Wayback Machine .
El propósito de la programación bayesiana es algo diferente. La posición de "probabilidad como lógica" de Jaynes argumenta que la probabilidad es una extensión y una alternativa a la lógica, sobre la cual se puede reconstruir toda la teoría de la racionalidad, los algoritmos y la programación [1] . La programación bayesiana no busca una forma de extender los lenguajes clásicos, busca reemplazarlos con un nuevo enfoque de la programación basada en probabilidades que tenga en cuenta la incompletitud y la incertidumbre.
Una comparación exacta de la semántica y el poder expresivo de la programación bayesiana y probabilística sigue siendo una pregunta abierta.