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

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

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

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

Содержание
  • 1 Приложения
  • 2 Вероятностные языки программирования
    • 2.1 Реляционные
    • 2.2 Список вероятностных языков программирования
  • 3 Сложность
  • 4 См. Также
  • 5 Примечания
  • 6 Внешние ссылки
Приложения

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

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

Библиотека вероятностного программирования (также написанная на Джулии) была применена для задач видения и робототехники.

Совсем недавно, системы вероятностного программирования применялись в различных фармацевтических и экономических приложениях.

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

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

PPL часто являются производными от базового языка. Выбор основного базового языка зависит от сходства модели с онтологией основного языка, а также коммерческих соображений и личных предпочтений. Например, Dimple и Chimple основаны на Java, Infer.NET основан на .NET Framework, а PRISM расширяется от Prolog. Однако некоторые PPL, такие как WinBUGS и Stan, предлагают автономный язык без очевидного происхождения на другом языке.

Некоторые PPL находятся в активной разработке, в том числе некоторые в бета-тестировании. Двумя наиболее популярными инструментами являются Stan и PyMC3.

Relational

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

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

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

ИмяРасширяется отОсновной язык
Analytica C ++
bayesloopPythonPython
CuPPLNOVA
VentureСхема C ++
Probabilistic-CC C
АнгликанскийClojure Clojure
IBALOCaml
BayesDBSQLite, Python
PRISMB-Prolog
Infer.NET .NET Framework.NET Framework
углублениеMATLAB, Java
chimpleMATLAB, Java
BLOGJava
delSATПрограммирование набора ответов, SAT (DIMACS CNF)
SQL
ОШИБКИ
FACTORIEScala Scala
PMTKMATLABMATLAB
AlchemyC++
DynaProlog
FigaroScalaScala
Church SchemeРазное: JavaScript, схема
ProbLogPrologPython, Jython
ProBTC ++, Python
Stan C ++
HakaruHaskell Haskell
BAli-Phy (software)HaskellC ++
ProbCogJava, Python
GambleRacket
PWhileWhilePython
TuffyJava
PyMC3 Python, Theano Python
PyMC4 Python, TensorFlow Probability Python
RainierScalaScala
gretaTensorFlowR
pomegranatePythonPython
LeaPythonPython
WebPPLJavaScriptJavaScript
Let's ChanceScratchJavaScript
PictureJuliaJulia
Turing.jlДжулия Джулия
GenДжулия Джулия
Низкоуровневый PPL первого порядкаPython, Clojure, PytorchРазное: Python, Clojure
TrollMoscow ML
ЭдвардTensorFlow Python
TensorFlow ProbabilityTensorFlowPython
Edward2Вероятность TensorFlowPython
PyroPyTorch Python
SaulScalaScala
RankPLJava
БерчC ++
PSID
Трудность

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

См. также
Примечания
Внешние ссылки
Последняя правка сделана 2021-06-02 07:16:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте