Шумные OR-ворота в PyMC3 - PullRequest
       54

Шумные OR-ворота в PyMC3

0 голосов
/ 29 января 2019

Я пытаюсь создать модель PyMC3 для шумных OR-вентилей (сеть Байеса с общим эффектом, см. График ниже), как описано в Rehder (1999):

  • Каждый из a1, a2 и a3 одинаково могут вызвать a4 независимо друг от друга: p (a4 | ai = 1) = c для i! = 4.
  • Если родительские узлы выключены, вероятность включения a4 равна u.

Полученное распределение вероятностей должно быть таким, как в таблице ниже, в разделе «Модель причинно-следственных связей общего эффекта».q - безусловная вероятность родителей.

Конечно, я мог бы легко жестко закодировать зависимость a4 от трех других случайных величин, но мне интересно, есть ли в PyMC3 более компактный способ выражения такого рода дизъюнктивного взаимодействия.

common-effect netenter image description here

Ссылка: Rehder, B. (1999).Причинно-следственная модель теории категоризации.В * Труды 21-го ежегодного собрания Общества когнитивных наук * (стр. 595–600).

1 Ответ

0 голосов
/ 31 января 2019

Самый компактный способ, которым я могу придумать для захвата взаимосвязи, предполагая, что c является общим значением, - это уменьшить до одной вероятности для a_4.То есть что-то вроде этого:

import pymc3 as pm
import theano.tensor as tt

with pm.Model() as model:
    # prior probabilities
    q = pm.Beta('q', alpha=1, beta=1)
    c = pm.Beta('c', alpha=1, beta=1)
    u = pm.Beta('u', alpha=1, beta=1)

    # input nodes
    a_i = pm.Bernoulli('a_i', p=q, shape=3)

    # prob for a_4
    p = pm.math.switch(tt.any(a_i), 1.0 - (1.0 - c)**tt.sum(a_i), u)

    # output node
    a_4 = pm.Bernoulli('a_4', p=p)

    prior = pm.sample_prior_predictive(samples=1000)

, где, если любой из a_i успешен, тогда мы вычисляем вероятность любого успеха в sum(a_i) попытках (то есть 1-(1-c)^sum(a_i)), в противном случаепросто используйте u.

Очевидно, что предыдущие вероятности могут быть фиксированными или независимыми по мере необходимости (например, может быть, вы хотите получить независимые значения q, что будет сделано путем добавления shape=3).

Если это не то, что вы ищете, то, возможно, добавьте некоторые уточнения к вопросу.

...