ПробЛог

Язык программирования вероятностной логики
ПробЛог
Оригинальный автор(ы)Исследовательская лаборатория DTAI (Лёвенский католический университет)
Первоначальный выпуск11 ноября 2007 г. ( 2007-11-11 )
Стабильный релиз
2.1
Написано вПитон
Операционная системаLinux , Mac OS X , Microsoft Windows
ТипВероятностная логика
ЛицензияЛицензия Apache, версия 2.0
Веб-сайтdtai.cs.kuleuven.be/problog/

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

Семантика

Вероятностный факт — это пара с основным атомом и вероятностью быть истинным. Правило определяется атомом , называемым головой, и конечным набором литералов , называемым телом. Программы ProbLog состоят из набора вероятностных фактов и набора правил . Используя семантику распределения, распределение вероятностей определяется по двузначным обоснованным моделям атомов в программе. Вероятность модели определяется как где произведение пробегает все литералы в модели . Для атома запроса семантика распределения определяет вероятность для запроса, в котором сумма пробегает все модели, где является истинным. ( п , а ) {\displaystyle (п,а)} а {\displaystyle а} п [ 0 , 1 ] {\displaystyle p\in [0,1]} а {\displaystyle а} час {\displaystyle ч} н {\displaystyle n} { б 1 , б 2 , . . . , б н } {\displaystyle \{b_{1},b_{2},...,b_{n}\}} Ф {\displaystyle {\mathcal {F}}} Р {\displaystyle {\mathcal {R}}} П ( М ) = л М П ( л ) {\displaystyle P(M)=\prod _{l\in M}P(l)} М {\displaystyle М} д {\displaystyle д} П ( д ) = М д П ( М ) = М д л М П ( л ) {\displaystyle P(q)=\sum _{M\models q}P(M)=\sum _{M\models q}\prod _{l\in M}P(l)} д {\displaystyle д}

ProbLog поддерживает несколько задач:

  • Вероятностный вывод: вычислить П ( д ) {\displaystyle P(q)}
  • Наиболее вероятное объяснение: вычислить наиболее вероятную вероятность модели макс М д П ( М ) {\displaystyle \max _{M\models q}P(M)}
  • Выборка: создание образцов д {\displaystyle д}
  • Обучение на основе интерпретаций: изучите вероятности программ ProbLog на основе данных

Пример

Например, ProbLog можно использовать для расчета вероятности промокнуть, учитывая вероятность дождя и вероятность того, что кто-то возьмет с собой зонтик, следующим образом:

0.4  ::  дождь ( будний день ). 0.9  ::  дождь ( выходной ). 0.8  ::  зонтик_если_дождливый ( день ). 0.2  ::  зонтик_если_сухой ( день ).зонт ( День )  :-  дождь ( День ),  зонт_если_дождливый ( День ). зонт ( День )  :-  \+ дождь ( День ),  зонт_если_сухой ( День ). мокрый ( День )  :-  дождь ( День ),  \+ зонт ( День ).запрос ( \+ мокрый ( выходные )).

Последнее правило перед запросом гласит, что кто-то промокнет, если пойдет дождь, а зонтик не был взят. Когда ProbLog просят решить задачу «вероятностного вывода», запрос запрашивает вероятность остаться сухим в выходной день. При решении задачи «наиболее вероятное объяснение» ProbLog вернет наиболее вероятную причину остаться сухим, то есть потому, что не идет дождь или потому, что у человека есть зонтик.

Реализации

Язык ProbLog был реализован как библиотека YAP Prolog (ProbLog 1). [4] и как автономный фреймворк Python (ProbLog 2) [5] Исходный код ProbLog 2 лицензирован по лицензии Apache License, версии 2.0 и доступен на GitHub . [6] Язык ProbLog также был реализован как часть пакета вероятностного логического программирования cplint для SWI-Prolog, YAP и XSB. [7]

Варианты ProbLog

