ReactiveMP.jl
Julia package for automatic Bayesian inference on a factor graph with reactive message passing.
Given a probabilistic model, ReactiveMP allows for an efficient message-passing based Bayesian inference. It uses the model structure to generate an algorithm that consists of a sequence of local computations on a Forney-style factor graph (FFG) representation of the model.
ReactiveMP.jl has been designed with a focus on efficiency, scalability and maximum performance for running inference with message passing. It is worth noting that this package is aimed to run Bayesian inference for conjugate state-space models. For these types of models, ReactiveMP.jl takes advantage of the conjugate pairings and beats general-purpose probabilistic programming packages easily in terms of computational load, speed, memory and accuracy. On the other hand, sampling-based packages like Turing.jl are generic Bayesian inference solutions and are capable of running inference for a broader set of models.
Package Features
- User friendly syntax for specification of probabilistic models.
- Automatic generation of message passing algorithms including
- Support for hybrid models combining discrete and continuous latent variables.
- Support for hybrid distinct message passing inference algorithm under a unified paradigm.
- Evaluation of Bethe free energy as a model performance measure.
- Schedule-free reactive message passing API.
- High performance.
- Scalability for large models with millions of parameters and observations.
- Inference procedure is differentiable.
- Easy to extend with custom nodes.
Resources
- For an introduction to message passing and FFGs, see The Factor Graph Approach to Model-Based Signal Processing by Loeliger et al. (2007).
How to get started?
Head to the Getting started section to get up and running with ForneyLab. Alternatively, explore various examples in the documentation. For advanced extensive tutorial take a look on Advanced Tutorial.
Table of Contents
- Getting started
- Advanced Tutorial
- Model Specification
- Constraints Specification
- Meta Specification
- Examples overview
- Messages implementation
- Nodes implementation
- Math utilities
- Contribution guidelines
Index
ReactiveMP.huge
ReactiveMP.tiny
ReactiveMP.∞
ReactiveMP.AbstractFormConstraint
ReactiveMP.AbstractMessage
ReactiveMP.AdditiveCouplingLayer
ReactiveMP.CompiledFlowModel
ReactiveMP.CompositeFormConstraint
ReactiveMP.Deterministic
ReactiveMP.DistProduct
ReactiveMP.FixedMarginalFormConstraint
ReactiveMP.FlowMeta
ReactiveMP.FlowModel
ReactiveMP.FormConstraintCheckEach
ReactiveMP.FormConstraintCheckLast
ReactiveMP.FunctionalIndex
ReactiveMP.HugeNumber
ReactiveMP.InfCountingReal
ReactiveMP.InferenceResult
ReactiveMP.InputLayer
ReactiveMP.Message
ReactiveMP.PermutationLayer
ReactiveMP.PlanarFlow
ReactiveMP.PointMassFormConstraint
ReactiveMP.ProdAnalytical
ReactiveMP.ProdFinal
ReactiveMP.ProdGeneric
ReactiveMP.ProdPreserveType
ReactiveMP.ProdPreserveTypeLeft
ReactiveMP.ProdPreserveTypeRight
ReactiveMP.RadialFlow
ReactiveMP.SampleListFormConstraint
ReactiveMP.SkipIndexIterator
ReactiveMP.Stochastic
ReactiveMP.TinyNumber
ReactiveMP.UndefinedNodeFunctionalForm
ReactiveMP.UnspecifiedFormConstraint
ReactiveMP.ValidNodeFunctionalForm
Base.prod
ReactiveMP.as_node_functional_form
ReactiveMP.compile
ReactiveMP.constrain_form
ReactiveMP.deep_eltype
ReactiveMP.default_form_check_strategy
ReactiveMP.default_prod_constraint
ReactiveMP.inference
ReactiveMP.is_point_mass_form_constraint
ReactiveMP.isdeterministic
ReactiveMP.isstochastic
ReactiveMP.make_form_constraint
ReactiveMP.prod_analytical_rule
ReactiveMP.resolve_prod_constraint
ReactiveMP.sdtype
ReactiveMP.skipindex