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