Deep Probabilistic Programming Languages: A Qualitative Study
IBM Research(IBM研究公司/IBM研究(注:IBM Research通常译为IBM研究,属于企业研究机构,按要求提取到公司级别))
深度概率程序设计语言试图将深度学习的优势与概率程序设计语言的优势结合起来。如果成功,这将是机器学习和程序设计语言的一大步。不幸的是,到目前为止,这种新的语言很难使用和理解。本文通过解释深度概率程序设计语言直接解决了这个问题,并通过描述其当前的优势和劣势间接解决了这个问题。
2018-04-17 cs.AI cs.PL
Knowledge Compilation with Continuous Random Variables and its Application in Hybrid Probabilistic Logic Programming
KU Leuven(鲁汶大学)
在概率推理中,传统的离散域已被提升到包含额外连续随机变量的混合域。然而,在混合域中的推理通常需要对离散或连续随机变量的推理进行权衡。我们介绍了一种新的方法,加权模型集成和代数模型计数的基础上,规避这些权衡。然后,我们展示了它如何支持知识编译和精确的概率推理。此外,我们引入了混合概率逻辑程序设计语言HAL-ProbLog,ProbLog的扩展,我们适用于我们的推理方法。
2018-07-12 cs.AI cs.LO cs.PL
A Compilation Target for Probabilistic Programming Languages
University of Oxford(牛津大学)
通过创造性地使用标准化的操作系统功能,包括进程、分叉、互斥和共享存储器,可以用任何程序设计语言来实现诸如用于概率编程的顺序蒙特卡罗和粒子马尔可夫链蒙特卡罗的前向推理技术。利用这一点,我们已经定义,开发和测试的概率程序设计语言中间表示语言,我们称之为概率C,它本身可以被编译成机器码的标准编译器和链接到操作系统库产生一个有效的,可扩展的,便携式的概率编程编译目标。这为优化概率编程系统开辟了一条新的硬件和系统研究路径。
2014-07-10 cs.AI cs.PL stat.ML
Multi-Language Probabilistic Programming
本文提出MultiPPL,一种概率多语言,实现两种概率编程语言的互操作,结合精确离散推理与近似重要性采样,支持异构概率程序的推理,并证明其可靠性。
2025-02-26 cs.PL
Design and Implementation of Probabilistic Programming Language Anglican
Anglican是一个概率编程系统,旨在与Clojure和其他JVM语言互操作。我们介绍了程序设计语言英国,概述了我们的设计选择,并深入讨论了英国的语言和运行时,包括基于宏的编译,扩展的CPS为基础的评估模型,概率范式,如分布,随机过程和推理算法的功能表示的实现。我们表明,概率函数语言可以有效地实现,并与传统的函数语言紧密集成,只有适度的计算开销。我们还展示了如何先进的概率建模概念自然映射到功能的基础。
2016-11-30 cs.PL
Commutative Monads for Probabilistic Programming Languages
在支持概率选择的程序设计语言的语义中,一个长期存在的公开问题是在DCPO范畴上找到概率的交换单子。在本文中,我们提出了三个这样的单子和一个一般的建设,以寻找更多。我们将展示如何使用这些单子提供一个健全的和足够的指称语义的概率定点演算(PFPC)-调用值简单类型的λ演算与混合方差递归类型,长期递归和概率选择。我们还表明,在特殊的情况下,我们认为连续dcpo的,那么所有三个单子符合估值单子的琼斯和我们充分的诱导Eilenberg-Moore类别表明,他们都同构的范畴连续Kegelspitzen的凯梅尔和Plotkin。
2021-01-31 cs.LO cs.PL math.CT
Modular probabilistic programming with algebraic effects (MSc Thesis 2019)
University of Edinburgh(爱丁堡大学)
本文提出Koka Bayes库,结合代数效应处理与模块化设计,解决概率编程中推理算法的模块化实现问题。
2024-12-18 cs.PL stat.CO
Compositional Stochastic Modeling and Probabilistic Programming
概率规划是一种通过从离散时间动态切换到连续时间动态来进行随机建模的组合方法。在连续时间中,一个算子代数语义是可用的,其中并行进行的进程(可能相互作用)具有求和的时间演化算子。在此基础上,可以系统地导出用于模拟、推理和模型简化的算法。这些有用的结果可能在计算科学、机器学习及其他领域产生深远的影响。混合成分随机建模/概率编程方法也是可能的。
2012-12-03 cs.AI cs.PL
Conditioning in Probabilistic Programming
我们调查的语义复杂性的条件,概率规划的一个主要特点。我们提供了一个最弱的(自由)前置条件(w(l)p)的基本概率程序设计语言pGCL扩展条件的语义。我们证明了定量最弱(自由)的先决条件与条件(自由)期望回报的马尔可夫链,并表明语义条件是一个真正的保守扩展。我们提出了两个程序转换,完全消除任何程序的条件,并证明其正确性使用的w(l)p-语义。最后,我们展示了如何的w(l)p-语义可以用来确定条件概率的参数匿名协议,并表明,一个归纳的w(l)p-语义的条件在非确定性的概率程序不存在。
2015-04-01 cs.PL
Multi-Model Probabilistic Programming
Columbia University(哥伦比亚大学)
概率编程使得将概率模型表示为程序变得容易。然而,建立个体模型只是概率建模的一个步骤。概率建模更广泛的挑战是理解和导航替代模型的空间。目前还没有好的方法来表示这些替代模型的空间,尽管它们发挥着核心作用。我们提出了一个扩展的概率规划,让每个程序表示一个网络的相互关联的概率模型。我们给出了这些多模型的概率程序,收集有效的算法网络的模型操作,并建立在流行的概率程序设计语言斯坦顶部的一个例子实现的正式语义。这种模型网络表示打开了许多门,包括模型空间中的搜索和自动化,模型开发的跟踪和通信,以及显式建模器自由度以减轻p-hacking等问题。我们演示了自动模型搜索和模型开发跟踪使用我们的斯坦实现,我们提出了许多可能的应用。
2022-08-12 cs.LG cs.PL stat.ME
CoreDPPL: Towards a Sound Composition of Differentiation, ODE Solving, and Probabilistic Programming
本文提出 CoreDPPL,为融合概率编程、一等微分与 ODE 的高阶 DPPL 核心建立类型化形式语义,并在 Agda 中机械化证明其可靠性。
2025-03-18 cs.PL
Exact Recursive Probabilistic Programming
对递归数据的递归调用对于生成概率分布是有用的,并且概率编程允许以模块化和直观的方式来表达对这些分布的计算。精确推理也是有用的,但不幸的是,现有的概率程序设计语言不对递归数据上的递归调用执行精确推理,迫使程序员手动编写许多应用程序。我们介绍了一种概率语言,其中各种各样的递归可以自然地表达,并进行准确的推理。例如,概率下推自动机及其推广易于表达,并且可以自动导出多项式时间解析算法。我们使用与去功能化和再功能化相关的程序转换来消除递归数据类型。这些变换由线性类型系统保证是正确的,并且如果存在变换的成功选择,则保证由贪心算法找到。
2023-03-27 cs.PL
Reactive Graphs for Efficient Markov Chain Monte Carlo Inference in Probabilistic Programming Languages
KTH Royal Institute of Technology(瑞典皇家理工学院);Swedish Museum of Natural History(瑞典自然历史博物馆)
提出一种自动将概率程序转换为动态反应图的方法,显式表示数据依赖,使得MCMC提议仅重新计算依赖已重绘随机变量的部分,从而提升推断效率。
2026-06-29 cs.PL
Semantics for Variational Quantum Programming
我们考虑一个程序设计语言,可以操纵经典和量子信息。我们的语言是类型安全的,设计用于变分量子编程,这是一个混合的经典量子计算范式。该语言的经典子系统是概率定点演算(PFPC),它是一个具有混合方差递归类型、项递归和概率选择的λ演算。量子子系统是一个可以操纵量子信息的一阶线性系统。这两个子系统通过混合的经典/量子项相关联,这些项指定了经典概率效应如何由量子测量引起,以及相反地,经典(概率)程序如何影响量子动力学。我们还描述了一个声音和计算足够的指称语义的语言。经典的概率效应解释使用最近描述的交换概率单子DCPO。量子效应和资源被解释在一类冯诺依曼代数,我们显示是丰富的(连续)域。这种强烈的丰富感使我们能够开发新的语义方法,我们用来解释量子和经典概率效应之间的关系。通过这样做,我们提供了第一个指称的分析,涉及模型的经典概率规划模型的量子规划。
2021-07-28 cs.LO cs.PL math.CT
Expectation Programming: Adapting Probabilistic Programming Systems to Estimate Expectations Efficiently
University of Oxford(牛津大学)
我们表明,概率编程系统(PPS)的标准计算管道可能是低效的估计预期,并引入期望编程的概念来解决这个问题。在期望编程中,后端推理引擎的目的是直接估计程序的期望返回值,而不是近似它们的条件分布。这种区别虽然微妙,但使我们能够通过根据我们关心的期望量身定制计算来实现标准PPS计算管道的实质性性能改进。我们实现了一个特定的实例,我们的期望编程的概念,期望编程图灵(EPT),通过扩展PPS图灵允许所谓的目标感知推理自动运行。然后,我们从理论上验证了EPT的统计合理性,并表明它在实践中提供了大量的经验收益。
2022-06-21 cs.LG cs.PL
Probabilistic programming interfaces for random graphs: Markov categories, graphons, and nominal sets
本文研究图上概率编程语言的语义模型,建立其与图子的联系,证明良态等式理论与图子一一对应,并通过Markov范畴、测度论概率和名义集合三种构造证明所有图子均源于等式理论,从而构建了图概率编程新模型。
2023-12-28 cs.LO cs.PL math.PR
Spreadsheet Probabilistic Programming
Invrea(Invrea公司)
电子表格工作簿内容是简单的程序。正因为如此,概率编程技术可以用于执行电子表格计算的贝叶斯反演。更重要的是,电子表格应用程序(如Microsoft Excel)中的现有执行引擎可以仅使用内置功能来完成此任务。我们证明了这一点,通过开发一个本地的Excel实现的粒子马尔可夫链蒙特卡罗变量和黑盒变分推理的电子表格概率编程。由此产生的引擎在电子表格计算上执行概率一致的推理,特别是包括包含用户定义的黑盒函数的电子表格。选择集成我们在本文中描述的功能的电子表格引擎将使其用户能够轻松开发概率模型,并通过简单的用户界面机制包含实际值来随着时间的推移维护它们。对于电子表格最终用户来说,这意味着可以访问高效且概率一致的概率建模和推理,用于不确定性下的各种决策。
2016-06-14 cs.AI cs.PL
Slice Sampling for Probabilistic Programming
University of Cambridge(剑桥大学)
我们介绍了第一个,通用的,切片采样推理机的概率程序。该引擎作为StocPy的一部分发布,StocPy是一种新的图灵完备概率程序设计语言,可作为Python库使用。我们提出了一个transdimensional概括切片采样,这是必要的推理机工作的痕迹与不同数量的随机变量。我们表明,StocPy相比其他PPL的灵活性和可用性方面,切片采样可以优于以前介绍的推理方法。我们的实验包括逻辑回归,HMM和贝叶斯神经网络。
2015-01-20 cs.AI cs.PL
Towards representation agnostic probabilistic programming
Institute for Visual and Analytic Computing(视觉与分析计算研究所)
本文提出了一种因素抽象方法,实现表示无关的概率编程,允许在统一框架中混合不同表示进行复杂模型推断。
2025-12-25 cs.AI cs.PL
Compiling Stan to Generative Probabilistic Languages and Extension to Deep Probabilistic Programming
INRIA Paris(法国国家信息与自动化研究所巴黎);École normale supérieure – PSL University(巴黎高等师范学院 – PSL大学);UMass Amherst(马萨诸塞大学阿默斯特分校);MIT-IBM Watson AI Lab(MIT-IBM沃森人工智能实验室);IBM Research(IBM研究院)
Stan是一种概率程序设计语言,在统计学社区中很流行,具有用于表达概率模型的高级语法。Stan在本质上不同于Church、Anglican或Pyro等生成概率程序设计语言。本文提出了一种将任意Stan模型编译成生成语言的综合编译方案,并证明了其正确性。我们使用我们的编译方案为Stanc3编译器构建两个新的后端,目标是Pyro和NumPyro。实验结果表明,NumPyro后端在26个基准测试中的几何平均值比Stan提高了2.3倍。在Pyro的基础上,我们扩展了Stan,支持显式变分推理指南和深度概率模型。这样,熟悉Stan的用户就可以访问新功能,而无需学习一门全新的语言。
2021-04-11 cs.AI cs.LG cs.PL
Bachelor's thesis on generative probabilistic programming (in Russian language, June 2014)
这篇用俄语撰写的学士论文致力于机器学习和人工智能领域的一个相对较新的方向,即概率编程。本文简要介绍了已经存在的概率程序设计语言:Church,Venture和Anglican。它还描述了第一次实验的结果,自动归纳的概率程序。该论文于2014年6月提交,部分符合俄罗斯克拉斯诺亚尔斯克西伯利亚联邦大学数学和计算机科学系数学理学学士学位的要求。本文中所描述的工作已经在2012-2014年由作者的同事和他自己在麻省理工学院和牛津大学进行。
2016-01-26 cs.AI cs.PL
Pyro: Deep Universal Probabilistic Programming
Uber AI Labs(优步人工智能实验室);Uber Technologies, Inc.(优步科技公司);Stanford University(斯坦福大学)
Pyro是一种基于Python的概率程序设计语言,作为在AI研究中开发高级概率模型的平台。为了扩展到大型数据集和高维模型,Pyro使用基于PyTorch(一种现代GPU加速的深度学习框架)的随机变分推理算法和概率分布。为了适应复杂或特定于模型的算法行为,Pyro利用Poutine,这是一个用于修改概率程序行为的可组合构建块库。
2018-10-18 cs.LG cs.PL stat.ML
Real-Time Probabilistic Programming
本文提出实时概率编程语言概念并实现ProbTime,结合概率编程与实时原语,在汽车测试平台上验证其可用性,并提出公平性引导方法在可调度性约束下自动优化系统精度。
2024-07-08 cs.PL
MultiVerse: Causal Reasoning using Importance Sampling in Probabilistic Programming
Babylon Health(巴比伦健康);University of Oxford(牛津大学);University College London(伦敦大学学院)
我们详细说明使用重要性采样的因果推理,特别是反事实推理。我们展示了如何在概率编程中本地实现这一点。通过考虑反事实查询的结构,可以显著优化推理过程。我们还考虑设计选择,以实现进一步优化。我们介绍了MultiVerse,一个概率编程的原型引擎近似因果推理。我们提供了实验结果,并与Pyro,现有的概率编程框架与一些因果推理工具进行比较。
2020-01-28 cs.AI cs.LG cs.PL
Static Analysis for Probabilistic Programs
概率编程是统计机器学习的一个强大的抽象。将静态分析方法应用于概率程序,可以优化学习过程,自动验证模型的性质,改善用户编程界面。这个领域的静态分析的概率规划(SAPP)是年轻的和无组织的,由一个星座的技术与各种目标和限制。这项工作的主要目的是在一个组织结构和背景下综合SAPP领域的主要贡献。我们提供了技术背景的静态分析和概率编程,建议概率程序设计语言的功能分类法,并分析在SAPP领域的主要思想的适用性。我们的结论是,虽然目前的概率程序的静态分析技术有实际的局限性,有一些未来的方向具有很大的潜力,以改善统计机器学习的状态。
2019-09-10 cs.LG cs.PL stat.ML
VAEL: Bridging Variational Autoencoders and Probabilistic Logic Programming
University of Bologna(博洛尼亚大学);KU Leuven(鲁汶大学)
我们提出了VAEL,神经符号生成模型集成变分自编码器(VAE)与概率逻辑(L)编程的推理能力。除了标准的潜在子符号变量,我们的模型利用概率逻辑程序来定义一个进一步的结构化表示,这是用于逻辑推理。整个过程是端到端的差异化。一旦经过训练,VAEL可以通过(i)利用神经组件中编码的先前获得的知识以及(ii)在结构化潜在空间上利用新的逻辑程序来解决新的看不见的生成任务。我们的实验提供了支持的好处,这种神经符号积分的任务泛化和数据效率。据我们所知,这项工作是第一个提出一个通用的端到端框架集成概率逻辑编程到一个深生成模型。
2022-05-25 cs.LG cs.PL
Probabilistic Programming with Exact Conditions
本文提出精确条件化范式,对比似然评分,在离散和高斯概率下用CD范畴给出语义,建立范畴与编程语言的对应。
2023-12-28 cs.LO cs.PL math.PR
A domain-theoretic framework for conditional probability and Bayesian updating in programming
本文提出一个用于概率编程的域论框架,通过事件可观测概念给出条件概率的构造性定义并解决可计算性挑战,研究了两种计算方法并证明其一致性,为概率编程语言中条件概率的实现提供了严格基础。
2025-02-02 cs.LO cs.PL
Bottom-Up Grounding in the Probabilistic Logic Programming System Fusemate
Data61/CSIRO(联邦科学与工业研究组织Data61部门)
本文介绍概率逻辑编程系统Fusemate,其采用自底向上实例化结合查询引导相关性测试控制基例规模,实验显示其性能可比肩甚至优于现有先进系统,高分支问题上优势明显。
2023-08-26 cs.AI cs.LO cs.PL
Reactive Probabilistic Programming
同步建模是程序设计语言(如Lustre、Esterel或Scade)的核心,通常用于实现安全关键控制软件,例如,飞机的电传操纵和发动机控制。然而,到目前为止,这些语言对建模不确定性(软件环境或行为的概率方面)的现代支持有限,尽管建模不确定性是设计控制系统时的主要活动。在本文中,我们提出了第一个同步概率程序设计语言ProbZelus。ProbZelus保守地提供了编写控制软件的同步语言的设施,具有概率结构来建模不确定性并执行循环中的推理。我们提出的语言的设计和实现。我们提出了概率流函数的测度论语义和一个简单的类型纪律来分离确定性和概率表达式。我们展示了一个语义保持编译成一个一阶函数语言,适合于一个简单的演示推理算法的流模型。我们还重新设计了延迟采样推理算法,以提供高效的流式推理。结合对几个反应式应用程序的评估,我们的结果表明,ProbZelus可以设计反应式概率应用程序和高效的有界内存推理。
2020-04-09 cs.PL
Program Analysis of Probabilistic Programs
University of Edinburgh(爱丁堡大学)
概率编程是一个不断发展的领域,它通过将概率建模与概率推理分离,努力使统计分析更容易获得。在实践中,这种脱钩是困难的。没有一种推理算法可以用作同时可靠、高效、黑盒和通用的概率编程后端。可能的程序设计语言通常选择一个算法来应用于给定的问题,从而继承其局限性。虽然已经做了大量的工作,以形式化的概率编程和提高推理效率,很少有工作,利用现有的程序结构,通过正式分析,以更好地利用底层推理算法。本文提出了三种新的技术(静态和动态),旨在提高概率规划使用程序分析。这些技术分析一个概率程序,并对其进行调整,以使推理更有效,有时是以一种单调乏味或不可能手工完成的方式进行的。
2022-04-14 cs.LG cs.PL stat.ML
Paradoxes of Probabilistic Programming
概率论程序设计语言允许程序员将表示统计和机器学习模型的条件概率分布写为使用观察语句的程序。这些程序通过在每个观察语句处累积似然性来运行,并使用似然性来引导随机选择并使用诸如重要性采样或MCMC之类的推理算法来权衡结果。我们认为,天真的似然积累没有得到理想的语义,并导致悖论时,观察语句是用来测量零事件的条件,特别是当观察语句有条件地执行随机数据。我们发现,如果我们明确地将零测量事件建模为正测量事件的极限,则悖论消失,并且我们可以通过累积无穷小概率而不是概率密度来执行这些类型的概率程序。我们的扩展改进了概率程序设计语言作为一个可执行符号的概率分布,使其更好的行为和更有表现力,通过允许程序员明确的限制是打算条件时,测量零的事件。
2021-01-22 cs.PL
On the Implementation of the Probabilistic Logic Programming Language ProbLog
K.U. Leuven(鲁汶大学)
在过去的几年里,人们对概率逻辑学习和统计关系学习领域的兴趣激增。在这一努力中,许多概率逻辑被开发出来。ProbLog是Prolog最近的一个概率扩展,其动机是挖掘大型生物网络。在ProbLog中,事实可以用概率来标记。这些事实被视为相互独立的随机变量,表明这些事实是否属于随机抽样程序。可以向ProbLog程序提出不同类型的查询。我们介绍的算法,使这些查询的有效执行,讨论他们的实施上的YAP-Prolog系统,并评估其性能的背景下,大型网络的生物实体。
2010-06-23 cs.LG cs.LO cs.PL
Neural Probabilistic Logic Programming in Discrete-Continuous Domains
KU Leuven(鲁汶大学);Örebro University(厄勒布鲁大学)
神经符号人工智能(NeSy)允许神经网络以逻辑的形式利用符号背景知识。它已被证明有助于在有限的数据制度的学习,并促进外的分布数据的推断。ProbabilityNeSy专注于将神经网络与逻辑和概率理论相结合,这还允许在不确定性下进行学习。当前概率NeSy系统(诸如DeepProbLog)的主要限制是它们对有限概率分布的限制,即,离散随机变量相比之下,深度概率编程(DPP)在建模和优化连续概率分布方面表现出色。因此,我们引入DeepSeaProbLog,一种神经概率逻辑程序设计语言,将DPP技术纳入NeSy。这样做的结果在逻辑约束下的离散和连续概率分布的推理和学习的支持。我们的主要贡献是:1)DeepSeaProbLog的语义及其相应的推理算法,2)一个经过验证的渐近无偏学习算法,以及3)一系列的实验,说明了我们的方法的多功能性。
2023-03-14 cs.AI cs.LG cs.LO
RankPL: A Qualitative Probabilistic Programming Language
University of Luxembourg(卢森堡大学)
在本文中,我们介绍RankPL,建模语言,可以被认为是一个定性的概率程序设计语言的语义的基础上Spohn的排名理论的变体。一般来说,RankPL可以用来表示和推理那些表现出不确定性的过程,这些不确定性可以通过区分“正常”和“令人惊讶”的事件来表达。RankPL允许(迭代)修改替代程序状态的排名,并支持各种类型的推理,包括溯因推理和因果推理。我们提出的语言,它的指称语义,和一些实际的例子。我们还讨论了可供下载的RankPL的实现。
2017-05-19 cs.AI cs.PL
A Domain Theory for Statistical Probabilistic Programming
我们给出了一个足够的指称语义的语言递归高阶类型,连续概率分布,和软约束。这些是用于构建计算统计和机器学习中使用的贝叶斯模型的表达语言。其中包括无类型语言,类似于Church和WebPPL,因为我们的语义允许递归混合方差数据库。我们的语义证明了重要的程序等价性,包括交换性。我们的新语义模型是基于“准Borel predomains”。它们是链完全偏序(cpos)和拟波莱尔空间的混合。拟波莱尔空间是概率论的一个新模型,它主要研究可容许随机元的集合。在cpo模型中,传统上使用概率幂域来处理概率,但不知道这些幂域在任何具有高阶函数的cpo上都是可交换的。相比之下,拟Borel前域支持交换概率幂域和高阶函数。正如我们所示,准Borel predomains形式的菲奥雷的公理域理论和模型的科克的综合措施理论。
2021-07-29 cs.LO cs.PL
An Introduction to Probabilistic Programming
University of Amsterdam(阿姆斯特丹大学);University College London(伦敦大学学院);Alan Turing Institute(艾伦·图灵研究所);KAIST(韩国科学技术院);University of British Columbia(不列颠哥伦比亚大学)
这本书是概率编程的研究生水平介绍。它不仅为任何希望使用概率编程系统的人提供了一个全面的背景,而且还介绍了设计和构建这些系统所需的技术。它针对的是那些对概率机器学习和编程语言有本科水平理解的人,或者理想情况下,对概率机器学习和编程语言都有理解的人。我们从基于模型的推理的讨论开始,并解释为什么条件作用是概率机器学习和人工智能领域的核心基础计算。然后,我们介绍了一阶概率编程语言(PPL),其程序对应于图形模型与一个已知的,有限的,一组随机变量。在这方面的PPL,我们介绍了基本的推理算法,并描述了它们是如何实现的。然后,我们转向高阶概率编程语言。在这种语言中的程序可以定义具有动态计算图的模型,其可以不在每次执行中实例化相同的随机变量集合。推理需要通过反复评估程序来生成样本的方法。这种语言的基础算法进行了讨论的上下文中的程序执行和推理控制器之间的接口。最后,我们考虑概率和可微规划的交集。我们首先讨论自动微分,以及如何使用它来实现基于哈密顿蒙特卡罗的高效推理方法。然后,我们讨论了基于梯度的极大似然估计在使用神经网络参数化的程序中,如何通过学习神经近似来摊销推理到程序后验,以及语言特征如何影响深度概率编程系统的设计。
2021-10-19 cs.AI cs.LG cs.PL
Swift: Compiled Inference for Probabilistic Programming Languages
UC Berkeley(加州大学伯克利分校);University of Washington(华盛顿大学)
概率程序定义了其语义结构上的概率度量。概率程序设计语言(PPL)的一个共同目标是使用通用推理引擎,在给定观察到的证据的情况下,计算任意模型和查询的后验概率。大多数PPL推理引擎-即使是编译的-会产生显著的运行时解释开销,特别是对于偶然和开放宇宙模型。本文介绍了一个用于BLOG PPL的编译器Swift。Swift生成的代码结合了优化,消除了解释开销,有效地维护了动态依赖关系,并处理了不同大小的可能世界的存储管理。Swift与其他PPL引擎在各种推理问题上的比较实验表明,加速比从12倍到326倍不等。
2016-06-30 cs.AI cs.PL
Automatic Alignment of Sequential Monte Carlo Inference in Higher-Order Probabilistic Programs
概率编程是一种用于表达灵活的概率模型的编程范式。概率程序设计语言的实现采用各种推理算法,其中通常使用顺序蒙特卡罗方法。使用顺序蒙特卡罗推断的当前最先进的实现的问题是程序同步点的对齐。提出了一种基于0-CFA算法的高阶概率程序自动对齐的静态分析方法。我们评估了系统发育模型上的自动比对,显示出运行时间的显着减少和准确性的增加。
2018-12-18 cs.PL
A New Approach to Probabilistic Programming Inference
University of Oxford(牛津大学);Columbia University(哥伦比亚大学);Massachusetts Institute of Technology(麻省理工学院)
我们介绍并证明了一种新的方法,推理表达概率编程语言的基础上粒子马尔可夫链蒙特卡罗。我们的方法是简单的实现和易于并行化。它适用于图灵完备概率编程语言,并支持使用复杂控制流(包括随机递归)的模型中的精确推理。它还包括贝叶斯非参数统计的基元。我们的实验表明,这种方法可以更有效地比以前介绍的单站点Metropolis-Hastings方法。
2015-07-09 cs.AI cs.PL stat.ML
Quantitative Verification of Omega-regular Properties in Probabilistic Programming
East China Normal University, China(华东师范大学);Nanyang Technological University, Singapore(南洋理工大学)
本文提出时间后验推断框架,用于在概率编程中定量验证omega-正则性质,通过分解Rabin条件并构建随机屏障证书,实现对概率行为的高效推断。
2025-12-25 cs.FL cs.LG cs.LO
Simple, Distributed, and Accelerated Probabilistic Programming
Google Brain(谷歌大脑);Google(谷歌)
我们描述了一种简单的,低级的方法,用于在深度学习生态系统中嵌入概率编程。特别地,我们将概率规划提炼为一个单一的抽象-随机变量。我们在TensorFlow中的轻量级实现支持多种应用:具有第二代张量处理单元(TPUv 2)的模型并行变分自动编码器(VAE);具有TPUv 2的数据并行自回归模型(Image Transformer);以及多GPU无U形转弯采样器(NUTS)。对于64 x64 ImageNet上最先进的VAE和256 x256 CelebA-HQ上的Image Transformer,我们的方法实现了从1到256 TPUv 2芯片的最佳线性加速。使用NUTS,我们看到GPU上的加速比Stan快100倍,比PyMC 3快37倍。
2018-11-29 cs.LG cs.PL stat.ML
Semi-Symbolic Inference for Efficient Streaming Probabilistic Programming
在流媒体环境中,使用Rao-Blackwellized粒子滤波器(RBPF)通常可以进行有效的推理,RBPF在可能的情况下可以精确地解决推理问题,并在必要时返回采样近似。虽然RBPF可以手动实现以提供有效的推理,但流式概率编程的目标是在给定输入概率程序的情况下自动生成这种有效的推理实现。在这项工作中,我们提出了半符号推理,一种使用运行时推理系统,自动实现Rao-Blackwellized粒子滤波执行概率程序的技术。为了一起执行精确和近似推理,半符号推理系统操纵符号分布以在可能时执行精确推理,并且在必要时回到近似采样。这种方法使系统能够实现开发人员手工编写的相同RBPF。为了确保这一点,我们确定封闭的家庭分布-如线性高斯和有限离散模型-推理系统保证准确的推理。我们已经实现了运行时推理系统的ProbZelus流概率程序设计语言。尽管平均$1.6\times$放缓相比,现有的基准测试的最先进的状态,我们的评估表明,$3\times$ - $87\times$的加速是可获得的一组新的具有挑战性的基准测试,我们已经设计利用封闭的家庭。
2022-11-05 cs.PL
Fast and Correct Gradient-Based Optimisation for Probabilistic Programming via Smoothing
University of Oxford(牛津大学);NTU Singapore(新加坡南洋理工大学)
我们研究变分推理的基础,框架后验推理作为一个优化问题,概率规划。在实践中,用于优化的主要方法是随机梯度下降。特别是,使用所谓的reparameterisation梯度估计器的变体在传统的统计设置中表现出快速收敛。不幸的是,在程序设计语言中很容易表达的不连续性可能会损害这种方法的正确性。我们认为一个简单的(高阶,概率)程序设计语言的条件,我们赋予我们的语言与可测量和平滑(近似)的值语义。我们提出建立技术前提的类型系统。因此,我们可以证明随机梯度下降与重新参数化梯度估计是正确的,当应用到平滑的问题。此外,我们可以解决原问题的任何误差容限,通过选择适当的精度系数。从经验上讲,我们证明了我们的方法具有与主要竞争对手相似的收敛性,但更简单,更快,并且在工作归一化方差方面达到了数量级的降低。
2023-01-09 cs.LG cs.PL
Probabilistic Programming Meets Automata Theory: Exact Inference using Weighted Automata
RWTH Aachen University(亚琛工业大学)
本文提出利用加权自动机实现有限概率程序的精确推断,通过将变量分布编码为自动机来计算后验分布。
2025-12-15 cs.FL cs.PL
SimPLoID: Harnessing probabilistic logic programming for infectious disease epidemiology
本文提出基于ProbLog的流行病学建模框架SimPLoID,融合仓室模型与网络建模,并提供面向非编程研究人员的领域特定语言,实现传染病动态的灵活紧凑表达。
2023-12-01 cs.PL cs.SI
Probabilistic Programming with CuPPL
概率程序设计语言(Probability Programming Languages,PPL)是机器学习中的一个强大工具,它允许简洁地表达高度表达性的生成模型。它们将由语言实现的复杂推理算法与表达性建模语言相结合,该语言允许用户将任何可计算函数实现为生成模型。这种语言通常在现有的高级程序设计语言之上实现,并且不使用硬件加速器。确实存在使用加速器的PPL,但是为了这样做,限制了语言的表达能力。在本文中,我们提出了一种为CPU和GPU生成高效代码的语言和工具链。该语言在风格上是函数式的,工具链构建在LLVM之上。我们的实现在CPU上使用无限的延续来执行推理,并在GPU上使用自定义CUDA代码。与CPU上的其他最先进方法相比,我们在一套PPL工作负载中获得了显着的速度提升。此外,我们的编译器还可以生成在CUDA GPU上运行的高效代码。
2020-10-16 cs.PL
Semantics for probabilistic programming: higher-order functions, continuous distributions, and soft constraints
University of Oxford(牛津大学);University of Edinburgh(爱丁堡大学);University of Cambridge(剑桥大学)
我们研究表达概率程序设计语言的语义基础,支持高阶函数,连续分布和软约束(如英国圣公会,教堂,风险投资)。我们定义了一个元语言(一个理想化的版本,英国圣公会)的概率计算与上述功能,开发业务和指称语义,并证明合理性,充分性和终止。它们涉及测度论、随机标记转移系统和函子范畴,但承认直观的计算读数,其中之一将采样的随机变量视为动态分配的只读变量。我们应用我们的语义验证非平凡方程的正确性,某些编译器优化和推理算法,如顺序蒙特卡罗模拟。该语言能够定义高阶函数的概率分布,我们研究它们的性质。
2016-05-04 cs.AI cs.PL
Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic
Stan是一种概率程序设计语言,越来越多地用于现实世界的可扩展项目。然而,为了使实际推理成为可能,该语言通过采用块语法牺牲了一些可用性,这缺乏组合性和灵活的用户定义函数。此外,该语言的语义主要是根据实现的直觉给出的,并且还没有正式化。本文提供了一个正式的处理斯坦语言,并介绍了概率程序设计语言SlicStan -组成,自我优化版本的斯坦。我们的主要贡献是:(1)通过基于操作密度的语义来形式化Stan的核心子集;(2)Stan类语言SlicStan的设计和语义,通过其组合语法,更灵活的功能和信息流类型系统来实现更好的代码重用和抽象;(3)将SlicStan转换为Stan的形式化,语义保持过程。
2018-11-02 cs.PL stat.CO stat.ML
Borch: A Deep Universal Probabilistic Programming Language
Desupervised ApS
自从多层感知器首次被引入以来,连接主义社区一直在努力解决不确定性的概念以及如何在这些类型的模型中表示。在过去的十年里,人们做了很多努力,试图将概率建模的原则性方法与深度神经网络的可扩展性结合起来。虽然这种整合的理论好处是显而易见的,但这些努力也有几个重要的实践方面;即迫使我们创建的模型在每次预测中表示,学习和报告不确定性。其中许多努力都是以增加结构来扩展现有框架。我们介绍了Borch,一种可扩展的深度通用概率程序设计语言,构建在PyTorch之上。代码可以在我们的存储库https://gitlab.com/desupervised/borch中下载和使用。
2022-09-13 cs.AI cs.LG cs.PL
GenSQL: A Probabilistic Programming System for Querying Generative Models of Database Tables
本研究提出GenSQL概率编程系统,通过扩展SQL实现复杂贝叶斯推理,支持多语言概率模型,经真实案例验证在准确性、简洁性和性能上均优于现有方案。
2024-06-21 cs.PL
How Rules Represent Causal Knowledge: Causal Modeling with Probabilistic Logic Programming
研究如何将珀尔的因果方法引入概率逻辑编程,通过与不依赖时间概念的哲学基础对齐,提出形式因果语义等,使其语义与分层ProbLog程序的P-log语义一致,解决因果知识在不同形式主义中的应用问题。
2026-07-24 cs.AI cs.LO cs.PL
Monolingual Probabilistic Programming Using Generalized Coroutines
FNMOC(美国海军舰队气象与海洋学中心);Rutgers University(罗格斯大学)
概率程序设计语言和建模工具包是构建和重用随机模型和推理过程的两种模块化方法。结合两者的优势,我们在同一通用语言中将模型和推理表示为广义协程。我们使用语言的现有设施,如丰富的库,优化编译器和类型,开发简洁,声明性和现实的模型,具有竞争力的性能,精确和近似推理。特别地,可以使用备忘录化来表达广泛的模型。因为模型的确定性部分是全速运行的,所以自定义推理过程是微不足道的,并且推理过程可以在没有解释开销的情况下进行推理。在这个框架内,我们介绍了一个新的,一般的重要性采样算法与前瞻。
2012-05-09 cs.AI cs.PL
Imprecise Probabilistic Programming, Precisely: Credal Sets via Graded Monads, BDDs, and Semiring-Parametric Inference (Functional Pearl)
University of Oxford(牛津大学)
研究不精确概率编程,通过分级单子、BDD和半环参数推理实现可信集。引入Haskell嵌入式DSL Imp,利用分级单子恢复交换性,且相同编译BDD支持多种推理,展示不精确概率编程的新方法及优势。
2026-07-24 cs.PL math.PR