Graph Tracking in Dynamic Probabilistic Programs via Source Transformations
Many modern machine learning algorithms, such as automatic differentiation (AD) and versions of approximate Bayesian inference, can be understood as a particular case of message passing on some computation graph. To permit learning complex models, recent approaches to extract a computation graph focus on dynamic graphs using so-called operator overloading techniques. However, in contrast to source transformation, which is commonly used for static graphs, using operator overloading does not allow to analyse the graph and naturally leads to higher overhead costs. In this paper, we present a combination of source transformation and operator overloading, which allows extracting the underlaying computation graph of complex machine learning models, e.g.~Bayesian nonparametric models or models with stochastic control flow. To track the execution of operations in a machine learning model during run-time, we inject additional statements into the existing program at compile-time using the intermediate representation of the program. We introduce an extension of the well-known Wengert lists, used in many AD implementations, to record all necessary control flow information and any additional metadata. Finally, we discuss future applications of our approach, such as conjugacy exploitation in universal probabilistic programming languages, BUGS like Gibbs sampling for dynamic models and variational message-passing.
Code (0)
등록된 구현이 없습니다.
Tasks
Bayesian InferenceBIG-bench Machine LearningProbabilistic ProgrammingSimilar Papers 제목 키워드 기반
Translating Recursive Probabilistic Programs to Factor Graph Grammars
It is natural for probabilistic programs to use conditionals to express alternative substructures in models, and loops (recursion) to express repeated substructures in models. Thus, probabilistic programs with conditiona…
TranslationA Dynamic Programming Algorithm for Inference in Recursive Probabilistic Programs
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 an…
Probabilistic ProgrammingDynamicPPL: Stan-like Speed for Dynamic Probabilistic Models
We present the preliminary high-level design and features of DynamicPPL.jl, a modular library providing a lightning-fast infrastructure for probabilistic programming. Besides a computational performance that is often clo…
Probabilistic ProgrammingSound Abstraction and Decomposition of Probabilistic Programs
Probabilistic programming languages are a flexible tool for specifying statistical models, but this flexibility comes at the cost of efficient analysis. It is currently difficult to compactly represent the subtle in…
Probabilistic ProgrammingProbabilistic Neural Programs
We present probabilistic neural programs, a framework for program induction that permits flexible specification of both a computational model and inference algorithm while simultaneously enabling the use of deep neural n…
Program inductionQuestion Answering