Алгоритм распространения убеждений для логического бинарного дерева

Я пытался узнать, как работает распространение убеждений. В частности, будет ли он работать как решатель SAT. Некоторые из моих исследований показывают, что это возможно. Тем не менее, я действительно изо всех сил пытаюсь понять, является ли это правильным инструментом для работы или мои реализации просто неверны. К сожалению, в большинстве ссылок много математических формул, и я действительно ржавый при чтении их, поэтому я чувствую, что, возможно, я что-то упустил. И кажется, что некоторые ссылки используют другую терминологию или даже не упоминают такие вещи, как таблицы условной вероятности.

В качестве очень простого примера я пытался решить эту формулу:

      C = A or B

Перед распространением убеждений я составил таблицу истинности, чтобы знать, с чем сравнивать:

Шаг 4: Отправляйте сообщения родителям.

Сообщение от А к С:

      [
  P(A=false|C=false) * Likelihood(A=false) + P(A=true|C=false) * Likelihood(A=true),
  P(A=false|C=true) * Likelihood(A=false) + P(A=true|C=true) * Likelihood(A=true),
]
= [1.0 * 1.0 + 0.0 * 1.0, 0.5 * 1.0 + 0.5 * 1.0] 
= [1.0, 1.0]

Сообщение от B к C:

      [
  P(B=false|C=false) * Likelihood(B=false) + P(B=true|C=false) * Likelihood(A=true),
  P(B=false|C=true) * Likelihood(B=false) + P(B=true|C=true) * Likelihood(A=true),
]
= [1.0 * 1.0 + 0.0 * 1.0, 0.5 * 1.0 + 0.5 * 1.0] 
= [1.0, 1.0]

Шаг 5: Отправляйте сообщения детям.

Сообщение от С к А:

      [
  Message from B to C(false) * Prior(C=false),
  Message from B to C(true) * Prior(C=true)
]
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]

Сообщение от C к B:

      [
  Message from A to C(false) * Prior(C=false),
  Message from A to C(true) * Prior(C=true)
]
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]

Шаг 6: Рассчитайте убеждения.

      Belief(A) = Likelihood(A) * Message from C to A
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]
      Belief(B) = Likelihood(B) * Message from C to B
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]

На данный момент мой алгоритм распространения убеждений говорит, что есть 100-процентная вероятность того, что A истинна, и 100-процентная вероятность того, что B истинна, что не соответствует тому, что я ожидаю. Если я решу C=false, я получу то, что ожидаю.

Что-то не так с предпринятыми мной шагами, или это просто не даст мне ожидаемого ответа по какой-то причине?

0 ответов

Другие вопросы по тегам