Table of Contents
Lab 5: Bayesian Networks
In this session we will look at some basic Bayesian Networks and you will solve two problems using a Bayesian Network simulator. You can work together in groups. Hand in the results in MySchool.
Material
Here are two different Bayesian Network simulations that you can use:
- http://www.aispace.org/bayes/bayes.jnlp (using Java Web Start)
- http://www.cs.cmu.edu/~javabayes/ (a slightly older Java applet)
The following laws of probabilities might be helpful:
- <latex>$P(\neg A) = 1 - P(A)$</latex>
- Bayes Law: <latex>$P(A \land B) = P(A|B) * P(B)$</latex>
- Marginalization/Summing out: <latex>$P(A) = \sum_b P(A \land b) = P(A \land B) + P(A \land \neg B)$</latex>
- Independence 1: <latex>$P(A|B,C) = P(A|C)$</latex>, if <latex>$A$</latex> and <latex>$B$</latex> are independent given <latex>$C$</latex>.
- Independence 2: <latex>$P(A \land B|C) = P(A|C) * P(B|C)$</latex>, if <latex>$A$</latex> and <latex>$B$</latex> are independent given <latex>$C$</latex>. (This follows from Independence 1 and Bayes Law.)
All those laws allow arbitrary additional conditions as long as all probabilities have the condition:
- Bayes Law: <latex>$P(A \land B|C) = P(A|B,C) * P(B|C)$</latex>
- Marginalization/Summing out: <latex>$P(A|C) = \sum_b P(A \land b|C) = P(A \land B|C) + P(A \land \neg B|C)$</latex>
Problem 1: Smelly Doors
You are writing a program to control a non-player character (NPC) in a game. The NPC is in a building full of doors. Behind each door, there could be either a reward (e.g. health-points) or a monster which the NPC must fight with (losing health-points). The room can also be empty. Once the NPC opens a door, he must fight the monster behind it if any. However, before opening a door the NPC can stick its nose in the keyhole (it cannot look through it) and smell the air inside the room. The air will smell either bad or not. In summary:
- The NPC should seek reward but avoid monsters;
- The NPC doesn't know what's behind a door in advance, but…
- it can check whether the room smells bad or not and use that information as an indicator.
- Design a very simple Bayesian network (2 nodes) usable by the NPC to decide when in front of a door, whether he should open it or not. Start by inventing reasonable probabilities for the relation between the contents of the room and its smell.
- How probable is it that the room contains a monster if the air smells bad?
- Argue how, instead of using made-up probabilities, the NPC can learn as he opens doors and dynamically update the Bayesian network becoming smarter.
Hand in:
- the Bayesian network (e.g., a screenshot and the probability tables for all nodes of the network)
- answer to question 2 above
- a few sentences on how the NPC could learn the necessary probabilities
Problem 2: The Pirate Treasure
You are a seasoned tomb raider and have spent the last week rummaging through an old pirate cove full of treasure. So far you have opened 100 chests and of those, 50 have in fact contained treasure! Out of these 50, 40 were trapped and you sustained some painful damage from opening them. Out of these 40 trapped chests, 28 were also locked. Now, of the 10 untrapped chests, three were locked. One would think that only chests with treasure would be trapped, but these pirates were truly nasty, they also put traps on chests with no treasure. Of the 50 chests containing no treasure, 20 were trapped! You forgot how many of the chests without treasure were locked, but you believe that the ratios were similar to the ones with treasure.
You have now discovered a new chest that you haven't seen before. When you take a careful look, you notice that it is locked. What is the chance that this chest will contain treasure? What is the chance that it will be trapped? You are not feeling so good after all the previous traps, so will it be worth opening this chest if your life is on the line?
Construct a Bayesian Network to answer these questions and discuss what you would do.
Develop a formula for computing the probability of a chest containing treasure, given that you observe whether it is locked or not. The formula must only use probabilities that are given in the Bayesian Network. (Hint: use Bayes' Law from the lecture) Check whether your formula (or the Bayesian Network) is correct by comparing the values you compute with the formula with those that you get from the simulator.
Hand in:
- the Bayesian network (e.g., a screenshot and the probability tables for all nodes of the network)
- the answers to the three questions in the text
- the formula