Wish list for BNT ------------------ Rewriting Matlab BNT functions into C ------------------------------------- - Loopy belief propagation belprop_inf_engine and pearl_inf_enigne should be sped up. As a test, reproduce the motion estimation results at www.merl.com/projects/scene_learning/index.html Pure Matlab programming - extensions to BNT ---------------------------------------- - Add better support for undirected graphical models and factor graphs. - Generalized linear models Integrate glmlab, so users can express generalized logistic regression, Possion models, etc. http://www.sci.usq.edu.au/staff/dunn/glmlab/glmlab.html Pierpaolo Brutti has already done a lot of this - see the softmax class. - Max a posteriori (MAP) learning Currently only tabular_CPD supports priors (Dirichlet). The gaussian_CPD class should support a Normal prior on the mean/weight matrix, and a Wishart prior on the covariance. This would eliminate the need for ugly hacks like resetting singular covariance matrices. ML estimation is currently done in BNT/CPDs/@gaussian_CPD/maximize_params.m This could be initially simplified by assumign there is at most 1 discrete parent. - Fully Bayesian modelling Implement a way to let the user represent parameters as random variables (nodes). These should have appropriate conjugate priors. The parameters will be parents to other CPDs. - Robust conditional Gaussian code BNT currently implements the Lauritzen92 method for CG potentials, which is numerically unstable and fairly slow. The Lauritzen99 method is much better, and should be implemented. (Shan.Huang@intel.com has made a first attempt, but it does not yet work.) - N most probable assignments The Viterbi algorithm computes the most probable assignment to the hidden nodes of an HMM. Nilsson98 generalized this to compute the top N most prob. assignments in an arbitrary BN, which should be implemented. - Time series stuff Currently it is not possible to predict future observed nodes using the DBN code! In fact, online filtering, fixed lag smoothing and prediction are all poorly supported. This should be fixed. - Variational algorithms Implement mean field and variational Bayes - Plates Add a way to specify plates (Buntine94), which might be useful for automatically partitioning training data, and is definitely useful for Bayesian methods. IO stuff -------- - BUGS interface Add a way to read/write BUGS files, and call BUGS from BNT. http://www.mrc-bsu.cam.ac.uk/bugs/ This can be used to do inference on fully Bayesian models. - File parser Ken Shan has written a Java program which converts a file stored in the Bayes net interchange format (BIF) to a file containing a sequence of matlab/BNT commands to construct an equivalent model http://www.digitas.harvard.edu/~ken/bif2bnt/ It would nice to be able to call this (or some other) parser directly from matlab. An ideal interface would be of the form bnet = load_bnet_from_file(filename) A similar function should be written for the XML-BIF format. The Bayes net repository discusses a variety of other popular file formats http://www.cs.huji.ac.il/labs/compbio/Repository/formats.html