Jump to content

Вероятностное программирование

Вероятностное программирование ( ПП ) — это парадигма программирования , в которой задаются вероятностные модели и вывод для этих моделей выполняется автоматически. [1] Он представляет собой попытку объединить вероятностное моделирование и традиционное программирование общего назначения, чтобы сделать первое более простым и более широко применимым. [2] [3] Его можно использовать для создания систем, помогающих принимать решения в условиях неопределенности.

Языки программирования, используемые для вероятностного программирования, называются «вероятностными языками программирования» (PPL).

Приложения

[ редактировать ]

Вероятностные рассуждения использовались для самых разных задач, таких как прогнозирование цен на акции, рекомендация фильмов, диагностика компьютеров, обнаружение кибер-вторжений и обнаружение изображений. [4] Однако до недавнего времени (частично из-за ограниченных вычислительных мощностей) вероятностное программирование было ограничено в объеме, и большинство алгоритмов вывода приходилось писать вручную для каждой задачи.

Тем не менее, в 2015 году 50-строчная вероятностная программа компьютерного зрения была использована для создания 3D-моделей человеческих лиц на основе 2D-изображений этих лиц. Программа использовала обратную графику в качестве основы своего метода вывода и была построена с использованием пакета Picture в Julia . [4] Это сделало возможным «за 50 строк кода то, что раньше требовало тысяч». [5] [6]

Библиотека вероятностного программирования Gen (также написанная на Julia) применялась для задач машинного зрения и робототехники. [7]

Совсем недавно система вероятностного программирования Turing.jl стала применяться в различных фармацевтических [8] и экономические приложения. [9]

Вероятностное программирование в Julia также было объединено с дифференцируемым программированием путем объединения пакета Julia Zygote.jl с Turing.jl. [10]

Языки вероятностного программирования также широко используются в байесовской когнитивной науке для разработки и оценки моделей познания. [11]

Вероятностные языки программирования

[ редактировать ]

PPL часто выходят за рамки базового языка. Например, Turing.jl [12] основан на Julia , Infer.NET основан на .NET Framework , [13] в то время как PRISM является продолжением Пролога . [14] Однако некоторые PPL, такие как WinBUGS , предлагают автономный язык, который близко соответствует математическому представлению статистических моделей и не имеет очевидного происхождения из другого языка программирования. [15] [16]

Язык WinBUGS был реализован для выполнения байесовских вычислений с использованием выборки Гиббса и связанных с ней алгоритмов. Хотя этот язык реализован на относительно неизвестном языке программирования (Component Pascal), он допускает байесовский вывод для широкого спектра статистических моделей с использованием гибкого вычислительного подхода. Один и тот же язык BUGS можно использовать для определения байесовских моделей для вывода с помощью различных вычислительных вариантов («сэмплеров») и соглашений или значений по умолчанию, используя автономную программу WinBUGS (или связанные пакеты R, rbugs и r2winbugs) и JAGS (просто еще один сэмплер Гиббса, еще одна отдельная программа со связанными пакетами R, включая rjags, R2jags и runjags). Совсем недавно другие языки для поддержки спецификации и вывода байесовской модели допускают другой или более эффективный выбор для базовых байесовских вычислений и доступны из среды анализа данных и программирования R, например: Stan , NIMBLE и NUTS. Влияние языка BUGS очевидно в этих более поздних языках, которые даже используют один и тот же синтаксис для некоторых аспектов спецификации модели.

Несколько PPL находятся в активной разработке, в том числе некоторые находятся в стадии бета-тестирования. Два популярных инструмента — Stan и PyMC . [17]

Реляционный

[ редактировать ]

Вероятностный реляционный язык программирования (PRPL) — это PPL, специально разработанный для описания и вывода с помощью вероятностных реляционных моделей (PRM).

PRM обычно разрабатывается с набором алгоритмов для сокращения, вывода и обнаружения соответствующих распределений, которые встроены в соответствующий PRPL.

Вероятностно-логическое программирование

[ редактировать ]

Вероятностное логическое программирование — это парадигма программирования , которая расширяет логическое программирование вероятностями.

Большинство подходов к вероятностному логическому программированию основаны на семантике распределения, которая разбивает программу на набор вероятностных фактов и логическую программу. Он определяет распределение вероятностей интерпретаций вселенной Эрбрана программы. [18]

Список вероятностных языков программирования

[ редактировать ]

В этом списке обобщаются различные ЗГЗ, доступные в настоящее время, и поясняется их происхождение.

