Проблог
Оригинальный автор(ы) | Исследовательская лаборатория DTAI (KU Leuven) |
---|---|
Первоначальный выпуск | 11 ноября 2007 г. |
Стабильная версия | 2.1
|
Написано в | Питон |
Операционная система | Linux , Mac OS X , Microsoft Windows |
Тип | Вероятностная логика |
Лицензия | Лицензия Apache, версия 2.0 |
Веб-сайт | данные |
ProbLog — это язык вероятностно-логического программирования , расширяющий Пролог вероятностями. [1] [2] [3] Он минимально расширяет Пролог , добавляя понятие вероятностного факта, сочетающее в себе идею логических атомов и случайных величин . Подобно Прологу, ProbLog может запрашивать атом . В то время как Пролог возвращает истинное значение запрошенного атома , ProbLog возвращает вероятность того, что это истинно.
Семантика
[ редактировать ]Вероятностный факт – это пара с основной атом и вероятность будучи правдой. Правило определяется атомом , называемый головой, и конечное множество литералы , называемое телом. Программы ProbLog состоят из набора вероятностных фактов. и набор правил . Используя семантику распределения, распределение вероятностей определяется по двузначным обоснованным моделям атомов в программе. Вероятность модели определяется как где произведение пробегает все литералы в модели . Для атома запроса семантика распределения определяет вероятность запроса в котором сумма пробегает все модели, где это правда.
ProbLog поддерживает несколько задач:
- Вероятностный вывод: вычислить
- Наиболее вероятное объяснение: вычислите наиболее вероятную вероятность модели.
- Выборка: генерировать образцы
- Обучение на интерпретациях: изучите вероятности программ ProbLog на основе данных.
Пример
[ редактировать ]Например, ProbLog можно использовать для расчета вероятности намокнуть с учетом вероятности дождя и вероятности того, что кто-то принесет зонтик, следующим образом:
0.4 :: rain(weekday).
0.9 :: rain(weekend).
0.8 :: umbrella_if_rainy(Day).
0.2 :: umbrella_if_dry(Day).
umbrella(Day) :- rain(Day), umbrella_if_rainy(Day).
umbrella(Day) :- \+rain(Day), umbrella_if_dry(Day).
wet(Day) :- rain(Day), \+umbrella(Day).
query(\+wet(weekend)).
Последнее правило перед вопросом гласит, что кто-то промокнет, если идет дождь и не было взято с собой зонтика. Когда 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 был расширен или использован в качестве вдохновения для нескольких различных вариантов, в том числе:
- DeepProbLog расширяет ProbLog, позволяя параметризовать вероятность с помощью нейронной сети. [8]
- DTProblog расширяет ProbLog теорией принятия решений . Полезность стратегии определяется как ожидаемое вознаграждение за ее реализацию при наличии вероятностных эффектов. [9]
- DC-ProbLog расширяет ProbLog фактами распределения, что означает, что вместо вероятностей логический атом имеет соответствующее непрерывное распределение вероятностей.
- aProbLog обобщает ProbLog, допуская любое коммутативное полукольцо вместо просто вероятностей. [10]
- ProbFOIL : учитывая набор фактов ProbLog в виде вероятностной реляционной базы данных, ProbFOIL находит набор вероятностных правил для прогнозирования фактов одного отношения на основе всех других отношений.
Родственные языки
[ редактировать ]- ПРИЗМА: Программирование в статистическом моделировании [11]
- ICL: Логика независимого выбора [12]
- CP-логика: язык причинно-вероятностных событий [13]
- LPAD: логические программы с аннотированными дизъюнкциями. [14]
- Распределительные предложения: язык вероятностной логики для гибридных реляционных областей. [15]
Дальнейшее чтение
[ редактировать ]Ссылки
[ редактировать ]- ^ Де Рэдт, Люк; Киммиг, Анжелика; Тойвонен, Ханну (ноябрь 2007 г.). ProbLog: вероятностный пролог и его применение при обнаружении ссылок . IJCAI. Том. 7.
- ^ Фиренс, Д; Ван ден Брук, Г.; Брюйноге, М.; Де Рэдт, Л. (2012). Ограничения для вероятностно-логического программирования . Материалы семинара NIPS по вероятностному программированию. стр. 1–4.
- ^ Де Рэдт, Люк; Киммиг, Анжелика (2015). «Концепции вероятностного (логического) программирования» . Машинное обучение . 100 (1): 5–47. дои : 10.1007/s10994-015-5494-z . S2CID 3166992 .
- ^ «ПробЛог1» . dtai.cs.kuleuven.be .
- ^ Jump up to: а б «ProbLog: Вероятностное программирование» . dtai.cs.kuleuven.be .
- ^ Jump up to: а б «Репозиторий ProbLog на GitHub» . github.com . 12 октября 2022 г.
- ^ «cplint – AI@UNIFE» . Проверено 13 ноября 2023 г.
- ^ Манхаев, Робин; Думанчич, Себастьян; Киммиг, Анжелика; Демистер, Томас; Де Рэдт, Люк (2018). DeepProbLog: нейронно-вероятностное логическое программирование . NeurIPS 2018, Тридцать вторая конференция по нейронным системам обработки информации. стр. 3753–3760.
- ^ Ван ден Брук, Гай; Тон, Инго; Ван Оттерло, Мартин; Де Рэдт, Люк (2010). «DTProbLog: теоретико-вероятностный Пролог». Материалы конференции AAAI по искусственному интеллекту . Том. 24.
- ^ Киммиг, А.; Ван ден Брук, Г.; Де Рэдт, Л. (2011). Алгебраический Пролог для рассуждений о возможных мирах . Материалы двадцать пятой конференции AAAI по искусственному интеллекту. стр. 209–214.
- ^ «ПРИЗМА: Программирование в статистическом моделировании» . rjida.meijo-u.ac.jp .
- ^ Пул, Дэвид (2008). «Логика независимого выбора и не только». В Люке Рэдте; Паоло Фраскони; Кристиан Керстинг; Стивен Магглтон (ред.). Вероятностное индуктивно-логическое программирование . Конспекты лекций по информатике. Том. 4911. Спрингер. стр. 222–243. дои : 10.1007/978-3-540-78652-8_8 . ISBN 978-3-540-78651-1 .
- ^ Веннекенс, Йост; Денекер, Марк; Брюйнуг, Морис (2009). CP-логика: язык причинно-вероятностных событий и его связь с логическим программированием . Теория и практика логического программирования. Том. 9. С. 245–308. arXiv : 0904.1672 .
- ^ «PITA: Вероятностный вывод с составлением таблиц и обобщением ответов» . ml.unife.it .
- ^ «Распределительные оговорки» . dtai.cs.kuleuven.be .
- ^ «ProbLog: Документация ProbLog 2.1» . prolog.readthedocs.io .