在过去的一年里,我听到了很多关于概率编程(PP) 框架(如PyMC3和Stan )的消息,以及 PP 有多棒。而今天,有人和我分享了这个链接: Pyro: a Deep Probabilistic Programming Language
但是,我并没有真正了解它的特别之处,因为感觉就像您可以在 PP 中做的任何事情一样,您可以在任何其他通用语言中做。我确信 PP 的某些技术方面使其具有吸引力(例如并行计算),但除此之外,PP 真的与任何其他语言有什么不同吗?
问题:我想知道关于 PP 是什么以及它与 R、Matlab、Mathematica 等其他以统计为重点的软件有何不同是否存在共识。需要注意的是PyMC3
,Stan
更多的是关注贝叶斯分析。
在谷歌上做了一点研究,我遇到了以下两个定义。第一个比较抽象,第二个更多关于PP的技术特性。
1.2. 概率规划是
相反,概率编程是一种统计建模工具。这个想法是从编程语言世界中汲取经验教训,并将其应用于设计和使用统计模型的问题。专家们已经在纸上用数学符号手工构建了统计模型,但这是一个专家专用的过程,很难用机械推理来支持。PP 的关键见解是,当你做得足够多时,统计建模可以开始感觉很像编程。如果我们实现飞跃并实际使用真实语言进行建模,许多新工具将变得可行。我们可以开始自动化用于证明为每个实例编写论文的任务。
这是第二个定义:概率编程语言是一种普通的编程语言,
rand
具有大量相关工具,可帮助您了解程序的统计行为。这两个定义都是准确的。他们只是强调同一个核心思想的不同角度。哪一个对你有意义取决于你想用 PP 做什么。但是不要因为 PPL 程序看起来很像普通软件实现这一事实而分心,其目标是运行程序并获得某种输出。PP 的目标是分析,而不是执行(强调)。
--概率规划
我想知道一般统计界是否同意这两个 PP 定义,如果还有其他特征,这个定义可能会丢失。