可编程推理的效果处理器

摘要:概率编程的推理算法是具有许多移动部分的复杂命令式程序。高效的推理通常需要将算法定制为特定的概率模型或问题,有时被称为推理编程。大多数推理框架是使用缺乏对副作用有一个规范化处理的语言实现的,这可能导致整体的实现中算法的结构被模糊化,并且推理编程变得困难。具有类型化效果的函数式编程为可编程推理提供了一个更结构化和模块化的基础,到目前为止,单子转换器是主要的结构机制。 本文介绍了一种基于代数效应的推理编程的替代方法。使用效果签名指定算法的关键操作,并使用效果处理器模块化地解释这些操作的具体变体,我们开发了两种抽象算法或推理模式,代表了两类重要的推理:Metropolis-Hastings算法和粒子滤波算法。我们展示了我们的方法如何揭示算法的高级结构,并且如何轻松地调整和重新组合它们的部分以构建新的变体。我们将这两种推理模式实现为Haskell库,并讨论代数效应相对于单子转换器作为模块化命令式算法设计的结构机制的利与弊。

作者:Minh Nguyen, Roly Perera, Meng Wang, Steven Ramsay

论文ID:2303.01328

分类:Programming Languages

分类简称:cs.PL

提交时间:2023-07-20

PDF 下载: 英文版 中文版pdf翻译中