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

Pyro vs Pymc? What are the difference between these Probabilistic Programming frameworks?

我使用了基于 Clojure 的 'Anglican',我认为这对我不利。糟糕的文档和太小的社区无法寻求帮助。此外,我仍然无法熟悉基于 Scheme 的语言。所以我想将语言更改为基于 Python 的语言。

也许 Pyro 或 PyMC 可能是这种情况,但我完全不知道这两个。

来自here

Pyro is a deep probabilistic programming language that focuses on variational inference, supports composable inference algorithms. Pyro aims to be more dynamic (by using PyTorch) and universal (allowing recursion).

Pyro embraces deep neural nets and currently focuses on variational inference. Pyro doesn't do Markov chain Monte Carlo (unlike PyMC and Edward) yet.

Pyro 基于 pytorch 而 PyMC3 基于 theano。所以你得到 PyTorch 的动态规划,最近宣布 Theano 将不会是 maintained after an year. However, I found that PyMC has excellent documentation and wonderful 资源。另一种选择是建立在 Tensorflow 之上的 Edward,它比 pyro atm 更成熟,功能更丰富。 Edward 的作者声称它比 PyMC3 更快。
我想决定归结为您正在寻找的功能、文档和编程风格。

(2022 年更新)

Pyro 建立在 PyTorch 之上。它具有完整的 MCMC、HMC 和 NUTS 支持。它有很好的文档,而且我知道的缺点很少。

PyMC 建立在 Theano 之上,Theano 现在基本上是一个死掉的框架,但是已经被一个名为 Aesara 的项目复活了。 PyMC3 现在简称为 PyMC,它仍然存在并得到积极维护。除了 PyTorch/Tensorflow 之外,它还依赖于一个晦涩的张量库,这可能会降低它对大规模采用的吸引力——但正如我在下面指出的那样,概率编程并不是真正的大规模事物,所以在这个问题的背景下,这很重要,更不用说了比深度学习框架要好。

仍然有一种叫做 Tensorflow Probability 的东西,它具有我们都期待 Tensorflow 提供的同样出色的文档(是的,这是个笑话)。作为互联网上的书呆子,我个人认为 Tensorflow 是一个图书馆的野兽,它建立在非常谷歌的假设之上,即雇用多个完整的团队来支持生产中的代码既可能又具有成本效益,这对于大多数组织来说都是不现实的,更不用说个体研究人员了。

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