Алгоритм для дерева сочленений
Алгоритм для дерева сочленений — это метод, используемый в машинном обучении для извлечения маргинализации в графах общего вида. В сущности, алгоритм осуществляет распространение доверия на модифицированном графе, называемом деревом сочленений. Основная посылка алгоритма — исключить циклы путём кластеризации их в узлы.
Алгоритм для дерева сочленений
Алгоритм программы «Hugin»[1]
- Если граф ориентированный, то морализуем его, чтобы сделать его неориентированным
- Формируем сведения
- Триангулируем граф, чтобы получить хордальный граф
- Строим дерево сочленений из триагулированного графа (мы будем называть вершины дерева сочленений «суперузлами»)
- Осуществляем пропагацию вероятностей вдоль дерева сочленений (с помощью алгоритма распространения доверия)
Заметим, что последний шаг неэффективен для графов с большой древесной шириной. Вычисление сообщений, передаваемых между суперузлами, требует точной маргинализации в обоих суперузлах. Реализация алгоритма на графе с шириной дерева k потребует вычисления, экспоненциально зависящие по времени от значения k.
Алгоритм Шафера — Шеноя
- Триангулируем граф, проводя исключения в произвольном порядке (если требуется).
- Находим максимальные клики в хордальном графе.
- Находим разделяющие множества для каждой пары максимальных клик и строим взвешенный граф клик.
- Находим остовное дерево максимального веса на графе клик, чтобы получить дерево сочленений.
- Определяем потенциалы на дереве сочлениний.
- Вычисляем сумму произведений на дереве сочленений. Этот способ модификации сведений (передачи сообщений). Этот шаг, собственно, и известен как Алгоритм Шафера — Шеноя.
- Вычисляем маргиналы.
Общее время работы алгоритма , где N — число вершин, D — размер наибольшей клики, — максимальный размер алфавита в узле[2]
Заметим, что размер наибольшей клики D зависит от порядка исключения и минимальный размер равен древесной ширине.
В сущности, алгоритм Hugin делает то же самое, но шаги 5 и 6 выполняются иначе с целью сокращения числа умножений[2].
Теоретические основы (для алгоритма Hugin)
Первый шаг относится только к байесовским сетям и процедуре превращения ориентированного графа в неориентированный. Мы делаем это, потому что это позволяет универсальное применение алгоритма, невзирая на направления.
Второй шаг заключается в установке переменных в их наблюдаемые значения. Это обычно нужно, когда мы хотим вычислить условные вероятности, так что мы фиксируем значение случайных переменных, по которым вероятности вычисляются.
На третьем шаге добиваемся, чтобы графы стали хордальными, если они уже не хордальны. Это первая существенная часть алгоритма. Для этого используется следующая теорема[3]:
Теорема: Для неориентированного графа G следующие свойства эквивалентны:
- Граф G триангулирован.
- Граф клик графа G имеет дерево сочленений.
- Существует порядок исключений для графа G, который не приводит к исключению любого добавленного ребра.
Таким образом, триангулиризируя граф, мы убеждаемся, что соответствующее дерево сочленений существует. Обычно делается это путём порядка исключения узлов, а затем запускается алгоритм исключения переменной[англ.]. Это приводит к добавлению дополнительных рёбер к исходному графу таким образом, что в результате будет получен хордальный граф. На следующем шаге строится дерево сочленений. Чтобы это сделать, используем граф с предыдущего шага и формируем граф клик[4]. Следующая теорема даёт метод построения дерева сочленений[3]:
Теорема: Пусть задан триангулированный граф, вес рёбер графа клик которого |A∩B| задаётся мощностью пересечения смежных клик A и B. Тогда остовное дерево максимального веса графа клик является деревом сочленений.
Таким образом, для построения дерева сочленений нужно выделить остовное дерево максимального веса из графа клик. Это можно эффективно сделать, например, модифицируя алгоритм Краскала. На последнем шаге применяется алгоритм распространения доверия к полученному дереву сочленений[5].
Примечания
- ↑ О программе «Hugin» можно почитать на странице Hugin — лучшая программа для создания панорам Архивная копия от 26 января 2018 на Wayback Machine
- ↑ 1 2 Recitation 8, 2014.
- ↑ 1 2 Wainwright.
- ↑ Clique Graph.
- ↑ Barber, 2014.
Литература
- Martin Wainwright. Graphical models, message-passing algorithms, and variational methods: Part I . Berkeley EECS (31 марта 2008). Дата обращения: 16 ноября 2016.
- Clique Graph . Дата обращения: 16 ноября 2016.
- David Barber. Probabilistic Modelling and Reasoning, The Junction Tree Algorithm . University of Helsinki (2014). Дата обращения: 16 ноября 2016.
- Steffen L. Lauritzen, David J. Spiegelhalter. Local Computations with Probabilities on Graphical Structures and their Application to Expert Systems // Journal of the Royal Statistical Society. Series B (Methodological). — Blackwell Publishing, 1988. — Т. 50, вып. 2. — С. 157–224. — .
- Dawid A. P. Applications of a general propagation algorithm for probabilistic expert systems // Statistics and Computing. — Springer, 1992. — Т. 2, вып. 1. — С. 25–26. — doi:10.1007/BF01890546.
- Cecil Huang, Adnan Darwiche. Inference in Belief Networks: A Procedural Guide // International Journal of Approximate Reasoning. — Elsevier, 1996. — Т. 15, вып. 3. — С. 225–263. — doi:10.1016/S0888-613X(96)00069-2.
- Mark A. Paskin. A Short Course on Graphical Models : 3. The Junction Tree Algorithms. Архивировано 19 марта 2015 года.
- Algorithms For Inference . Massachusetts Institute of Technology (2014). Дата обращения: 25 сентября 2017.