Articulo de referencia

Registro de probabilidad

ProbLog es un lenguaje de programación lógica probabilística que extiende Prolog con probabilidades. [ 1 ] [ 2 ] [ 3 ] Extiende Prolog mínimamente añadiendo la noción de un hech...

ProbLog es un lenguaje de programación lógica probabilística que extiende Prolog con probabilidades. [ 1 ] [ 2 ] [ 3 ] Extiende Prolog mínimamente añadiendo la noción de un hecho probabilístico, que combina la idea de átomos lógicos y variables aleatorias . De forma similar a Prolog, ProbLog puede consultar un átomo . Mientras que Prolog devuelve el valor de verdad del átomo consultado , ProbLog devuelve la probabilidad de que sea verdadero.

Semántica

Un hecho probabilístico es un par(pag,a){\displaystyle (p,a)}cona{\displaystyle a}un átomo fundamental ypag[0,1]{\displaystyle p\in [0,1]}la probabilidad dea{\displaystyle a}siendo cierto. Una regla se define mediante un átomo.h{\displaystyle h}, llamado la cabeza, y un conjunto finito denorte{\displaystyle n}literales{b1,b2,...,bnorte}{\displaystyle \{b_{1},b_{2},...,b_{n}\}}, llamado el cuerpo. Los programas ProbLog consisten en un conjunto de hechos probabilísticos.F{\displaystyle {\mathcal {F}}}y un conjunto de reglasR{\displaystyle {\mathcal {R}}}Utilizando la semántica de distribución, se define una distribución de probabilidad sobre los modelos bien fundamentados de dos valores de los átomos en el programa. La probabilidad de un modelo se define comoPAG(METRO)=lMETROPAG(l){\displaystyle P(M)=\prod _{l\in M}P(l)}donde el producto recorre todos los literales del modelo.METRO{\displaystyle M}. Para un átomo de consultaq{\displaystyle q}La semántica de distribución define una probabilidad para la consulta. PAG(q)=METROqPAG(METRO)=METROqlMETROPAG(l){\displaystyle P(q)=\sum _{M\models q}P(M)=\sum _{M\models q}\prod _{l\in M}P(l)} en la que la suma se extiende sobre todos los modelos dondeq{\displaystyle q}Es cierto.

ProbLog admite múltiples tareas:

  • Inferencia probabilística: calcularPAG(q){\displaystyle P(q)}
  • Explicación más probable: calcular la probabilidad del modelo más probablemáximoMETROqPAG(METRO){\displaystyle \max _{M\models q}P(M)}
  • Muestreo: generar muestras deq{\displaystyle q}
  • Aprender de las interpretaciones: aprender las probabilidades de los programas ProbLog a partir de los datos.

Ejemplo

ProbLog se puede utilizar, por ejemplo, para calcular la probabilidad de mojarse dadas las probabilidades de lluvia y las probabilidades de que alguien lleve un paraguas, de la siguiente manera:

0.4 :: lluvia ( día laborable ). 0.9 :: lluvia ( fin de semana ). 0.8 :: paraguas_si_llueve ( Día ). 0.2 :: paraguas_si_está_seco ( Día ).paraguas ( Día ) :- lluvia ( Día ), paraguas_si_llueve ( Día ). paraguas ( Día ) :- \+ lluvia ( Día ), paraguas_si_seco ( Día ). mojado ( Día ) :- lluvia ( Día ), \+ paraguas ( Día ).consulta ( \+ mojado ( fin de semana )).

La última regla antes de la consulta establece que alguien se moja si llueve y no lleva paraguas. Cuando se le pide a ProbLog que resuelva la tarea de "inferencia probabilística", la consulta solicita la probabilidad de permanecer seco un día de fin de semana. Al resolver la tarea de "explicación más probable", ProbLog devolverá la razón más probable para permanecer seco, es decir, porque no llueve o porque la persona lleva paraguas.

Implementaciones

El lenguaje ProbLog se ha implementado como una biblioteca Prolog de YAP (ProbLog 1) [ 4 ] y como un marco de trabajo Python independiente (ProbLog 2) [ 5 ]. El código fuente de ProbLog 2 está bajo la licencia Apache License, versión 2.0 y está disponible en GitHub [ 6 ] . El lenguaje ProbLog también se ha implementado como parte del paquete de programación lógica probabilística cplint para SWI-Prolog, YAP y XSB [ 7 ] .

Variantes de ProbLog

