Как преобразовать распространение убеждений в зацикленное распространение убеждений
Я пытался научиться распространению убеждений. У Филиппа Венига есть очень простая для понимания реализация Python, доступная здесь.
Теперь то, что я пытаюсь сделать, это понять, как преобразовать это в зацикленное распространение убеждений. Я тестировал пару разных реализаций:
holmes.likelihood = np.array([0, 1])
for i in range(30):
belief = watson.get_belief()
watson.likelihood = belief
print(belief)
И
holmes.likelihood = np.array([0, 1])
for i in range(30):
belief = watson.get_belief()
watson.likelihood = belief
rain.priors = rain.get_belief()
sprinkler.priors = sprinkler.get_belief()
print(belief)
Оба, кажется, сходятся в [0, 1], что является правильным ответом. Вторая реализация работает быстрее. Но я не уверен, что это правильно.
Я работал над гораздо более крупной проблемой и хочу убедиться, что поступаю правильно. Я пробовал первую реализацию этой более крупной проблемы, и она становилась все лучше и лучше, но затем в какой-то момент переходило в другую сторону и становилось все хуже и хуже. Настолько, что мне лучше использовать первоначальное убеждение. Я исходил из предположения, что мне нужно использовать вторую реализацию. Однако, учитывая размер проблемы, у меня фактически возникает арифметический недостаток при вычислении вероятности, поэтому я действительно не смог должным образом протестировать это решение.
Является ли второе решение правильным способом сделать это?