ForneyLab.jl
ForneyLab.jl copied to clipboard
Computing marginals from update rules directly
In some situations, algorithms can be efficiently implemented by recursive updates that directly set marginals instead of sending messages. One example is nonlinear estimation with the unscented Kalman filter, where marginals are efficiently computed by recursive estimation: "On approximate nonlinear Gaussian message passing for factor graphs" (Petersen, 2018). (Note that all computations remain local to the node).
ForneyLab requires that update always explicitly compute messages. Currently, this is implemented by dividing the marginal by the incoming message, thus yielding an outbound message. (The multiplication of the incoming and outbound message yields the marginal.) In some situations however, this division can be costly and/or lead to improper outbound messages.
It would be beneficial for efficiency and stability to incorporate some mechanism that can cope with computing marginals directly from a node update rule. Alternative ideas are also welcome.