Вероятностное логическое программирование — это парадигма программирования , сочетающая логическое программирование с вероятностями.
Большинство подходов к вероятностному логическому программированию основаны на семантике распределения, которая разделяет программу на набор вероятностных фактов и логическую программу. Она определяет распределение вероятностей по интерпретациям вселенной Эрбрана программы.
Большинство подходов к вероятностному логическому программированию основаны на семантике распределения, [1] которая лежит в основе многих языков, таких как Probabilistic Horn Abduction, PRISM, Independent Choice Logic, probabilistic Datalog , Logic Programs with Annotated Disjunctions, ProbLog , P-log и CP-logic. Хотя количество языков велико, многие из них разделяют общий подход, так что существуют преобразования с линейной сложностью , которые могут переводить один язык в другой. [2]
В рамках семантики распределения вероятностная логическая программа интерпретируется как набор независимых вероятностных фактов ( основных атомарных формул, аннотированных вероятностью) и логическая программа , которая может использовать вероятностные факты в телах своих предложений. Вероятность любого присвоения значений истинности основаниям формул, связанных с вероятностными фактами, задается произведением их вероятностей; это эквивалентно предположению, что выбор вероятностных фактов является независимыми случайными величинами . [1] [3]
Если для любого выбора значений истинности для вероятностных фактов результирующая логическая программа стратифицирована , она имеет уникальную минимальную модель Эрбрана , которую можно рассматривать как уникальную интерпретацию, связанную с этим выбором значений истинности. [1]
Важными подклассами стратифицированных программ являются позитивные программы, которые не используют отрицание, но могут быть рекурсивными, и ациклические программы, которые могут использовать отрицание, но не имеют рекурсивных зависимостей. [1]
Стабильная семантика модели, лежащая в основе программирования набора ответов, придает смысл нестратифицированным программам, выделяя потенциально более одного набора ответов для каждого назначения истинностного значения вероятностных фактов. Это поднимает вопрос о том, как распределить массу вероятности по наборам ответов. [4] [5]
Язык программирования вероятностной логики P-Log решает эту проблему, разделяя массу вероятности поровну между наборами ответов, следуя принципу безразличия . [4] [6]
В качестве альтернативы, вероятностное программирование набора ответов в рамках семантики креда выделяет набор креда каждому запросу. Его нижняя граница вероятности определяется только рассмотрением тех назначений истинностных значений вероятностных фактов, для которых запрос является истинным в каждом наборе ответов результирующей программы (осторожное рассуждение); его верхняя граница вероятности определяется рассмотрением тех назначений, для которых запрос является истинным в некотором наборе ответов (смелое рассуждение). [4] [5]
В рамках семантики распределения вероятностная логическая программа определяет распределение вероятностей по интерпретациям ее предикатов в ее вселенной Эрбрана . Вероятность основного запроса затем получается из совместного распределения запроса и миров: это сумма вероятностей миров, где запрос истинен. [2] [7] [8]
Проблема вычисления вероятности запросов называется (маргинальным) выводом . Решение ее путем вычисления всех миров и последующего определения тех, которые влекут за собой запрос, непрактично, поскольку число возможных миров экспоненциально зависит от числа основных вероятностных фактов. [2] Фактически, уже для ациклических программ и атомарных запросов вычисление условной вероятности запроса, учитывая конъюнкцию атомов в качестве доказательства, является #P -полным. [9]
Обычно точный вывод выполняется путем прибегания к компиляции знаний : согласно этому, пропозициональная теория и запрос компилируются в «целевой язык», который затем используется для ответа на запросы за полиномиальное время . Компиляция становится основным вычислительным узким местом, но значительные усилия были направлены на разработку эффективных компиляторов. Методы компиляции различаются по компактности целевого языка и классу запросов и преобразований, которые они поддерживают за полиномиальное время. [2]
Поскольку стоимость вывода может быть очень высокой, были разработаны приблизительные алгоритмы. Они либо вычисляют подмножества возможно неполных объяснений, либо используют случайную выборку. В первом подходе подмножество объяснений обеспечивает нижнюю границу, а набор частично расширенных объяснений обеспечивает верхнюю границу. Во втором подходе истинность запроса многократно проверяется в обычной логической программе , взятой из вероятностной программы. Затем вероятность запроса определяется долей успехов. [2] [10]
Вероятностное индуктивное логическое программирование направлено на изучение вероятностных логических программ из данных. Это включает в себя обучение параметрам, которое оценивает вероятностные аннотации программы, в то время как сами предложения задаются пользователем, и структурное обучение, в котором сами предложения индуцируются вероятностной индуктивной логической системой программирования. [2]
Обычные подходы к параметрическому обучению основаны на максимизации ожидания или градиентном спуске , в то время как структурное обучение может быть выполнено путем поиска в пространстве возможных предложений с использованием различных эвристик. [2]
По состоянию на 3 февраля 2024 г. эта статья полностью или частично основана на Riguzzi, Fabrizio; Bellodi, Elena; Zese, Riccardo (2014). "История вероятностного индуктивного логического программирования". Frontiers in Robotics and AI . 1 . doi : 10.3389/frobt.2014.00006 . Владелец авторских прав лицензировал контент таким образом, что позволяет повторное использование в соответствии с CC BY-SA 3.0 и GFDL . Все соответствующие условия должны быть соблюдены.