Tractables/ProbabilisticCircuits.jl

Juice v0.4 refactor

khosravipasha opened this issue · 0 comments

  • Param Learning

    • EM
    • EM CPU
    • Regurlarization (Softness)
    • SGD version. Best option seems to be to customize rrules from ChainRules.jl. Then can grad/optimize easily with Zygote or Flux.
  • Queries/Transformation for the new BitCircuit type. CPU and CUDA versions.

    • EVI
    • MAR
    • MAP (approx)
    • Sample
    • Conditionals
    • All marginals
    • Marginal MAP algorithm. Would need to rethink the algorithm a bit since now have any input types.
  • Structures

    • Splits, and clones
    • Learn structures from missing data
    • HCLT
    • Strudel
    • RAT-SPN with option to specify leaf type
    • PD Structures for images?
    • Other common structures (fully factorized, NB, HMM, markov chains, etc)
  • Tests

    • Tests for EM learning with missing in the inputs
    • Test with different input types for likelihood, flow, MAP, Sample, etc
      • Binomial
      • Categorical
      • Indicator
    • Better small circuits for test cases, little_4var might be too simple.
    • Test for conditional sampling of circuits
  • Docs

  • Misc

  • IO

    • DensityEstimationData.jl
    • JuiceModelZoo.jl
    • Read/Write of circuits text format.
      • Faster Version
      • Support direct read/write to zipped format gzip, etc
    • Binary format for circuit for more efficient saving
    • Zoo related IO; zoo_psdd, zoo_pc, etc.
    • TikZ plotting now broken, need slight modification