论文标题
动态PPPL:动态概率模型的类似stan的速度
DynamicPPL: Stan-like Speed for Dynamic Probabilistic Models
论文作者
论文摘要
我们介绍了DynamicPppl.jl的初步高级设计和功能,该模块化库为概率编程提供了闪电般的基础架构。除了通常比Stan更接近或更好的计算性能外,DynamicPPL还提供了直观的DSL,可以快速开发复杂的动态概率程序。 DynamicPPL完全用朱莉娅(Julia)(一种用于数值计算的高级动态编程语言),它继承了通过朱莉娅生态系统获得的丰富功能。由于DynamicPPPL是一个模块化的独立库,因此用Julia编写的任何概率编程系统(例如Turing.jl)都可以使用DynamicPppl来指定模型并跟踪其模型参数。 DynamicPPPL的主要特征是:1)基于元编程的DSL,用于使用基于直观的基于Tilde的符号指定动态模型; 2)用于在动态概率模型中跟踪RV的数据结构; 3)丰富的上下文调度系统允许在模型执行过程中量身定制的行为; 4)用于概率查询的用户友好语法。最后,我们在各种实验中表明,动态PPPL与Turing.jl结合使用,可以实现通常比Stan接近或更好的计算性能。
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 close to or better than Stan, DynamicPPL provides an intuitive DSL that allows the rapid development of complex dynamic probabilistic programs. Being entirely written in Julia, a high-level dynamic programming language for numerical computing, DynamicPPL inherits a rich set of features available through the Julia ecosystem. Since DynamicPPL is a modular, stand-alone library, any probabilistic programming system written in Julia, such as Turing.jl, can use DynamicPPL to specify models and trace their model parameters. The main features of DynamicPPL are: 1) a meta-programming based DSL for specifying dynamic models using an intuitive tilde-based notation; 2) a tracing data-structure for tracking RVs in dynamic probabilistic models; 3) a rich contextual dispatch system allowing tailored behaviour during model execution; and 4) a user-friendly syntax for probabilistic queries. Finally, we show in a variety of experiments that DynamicPPL, in combination with Turing.jl, achieves computational performance that is often close to or better than Stan.