什么是概率规划?

机器算法验证 贝叶斯 造型 推理 软件
2022-03-24 04:05:22

在过去的一年里,我听到了很多关于概率编程(PP) 框架(如PyMC3Stan )的消息,以及 PP 有多棒。而今天,有人和我分享了这个链接: Pyro: a Deep Probabilistic Programming Language

但是,我并没有真正了解它的特别之处,因为感觉就像您可以在 PP 中做的任何事情一样,您可以在任何其他通用语言中做。我确信 PP 的某些技术方面使其具有吸引力(例如并行计算),但除此之外,PP 真的与任何其他语言有什么不同吗?

问题:我想知道关于 PP 是什么以及它与 R、Matlab、Mathematica 等其他以统计为重点的软件有何不同是否存在共识。需要注意的是PyMC3Stan更多的是关注贝叶斯分析。

在谷歌上做了一点研究,我遇到了以下两个定义。第一个比较抽象,第二个更多关于PP的技术特性。

1.2. 概率规划是

相反,概率编程是一种统计建模工具。这个想法是从编程语言世界中汲取经验教训,并将其应用于设计和使用统计模型的问题。专家们已经在纸上用数学符号手工构建了统计模型,但这是一个专家专用的过程,很难用机械推理来支持。PP 的关键见解是,当你做得足够多时,统计建模可以开始感觉很像编程。如果我们实现飞跃并实际使用真实语言进行建模,许多新工具将变得可行。我们可以开始自动化用于证明为每个实例编写论文的任务。

这是第二个定义:概率编程语言是一种普通的编程语言,rand具有大量相关工具,可帮助您了解程序的统计行为。

这两个定义都是准确的。他们只是强调同一个核心思想的不同角度。哪一个对你有意义取决于你想用 PP 做什么。但是不要因为 PPL 程序看起来很像普通软件实现这一事实而分心,其目标是运行程序并获得某种输出。PP 的目标是分析,而不是执行(强调)。

--概率规划

我想知道一般统计界是否同意这两个 PP 定义,如果还有其他特征,这个定义可能会丢失。

1个回答

概率规划是一种定义统计模型的技术。与通过概率分布函数定义模型或绘制图形不同,您可以用编程语言表达模型,通常作为前向采样器。

从模型规范自动推断是概率编程工具的一个典型特征,但它不是必需的,也没有必要是贝叶斯的。使用指定为概率程序的模型可以做很多有用的事情。例如,论文Deriving Probability Density Functions from Probabilistic Functional Programs描述了一种分析概率程序并计算其概率分布函数的工具。检测概率模型中的参数对称性一文分析了参数对称性的概率程序。这种工作也属于概率编程。