Open trappmartin opened 1 year ago
Hi, Martin, we do have some implemeted, but might not be ported to the latest v0.4.0
version yet. Is there an specific stucture learning algorithm you were looking for?
For example, for Strudel strucure learning we have a seperate repo here https://github.com/UCLA-StarAI/Strudel/
Though, most of the functionality of Strudel already exists in ProbCircuits.jl
v.0.3.3
. (Few examples here https://juice-jl.github.io/ProbabilisticCircuits.jl/v0.3/manual/learning/). Version v0.3.3
is stable but there was a major refactoring between that and 0.4 so not sure if strudel works in v0.4
.
This notebook also has few examples of structure learning at the end (https://github.com/Juice-jl/JuiceExamples/blob/master/Juice-Example.ipynb).
Hi, Thanks for the reply.
I was looking for an implementation of the structure learning approach by Yitao Liang (http://starai.cs.ucla.edu/papers/LiangUAI17.pdf). I like that this formulates an explicit score function that is optimised. I think this could easily be extended by using a Bayesian score. For example, one could implement the Bayesian Dirichlet score family that has been used in Bayesian networks. I have some nice results on the connection between deterministic circuits treated in a Bayesian framework and Pólya tree processes. This connection suggests certain prior configurations should be used when doing Bayesian learning of these models.
I will have to read the strudel paper again, but from what I remember, this does not formulate an explicit score function for a structure but uses some heuristics to optimise the structure.
That is a very intereting connection.
The latest version of LearnPSDD we have is written in Scala. Original paper was in Python https://github.com/UCLA-StarAI/LearnPSDD, and the scala version is here: https://github.com/YitaoLiang/Scala-LearnPsdd.
Strudel was an attemp to bring something like the LearnPSDD avaialble in our Juice library, at the same time we also wanted to scale up the algortihm so it became like what Strudel is doing now. We probably have most of the ingredients needed for LearnPSDD in julia version like split and clones. Both LearnPSDD and Strudel start with some initial structure (which can be learned in different ways for example by learning a chow-liu tree bayesian network and then compiling it into a determnistic circuit), and then both greedily grow the circuit but in slightly different ways.
That sounds promising, thanks!
Hi, are there any plans to implement existing structure learning algorithms for deterministic circuits in the future?
Thanks, Martin