ProbLog был расширен или использован в качестве источника вдохновения для нескольких различных вариантов, включая:

  • DeepProbLog расширяет ProbLog, позволяя параметризовать вероятность с помощью нейронной сети. [8]
  • DTProblog расширяет ProbLog с помощью теории принятия решений . Полезность стратегии определяется как ожидаемое вознаграждение за ее выполнение при наличии вероятностных эффектов. [9]
  • DC-ProbLog расширяет ProbLog с помощью распределительных фактов, что означает, что вместо вероятностей логический атом имеет соответствующее непрерывное распределение вероятностей.
  • aProbLog обобщает ProbLog, допуская любое коммутативное полукольцо вместо только вероятностей. [10]
  • ProbFOIL : имея набор фактов ProbLog в качестве вероятностной реляционной базы данных, ProbFOIL находит набор вероятностных правил для прогнозирования фактов одного отношения на основе всех других отношений.
  • PRISM: Программирование в статистическом моделировании [11]
  • ICL: Независимая логика выбора [12]
  • CP-Logic: Язык причинно-вероятностных событий [13]
  • LPAD: Логические программы с аннотированными дизъюнкциями [14]
  • Распределительные предложения: вероятностный логический язык для гибридных реляционных доменов [15]

Дальнейшее чтение

  • Домашняя страница ProbLog [5]
  • Документы ProbLog [16]
  • Репозиторий ProbLog [6]

Ссылки

  1. ^ Де Рэдт, Люк; Киммиг, Ангелика; Тойвонен, Ханну (ноябрь 2007 г.). ProbLog: Вероятностный пролог и его применение в обнаружении связей . IJCAI. Том 7.
  2. ^ Fierens, D; Van den Broeck, G.; Bruynooghe, M.; De Raedt, L. (2012). Ограничения для вероятностного логического программирования . Труды семинара NIPS по вероятностному программированию. С.  1– 4.
  3. ^ Де Рэдт, Люк; Киммиг, Ангелика (2015). «Концепции вероятностного (логического) программирования». Машинное обучение . 100 (1): 5– 47. doi : 10.1007/s10994-015-5494-z . S2CID  3166992.
  4. ^ "ПробЛог1". dtai.cs.kuleuven.be .
  5. ^ ab "ProbLog: Вероятностное программирование". dtai.cs.kuleuven.be .
  6. ^ ab "Репозиторий ProbLog GitHub". github.com . 12 октября 2022 г.
  7. ^ "cplint – AI@UNIFE" . Получено 2023-11-13 .
  8. ^ Манхаев, Робин; Думанчич, Себастьян; Киммиг, Анжелика; Демейстер, Томас; Де Рэдт, Люк (2018). DeepProbLog: Нейронное вероятностное логическое программирование . NeurIPS 2018, Тридцать вторая конференция по нейронным системам обработки информации. С.  3753–3760 .
  9. ^ Ван ден Брук, Гай; Тон, Инго; Ван Оттерло, Мартин; Де Рэдт, Люк (2010). «DTProbLog: Теоретико-вероятностный Пролог». Материалы конференции AAAI по искусственному интеллекту . Том. 24.
  10. ^ Киммиг, А.; Ван ден Брок, Г.; Де Рэдт, Л. (2011). Алгебраический Пролог для рассуждений о возможных мирах . Труды Двадцать пятой конференции AAAI по искусственному интеллекту. С.  209–214 .
  11. ^ "PRISM: Программирование в статистическом моделировании". rjida.meijo-u.ac.jp .
  12. ^ Пул, Дэвид (2008). «Логика независимого выбора и далее». В Люке Рэдте; Паоло Фраскони; Кристиане Керстинге; Стивене Магглтоне (ред.). Вероятностное индуктивное логическое программирование . Конспект лекций по информатике. Том 4911. Springer. С.  222– 243. doi :10.1007/978-3-540-78652-8_8. ISBN 978-3-540-78651-1.
  13. ^ Веннекенс, Йост; Денекер, Марк; Брюноог, Морис (2009). CP-логика: язык причинно-вероятностных событий и его связь с логическим программированием . Теория и практика логического программирования. Том 9. С.  245–308 . arXiv : 0904.1672 .
  14. ^ "PITA: Вероятностный вывод с табулированием и категоризацией ответов". ml.unife.it .
  15. ^ "Распределительные положения". dtai.cs.kuleuven.be .
  16. ^ "ProbLog: Документация ProbLog 2.1". problog.readthedocs.io .
Взято с "https://en.wikipedia.org/w/index.php?title=ProbLog&oldid=1231437938"