Алгоритм sum-product

Алгоритм sum-product

Алгоритм sum-product

Алгоритм «sum-product»алгоритм маргинализации с помощью двунаправленной передачи сообщений на графе

Содержание

Постановка задачи

Рассмотрим функцию:

p^*(X) = \prod^m_{j=1}f_j(X_j), где X_j = \{x_i\}_{i = 1}^n

Чтобы получить вероятность, необходимо ее нормализовать:

p(X) = \frac{1}{Z} \prod^m_{j=1}f_j(X_j), Z = \sum_X \prod^m_{j=1}f_j(X_j)

Нас интересуют следующие задачи:

найти Z = \sum_X \prod^m_{j=1}f_j(X_j)
найти p^*_i(x_i) = \sum_{k \neq i}p^*(X)
  • 3. Задача нормализованной маргинализации
найти p_i(x_i) = \sum_{k \neq i}p(X)

Все эти задачи являются NP-трудными, так что сложность их решения в худшем случае возрастает экспоненциально. Однако некоторые частные случаи можно решить быстрее, чем и занимается данный алгоритм.

Структура графа

Граф, используемый алгоритмом, состоит из вершин, соответствующих переменным, и вершин, соответствующих функциям. Функции соединены с переменными, от которых они зависят.

Пример

Например функции

p * (X) = f1(x1)f2(x2)f3(x3)f4(x1,x2)f5(x2,x3)

соответствует следующий граф:

SumProduct ExampleGraph.png

Передача сообщений

В графе пересылаются сообщения двух видов: от функций к переменным и от переменных к функциям.

От переменной xi к функции fj:

q_{i \to j}(x_i) = \prod_{k \in ne(i) \setminus j} r_{k \to i}(x_i) (здесь ne(i) — множество вершин, соседних с i)


От функции fj к переменной xi:

r_{i \to j}(x_i) = \sum_{X_i \setminus x_i}(f_j(X_j) \prod_{k \in ne(i) \setminus j}q_{k \to j}(x_k)

При этом пустое произведение считаем равным единице. Из этих формул видно, что если у вершины всего один сосед, то ее сообщение можно вычислить не зная входящих сообщений.

Алгоритм

Существует два подхода, в зависимости от характера полученного графа.

Подход 1

Предположим, что граф является деревом. Начиная с листьев будем постепенно обходить все вершины и вычислять сообщения (при этом применяется стандартное правило передачи сообщений: сообщение можно передавать только если его можно полностью построить).

Тогда за количество шагов, равное диаметру графа, работа алгоритма закончится.

Подход 2

Если граф не является деревом, то можно начать с того, что все переменные передают сообщение 1, а потом уже его модифицируют, когда до них доходят сообщения от функций.

Такой алгоритм в общем случае работает неверно и делает много лишнего, но все же полезен на практике.

Вычисление маргиналов

Когда рассылка сообщений закончена, маргиналы вычисляются по следующей формуле:

p^*_i(x_i) = \prod_{j \in ne(i)}r_{j \to i}(x_i)
Z = \sum_i p^*_i(x_i), p(x_i) = \frac{1}{Z}p^*_i(x_i)

Нормализация на лету

Если нужно рассчитать только нормализованные маргиналы (настоящие вероятности), то можно на каждом шаге нормализовать сообщения от переменных к функциям:

q_{i \to j}(x_i) = \alpha_{ij} \prod_{k \in ne(i) \setminus j} r_{k \to i}(x_i),

где αij подобраны так, чтобы

\sum_i q_{i \to j}(x_i) = 1

Математическое обоснование алгоритма

С математической точки зрения алгоритм изначальное разложение

p^*(X) = \prod^m_{j=1}f_j(X_j)

перераскладывает в произведение

p^*(X) = \prod^m_{j=1}\phi_j(X_j) \prod^m_{i=1}\psi_i(x_i),

где φj соответствует узлам-функциям, а ψi — узлам-переменным.

Изначально, до передачи сообщений φj(Xj) = fj(Xj) и ψi(xi) = 1

Каждый раз, когда приходит сообщение r_{j \to i} из функции в переменную, φ и ψ пересчитываются:

\psi_i(x_i) = \prod_{j \in ne(i)}r_{j \to i}(x_i),
\phi_j(X_i) = \frac{f_j(X_j)}{\prod_{i \in ne(j)}r_{j \to i}(x_i)}

Очевидно, что общее произведение от этого не меняется, а ψi по окончании передачи сообщений станет маргиналом p * (xi).

Ссылки

С. Николенко. Курс «Вероятностное обучение»


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Алгоритм sum-product" в других словарях:

  • Алгоритм распространения доверия — (англ. belief propagation, также алгоритм «sum product»)  алгоритм маргинализации с помощью двунаправленной передачи сообщений на графе, применяемый для вывода на графических вероятностных моделях (таких как байесовские и марковские… …   Википедия

  • Список алгоритмов — Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и …   Википедия

  • ГОСТ Р ИСО/МЭК 19762-1-2011: Информационные технологии. Технологии автоматической идентификации и сбора данных (АИСД). Гармонизированный словарь. Часть 1. Общие термины в области АИСД — Терминология ГОСТ Р ИСО/МЭК 19762 1 2011: Информационные технологии. Технологии автоматической идентификации и сбора данных (АИСД). Гармонизированный словарь. Часть 1. Общие термины в области АИСД оригинал документа: Accredited Standards… …   Словарь-справочник терминов нормативно-технической документации

  • Квантовый компьютер — 3 кубита квантового регистра против 3 битов обычного Квантовый компьютер вычислительное устройство, работающее на основе квантовой механики. Квантовый компьютер принципиально отличается от классических компьютеров, работающих на основе …   Википедия

  • List of important publications in mathematics — One of the oldest surviving fragments of Euclid s Elements, found at Oxyrhynchus and dated to circa AD 100. The diagram accompanies Book II, Proposition 5.[1] This is a list of important publications in mathematics, organized by field. Some… …   Wikipedia

  • Непрерывная дробь — Цепная дробь (или непрерывная дробь)  это математическое выражение вида где a0 есть целое число и все остальные an натуральные числа (положительные целые). Любое вещественное число можно представить в виде цепной дроби (конечной или… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»