Lenticulum.jl - a Lux.jl for Implicit Learning / relation learning

So this library deliberately mirrors Lux.jl however it is build on the more general idea of learning with parametrized functions not relations

Lux.jl Lenticulum.jl
architecture explicit implicit
Learner f_\theta: X\rightarrow Y R_\theta\subset Z
Directionality Directed: inputs → outputs must choose directions
Wiring directed acylic graph arbitrary graphs
inference function evaluation root finding
backpropagation autodiff implicit function theorem

The main workhorse of this library are diffusion models:
You can see some of the results in the tutorials already:
https://mathstruct.github.io/Lenticulum.jl/dev/
or you can even look into the corresponding theory wiki, which is an obsidian vault turned into a website:

It is of course still mostly AI generated, however the core idea is more than validated.

I will not register it anytime soon but feel free to try it out.

Feedback appreciated!

How does this compare to factor graph implementations (e.g. RxInfer.jl)?

  • It provides diffusion models as learnable factors.
  • It can provide message passing (including backpropagation) for arbitrary learnable factors.
    It is kinda more general than RxInfer but worse for everything RxInfer can do.

And you first need to choose all polarities of all factors before you can pass the message.

The categorical difference is that it is following the AutoBayes paper: AutoBayes: A Compositional Framework for Generalized Variational Inference so it’s way to describe a factor are parametrized statistical games.

I guess you meant “parameterised relations not functions”?

Exactly, seems I cannot change it anymore.