Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Вероятностное программирование ( 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.

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

Сложность [ править ]

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

См. Также [ править ]

  • Статистическое реляционное обучение
  • Индуктивное программирование
  • Байесовское программирование

Заметки [ править ]

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

Внешние ссылки [ править ]

  • Список языковых мини-наборов для вероятностных моделей
  • Вики по вероятностному программированию