This is an old revision of the document!


Probabilistic Programming — Probabilistic Graphs

Graph structures are commonly used to represent knowledge across various domains and problems. It shouldn't be surprising that they are also present in many probabilistic models. In this class we will introduce probabilistic graphs — weighted graphs with weights representing probabilities. Next, there will be very short introduction to decision theory in Problog. Finally we will try to escape from zombies which clearly shows usefulness of this class.

Probabilistic Graphs

Probabilistic graph looks like a normal weighted graph with weights being real numbers from range <0,1>, like in the graph below:

You can easily represent this graph in Problog as a list of edges:

0.8::edge(1,2).
0.2::edge(1,3).
0.2::edge(1,4).
0.2::edge(2,3).
0.7::edge(3,5).
0.3::edge(4.5).

The weight should be interpreted as a probability that transition from node to node (from state to state?) succeeds.

We can now write a rule (the same as in classical Prolog) to check if there is a path in a graph, i.e.

% there is a direct path between the nodes, if there is an edge between those nodes
path(A,B) :- edge(A,B).
% there is a indirect path between the nodes, if there is an intermediate node
% that can be reached directly from the first node, and from which you can reach the second node
path(A,C) :- edge(A,B),
             B \= C,
             edge(B,C).

Now you can ask Problog, what is the probability of reaching 5 from 1.

query(path(1,5)).

Test it!

Zombie Epidemics

One of the most popular use cases for graphs in probabilistic programming is to model social networks, where people interact with other people, leading to spread of information or… zombies. We will model here a simplified case of zombie epidemics. More serious (also probabilistic) approach can be found in a great article: "Bayesian Analysis of Epidemics — Zombies, Influenza, and other Diseases". Here we will focus on an early phase of the zombie epidemics in a shopping mall. Here goes the story:

Someone very evil and mischievous leaked a zombie virus in a shopping mall air conditioning system. This way of spreading the virus isn't very efficient, but there is 0.1 probability that somebody will get ill just from breathing the bad air. What makes situation worse is that the virus attracts the already infected people. There is a high chance (0.6), that the healthy people will get infected if they get in a physical contact with already infected ones.

So, the situation is clear. We have some people in the mall, to save computing time let's say there are eight friend. In order to make your life easier, we will generate them using a built-in Problog predicate between/3.

human(X) :- between(1, 8, X).

Now, some of them (let's say first 2) are already infected.

initially_infected(X) :- human(X), X < 3.

And finally our probabilistic graph! We will say that two people can get in a physical contact with 0.1 probability. It's a very dense graph (clique) with quite weak edges.

% X \= Y, because you can meet with yourself
0.1::contact(X,Y) :- human(X), human(Y), X \= Y.

Assignments

  1. add missing rules for the virus spread:
    • you can be already infected
    • you can get infected because of the bad air
    • you can get infected because meeting and contacting an infected person
  2. check what is the probability that any human gets infected
    • how would it change if there was only one infected person in beginning?
    • how would it change if couldn't get infected via air?
  3. introduce a new element to the model: some people are naturally resistant to the virus
    • if you are resistant, you can't get infected by air
    • the probability that a resistant person will get infected via physical contact is halved
  4. make third and fourth people resistant to the virus
    • what is the impact of the resistant people on the whole population?

Left 4 Dead

OK. The epidemics started and unfortunately you and your three friend are the only ones who remained human in the whole shopping mall. Now you have to escape. After the initial disbelief and inevitable panic, you start planning your escape. You are aware of only two viable escape routes: you have a car in the parking lot and there is a helicopter pad on the roof of the mall.

Despite the high risk of meeting zombies on the every route, both targets have additional sets of problems:

  • you have to get gas from the nearby gas station if you want to use the car
  • the cellular network is dead (what happened?!) and you have to get to the only radio station (security room) in the mall to contact the army so the can send the helicopter; what's more you're not sure if the helicopter will be here soon enough to save you.

The graph below shows both plans — graph weights represent probability that your team will survive the travel.

Assignments

  1. model the escape plan as a program in Problog
  2. which escape route is more probable according to the Problog query engine?
en/dydaktyka/problog/lab2.1496583201.txt.gz · Last modified: 2019/06/27 16:00 (external edit)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0