Вероятностное программирование ( ПП ) — это парадигма программирования , в которой задаются вероятностные модели , а вывод для этих моделей выполняется автоматически. [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 расширяется от Prolog . [14] Однако некоторые PPL, такие как WinBUGS , предлагают самодостаточный язык, который тесно связан с математическим представлением статистических моделей, без очевидного происхождения от другого языка программирования. [15] [16]
Язык для WinBUGS был реализован для выполнения байесовских вычислений с использованием выборки Гиббса и связанных алгоритмов. Хотя он реализован на относительно неизвестном языке программирования (Component Pascal), этот язык допускает байесовский вывод для широкого спектра статистических моделей с использованием гибкого вычислительного подхода. Тот же язык BUGS может использоваться для указания байесовских моделей для вывода с помощью различных вычислительных выборов («выборщиков») и соглашений или значений по умолчанию с использованием отдельной программы WinBUGS (или связанных пакетов R, rbugs и r2winbugs) и JAGS (Just Another Gibbs Sampler, еще одна отдельная программа с соответствующими пакетами R, включая rjags, R2jags и runjags). Совсем недавно другие языки для поддержки спецификации и вывода байесовской модели допускают различные или более эффективные варианты для базового байесовского вычисления и доступны из среды анализа и программирования данных R, например: Stan , NIMBLE и NUTS. Влияние языка BUGS очевидно в этих более поздних языках, которые даже используют тот же синтаксис для некоторых аспектов спецификации модели.
Несколько PPL находятся в активной разработке, включая некоторые в бета-тестировании. Два популярных инструмента — Stan и PyMC . [17]
Относительный
Вероятностно -реляционный язык программирования (PRPL) — это PPL, специально разработанный для описания и вывода вероятностных реляционных моделей (PRM).
PRM обычно разрабатывается с помощью набора алгоритмов для сокращения, вывода и обнаружения соответствующих распределений, которые встроены в соответствующий PRPL.
Большинство подходов к вероятностному логическому программированию основаны на семантике распределения, которая разделяет программу на набор вероятностных фактов и логическую программу. Она определяет распределение вероятностей по интерпретациям вселенной Эрбрана программы. [18]
Список вероятностных языков программирования
В этом списке обобщены все виды PPL, доступные в настоящее время, и разъясняется их происхождение.
Эта статья может содержать чрезмерное количество сложных деталей, которые могут заинтересовать только определенную аудиторию . Пожалуйста, помогите, отделив или переместив любую соответствующую информацию и удалив излишние детали, которые могут противоречить политике включения Википедии . ( Октябрь 2019 ) ( Узнайте, как и когда удалять это сообщение )
Рассуждения о переменных как о вероятностных распределениях вызывают трудности у начинающих программистов, но эти трудности можно преодолеть с помощью визуализации байесовской сети и графиков распределений переменных, встроенных в редактор исходного кода. [52]
^ "Вероятностное программирование делает в 50 строк кода то, на что раньше уходили тысячи". phys.org . 13 апреля 2015 г. . Получено 13 апреля 2015 г. .
^ "Вероятностное программирование". probabilistic-programming.org . Архивировано из оригинала 10 января 2016 года . Получено 24 декабря 2013 года .
^ abc "Короткий вероятностный программный машинный обучающий код заменяет сложные программы для задач компьютерного зрения". KurzweilAI . 13 апреля 2015 г. Получено 27 ноября 2017 г.
↑ Хардести, Ларри (13 апреля 2015 г.). «Графика наоборот».
^ "MIT демонстрирует сценарий машинного обучения для создания СТРАШНЫХ ГОЛОВ". The Register .
^ «Система программирования Gen от MIT выравнивает кривую обучения для проектов ИИ». VentureBeat . 27 июня 2019 г. Получено 27 июня 2019 г.
^ Семенова, Елизавета; Уильямс, Доминик П.; Афзал, Авид М.; Лазич, Стэнли Э. (1 ноября 2020 г.). «Байесовская нейронная сеть для прогнозирования токсичности». Computational Toxicology . 16 : 100133. doi : 10.1016/j.comtox.2020.100133. ISSN 2468-1113. S2CID 225362130.
^ Уильямс, Доминик П.; Лазич, Стэнли Э.; Фостер, Элисон Дж.; Семенова, Елизавета; Морган, Пол (2020), «Прогнозирование лекарственно-индуцированного поражения печени с помощью байесовского машинного обучения», Химические исследования в токсикологии , 33 (1): 239–248, doi : 10.1021/acs.chemrestox.9b00264, PMID 31535850, S2CID 202689667
^ Иннес, Майк; Эдельман, Алан; Фишер, Кено; Ракаукас, Крис; Саба, Эллиот; Вирал Б. Шах; Теббатт, Уилл (2019). «∂P: Дифференцируемая система программирования для соединения машинного обучения и научных вычислений». arXiv : 1907.07587 [cs.PL].
^ Гудман, Ноа Д.; Тененбаум, Джошуа Б.; Буксбаум, Дафна; Хартшорн, Джошуа; Хокинс, Роберт; О'Доннелл, Тимоти Дж.; Тесслер, Майкл Генри. «Вероятностные модели познания». Вероятностные модели познания — 2-е издание . Получено 27 мая 2023 г.
^ ab "Язык Тьюринга для вероятностного программирования". GitHub . 28 декабря 2021 г.
^ ab "Infer.NET". microsoft.com . Microsoft.
^ ab "PRISM: Программирование в статистическом моделировании". rjida.meijo-u.ac.jp . Архивировано из оригинала 1 марта 2015 г. Получено 8 июля 2015 г.
^ ab "The BUGS Project - MRC Biostatistics Unit". cam.ac.uk . Архивировано из оригинала 14 марта 2014 г. Получено 12 января 2011 г.
^ ab "Stan". mc-stan.org . Архивировано из оригинала 3 сентября 2012 года.
^ "Алгоритмы, лежащие в основе вероятностного программирования" . Получено 10 марта 2017 г.
^ Де Рэдт, Люк; Киммиг, Ангелика (1 июля 2015 г.). «Концепции вероятностного (логического) программирования». Машинное обучение . 100 (1): 5–47. doi :10.1007/s10994-015-5494-z. ISSN 1573-0565.
^ "Analytica — язык вероятностного моделирования". lumina.com .
^ "GitHub -- bayesloop". GitHub . 7 декабря 2021 г.
^ «Bean Machine — универсальный вероятностный язык программирования, позволяющий проводить быстрый и точный байесовский анализ». beanmachine.org .
^ "Venture -- a general-purpose probabilistic programming platform". mit.edu . Архивировано из оригинала 25 января 2016 года . Получено 20 сентября 2014 года .
^ "BayesDB на SQLite. Байесовская таблица базы данных для запроса вероятных последствий данных так же легко, как базы данных SQL запрашивают сами данные". GitHub . 26 декабря 2021 г.
^ "diff-SAT (вероятностный SAT/ASP)". GitHub . 8 октября 2021 г.
^ Дей, Дебабрата; Саркар, Сумит (1998). «PSQL: язык запросов для вероятностных реляционных данных». Data & Knowledge Engineering . 28 : 107–120. doi :10.1016/S0169-023X(98)00015-9.
^ "Dyna". www.dyna.org . Архивировано из оригинала 17 января 2016 г. Получено 12 января 2011 г.
^ "Charles River Analytics - Услуги вероятностного моделирования". cra.com . 9 февраля 2017 г.
^ ПробаДа. «ПробаДа - Ансамбль, мы повышаем ценность для вас». probayes.com . Архивировано из оригинала 5 марта 2016 года . Проверено 26 ноября 2013 г.
^ "Gen: Вероятностный язык программирования общего назначения с программируемым выводом" . Получено 11 июня 2024 г.
^ "Эдвард – Дом". edwardlib.org . Получено 17 января 2017 г. .
^ TensorFlow (11 апреля 2018 г.). «Введение в TensorFlow Probability». TensorFlow . Получено 2 октября 2018 г. .
^ "Модуль вероятности TensorFlow 'Edward2'". GitHub . Получено 11 июня 2024 г.
^ "Pyro". pyro.ai . Получено 9 февраля 2018 г. .
^ "NumPyro". pyro.ai . Получено 23 июля 2021 г. .
^ "Вероятностное программирование в Birch". birch-lang.org . Получено 20 апреля 2018 г.
^ "PSI Solver - Точный вывод для вероятностных программ". psisolver.org . Получено 18 августа 2019 г. .
^ "Главная". www.stat.ubc.ca .
^ Перов, Юра; Грэм, Логан; Гургулиас, Костис; Риченс, Джонатан Г.; Ли, Сиаран М.; Бейкер, Адам; Джохри, Саурабх (28 января 2020 г.), MultiVerse: причинно-следственное рассуждение с использованием выборки по важности в вероятностном программировании , arXiv : 1910.08091
^ "Англиканская вероятностная система программирования". probprog.github.io . Получено 7 октября 2024 г. .
^ Горинова, Мария И.; Саркар, Адвайт; Блэквелл, Алан Ф.; Сайм, Дон (1 января 2016 г.). «Живая среда вероятностного программирования с множественным представлением для новичков». Труды конференции CHI 2016 года по человеческому фактору в вычислительных системах . CHI '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 2533–2537. doi :10.1145/2858036.2858221. ISBN9781450333627. S2CID 3201542.
Внешние ссылки
Список наборов инструментов для мини-языка вероятностных моделей