Имя Распространяется от Принимающий язык
Аналитика [19] С++
Байеслуп [20] [21] Питон Питон
Бобовая машина [22] PyTorch Питон
Риск [23] Схема С++
БайесБД [24] SQLite , Питон
ПРИЗМА [14] Б-Пролог
Infer.NET [13] .NET Framework .NET Framework
дифф-SAT [25] Программирование набора ответов , SAT (DIMACS CNF)
PSQL [26] SQL
ОШИБКИ [15] Компонентный Паскаль
Вот и все [27] Пролог
Фигаро [28] Скала Скала
Проблог [29] Пролог Питон
ПроБТ [30] С++, Питон
Стэн [16] ОШИБКИ С++
Хакару [31] Хаскелл Хаскелл
BAli-Phy (программное обеспечение) [32] Хаскелл С++
ПробКог [33] Ява, Питон
ПиМК [34] Питон Питон
Ренье [35] [36] Скала Скала
Грета [37] Тензорфлоу Р
гранат [38] Питон Питон
Здесь [39] Питон Питон
WebPPL [40] JavaScript JavaScript
Картина [4] Юлия Юлия
Тьюринг.jl [12] Юлия Юлия
Gen [41] Юлия Юлия
Эдвард [42] Тензорфлоу Питон
Вероятность тензорного потока [43] Тензорфлоу Питон
Эдвард2 [44] Вероятность тензорного потока Питон
Поджигатель [45] PyTorch Питон
NumPyro [46] ДЖАКС Питон
Береза [47] С++
пси [48] Д
Бланг [49]
Мультиверсия [50] Питон Питон

Сложность

[ редактировать ]

