ReactiveMP.jl

Julia package for reactive message passing Bayesian inference engine on a factor graph.

ReactiveMP.jl is a low-level inference engine that implements variational message passing on factor graphs. It is designed for advanced users who need fine-grained control over message passing, custom factor nodes, and custom update rules. For most use cases, the RxInfer.jl package provides a convenient model specification layer on top of ReactiveMP.jl.

Note

This package exports only an inference engine. For the full ecosystem with convenient model and constraints specification, see RxInfer.jl and its documentation.

Start here

If you are new to ReactiveMP.jl, read the Concepts section first. It explains the key ideas without assuming prior familiarity with the codebase:

  1. Factor graphs — what factor graphs are and how ReactiveMP.jl represents them.
  2. Message passing — how belief propagation and variational message passing work, and the reactive computation model.
  3. Inference lifecycle — the three phases every inference run goes through: construction, activation, and observation.

After reading the Concepts section, the Library section provides the full API reference for each component.

Ideas and principles behind ReactiveMP.jl

ReactiveMP.jl is a particular implementation of message passing on factor graphs, which does not create any specific message passing schedule in advance, but rather reacts on changes in the data source (hence reactive in the name of the package). The detailed explanation of the ideas and principles behind the Reactive Message Passing can be found in PhD dissertation of Dmitry Bagaev titled Reactive Probabilistic Programming for Scalable Bayesian Inference (link2, link3).

Examples and tutorials

The ReactiveMP.jl package is intended for advanced users with a deep understanding of message passing principles. Accessible tutorials and examples are available in the RxInfer documentation.

Table of Contents

Index