Monday, July 11, 2005

There had been a bit of a hiatus in my posting, for several reasons which i wont mention here. But I have decided to stick with and so the blogs should be coming more frequently now.

I have posted my SoC proposal at

Since then i have decided to make some changes. First, I am going to go for a more Python based approach. Originally i was going to focus on wrapping the Intel PNL libraries, and now i am going to make this a python implementation from the ground up, and then go back through later and reimplement python code with C code to speed things up.

I am currently traveling, so i am been spending most of my time reading and thinking about the details of my design. I am opting for the relatively standard method of inference whereby i decompose the bayes net to a join tree and perform inference on the converted tree rather than directly on the bayes net.

This has taken a little bit of reading, because as i realized most of my classes at berkeley we did not worry too much about the efficiency of implementation but more about the theory of the inference. And as such our implementations were to apply the inference algorithms more directly to the bayes net. In the case of Approximate inference we sampled the network directly, and in the case of exact inference we did a topological sort and then computed the marginals in a top down manner.

I am planning to represent the graphs as an adjacency matrix. The discrete distributions as a table. Then i am also going to have a class to represent "potentials" however, in the simple discrete distribution case, the potentials will be the same as the distribution itself, so there will not be any need to convert from a distribution to a potential. I have decided to focus on discrete stuff first and get a working package with only discrete distributions, simple exact inference using enumeration. Then i am going to add learning, and then start going back through and adding further distributions, and inference algorithms.

My plan is to have a very basic version of this working by August 1st, which gives me a month to add distributions, algorithms, and structural learning.

I am trying (even while i am traveling) to have a 1 week cycle, however, i can't fully test my stuff as i travel (i am only using a pocket pc version of python), so i am implementing but with little testing. So probably what i am going to aim to do is spend the rest of the trip implementing a skeleton for the basic structure, and then when i get home on July 18, I will start testing the skeleton and fixing, with the aim to be done by August 1st, and then have a true 1 week cycle from there on out.


Post a Comment

<< Home