Pyro vs Pymc?这些概率编程框架有什么区别?

Min*_* Jo 13 pymc pyro.ai probabilistic-programming

我使用了基于Clojure的'Anglican',我觉得这对我不好.糟糕的文件和太小的社区找不到帮助.此外,我仍然无法熟悉基于Scheme的语言.所以我想将语言改为基于Python的东西.

也许Pyro或Pymc可能就是这种情况,但我完全不知道这两者.

  • 这两个框架有什么区别?
  • 他们可以用于同样的问题吗?
  • 有没有例子,比较闪耀的是什么?

stu*_*art 42

只想更新 2020 年以前的答案,因为它们现在已经两年了,而此页面是 Google 上的第一个结果。

Pyro 基于 PyTorch 构建。它具有完整的 MCMC、HMC 和 NUTS 支持。它有很好的文档。

PyMC3 建立在 Theano 之上,后者是一个完全死的框架。根据 ZAR 对此回复的评论(2021 年编辑),PyMC4 已停止使用。

第三个选项是 Tensorflow Probability,它在很大程度上基本上包含了 PyMC,并配有我们都期望从 Tensorflow 获得的易用性和出色的文档。(是的,这是一个笑话)。

它们几乎都是一样的东西,所以都尝试一下,尝试你旁边的人使用的任何东西,或者只是掷硬币。最好的库是你实际用来制作工作代码的库。至于哪个更受欢迎,概率编程本身非常专业,所以你不会找到很多支持。

  • 截至 2020 年 12 月 15 日更新,PyMC4 已停产。相反,PyMC 团队已接管 Theano 的维护工作,并将继续在新的定制 Theano 版本上开发 PyMC3。请参阅此处了解 PyMC 路线图:https://github.com/pymc-devs/pymc3/wiki/Timeline (5认同)
  • 关于 Tensorflow 的良好免责声明:)。我已经在疯狂地输入我对“好的 Tensorflow 文档”的不同意见,但停下来。 (3认同)
  • 最新的编辑听起来 PYMC 总体上已经死了,但事实并非如此。根据@ZAR,PYMC4 不再被追求,但 PYMC3(和新的 Theano)都得到积极支持和开发。 (2认同)

Lit*_*one 13

这里开始

Pyro是一种深度概率编程语言,专注于变分推理,支持可组合推理算法.Pyro的目标是更具动态性(通过使用PyTorch)和通用(允许递归).

Pyro拥抱深层神经网络,目前专注于变分推理.Pyro没有马尔可夫链蒙特卡罗(不像PyMC和爱德华).

Pyro建立在pytorch上,而PyoC3则建立在theano上.所以你得到了PyTorch的动态编程,并且最近宣布Theano将在一年后不再维护.然而,我发现,PyMC具有出色的文档和美妙的资源.另一个替代方案是爱德华建立在Tensorflow之上,它比pyro atm更成熟,功能更丰富.爱德华的作者声称它比PyMC3更快.
我想这个决定归结为您正在寻找的功能,文档和编程风格.

  • 由于Pyro现在似乎正在执行MCMC采样,因此是否需要立即更新此答案? (4认同)
  • PyMC4 将建立在 Tensorflow 之上,取代 Theano。 (3认同)