В этой статье слишком много ссылок на первоисточники . ( Декабрь 2014 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Парадигмы программирования |
---|
|
Вероятностное программирование ( PP ) - это парадигма программирования, в которой задаются вероятностные модели , и вывод для этих моделей выполняется автоматически. [1] Он представляет собой попытку объединить вероятностное моделирование и традиционное программирование общего назначения, чтобы сделать первое проще и более широко применимым. [2] [3] Его можно использовать для создания систем, которые помогают принимать решения в условиях неопределенности.
Языки программирования, используемые для вероятностного программирования, называются «вероятностными языками программирования» (PPL).
Приложения [ править ]
Вероятностное рассуждение использовалось для широкого круга задач, таких как прогнозирование цен на акции, рекомендации фильмов, диагностика компьютеров, обнаружение кибер-вторжений и обнаружение изображений. [4] Однако до недавнего времени (частично из-за ограниченной вычислительной мощности) вероятностное программирование было ограничено по объему, и большинство алгоритмов вывода приходилось писать вручную для каждой задачи.
Тем не менее, в 2015 году программа вероятностного компьютерного зрения с 50 строками использовалась для создания трехмерных моделей человеческих лиц на основе двухмерных изображений этих лиц. Программа использовала инверсную графику как основу метода вывода и была построена с использованием пакета Picture в Julia . [4] Это стало возможным «в 50 строках кода, которые раньше занимали тысячи». [5] [6]
Библиотека вероятностного программирования Gen (также написанная на Julia) была применена для задач машинного зрения и робототехники. [7]
В последнее время системы вероятностного программирования Turing.jl применялись в различных фармацевтических и экономических приложениях. [8]
Вероятностное программирование в Julia также было объединено с дифференцируемым программированием путем объединения пакета Julia Zygote.jl с Turing.jl. [9]
Вероятностные языки программирования [ править ]
PPL часто происходят от базового языка. Выбор базового базового языка зависит от сходства модели с онтологией базового языка , а также коммерческих соображений и личных предпочтений. Например, Впадина [10] и Chimple [11] основаны на Java , Infer.NET основано на .NET Framework , [12] в то время как PRISM простирается от Пролога . [13] Однако некоторые PPL, такие как WinBUGS и Stan, предлагают автономный язык без очевидного происхождения на другом языке. [14] [15]
Несколько PPL находятся в активной разработке, в том числе некоторые находятся в стадии бета-тестирования. Два самых популярных инструмента - это Stan и PyMC3 . [16]
Отношения [ править ]
Вероятностный реляционный язык программирования (НРПЛ) является PPL , специально разработанным для описания и заключить с вероятностными реляционными моделями (PRMS).
PRM обычно разрабатывается с набором алгоритмов сокращения, вывода и обнаружения соответствующих распределений, которые встроены в соответствующий PRPL.
Список вероятностных языков программирования [ править ]
Эта статья может содержать чрезмерное количество сложных деталей, которые могут заинтересовать только определенную аудиторию . Октябрь 2019 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
Имя | Простирается от | Принимающий язык |
---|---|---|
Аналитика [17] | C ++ | |
байесовский [18] [19] | Python | Python |
CuPPL [20] | NOVA [21] | |
Венчурное предприятие [22] | Схема | C ++ |
Вероятностный-C [23] | C | C |
Англиканский [24] | Clojure | Clojure |
IBAL [25] | OCaml | |
BayesDB [26] | SQLite , Python | |
ПРИЗМА [13] | B-Prolog | |
Infer.NET [12] | .NET Framework | .NET Framework |
ямочка [10] | MATLAB , Java | |
шимпанзе [11] | MATLAB, Java | |
БЛОГ [27] | Ява | |
diff-SAT [28] | Программирование набора ответов , SAT (DIMACS CNF) | |
PSQL [29] | SQL | |
ОШИБКИ [14] | ||
ФАБРИКА [30] | Scala | Scala |
ПМТК [31] | MATLAB | MATLAB |
Алхимия [32] | C ++ | |
Дина [33] | Пролог | |
Фигаро [34] | Scala | Scala |
Церковь [35] | Схема | Разное: JavaScript, Схема |
ProbLog [36] | Пролог | Python, Jython |
ProBT [37] | C ++, Python | |
Стэн [15] | C ++ | |
Хакару [38] | Haskell | Haskell |
BAli-Phy (программное обеспечение) [39] | Haskell | C ++ |
ProbCog [40] | Java, Python | |
Гэмбл [41] | Ракетка | |
PWhile [42] | Пока | Python |
Таффи [43] | Ява | |
PyMC3 [44] | Python, Theano | Python |
PyMC4 [45] | Python, вероятность TensorFlow | Python |
Ренье [46] [47] | Scala | Scala |
грета [48] | TensorFlow | р |
гранат [49] | Python | Python |
Леа [50] | Python | Python |
WebPPL [51] | JavaScript | JavaScript |
Давайте шанс [52] | Царапать | JavaScript |
Картинка [4] | Юлия | Юлия |
Turing.jl [53] | Юлия | Юлия |
Gen [54] | Юлия | Юлия |
PPL первого порядка низкого уровня [55] | Python, Clojure, Pytorch | Разное: Python, Clojure |
Тролль [56] | Москва МЛ | |
Эдвард [57] | TensorFlow | Python |
Вероятность TensorFlow [58] | TensorFlow | Python |
Эдвард2 [59] | Вероятность TensorFlow | Python |
Поджигатель [60] | PyTorch | Python |
Саул [61] | Scala | Scala |
Стэн [62] | C ++, Python, R | |
RankPL [63] | Ява | |
Береза [64] | C ++ | |
PSI [65] | D |
Сложность [ править ]
Рассмотрение переменных как вероятностных распределений вызывает трудности у начинающих программистов, но эти трудности могут быть устранены путем использования байесовских сетевых визуализаций и графиков распределений переменных, встроенных в редактор исходного кода. [66]
См. Также [ править ]
- Статистическое реляционное обучение
- Индуктивное программирование
- Байесовское программирование
Заметки [ править ]
- ^ «Вероятностное программирование делает в 50 строк кода то, что раньше занимало тысячи» . Phys.org . 13 апреля 2015 . Проверено 13 апреля 2015 года .
- ^ «Вероятностное программирование» . probabilistic-programming.org . Архивировано из оригинального 10 января 2016 года . Проверено 24 декабря 2013 года .
- ^ Пфеффер, Авром (2014), Практическое вероятностное программирование , Manning Publications. стр.28. ISBN 978-1 6172-9233-0
- ^ a b c «Короткий вероятностный программный код машинного обучения заменяет сложные программы для задач компьютерного зрения» . KurzweilAI . 13 апреля 2015 . Проверено 27 ноября 2017 года .
- ^ Hardesty, Ларри (13 апреля 2015). «Графика в обратном порядке» .
- ^ "Массачусетский технологический институт демонстрирует сценарий машинного обучения, чтобы сделать ЖУТКИЕ ГОЛОВЫ" .
- ^ «Система программирования Gen MIT сглаживает кривую обучения для проектов AI» . VentureBeat . 27 июня 2019 . Проверено 27 июня 2019 года .
- ^ Уильямс, Доминик П .; Lazic, Stanley E .; Фостер, Элисон Дж .; Семенова, Елизавета; Морган, Пол (2020), "Предсказание наркотиков индуцированных печени травмы с байесовской машинного обучения" , химических исследований в токсикологии , 33 (1): 239-248, DOI : 10.1021 / acs.chemrestox.9b00264 , PMID 31535850
- ^ Иннес, Майк; Эдельман, Алан; Фишер, Кено; Rackauckas, Крис; Саба, Эллиот; Viral B Shah; Теббут, Уилл (2019), ∂P: Дифференцируемая система программирования для соединения машинного обучения и научных вычислений , arXiv : 1907.07587
- ^ a b «Домашняя страница с ямочками» . analog.com .
- ^ a b "Домашняя страница Chimple" . analog.com .
- ^ a b "Infer.NET" . microsoft.com . Microsoft.
- ^ а б "ПРИЗМА: PRограммирование в статистическом моделировании" . rjida.meijo-u.ac.jp . Архивировано из оригинала на 1 марта 2015 года . Проверено 8 июля 2015 года .
- ^ a b "Проект BUGS - Отдел биостатистики MRC" . cam.ac.uk . Архивировано из оригинального 14 марта 2014 года . Проверено 12 января 2011 года .
- ^ а б "Стэн" . mc-stan.org . Архивировано из оригинального 3 сентября 2012 года.
- ^ "Алгоритмы вероятностного программирования" . Проверено 10 марта 2017 года .
- ^ "Analytica - вероятностный язык моделирования" . lumina.com .
- ^ "bayesloop: Вероятностная среда программирования, которая облегчает выбор объективной модели для моделей с изменяющимися во времени параметрами" .
- ^ "GitHub - байес-петля" .
- ^ "Вероятностное программирование с помощью CuPPL" . popl19.sigplan.org .
- ^ «NOVA: функциональный язык для параллелизма данных» . acm.org .
- ^ "Venture - универсальная платформа вероятностного программирования" . mit.edu . Архивировано из оригинального 25 -го января 2016 года . Проверено 20 сентября 2014 года .
- ^ "Вероятностный C" . ox.ac.uk . Архивировано из оригинала на 4 января 2016 года . Проверено 24 марта 2015 года .
- ^ "Англиканская вероятностная система программирования" . ox.ac.uk .
- ^ «Домашняя страница IBAL» . Архивировано из оригинального 26 декабря 2010 года.
- ^ «BayesDB на SQLite. Байесовская таблица базы данных для запроса возможных значений данных так же легко, как базы данных SQL запрашивают сами данные» . GitHub .
- ^ «Байесовская логика (БЛОГ)» . mit.edu . Архивировано из оригинального 16 -го июня 2011 года.
- ^ "diff-SAT (вероятностный SAT / ASP)" .
- ^ Дей, Дебабрата; Саркар, Сумит (1998). «PSQL: язык запросов для вероятностных реляционных данных». Инженерия данных и знаний . 28 : 107–120. DOI : 10.1016 / S0169-023X (98) 00015-9 .
- ^ "Factorie - Вероятностное программирование с императивно определенными графами факторов - Google Project Hosting" . google.com .
- ^ "PMTK3 - набор инструментов вероятностного моделирования для Matlab / Octave, версия 3 - Google Project Hosting" . google.com .
- ^ «Алхимия - ИИ с открытым исходным кодом» . Washington.edu .
- ^ "Дина" . www.dyna.org . Архивировано из оригинального 17-го января 2016 года . Проверено 12 января 2011 года .
- ^ "Charles River Analytics - Услуги вероятностного моделирования" . cra.com .
- ^ "Церковь" . mit.edu . Архивировано из оригинала на 14 января 2016 года . Проверено 8 апреля 2013 года .
- ^ «ProbLog: вероятностное программирование» . dtai.cs.kuleuven.be .
- ^ Вероятно, да. "ProbaYes - Ensemble, nous valorisations vos données" . probayes.com . Архивировано из оригинала 5 марта 2016 года . Проверено 26 ноября 2013 года .
- ^ "Домашняя страница Хакару" . hakaru-dev.github.io/ .
- ^ "Домашняя страница Бали-Фи" . bali-phy.org .
- ^ "ProbCog" . GitHub .
- ^ Culpepper, Райан (17 января 2017). «Азартная игра: вероятностное программирование» - через GitHub.
- ^ "Компилятор PWhile" . GitHub .
- ^ "Tuffy: Масштабируемая машина логического вывода Маркова" . stanford.edu .
- ^ Разработчики PyMC. «PyMC3» . pymc-devs.github.io .
- ^ Разработчики, PyMC (17 мая 2018 г.). «Theano, TensorFlow и будущее PyMC» . Разработчики PyMC . Проверено 25 января 2019 года .
- ^ stripe / rainier , Stripe, 19 августа 2020 г. , получено 26 августа 2020 г.
- ^ «Ренье · Байесовский вывод для Scala» . samplerainier.com . Проверено 26 августа 2020 года .
- ^ "greta: простое и масштабируемое статистическое моделирование в R" . GitHub . Проверено 2 октября 2018 года .
- ^ "Главная - документация pomegranate 0.10.0" . pomegranate.readthedocs.io . Проверено 2 октября 2018 года .
- ^ "Домашняя страница Ли" . bitbucket.org .
- ^ "Домашняя страница WebPPL" . github.com/probmods/webppl .
- ^ «Давайте шанс: игровое вероятностное программирование для детей | Расширенные тезисы конференции 2020 CHI по человеческому фактору в вычислительных системах» . dl.acm.org . DOI : 10.1145 / 3334480.3383071 . S2CID 216079395 . Проверено 1 августа 2020 года .
- ^ "Язык Тьюринга для вероятностного программирования" .
- ^ «Gen: универсальный вероятностный язык программирования с программируемым выводом» . Проверено 17 июня 2019 года .
- ^ "LF-PPL: низкоуровневый вероятностный язык программирования первого порядка для недифференцируемых моделей" . ox.ac.uk .
- ^ "Тролль игра в кости и калькулятор вероятностей" .
- ^ «Эдвард - Дом» . edwardlib.org . Проверено 17 января 2017 года .
- ^ TensorFlow (11 апреля 2018 г.). «Представляем TensorFlow Probability» . TensorFlow . Проверено 2 октября 2018 года .
- ^ « Модуль вероятности TensorFlow ' Edward2'» . GitHub . Проверено 2 октября 2018 года .
- ^ "Поджигатель" . pyro.ai . Проверено 9 февраля 2018 года .
- ^ "CogComp - Главная" .
- ^ https://mc-stan.org/ . Отсутствует или пусто
|title=
( справка ) - ^ Rienstra, Tjitze (18 января 2018), RankPL: Качественный вероятностный язык программирования , основанный на теории ранжирования , извлекаться январе 18, 2 018
- ^ "Вероятностное программирование в Березе" . birch-lang.org . Проверено 20 апреля 2018 года .
- ^ "PSI Solver - Точный вывод для вероятностных программ" . psisolver.org . Проверено 18 августа 2019 года .
- ^ Горинова, Мария I .; Саркар, Адвайт; Блэквелл, Алан Ф .; Сайм, Дон (1 января 2016 г.). Живая среда вероятностного программирования с множественными представлениями для новичков . Труды конференции CHI 2016 г. по человеческому фактору в вычислительных системах . ЧИ '16. Нью-Йорк, Нью-Йорк, США: ACM. С. 2533–2537. DOI : 10.1145 / 2858036.2858221 . ISBN 9781450333627. S2CID 3201542 .
Внешние ссылки [ править ]
- Список языковых мини-наборов для вероятностных моделей
- Вики по вероятностному программированию