7 votos

Programación diferenciable para la teoría general de la decisión bayesiana

Tengo entendido que programación diferenciable y por lo tanto las bibliotecas como TensorFlow (por ejemplo TFP ) y JAX pueden utilizarse para resolver problemas de teoría de la decisión bayesiana en los que, por ejemplo, tenemos un modelo probabilístico de la pérdida en la que podemos incurrir en función de una decisión que tenemos que tomar con la información disponible. Al fin y al cabo, estas bibliotecas deberían ser capaces de ayudarnos a optimizar problemas generales y potencialmente grandes no convexos.

En términos generales, me refiero a general problemas de la forma:

$\underset{d}{\operatorname{argmin}} \mathrm{E}^\pi\left[L\left(\theta,d\right)| \text{D}\right]$

donde tenemos la notación estándar:

  • $L$ es la función de pérdida
  • $\pi$ es nuestra prioridad sobre los parámetros del modelo
  • $d$ es la decisión que estamos tratando de tomar
  • $\text{D}$ son nuestros datos o conocimientos actuales

Sin embargo, todavía no he encontrado ningún ejemplo real que muestre esta conexión particular en la que se defina de forma flexible el Pérdida utilizando la función programación probabilística y optimizar el problema de decisión mediante programación diferenciable .

Esto puede deberse a que estas bibliotecas parecen estar orientadas principalmente a aprender de datos y inferencia de los parámetros del modelo. Esto contrasta con, por ejemplo, la optimización de los precios de los artículos en una tienda, de una cartera en finanzas o, digamos, de los tamaños de las muestras para una costosa prueba A/B/n que deben establecerse a priori.

Dicho esto, puede haber algo más en juego, tal vez la dificultad de resolver la ecuación anterior para las funciones de pérdida que pueden ser mucho más generales y complejas que, por ejemplo, NLL o pérdida 0/1 (MAP), se interpone en el camino.

En otras palabras, me pregunto sobre el uso de la programación dif. hoy en día para la optimización de la Bayesiana general Pérdida es decir, utilizarlo para problemas más amplios que, por ejemplo, el ajuste de un modelo o la ejecución de una PPL muestreador per se, como en, por ejemplo HMC para estimar los parámetros del modelo (a menudo una función de pérdida "estándar") o, obviamente, para calcular los posteriors.

¿Se puede realmente modelar y resolver completamente este tipo de problemas generales hoy en día con, por ejemplo TFP , JAX , PyTorch ¿ etc.? Si no es así (o no es tan fácil), ¿por qué?

Tal vez motivado por lo anterior, ¿qué tipo de software está disponible hoy en día para resolver problemas de la forma general anterior, donde el modelo y las variables aleatorias se pueden especificar de forma flexible a través de, por ejemplo, la programación probabilística?

1voto

Dipstick Puntos 4869

Probabilidad de TensorFlow es un módulo independiente de programación probabilística para TensorFlow, numpyro utiliza JAX, mientras que Pyro es un framework de PyTorch. Todos esos marcos te permiten hacer Inferencia Variacional y muestreo de Markov Chain Monte Carlo.

La forma más sencilla de calcular la pérdida posterior esperada, es utilizando muestras de Monte Carlo de la distribución posterior (ya sea utilizando MCMC, o primero usar la distribución posterior estimada VI, y luego muestrear de ella). Para calcular la pérdida posterior esperada, lo que hay que hacer es tomar muestras de la distribución posterior predictiva, calcular la función de pérdida sobre esos valores y promediar las pérdidas.

Los frameworks que describes (TensorFlow, JAX, PyTorch) están diseñados para utilizar la diferenciación automática, no para tomar integrales lo que se necesita para los problemas bayesianos. Puede encontrar algunos paquetes que se centran en la toma de integrales, por ejemplo, utilizando Cuadratura bayesiana pero están mucho menos maduros que los paquetes mencionados, por lo que el procedimiento que he descrito anteriormente sigue siendo, por ahora, el más avanzado para los problemas bayesianos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X