一句话:将符号化分解算法扩展到概率程序中的数组,实现无需展开循环的提升式条件化。
概率编程系统通过自动化推断提升机器学习模块化,而 Shan 与 Ramsey 的近期工作用符号程序变换和测度论分解自动完成条件化,但仅支持单个标量变量。本文把分解算法扩展到概率程序中的数组,提出“提升式分解”:符号化处理重复而无需展开循环,并设计索引变量语言以跟踪不同数组层级上的表达式。评估表明,该方法适用于任意大小的独立随机选择数组,条件化步骤耗时与选取元素所需索引数量成线性关系。
Probabilistic programming systems make machine learning more modular by automatinginference. Recent work by Shan and Ramsey makes inference more modular by automatingconditioning. Their technique uses a symbolic program transformation that treats conditioning generally via the measure-theoretic notion ofdisintegration. This technique, however, is limited to conditioning a single scalar variable. As a step towards modular inference for realistic machine learning applications, we have extended the disintegration algorithm to symbolically condition arrays in probabilistic programs. The extended algorithm implementslifted disintegration, where repetition is treated symbolically and without unrolling loops. The technique uses a language ofindex variablesfor tracking expressions at various array levels. We find that the method works well for arbitrarily-sized arrays of independent random choices, with the conditioning step taking time linear in the number of indices needed to select an element.
@article{NarayananS17,
title = {Symbolic conditioning of arrays in probabilistic programs},
author = {Praveen Narayanan and Chung-chieh Shan},
journal = {Proceedings of the ACM on Programming Languages},
volume = {1},
number = {ICFP},
year = {2017},
doi = {10.1145/3110255}
}