Рассуждения о переменных как о распределениях вероятностей вызывают трудности у начинающих программистов, но эти трудности можно решить с помощью визуализации байесовских сетей и графиков распределения переменных, встроенных в редактор исходного кода. [51]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ «Вероятностное программирование с помощью 50 строк кода делает то, что раньше требовало тысяч» . физ.орг . 13 апреля 2015 года . Проверено 13 апреля 2015 г.
  2. ^ «Вероятностное программирование» . Вероятностное программирование.org . Архивировано из оригинала 10 января 2016 года . Проверено 24 декабря 2013 г.
  3. ^ Пфеффер, Авром (2014), Практическое вероятностное программирование , Manning Publications. стр.28. ISBN   978-1 6172-9233-0
  4. ^ Перейти обратно: а б с «Краткий код вероятностного программирования машинного обучения заменяет сложные программы для задач компьютерного зрения» . КурцвейлАИ . 13 апреля 2015 года . Проверено 27 ноября 2017 г.
  5. ^ Хардести, Ларри (13 апреля 2015 г.). «Графика наоборот» .
  6. ^ «MIT демонстрирует сценарий машинного обучения для создания CREEPY HEADS» . Регистр .
  7. ^ «Система программирования Gen MIT упрощает кривую обучения проектам искусственного интеллекта» . ВенчурБит . 27 июня 2019 г. Проверено 27 июня 2019 г.
  8. ^ Семенова, Елизавета; Уильямс, Доминик П.; Афзал, Авид М.; Лазич, Стэнли Э. (1 ноября 2020 г.). «Байесовская нейронная сеть для прогнозирования токсичности» . Вычислительная токсикология . 16 : 100133. дои : 10.1016/j.comtox.2020.100133 . ISSN   2468-1113 . S2CID   225362130 .
  9. ^ Уильямс, Доминик П.; Лазич, Стэнли Э.; Фостер, Элисон Дж.; Семенова, Елизавета; Морган, Пол (2020), «Прогнозирование лекарственного повреждения печени с помощью байесовского машинного обучения» , Chemical Research in Toxicology , 33 (1): 239–248, doi : 10.1021/acs.chemrestox.9b00264 , PMID   31535850 , S2CID   202689667
  10. ^ Иннес, Майк; Эдельман, Алан; Фишер, Кено; Ракаукас, Крис; Саба, Эллиот; Вирал Б. Шах; Теббутт, Уилл (2019). «∂P: система дифференцируемого программирования, соединяющая машинное обучение и научные вычисления». arXiv : 1907.07587 [ cs.PL ].
  11. ^ Гудман, Ной Д.; Тененбаум, Джошуа Б; Бухсбаум, Дафна; Хартшорн, Джошуа; Хокинс, Роберт; О'Доннелл, Тимоти Дж; Тесслер, Майкл Генри. «Вероятностные модели познания» . Вероятностные модели познания. 2-е издание . Проверено 27 мая 2023 г.
  12. ^ Перейти обратно: а б «Язык Тьюринга для вероятностного программирования» . Гитхаб . 28 декабря 2021 г.
  13. ^ Перейти обратно: а б «Инфер.НЕТ» . microsoft.com . Майкрософт.
  14. ^ Перейти обратно: а б «ПРИЗМА: Программирование в статистическом моделировании» . rjida.meijo-u.ac.jp . Архивировано из оригинала 1 марта 2015 года . Проверено 8 июля 2015 г.
  15. ^ Перейти обратно: а б «Проект BUGS - Отдел биостатистики MRC» . cam.ac.uk. ​Архивировано из оригинала 14 марта 2014 года . Проверено 12 января 2011 г.
  16. ^ Перейти обратно: а б «Стэн» . mc-stan.org . Архивировано из оригинала 3 сентября 2012 года.
  17. ^ «Алгоритмы вероятностного программирования» . Проверено 10 марта 2017 г.
  18. ^ Де Рэдт, Люк; Киммиг, Анжелика (1 июля 2015 г.). «Концепции вероятностного (логического) программирования» . Машинное обучение . 100 (1): 5–47. дои : 10.1007/s10994-015-5494-z . ISSN   1573-0565 .
  19. ^ «Аналитика — язык вероятностного моделирования» . lumina.com .
  20. ^ «bayesloop — среда вероятностного программирования» . bayesloop.com .
  21. ^ «GitHub — байеслуп» . Гитхаб . 7 декабря 2021 г.
  22. ^ «Bean Machine — универсальный вероятностный язык программирования, обеспечивающий быстрый и точный байесовский анализ» . beanmachine.org .
  23. ^ «Венчурное — универсальная платформа вероятностного программирования» . mit.edu . Архивировано из оригинала 25 января 2016 года . Проверено 20 сентября 2014 г.
  24. ^ «BayesDB на SQLite. Байесовская таблица базы данных для запроса вероятного значения данных так же легко, как базы данных SQL запрашивают сами данные» . Гитхаб . 26 декабря 2021 г.
  25. ^ «diff-SAT (вероятностный SAT/ASP)» . Гитхаб . 8 октября 2021 г.
  26. ^ Дей, Дебабрата; Саркар, Сумит (1998). «PSQL: язык запросов для вероятностных реляционных данных». Инженерия данных и знаний . 28 : 107–120. дои : 10.1016/S0169-023X(98)00015-9 .
  27. ^ «Дина» . www.dyna.org . Архивировано из оригинала 17 января 2016 года . Проверено 12 января 2011 г.
  28. ^ «Чарльз Ривер Аналитика — услуги вероятностного моделирования» . cra.com . 9 февраля 2017 г.
  29. ^ «ProbLog: Вероятностное программирование» . dtai.cs.kuleuven.be .
  30. ^ ПробаДа. «ПробаДа – Вместе мы улучшаем ваши данные» . probayes.com . Архивировано из оригинала 5 марта 2016 года . Проверено 26 ноября 2013 г.
  31. ^ «Домашняя страница Хакару» . хакару-dev.github.io /.
  32. ^ «Домашняя страница BAli-Phy» . bali-phy.org .
  33. ^ «ПробКог» . Гитхаб .
  34. ^ Разработчики PyMC. «ПиМК» . pymc-devs.github.io .
  35. ^ Stripe/rainier , Stripe, 19 августа 2020 г. , получено 26 августа 2020 г.
  36. ^ «Ренье · Байесовский вывод для Scala» . www.samplerainier.com . Проверено 26 августа 2020 г.
  37. ^ «Грета: простое и масштабируемое статистическое моделирование в R» . Гитхаб . Проверено 2 октября 2018 г.
  38. ^ «Главная — документация граната 0.10.0» . гранат.readthedocs.io . Проверено 2 октября 2018 г.
  39. ^ «Домашняя страница Леи» . bitbucket.org .
  40. ^ «Домашняя страница WebPPL» . github.com/probmods/webppl .
  41. ^ «Gen: язык вероятностного программирования общего назначения с программируемым выводом» . Проверено 11 июня 2024 г.
  42. ^ «Эдвард – Дом» . edwardlib.org . Проверено 17 января 2017 г.
  43. ^ TensorFlow (11 апреля 2018 г.). «Представляем вероятность TensorFlow» . ТензорФлоу . Проверено 2 октября 2018 г.
  44. ^ « Модуль вероятности TensorFlow 'Edward2'» . Гитхаб . Проверено 11 июня 2024 г.
  45. ^ «Пиро» . пиро.ай . Проверено 9 февраля 2018 г.
  46. ^ «НумПиро» . пиро.ай . Проверено 23 июля 2021 г.
  47. ^ «Вероятностное программирование в Birch» . birch-lang.org . Проверено 20 апреля 2018 г.
  48. ^ «PSI Solver — Точный вывод для вероятностных программ» . psisolver.org . Проверено 18 августа 2019 г.
  49. ^ "Дом" . www.stat.ubc.ca.
  50. ^ Перов Юра; Грэм, Логан; Гугулиас, Костис; Риченс, Джонатан Г.; Ли, Чиаран М.; Бейкер, Адам; Джохри, Саураб (28 января 2020 г.), MultiVerse: причинно-следственные рассуждения с использованием выборки по важности в вероятностном программировании , arXiv : 1910.08091
  51. ^ Горинова Мария Ивановна; Саркар, Адвайт; Блэквелл, Алан Ф.; Сайм, Дон (1 января 2016 г.). «Живая среда вероятностного программирования с множественным представлением для новичков». Материалы конференции CHI 2016 г. по человеческому фактору в вычислительных системах . ЧИ '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 2533–2537. дои : 10.1145/2858036.2858221 . ISBN  9781450333627 . S2CID   3201542 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 61a3df7e3741e4a38fdc56d1d3654058__1718144460
URL1:https://arc.ask3.ru/arc/aa/61/58/61a3df7e3741e4a38fdc56d1d3654058.html
Заголовок, (Title) документа по адресу, URL1:
Probabilistic programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)