Noisy-Adder

<< Click to Display Table of Contents >>

Navigation:  Using SMILE > Discrete Bayesian networks > Canonical nodes >

Noisy-Adder

The Noisy-Adder model is described in the doctoral dissertation of Adam Zagorecki (2010), Section 5.3.1 Non-decomposable Noisy-average. Essentially, it is a non-decomposable model that derives the probability of the effect by taking the average of probabilities of the effect given each of the causes in separation.

To create a Noisy-Adder node, use the DSL_NOISY_ADDER type with DSL_network::AddNode:

int h = net.AddNode(DSL_NOISY_MAX, "node1");

The class of the definition object associated with the new node is DSL_noisyAdder. In addition to information about node outcomes, the definition contains the following Noisy-Adder specific data:

index of the node's own distinguished state

for each of the node's parents, the index of the parent's distinguished state

weights for each of the node's parents and for the leak

Consider a binary Noisy-Adder node with two parents, each having three outcomes. The following code snippet modifies the probabilities, the weight, and the distinguished state for the second parent (with zero-based index 1). Node's own distinguished state is set to 0.

auto adderDef = net.GetNode(h)->Def<DSL_noisyAdder>());

adderDef->SetDistinguishedState(0);

DSL_Dmatrix weights = addDef->GetCiWeights();

int BASE = 2 * 3;

p[BASE + 2] = 0.2;

p[BASE + 3] = 0.8;

p[BASE + 4] = 0.4;

p[BASE + 5] = 0.6;
adderDef->SetCiWeights(weights);

adderDef->SetParentDistinguishedState(1, 0);

adderDef->SetParentWeight(1, 2.5);

The image below shows the Noisy-Adder definition table (as viewed in GeNIe) after the modifications applied by the code above (assuming that the table contained initially the default probabilities of 0.5). The modified parent's weight is shown in parenthesis after its identifier (p2). Distinguished states are marked by bold font.

noisyAdder

Parent distinguished states and weights are part of the child Noisy-Adder definition. If p2 has other Noisy-Adder children, each of these nodes can specify its own distinguished state and weight for p2.

See the DSL_noisyAdder reference for details.