一句话:提出半符号推断,使运行时自动实现 Rao-Blackwellized 粒子滤波,精确优先、必要时采样。
流式概率程序接收观测流并产生条件分布流,高效推断通常依赖 Rao-Blackwellized 粒子滤波(RBPF),但手工实现困难。本文提出半符号推断,使运行时推断系统自动实现 RBPF:系统操作符号分布,在可能时执行精确推断,在必要时退化为近似采样。为保证精确性,作者识别线性高斯、有限离散等闭族分布,并证明其上的推断精确。该方法实现在 ProbZelus 流式概率编程语言中。评估显示,在已有基准上相对最佳系统平均慢 1.6 倍,但在为利用闭族而设计的新挑战基准上获得 3×–87× 加速。
A streaming probabilistic program receives a stream of observations and produces a stream of distributions that are conditioned on these observations. Efficient inference is often possible in a streaming context using Rao-Blackwellized particle filters (RBPFs), which exactly solve inference problems when possible and fall back on sampling approximations when necessary. While RBPFs can be implemented by hand to provide efficient inference, the goal of streaming probabilistic programming is to automatically generate such efficient inference implementations given input probabilistic programs. In this work, we propose semi-symbolic inference, a technique for executing probabilistic programs using a runtime inference system that automatically implements Rao-Blackwellized particle filtering. To perform exact and approximate inference together, the semi-symbolic inference system manipulates symbolic distributions to perform exact inference when possible and falls back on approximate sampling when necessary. This approach enables the system to implement the same RBPF a developer would write by hand. To ensure this, we identify closed families of distributions – such as linear-Gaussian and finite discrete models – on which the inference system guarantees exact inference. We have implemented the runtime inference system in the ProbZelus streaming probabilistic programming language. Despite an average 1.6× slowdown compared to the state of the art on existing benchmarks, our evaluation shows that speedups of 3×-87× are obtainable on a new set of challenging benchmarks we have designed to exploit closed families.
@article{paperbot1429,
title = {Semi-symbolic inference for efficient streaming probabilistic programming},
author = {Eric Atkinson and Charles Yuan and Guillaume Baudart and Louis Mandel and Michael Carbin},
journal = {Proceedings of the ACM on Programming Languages},
volume = {6},
number = {OOPSLA2},
year = {2022},
doi = {10.1145/3563347}
}