We are trying to use MEBN's to represent a problem domain, and there are places where the interaction between nodes in our network can be represented by Noisy-Min/Max relationships. So we are wondering if it is possible to represent them in UnBBayes using the MEBN plugin. Any information or assistance would be appreciated, thanks,
I believe noisy Min/Max can be modeled by combining simple deterministic conditional probability tables (CPTs) and inhibitor nodes, like described in the introduction of http://www.pitt.edu/~druzdzel/psfiles/ecai06.pdf.
Well... Technically, if you know how to write a CPT of noisy min/max directly, you won't need the inhibitor nodes, but inhibitor nodes will help you a lot otherwise (e.g. maintainability of your model).
Consequently, you can just build your MTheory (the MEBN theory model) with inhibitor nodes, write a local probability distribution (LPD) script for all inhibitor nodes (in order to include desired amount of noise), and finally write a LPD for deterministic min/max, in order to result in the correspondent noisy max/min model in the grounded Bayes net (i.e. the SSBN that will be generated by querying some resident node).
Please, find the attached file for a simple example of how to write noisy-max LPD, with inhibitor nodes to represent noise (although in this example the inhibitor nodes did not actually include any noise, so you'll need to adapt their LPDs if you want to insert noise). Querying "NoisyMaxNode(me)" should generate the complete SSBN.
Since I did not include the .ubf file (which stores position of nodes), all nodes will be stacked at the upper left corner, so I think you'll need to drag them in order to have a good visualization.
There are two known conditions that will certainly make the current implementation of UnBBayes-MEBN unable to handle your noisy min/max model. In such cases, you'll need to implement some new code. They are:
1 - If the possible states of a resident node is NOT known in advance.
2 - If you want to use advanced routines to handle local dependence, in order to optimize noisy min/max for large/complex network.
In case 1, we cannot write an LPD script anyway, because LPD scripts for nodes with unknown states are undefined by the specification.
Therefore, you'll need to write some customized code in order to automatically generate the LPDs (or the CPTs in grounded network), like I did manually in the attached file. The class you'll probably need to extend is "unbbayes.prs.mebn.compiler.Compiler".
The case 2 is because the algorithm that handles the grounded Bayes net (it is Frank Jensen's Junction Tree algorithm) assumes that all CPTs are generic, not something specific like noisy min/max, so it considers whole joint space of the parent variables, thus it does not make any optimization related to the type of the function you are representing in the CPTs. Consequently, if your model has plenty of parents, the joint space will grow exponentially and eventually slow down the performance, or exceed your available memory.
If you want to solve this, you'll need to implement some new routines that optimizes inference for specific types of CPTs (like noisy min/max), and incorporate it in the Junction tree algorithm. The classes you'll probably need to extend are those related with "unbbayes.prs.bn.JunctionTreeAlgorithm".
Log in to post a comment.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.