Pravděpodobnostní programování - Probabilistic programming

Pravděpodobnostní programování (PP) je paradigma programování ve kterém pravděpodobnostní modely jsou specifikovány a odvození pro tyto modely se provádí automaticky.[1] Představuje pokus o sjednocení pravděpodobnostního modelování a tradičního programování pro všeobecné účely, aby se první usnadnilo a rozšířilo.[2][3] Lze jej použít k vytvoření systémů, které pomáhají rozhodovat tváří v tvář nejistotě.

Programovací jazyky používané pro pravděpodobnostní programování se označují jako „pravděpodobnostní programovací jazyky“ (PPL).

Aplikace

Pravděpodobnostní uvažování bylo použito pro širokou škálu úkolů, jako je predikce cen akcií, doporučení filmů, diagnostika počítačů, detekce kybernetických útoků a detekce obrazu.[4] Až donedávna (částečně kvůli omezenému výpočetnímu výkonu) však bylo pravděpodobnostní programování omezeno a většina odvozovacích algoritmů musela být pro každou úlohu napsána ručně.

V roce 2015 je to však pravděpodobnost 50 řádků počítačové vidění Program byl použit ke generování 3D modelů lidských tváří na základě 2D obrazů těchto tváří. Program používal inverzní grafiku jako základ své metody odvození a byl sestaven pomocí balíčku Picture v Julie.[4] To umožnilo „v 50 řádcích kódu, co dříve bralo tisíce“.[5][6]

The Gen Knihovna pravděpodobnostního programování (napsaná také v Julii) byla použita na úkoly vidění a robotiky.[7]

Více nedávno, pravděpodobnostní programovací systémy Turing.jl byl použit v různých farmaceutických a ekonomických aplikacích.[8]

Pravděpodobnostní programování v Julii bylo také kombinováno s diferencovatelné programování kombinací balíčku Julia Zygote.jl s Turing.jl. [9]

Pravděpodobnostní programovací jazyky

PPL často vycházejí ze základního jazyka. Volba základního jazyka závisí na podobnosti modelu se základním jazykem ontologie, stejně jako obchodní úvahy a osobní preference. Například Dimple[10] a Chimple[11] jsou založeny na Jáva, Infer.NET je založeno na .NET Framework,[12] zatímco PRISM sahá od Prolog.[13] Některé PPL, jako např WinBUGS a Stan nabídnout samostatný jazyk bez zjevného původu v jiném jazyce.[14][15]

Několik PPL je v aktivním vývoji, včetně některých v beta testu. Dva nejoblíbenější nástroje jsou Stan a PyMC3.[16]

Relační

A pravděpodobnostní relační programovací jazyk (PRPL) je PPL speciálně navržený k popisu a odvození pravděpodobnostní relační modely (PRM).

PRM se obvykle vyvíjí se sadou algoritmů pro snižování, odvozování a zjišťování příslušných distribucí, které jsou vloženy do odpovídajících PRPL.

Seznam pravděpodobnostních programovacích jazyků

názevRozkládá se odHostitelský jazyk
Analytica[17]C ++
Bayesloop[18][19]KrajtaKrajta
CuPPL[20]NOVA[21]
Podnik[22]SystémC ++
Pravděpodobnostní-C[23]CC
anglikánský[24]ClojureClojure
IBAL[25]OCaml
BayesDB[26]SQLite, Krajta
HRANOL[13]B-Prolog
Infer.NET[12].NET Framework.NET Framework
důlek[10]MATLAB, Jáva
příklad[11]MATLAB, Java
BLOG[27]Jáva
delSAT[28]Odpovězte na nastavené programování, SAT (DIMACS CNF)
PSQL[29]SQL
HMYZ[14]
FAKTORIE[30]ScalaScala
PMTK[31]MATLABMATLAB
Alchymie[32]C ++
Dyna[33]Prolog
Figaro[34]ScalaScala
Kostel[35]SystémRůzné: JavaScript, schéma
ProbLog[36]PrologPython, Jython
ProBT[37]C ++, Krajta
Stan[15]C ++
Hakaru[38]HaskellHaskell
BAli-Phy (software)[39]HaskellC ++
ProbCog[40]Java, Python
Hazardovat[41]Raketa
P Zatímco[42]ZatímcoKrajta
Tuffy[43]Jáva
PyMC3[44]Krajta, TheanoKrajta
PyMC4[45]Krajta, Pravděpodobnost TensorFlowKrajta
Rainier[46][47]ScalaScala
greta[48]TensorFlowR
granátové jablko[49]KrajtaKrajta
Lea[50]KrajtaKrajta
WebPPL[51]JavaScriptJavaScript
Pojďme na šanci[52]PoškrábatJavaScript
Obrázek[4]JulieJulie
Turing.jl[53]JulieJulie
Gen[54]JulieJulie
Nízkoúrovňový PPL první objednávky[55]Python, Clojure, PytorchRůzné: Python, Clojure
Trolle[56]Moskva ML
Edwarde[57]TensorFlowKrajta
Pravděpodobnost TensorFlow[58]TensorFlowKrajta
Edward2[59]Pravděpodobnost TensorFlowKrajta
Pyro[60]PyTorchKrajta
Saule[61]ScalaScala
Stan[62]C ++, Python, R.
RankPL[63]Jáva
Bříza[64]C ++
PSI[65]D

