Pravděpodobnostní programování - Probabilistic programming
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Prosince 2014) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
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ů
![]() | tento článek může obsahovat nadměrné množství složitých detailů, které mohou zajímat pouze konkrétní publikum.Říjen 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
název | Rozkládá se od | Hostitelský jazyk |
---|---|---|
Analytica[17] | C ++ | |
Bayesloop[18][19] | Krajta | Krajta |
CuPPL[20] | NOVA[21] | |
Podnik[22] | Systém | C ++ |
Pravděpodobnostní-C[23] | C | C |
anglikánský[24] | Clojure | Clojure |
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] | Scala | Scala |
PMTK[31] | MATLAB | MATLAB |
Alchymie[32] | C ++ | |
Dyna[33] | Prolog | |
Figaro[34] | Scala | Scala |
Kostel[35] | Systém | Různé: JavaScript, schéma |
ProbLog[36] | Prolog | Python, Jython |
ProBT[37] | C ++, Krajta | |
Stan[15] | C ++ | |
Hakaru[38] | Haskell | Haskell |
BAli-Phy (software)[39] | Haskell | C ++ |
ProbCog[40] | Java, Python | |
Hazardovat[41] | Raketa | |
P Zatímco[42] | Zatímco | Krajta |
Tuffy[43] | Jáva | |
PyMC3[44] | Krajta, Theano | Krajta |
PyMC4[45] | Krajta, Pravděpodobnost TensorFlow | Krajta |
Rainier[46][47] | Scala | Scala |
greta[48] | TensorFlow | R |
granátové jablko[49] | Krajta | Krajta |
Lea[50] | Krajta | Krajta |
WebPPL[51] | JavaScript | JavaScript |
Pojďme na šanci[52] | Poškrábat | JavaScript |
Obrázek[4] | Julie | Julie |
Turing.jl[53] | Julie | Julie |
Gen[54] | Julie | Julie |
Nízkoúrovňový PPL první objednávky[55] | Python, Clojure, Pytorch | Různé: Python, Clojure |
Trolle[56] | Moskva ML | |
Edwarde[57] | TensorFlow | Krajta |
Pravděpodobnost TensorFlow[58] | TensorFlow | Krajta |
Edward2[59] | Pravděpodobnost TensorFlow | Krajta |
Pyro[60] | PyTorch | Krajta |
Saule[61] | Scala | Scala |
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
- ^ „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.
- ^ „Pravděpodobnostní programování“. probabilistic-programming.org. Archivovány od originál 10. ledna 2016. Citováno 24. prosince 2013.
- ^ Pfeffer, Avrom (2014), Praktické pravděpodobnostní programování, Manning Publications. str.28. ISBN 978-1 6172-9233-0
- ^ 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.
- ^ Hardesty, Larry (13. dubna 2015). „Grafika obráceně“.
- ^ „MIT předvádí skript pro strojové učení, aby vytvořil CREEPY HEADS“.
- ^ „Programovací systém MIT Gen zplošťuje křivku učení pro projekty AI“. VentureBeat. 27. června 2019. Citováno 27. června 2019.
- ^ Předpovídání poškození jater vyvolaného drogami pomocí Bayesovského strojového učení, 2019
- ^ ∂P: Diferencovatelný programovací systém pro překlenutí strojového učení a vědeckých výpočtů, 2019, arXiv:1907.07587
- ^ A b „Dimple Home Page“. analog.com.
- ^ A b „Domovská stránka Chimple“. analog.com.
- ^ A b „Infer.NET“. microsoft.com. Microsoft.
- ^ 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.
- ^ 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.
- ^ A b "Stan". mc-stan.org. Archivovány od originál 3. září 2012.
- ^ „Algoritmy za pravděpodobnostním programováním“. Citováno 10. března 2017.
- ^ „Analytica - pravděpodobnostní modelářský jazyk“. lumina.com.
- ^ „bayesloop: Pravděpodobnostní programovací rámec, který usnadňuje výběr objektivního modelu pro časově proměnné modely parametrů“.
- ^ „GitHub - bayesloop“.
- ^ „Pravděpodobnostní programování s CuPPL“. popl19.sigplan.org.
- ^ „NOVA: Funkční jazyk pro datový paralelismus“. acm.org.
- ^ „Venture - univerzální pravděpodobnostní programovací platforma“. mit.edu. Archivovány od originál 25. ledna 2016. Citováno 20. září 2014.
- ^ "Pravděpodobnostní C". ox.ac.uk. Archivovány od originál 4. ledna 2016. Citováno 24. března 2015.
- ^ „Pravděpodobnostní anglikánský programovací systém“. ox.ac.uk.
- ^ „Domovská stránka IBAL“. Archivovány od originál 26. prosince 2010.
- ^ „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.
- ^ „Bayesian Logic (BLOG)“. mit.edu. Archivovány od originál 16. června 2011.
- ^ „delSAT (pravděpodobnostní SAT / ASP)“.
- ^ 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.
- ^ „Factorie - Pravděpodobnostní programování s imperativně definovanými faktorovými grafy - Google Project Hosting“. google.com.
- ^ „PMTK3 - sada nástrojů pro pravděpodobnostní modelování pro Matlab / Octave, verze 3 - Google Project Hosting“. google.com.
- ^ „Alchemy - Open Source AI“. washington.edu.
- ^ "Dyna". www.dyna.org. Archivovány od originál dne 17. ledna 2016. Citováno 12. ledna 2011.
- ^ „Charles River Analytics - Pravděpodobnostní modelování“. cra.com.
- ^ "Kostel". mit.edu. Archivovány od originál dne 14. ledna 2016. Citováno 8. dubna 2013.
- ^ "ProbLog: Pravděpodobnostní programování". dtai.cs.kuleuven.be.
- ^ 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.
- ^ „Domovská stránka Hakaru“. hakaru-dev.github.io/.
- ^ „Domovská stránka BAli-Phy“. bali-phy.org.
- ^ "ProbCog". GitHub.
- ^ Culpepper, Ryan (17. ledna 2017). „hazard: Pravděpodobnostní programování“ - přes GitHub.
- ^ "PWhile Compiler". GitHub.
- ^ „Tuffy: Scalable Markov Logic Inference Engine“. stanford.edu.
- ^ Vývojáři PyMC. „PyMC3“. pymc-devs.github.io.
- ^ Vývojáři, PyMC (17. května 2018). „Theano, TensorFlow a budoucnost PyMC“. Vývojáři PyMC. Citováno 25. ledna 2019.
- ^ proužek / déšť, Stripe, 19. srpna 2020, vyvoláno 26. srpen 2020
- ^ „Rainier · Bayesovský závěr pro Scalu“. samplerainier.com. Citováno 26. srpen 2020.
- ^ "greta: jednoduché a škálovatelné statistické modelování v R". GitHub. Citováno 2. října 2018.
- ^ „Domů - dokumentace granátového jablka 0.10.0“. granátové jablko.readthedocs.io. Citováno 2. října 2018.
- ^ „Domovská stránka Lea“. bitbucket.org.
- ^ „Domovská stránka WebPPL“. github.com/probmods/webppl.
- ^ „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.
- ^ „Turingův jazyk pro pravděpodobnostní programování“.
- ^ „Gen: Univerzální pravděpodobnostní programovací jazyk s programovatelným odvozením“. Citováno 17. června 2019.
- ^ „LF-PPL: Pravděpodobnostní programovací jazyk nízké úrovně prvního řádu pro nediferencovatelné modely“. ox.ac.uk.
- ^ "Trollový kostkový válec a kalkulačka pravděpodobnosti".
- ^ „Edward - domov“. edwardlib.org. Citováno 17. ledna 2017.
- ^ TensorFlow (11. dubna 2018). „Představujeme pravděpodobnost TensorFlow“. TensorFlow. Citováno 2. října 2018.
- ^ "'Pravděpodobnostní modul Edward2 'TensorFlow ". GitHub. Citováno 2. října 2018.
- ^ "Pyro". pyro.ai. Citováno 9. února 2018.
- ^ "CogComp - Domů".
- ^ https://mc-stan.org/. Chybějící nebo prázdný
| název =
(Pomoc) - ^ Rienstra, Tjitze (18. ledna 2018), RankPL: Kvalitativní pravděpodobnostní programovací jazyk založený na teorii hodnocení, vyvoláno 18. ledna 2018
- ^ „Pravděpodobnostní programování v bříze“. birch-lang.org. Citováno 20. dubna 2018.
- ^ „PSI Solver - Exact inference for probabilistic programs“. psisolver.org. Citováno 18. srpna 2019.
- ^ 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.