当前位置: X-MOL 学术arXiv.cs.MS › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Transforming Probabilistic Programs for Model Checking
arXiv - CS - Mathematical Software Pub Date : 2020-08-21 , DOI: arxiv-2008.09680
Ryan Bernstein, Matthijs Vákár, Jeannette Wing

Probabilistic programming is perfectly suited to reliable and transparent data science, as it allows the user to specify their models in a high-level language without worrying about the complexities of how to fit the models. Static analysis of probabilistic programs presents even further opportunities for enabling a high-level style of programming, by automating time-consuming and error-prone tasks. We apply static analysis to probabilistic programs to automate large parts of two crucial model checking methods: Prior Predictive Checks and Simulation-Based Calibration. Our method transforms a probabilistic program specifying a density function into an efficient forward-sampling form. To achieve this transformation, we extract a factor graph from a probabilistic program using static analysis, generate a set of proposal directed acyclic graphs using a SAT solver, select a graph which will produce provably correct sampling code, then generate one or more sampling programs. We allow minimal user interaction to broaden the scope of application beyond what is possible with static analysis alone. We present an implementation targeting the popular Stan probabilistic programming language, automating large parts of a robust Bayesian workflow for a wide community of probabilistic programming users.

中文翻译:

转换概率程序进行模型检查

概率编程非常适合可靠和透明的数据科学,因为它使用户可以用高级语言指定模型,而不必担心如何拟合模型的复杂性。概率程序的静态分析通过自动化耗时且易于出错的任务,为实现高级编程风格提供了更多机会。我们将静态分析应用于概率程序,以使两种关键模型检查方法的大部分自动化:先验预测检查和基于仿真的校准。我们的方法将指定密度函数的概率程序转换为有效的前向采样形式。为了实现这种转换,我们使用静态分析从概率程序中提取了因子图,使用SAT求解器生成一组建议有向无环图,选择一个将产生可证明正确的采样代码的图,然后生成一个或多个采样程序。我们允许最少的用户交互来扩大应用范围,而不仅仅是单独进行静态分析。我们提出了一种针对流行的Stan概率编程语言的实现,它为大量的概率编程用户社区自动化了鲁棒的贝叶斯工作流的大部分。
更新日期:2020-08-25
down
wechat
bug