Inhibition effects

An important goal of statistical relational learning formalisms is to develop representations that are compact and expressive but also easy to read and maintain. This is can be achieved by exploiting the modularity of rule-based structures and is related to the noisy-or structure where parents independently influence a joint effect. Typically, these rules are combined in an additive manner where a new rule increases the probability of the effect.

In this example, we show a language feature for ProbLog, where we allow negation in the head of rules to express the inhibition of an effect in a modular manner. This is a generalization of the inhibited noisy-or structure that can deal with cycles and, foremost, is non-conflicting. It is a natural counterpart to the standard noisy-or.

Such a rule looks like:

0.7::a :- cause_a.
0.4::\+a :- inhibit_a.

Based on:

  • W. Meert and J. Vennekens. Inhibited effects in CP-logic. proceedings of the 7th European Workshop on Probabilistic Graphical Models, pp. 350 - 356, 2014. PDF DOI

  • Example 1: Short Intro

    Suppose we want to express two independent causes c1 and c2 that make an outcome e more likely. This is the typical case for a noisy-or gate:

    0.5::c1. 0.5::c2. 0.3::e :- c1. 0.4::e :- c2. evidence(c1,true). evidence(c2,true). query(e).

    In some cases, however, if both causes are present this reduces the likelihood of the effect happening. For example when the presence of a second drug blocks the impact of the original drug. In such a case we can use negated heads. Depending on the chosen probabilities the effect can be lower than the joint occurance of c1 and c2 or be lower then either p1 or p2:

    0.5::c1. 0.5::c2. 0.3::e1 :- c1. 0.2::\+e1 :- c2. 0.4::e2 :- c2. 0.2::\+e2 :- c1. e :- e1. e :- e2. evidence(c1,true). evidence(c2,true). query(e).

    If, like in the example above, the effect is only present when both causes are present, we can simplify the theory to:

    0.5::c1. 0.5::c2. 0.3::e :- c1. 0.4::e :- c2. 0.166666::\+e :- c1, c2. evidence(c1,true). evidence(c2,true). query(e).

    Note that this solution reduces the number of parameters but is less modular if we would want to extend the example to three causes (you need to change the rule with c1,c2 instead of simply adding new rules).


    Example 2: Social Network

    An infectious disease spreads through a population as follows: when- ever two people are in regular contact with each other and one is infected, there is a probability of 0.6 of the infection spreading also to the other person. Given a set of initially infected people and a graph of connections between individuals in the population, the goal is to predict the spread of the disease.

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y). query(inf(_)).

    Given any set of individuals and any interpretation for the exogenous predicates InitialInf and Contact, this ProbLog program defines the probability with which each individual will be infected. In particular, no restrictions (such as acyclicity) are imposed on the Contact-relation.

    In addition to representing probability distributions in a compact way, ProbLog also aims at being elaboration tolerant: once a program for a given domain has been constructed, it should be easy to adapt this theory when we learn new facts about the domain. Ideally, new knowledge should be incorporated in a way which respects the inherent modularity of CP-logic, in the sense that it may involve adding or removing rules, but not changing existing rules.

    One such operation for which ProbLog is obviously well-suited is when a new cause for some effect is discovered. For instance, suppose we learn that, in addition to being among the initially infected and having contact with infected individuals from the population, people may also contract the disease by travelling to particular locations (e.g., with probability 0.2). We can update our program accordingly, by simply adding an additional rule:

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). 0.1::riskyTravel(X) :- person(X). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y). 0.2::inf(X) :- riskyTravel(X). query(inf(_)).

    Importantly, there is no need to change our existing rules.

    A second operation is discovering that certain parts of the population form an exception to the general rules. For instance, suppose that certain people are discovered to be especially susceptible (e.g., probability 0.8) to contracting the disease through contact with an already infected person. We can represent this by “case splitting” rule (2) into the following two rules:

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). 0.1::riskyTravel(X) :- person(X). 0.1::susceptible(X) :- person(X). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y), \+susceptible(X). 0.8::inf(X) :- contact(X, Y), inf(Y), susceptible(X). 0.2::inf(X) :- riskyTravel(X). query(inf(_)).

    However, this solution has the downside that it forces us to change an existing rule. A better alternative is to exploit the additive nature of different causes for the same effect in ProbLog:

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). 0.1::riskyTravel(X) :- person(X). 0.1::susceptible(X) :- person(X). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y). 0.5::inf(X) :- contact(X, Y), inf(Y), susceptible(X). 0.2::inf(X) :- riskyTravel(X). query(inf(_)).

    For non-susceptible individuals, only the first rule is applicable, so they still get infected with the same probability of 0.6 as before. The same rule of course also applies to susceptible individuals, whom the second rule then gives an additional probability of getting infected because they are susceptible. This brings their total probability of being infected up to 0.6+(1−0.6)·0.5=0.8. When compared to the “case splitting” theory, this representation has the advantage that it allows the “default” rule for normal people to remain unchanged.

    In addition to discovering that certain parts of the population are especially susceptible to the infection, it is equally possible to discover that certain people tend to be more resistant to it. Again, this can be solved by case splitting:

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). 0.1::riskyTravel(X) :- person(X). 0.1::resistant(X) :- person(X). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y), \+resistant(X). 0.4::inf(X) :- contact(X, Y), inf(Y), resistant(X). 0.2::inf(X) :- riskyTravel(X). query(inf(_)).

    A solution in which we can keep our original “default” rule unchanged is not possible using noisy-or or is not intuitive to impossible in current probabilistic logics. Indeed, this is an obvious consequence of the fact that adding additional rules can only increase probabilities. In this paper, we introduce the new feature of negation in the head of rules, which will allow us to represent also a decrease in probabilities. In particular, we will be able to represent our example as:

    person(a). person(b). 0.1::initialInf(X) :- person(X). 0.1::contact(X,Y) :- person(X), person(Y). 0.1::riskyTravel(X) :- person(X). 0.1::resistant(X) :- person(X). inf(X) :- initialInf(X). 0.6::inf(X) :- contact(X, Y), inf(Y). 0.33::\+inf(X) :- resistant(X). 0.2::inf(X) :- riskyTravel(X). query(inf(_)).

    .


    Example 3: Intercausal Cancellation Model and Medical Domain

    Using inhibition effects we can express the examples presented in:

    • S.P. Woudenberg, L. C. van der Gaag, and C. M. Rademaker. An intercausal cancellation model for bayesian-network engineering. International Journal of Approximate Reasoning, 63:32-47, 2015.

    Woudenberg et al introduce an intercausal cancellation model that extends the noisy-OR model with inhibition effects and show its applicability in the medical domain. We will show how their approach can be implemented straightforwardly in ProbLog using negated head literals.

    Example Maximum-entropy

    A maximum-entropy choice of value for cancellation parameters, designed specifically for describing partial cancellation, equals 1/2. The results are:

    \[\begin{split}\begin{eqnarray} Pr(e | c_1, c_2) &=& 1 - \left(1- p_1 + \alpha_{1|12}\cdot p_1\right)\cdot\left( 1-p_2+\alpha_{2|12}\cdot p_2\right)\\ Pr(e | c_1, \bar{c}_2) &=& p_1 \\ Pr(e | \bar{c}_1, c_2) &=& p_2 \\ Pr(e | \bar{c}_1, \bar{c}_2) &=& 0 \end{eqnarray}\end{split}\]

    Suppose \(\alpha_{1|12}=\frac{1}{2}\), \(\alpha_{2|12}=\frac{1}{2}\), \(p_1=0.8\) and \(p_2=0.3\):

    0.5::c1. % prior 0.5::c2. % prior 0.8::xc1 :- c1. % p_1 0.5::\+xc1 :- c1, c2. % \alpha_{1|12} 0.3::xc2 :- c2. % p_2 0.5::\+xc2 :- c1, c2. % \alpha_{2|12} e :- xc1. e :- xc2. evidence(c1,true). evidence(c2,true). query(e).

    Where xc1 and xc2 are the latent inhibition variables \(X_{C_1}\) and \(X_{C_2}\) also introduced in the paper.

    Example 6.1

    The first example (See example 6.1 in Woudenberg et al) is a predictive model to model the effects of two medications for patients with primary type-1 osteoporosis. The risks of bone fracture associated with osteoporosis, can be reduced to some small extent by treatment. Two common treatments for osteoporosis are calcium supplementation and medication with bisphosphonates. But the concurrent intake of both medications will fully cancel out the effect of the bisphosphonates and the effect of the calcium supplementation is cancelled out partially.

    This can be modelled as follows:

    increaseOsteoblasts :- calcium. 0.5::\+increaseOsteoblasts :- calcium, bispho. reduceOsteoclasts :- bispho. 1.0::\+reduceOsteoclasts :- calcium , bispho. osteoprosis :- initialOsteoprosis. 0.85::\+osteoprosis :- reduceOsteoclasts. % Bisphosphonates 0.15::\+osteoprosis :- increaseOsteoblasts. % Calcium % Prior probabilities 0.5::calcium. 0.5::bispho. 0.5::initialOsteoprosis. % Query probability of effect evidence(initialOsteoprosis, true). evidence(calcium, true). evidence(bispho, false). query(osteoprosis).

    Example 6.2

    The second examples (See example 6.2 in Woudenberg et al) is on epigastric pains and urinary tract infection. In this example multiple annihilator variables are introduced, each one for a different combination of the treatments that are administered and whe administered together reduce the their effectiveness. Using ProbLog and negation in the head, this example can be expressed as follows:

    xa :- a. %0.00::\+xa :- a, c, \+p. % \alpha_{a|ac} %1.00::\+xa :- a, \+c, p. % \alpha_{a|ap} %1.00::\+xa :- a, c, p. % \alpha_{a|acp} 1.00::\+xa :- a, p. % \alpha_{a|acp} and \alpha_{a|ap} xc :- c. %0.50::\+xc :- \+a, c, p. % \alpha_{c|ac} 0.57::\+xc :- a, c, \+p. % \alpha_{c|ap} %0.50::\+xc :- a, c, p. % \alpha_{c|acp} 0.50::\+xc :- c, p. % \alpha_{c|acp} and \alpha_{c|ac} xp :- p. %0.00::\+xp :- \+a, c, p. % \alpha_{p|ac} %0.00::\+xp :- a, \+c, p. % \alpha_{p|ap} %0.00::\+xp :- a, c, p. % \alpha_{p|acp} e :- initial_e. 0.30::\+e :- xa. % Pr(~e|a,~p) 0.95::\+e :- xp. % Pr(~e|~a,p) u :- initial_u. 0.00::\+u :- xa. % Pr(~u|a,~c,~p) 0.97::\+u :- xc. % Pr(~u|~a,c,~p) 0.00::\+u :- xp. % Pr(~u|~a,~c,p) % Prior probabilities 0.5::a. 0.5::c. 0.5::p. 0.5::initial_e. 0.5::initial_u. % Query probability of effect evidence(initial_e, true). evidence(initial_u, true). evidence(a, true). evidence(c, true). evidence(p, true). query(e). query(u).

    The variables xa, xp and xc are the latent variables \(X_{a}\), \(X_{p}\), and \(X_{e}\) introduced in the paper as latent inhibition variables between a, p, c and u. Note that the negative head expressions with a value of zero can be dropped without influencing the model and same probabilities can be merged in one rule with a simpeler body (using contextual independence). Consequently, we need only 3 rules/parameters instead of 9 parameters.

    Whereas the main motivation for inhibition effects in CP-logic/ProbLog was to improve the elaboration tolerance of CP-logic, Woudenberg et al also report benefits for modeling and knowledge elicitation (the probabilities in the examples above are elicited from medical experts).