Obtížnost

Úvaha o proměnných jako rozdělení pravděpodobnosti způsobuje potíže začínajícím programátorům, ale tyto potíže lze řešit pomocí Bayesianských síťových vizualizací a grafů distribucí proměnných vložených do editoru zdrojového kódu.[66]

Viz také

Poznámky

  1. ^ „Pravděpodobnostní programování dělá v 50 řádcích kódu to, co dříve bralo tisíce“. phys.org. 13. dubna 2015. Citováno 13. dubna 2015.
  2. ^ „Pravděpodobnostní programování“. probabilistic-programming.org. Archivovány od originál 10. ledna 2016. Citováno 24. prosince 2013.
  3. ^ Pfeffer, Avrom (2014), Praktické pravděpodobnostní programování, Manning Publications. str.28. ISBN  978-1 6172-9233-0
  4. ^ A b C „Krátký pravděpodobnostní programovací kód strojového učení nahrazuje složité programy pro úkoly počítačového vidění“. Kurzweil AI. 13. dubna 2015. Citováno 27. listopadu 2017.
  5. ^ Hardesty, Larry (13. dubna 2015). „Grafika obráceně“.
  6. ^ „MIT předvádí skript pro strojové učení, aby vytvořil CREEPY HEADS“.
  7. ^ „Programovací systém MIT Gen zplošťuje křivku učení pro projekty AI“. VentureBeat. 27. června 2019. Citováno 27. června 2019.
  8. ^ Předpovídání poškození jater vyvolaného drogami pomocí Bayesovského strojového učení, 2019
  9. ^ ∂P: Diferencovatelný programovací systém pro překlenutí strojového učení a vědeckých výpočtů, 2019, arXiv:1907.07587
  10. ^ A b „Dimple Home Page“. analog.com.
  11. ^ A b „Domovská stránka Chimple“. analog.com.
  12. ^ A b „Infer.NET“. microsoft.com. Microsoft.
  13. ^ A b "PRISM: PRogramming in Statistical Modeling". rjida.meijo-u.ac.jp. Archivovány od originál 1. března 2015. Citováno 8. července 2015.
  14. ^ A b „The BUGS Project - MRC Biostatistics Unit“. cam.ac.uk. Archivovány od originál dne 14. března 2014. Citováno 12. ledna 2011.
  15. ^ A b "Stan". mc-stan.org. Archivovány od originál 3. září 2012.
  16. ^ „Algoritmy za pravděpodobnostním programováním“. Citováno 10. března 2017.
  17. ^ „Analytica - pravděpodobnostní modelářský jazyk“. lumina.com.
  18. ^ „bayesloop: Pravděpodobnostní programovací rámec, který usnadňuje výběr objektivního modelu pro časově proměnné modely parametrů“.
  19. ^ „GitHub - bayesloop“.
  20. ^ „Pravděpodobnostní programování s CuPPL“. popl19.sigplan.org.
  21. ^ „NOVA: Funkční jazyk pro datový paralelismus“. acm.org.
  22. ^ „Venture - univerzální pravděpodobnostní programovací platforma“. mit.edu. Archivovány od originál 25. ledna 2016. Citováno 20. září 2014.
  23. ^ "Pravděpodobnostní C". ox.ac.uk. Archivovány od originál 4. ledna 2016. Citováno 24. března 2015.
  24. ^ „Pravděpodobnostní anglikánský programovací systém“. ox.ac.uk.
  25. ^ „Domovská stránka IBAL“. Archivovány od originál 26. prosince 2010.
  26. ^ „BayesDB na SQLite. Bayesovská databázová tabulka pro dotazování na pravděpodobné důsledky dat tak snadno, jako databáze SQL dotazují data sama“. GitHub.
  27. ^ „Bayesian Logic (BLOG)“. mit.edu. Archivovány od originál 16. června 2011.
  28. ^ „delSAT (pravděpodobnostní SAT / ASP)“.
  29. ^ Dey, Debabrata; Sarkar, Sumit (1998). "PSQL: Dotazovací jazyk pro pravděpodobnostní relační data". Datové a znalostní inženýrství. 28: 107–120. doi:10.1016 / S0169-023X (98) 00015-9.
  30. ^ „Factorie - Pravděpodobnostní programování s imperativně definovanými faktorovými grafy - Google Project Hosting“. google.com.
  31. ^ „PMTK3 - sada nástrojů pro pravděpodobnostní modelování pro Matlab / Octave, verze 3 - Google Project Hosting“. google.com.
  32. ^ „Alchemy - Open Source AI“. washington.edu.
  33. ^ "Dyna". www.dyna.org. Archivovány od originál dne 17. ledna 2016. Citováno 12. ledna 2011.
  34. ^ „Charles River Analytics - Pravděpodobnostní modelování“. cra.com.
  35. ^ "Kostel". mit.edu. Archivovány od originál dne 14. ledna 2016. Citováno 8. dubna 2013.
  36. ^ "ProbLog: Pravděpodobnostní programování". dtai.cs.kuleuven.be.
  37. ^ Proba Ano. „ProbaYes - Ensemble, nous valorisations vos données“. probayes.com. Archivovány od originál 5. března 2016. Citováno 26. listopadu 2013.
  38. ^ „Domovská stránka Hakaru“. hakaru-dev.github.io/.
  39. ^ „Domovská stránka BAli-Phy“. bali-phy.org.
  40. ^ "ProbCog". GitHub.
  41. ^ Culpepper, Ryan (17. ledna 2017). „hazard: Pravděpodobnostní programování“ - přes GitHub.
  42. ^ "PWhile Compiler". GitHub.
  43. ^ „Tuffy: Scalable Markov Logic Inference Engine“. stanford.edu.
  44. ^ Vývojáři PyMC. „PyMC3“. pymc-devs.github.io.
  45. ^ Vývojáři, PyMC (17. května 2018). „Theano, TensorFlow a budoucnost PyMC“. Vývojáři PyMC. Citováno 25. ledna 2019.
  46. ^ proužek / déšť, Stripe, 19. srpna 2020, vyvoláno 26. srpen 2020
  47. ^ „Rainier · Bayesovský závěr pro Scalu“. samplerainier.com. Citováno 26. srpen 2020.
  48. ^ "greta: jednoduché a škálovatelné statistické modelování v R". GitHub. Citováno 2. října 2018.
  49. ^ „Domů - dokumentace granátového jablka 0.10.0“. granátové jablko.readthedocs.io. Citováno 2. října 2018.
  50. ^ „Domovská stránka Lea“. bitbucket.org.
  51. ^ „Domovská stránka WebPPL“. github.com/probmods/webppl.
  52. ^ „Pojďme na šanci: Hravé pravděpodobnostní programování pro děti | Rozšířené abstrakty konference CHI 2020 o lidských faktorech ve výpočetních systémech“. dl.acm.org. doi:10.1145/3334480.3383071. Citováno 1. srpna 2020.
  53. ^ „Turingův jazyk pro pravděpodobnostní programování“.
  54. ^ „Gen: Univerzální pravděpodobnostní programovací jazyk s programovatelným odvozením“. Citováno 17. června 2019.
  55. ^ „LF-PPL: Pravděpodobnostní programovací jazyk nízké úrovně prvního řádu pro nediferencovatelné modely“. ox.ac.uk.
  56. ^ "Trollový kostkový válec a kalkulačka pravděpodobnosti".
  57. ^ „Edward - domov“. edwardlib.org. Citováno 17. ledna 2017.
  58. ^ TensorFlow (11. dubna 2018). „Představujeme pravděpodobnost TensorFlow“. TensorFlow. Citováno 2. října 2018.
  59. ^ "'Pravděpodobnostní modul Edward2 'TensorFlow ". GitHub. Citováno 2. října 2018.
  60. ^ "Pyro". pyro.ai. Citováno 9. února 2018.
  61. ^ "CogComp - Domů".
  62. ^ https://mc-stan.org/. Chybějící nebo prázdný | název = (Pomoc)
  63. ^ Rienstra, Tjitze (18. ledna 2018), RankPL: Kvalitativní pravděpodobnostní programovací jazyk založený na teorii hodnocení, vyvoláno 18. ledna 2018
  64. ^ „Pravděpodobnostní programování v bříze“. birch-lang.org. Citováno 20. dubna 2018.
  65. ^ „PSI Solver - Exact inference for probabilistic programs“. psisolver.org. Citováno 18. srpna 2019.
  66. ^ Gorinova, Maria I .; Sarkar, Advait; Blackwell, Alan F .; Syme, Don (1. ledna 2016). Živé pravděpodobnostní programovací prostředí s více zastoupeními pro nováčky. Sborník příspěvků z konference CHI 2016 o lidských faktorech ve výpočetních systémech. CHI '16. New York, NY, USA: ACM. 2533–2537. doi:10.1145/2858036.2858221. ISBN  9781450333627.

externí odkazy