Алгоритм распространения доверияАлгоритм распространения доверия (англ. belief propagation, trust propagation algorithm, также алгоритм «sum-product») — алгоритм маргинализации с помощью двунаправленной передачи сообщений на графе, применяемый для вывода на графических вероятностных моделях (таких как байесовские и марковские сети). Предложен Дж. Перлом в 1982 году. Постановка задачи
Рассмотрим функцию:
Чтобы получить вероятность, необходимо её нормализовать: Рассматриваются следующие задачи:
Все эти задачи NP-полны, так что сложность их решения в худшем случае возрастает экспоненциально. Однако некоторые частные случаи можно решить быстрее, чем и занимается данный алгоритм. Структура графаГраф, используемый алгоритмом, состоит из вершин, соответствующих переменным, и вершин, соответствующих функциям. Функции соединены с переменными, от которых они зависят. ПримерНапример, функции соответствует следующий граф: Передача сообщенийВ графе пересылаются сообщения двух видов: от функций к переменным и от переменных к функциям. От переменной к функции :
При этом пустое произведение считаем равным единице. Из этих формул видно, что если у вершины всего одна соседняя точка, то её (вершины) сообщение можно вычислить, не зная входящих сообщений. АлгоритмСуществует два подхода, в зависимости от характера полученного графа: Подход 1Предположим, что граф является деревом. Начиная с листьев будем постепенно обходить все вершины и вычислять сообщения (при этом применяется стандартное правило передачи сообщений: сообщение можно передавать только в том случае, если его можно полностью построить). Тогда за количество шагов, равное диаметру графа, работа алгоритма закончится. Подход 2Если граф не является деревом, то можно начать с того, что все переменные передают сообщение 1, а потом уже его модифицируют, когда до них доходят сообщения от функций. Такой алгоритм в общем случае работает неверно и делает много лишнего, но все же полезен на практике. Вычисление маргиналовКогда рассылка сообщений закончена, маргиналы вычисляются по следующей формуле: Нормализация на летуЕсли нужно рассчитать только нормализованные маргиналы (настоящие вероятности), то можно на каждом шаге нормализовать сообщения от переменных к функциям:
где подобраны так, чтобы Математическое обоснование алгоритмаС математической точки зрения алгоритм перераскладывает изначальное разложение: в произведение:
где соответствует узлам-функциям, а — узлам-переменным. Изначально, до передачи сообщений и Каждый раз, когда приходит сообщение из функции в переменную, и пересчитываются:
Очевидно, что общее произведение от этого не меняется, а по окончании передачи сообщений станет маргиналом . СсылкиInformation related to Алгоритм распространения доверия |