高阶概率编程语言的悬挂分析和选择性继续传递风格
摘要:概率编程语言(PPL)通过将模型与推断算法分离,相对容易地编码和自动解决统计推断问题。解决推断问题的常见选择是使用蒙特卡洛推断算法。对于高阶函数式PPL,这些推断算法依赖于执行挂起来完成推断,而最常用的方式是通过完整的传递样式(CPS)转换实现。然而,PPL编译器的标准CPS转换会引入显著的开销,这个问题社区通常忽视了。最先进的解决方案要么进行完全的CPS转换,但由于不必要的闭包分配而导致性能下降,要么使用高效但复杂的底层解决方案,但这些解决方案通常在高级语言中不可用。与先前的工作相比,我们开发了一种既高效又易于实现的新方法,使用高阶语言设计了一种新颖的静态挂起分析技术,根据特定的推断算法确定程序中需要挂起的部分。分析结果仅在必要时选择性地进行CPS转换。我们正式证明了挂起分析的正确性,并在Miking CorePPL编译器中实现了挂起分析和选择性CPS转换。我们对来自系统发生学、流行病学和主题建模的真实世界模型上的大量蒙特卡洛推断算法进行了评估。评估结果显示,在所有模型和推断算法上都有显著的改进。
作者:Daniel Lund''en, Lars Hummelgren, Jan Kudlicka, Oscar Eriksson, David Broman
论文ID:2302.13051
分类:Programming Languages
分类简称:cs.PL
提交时间:2023-02-28