A Dynamic Programming Algorithm for Inference in Recursive Probabilistic Programs
Abstract
We describe a dynamic programming algorithm for computing the marginal distribution of discrete probabilistic programs. This algorithm takes a functional interpreter for an arbitrary probabilistic programming language and turns it into an efficient marginalizer. Because direct caching of sub-distributions is impossible in the presence of recursion, we build a graph of dependencies between sub-distributions. This factored sum-product network makes (potentially cyclic) dependencies between subproblems explicit, and corresponds to a system of equations for the marginal distribution. We solve these equations by fixed-point iteration in topological order. We illustrate this algorithm on examples used in teaching probabilistic models, computational cognitive science research, and game theory.
- Publication:
-
arXiv e-prints
- Pub Date:
- June 2012
- DOI:
- 10.48550/arXiv.1206.3555
- arXiv:
- arXiv:1206.3555
- Bibcode:
- 2012arXiv1206.3555S
- Keywords:
-
- Computer Science - Artificial Intelligence;
- Computer Science - Data Structures and Algorithms
- E-Print:
- Second Statistical Relational AI workshop at UAI 2012 (StaRAI-12)