ProbLog se ha ampliado o utilizado como inspiración para varias variantes diferentes, entre las que se incluyen:

  • DeepProbLog extiende ProbLog al permitir que la probabilidad sea parametrizada por una red neuronal. [ 8 ]
  • DTProblog extiende ProbLog con la teoría de la decisión . La utilidad de una estrategia se define como la recompensa esperada por su ejecución en presencia de efectos probabilísticos. [ 9 ]
  • DC-ProbLog extiende ProbLog con hechos distribucionales, lo que significa que, en lugar de probabilidades, un átomo lógico tiene una distribución de probabilidad continua correspondiente.
  • aProbLog generaliza ProbLog al permitir cualquier semianillo conmutativo en lugar de solo probabilidades. [ 10 ]
  • ProbFOIL : dado un conjunto de hechos ProbLog como una base de datos relacional probabilística, ProbFOIL encuentra un conjunto de reglas probabilísticas para predecir los hechos de una relación basándose en todas las demás relaciones.
  • PRISM: Programación en modelado estadístico [ 11 ]
  • ICL: Lógica de elección independiente [ 12 ]
  • CP-Logic: Lenguaje de eventos probabilísticos causales [ 13 ]
  • LPAD: Programas lógicos con disyunciones anotadas [ 14 ]
  • Cláusulas distributivas: Un lenguaje de lógica probabilística para dominios relacionales híbridos [ 15 ]

Lecturas adicionales

  • Página principal de ProbLog [ 5 ]
  • Documentación de ProbLog [ 16 ]
  • Repositorio ProbLog [ 6 ]

Referencias

  1. De Raedt, Luc; Kimmig, Angelika; Toivonen, Hannu (noviembre de 2007). ProbLog: Un Prolog probabilístico y su aplicación en el descubrimiento de enlaces . IJCAI. Vol.  7.
  2. Fierens, D; Van den Broeck, G.; Bruynooghe, M.; De Raedt, L. (2012). Restricciones para la programación lógica probabilística . Actas del Taller de Programación Probabilística de NIPS. págs. 1–4 . 
  3. De Raedt, Luc; Kimmig, Angelika (2015). "Conceptos de programación probabilística (lógica)" . Machine Learning . 100 (1): 5– 47. doi : 10.1007/s10994-015-5494-z . S2CID 3166992 . 
  4. «ProbLog1» . dtai.cs.kuleuven.be .
  5. 1 2 "ProbLog: Programación probabilística" . dtai.cs.kuleuven.be .
  6. ^ "Repositorio ProbLog GitHub " . github.com . 12 de octubre de 2022.
  7. "cplint – AI@UNIFE" . Consultado el 13 de noviembre de 2023 .
  8. Manhaeve, Robin; Dumancic, Sebastijan; Kimmig, Angelika; Demeester, Thomas; De Raedt, Luc (2018). DeepProbLog: Programación lógica probabilística neuronal . NeurIPS 2018, Trigésimo segunda conferencia sobre sistemas de procesamiento de información neuronal. págs. 3753–3760 . 
  9. Van den Broeck, chico; Thon, Ingo; Van Otterlo, Martijn; De Raedt, Luc (2010). "DTProbLog: un prólogo probabilístico de teoría de decisiones". Actas de la Conferencia AAAI sobre Inteligencia Artificial . vol. 24. 
  10. Kimmig, A.; Van den Broeck, G.; De Raedt, L. (2011). Un Prolog algebraico para razonar sobre mundos posibles . Actas de la Vigésimo Quinta Conferencia AAAI sobre Inteligencia Artificial. págs. 209–214 . 
  11. "PRISM: Programación en modelado estadístico" . rjida.meijo-u.ac.jp .
  12. Poole, David (2008). «La lógica de elección independiente y más allá». En Luc Raedt; Paolo Frasconi; Kristian Kersting; Stephen Muggleton (eds.). Programación lógica inductiva probabilística . Lecture Notes in Computer Science. Vol. 4911. Springer. pp. 222–243 . doi : 10.1007/978-3-540-78652-8_8 . ISBN   978-3-540-78651-1.
  13. Vennekens, Joost; Denecker, Marc; Bruynooghe, Maurice (2009). CP-logic: Un lenguaje de eventos probabilísticos causales y su relación con la programación lógica . Teoría y práctica de la programación lógica. Vol. 9. pp. 245– 308. arXiv : 0904.1672 .  
  14. "PITA: Inferencia probabilística con tabulación y subsunción de respuestas" . ml.unife.it .
  15. "Cláusulas distributivas" . dtai.cs.kuleuven.be .
  16. "ProbLog: Documentación de ProbLog 2.1" . problog.readthedocs.io .