Как преобразовать распространение убеждений в зацикленное распространение убеждений

Я пытался научиться распространению убеждений. У Филиппа Венига есть очень простая для понимания реализация 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], что является правильным ответом. Вторая реализация работает быстрее. Но я не уверен, что это правильно.

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

Является ли второе решение правильным способом сделать это?

0 ответов

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