Pyro

Leyendo sobre si dizque PyTorch le siega la hierba debajo de los pies a TensorFlow, averigué la existencia de Pyro.

Pyro se autopresenta como Deep Universal Probabilistic Programming, pero aplicando métodos porfirianos (ya sabéis: género próximo y diferencia específica), es, o pretende ser, Stan en Python y a escala.

Aquí van mis dos primeras impresiones, basadas en una inspección superficial de los tutoriales.

En primer lugar, aunque Pyro permite usar (distintas versiones de) MCMC, parece que su especialidad es la inferencia variacional estocástica. Que parece funcionar de la siguiente manera. En el MCMC tradicional uno obtiene una muestra de la distribución (a posteriori, para los amigos) de los parámetros de interés. Eso es todo: vectores de puntos. En la inferencia variacional estocástica, uno preespecifica la forma paramétrica de la posteriori y el algoritmo calcula sus parámetros a partir de los valores simulados. Por ejemplo, uno va y dice: me da que la distribución del término independiente de mi regresión lineal va a ser normal. Entonces, Pyro responde: si es normal, la mejor media y desviación estándar que encuentro son tal y cual.

La segunda observación que me permito hacer es que la forma que adquiere la implementación de modelos en Pyro está muy alejada de la forma en que los plantearía un estadístico. Uno lee código en Stan o Jags y entiende lo que está ocurriendo: las servidumbres al lenguaje subyacente son mínimas y existe un DSL conciso que permite expresar los modelos de una manera natural. Pero no pasa así con Pyro.

De todos modos, es un gran aporte y espero que en no mucho tiempo podamos construir modelos de verdad (no, XGBoost no es de verdad) en condiciones y a escala.