贝叶斯推断
通常在研究贝叶斯模型中,很多情况下我们关注的是如何求解后验概率(Posterior),不幸的是,在实际模型中我们很难通过简单的贝叶斯理论求得后验概率的公式解,实际中往往只能求其近似解。
一般根据近似解的求解方式可以分为:
- 随机(Stochastic)近似方法(基于采样的近似方法,代表是MCMC,如利用Gibbs Sampling训练LDA的模型),
- 确定性(Deterministic)近似方法(如变分推断)
一般情况下确定性近似方法会比随机近似方法更快和更容易判断收敛。
变分推断是一种求解框架(如变分自编码器),类似于EM算法,在求解概率模型中有很广泛的运用。
贝叶斯推断工具箱
- PyMC
- Edward
PyMC
PyMC是一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样工具拟合算法的Python库。PyMC的灵活性及可扩展性使得它能够适用于解决各种问题。除了包含核心采样功能,PyMC还包含了统计输出、绘图、拟合优度检验和收敛性诊断等方法。
PyMC也可以进行变分推断。
PyMC可以和Theano联合使用。
地址:
https://github.com/pymc-devs/pymc3
Edward
Edward是一个用于概率建模,推理和评估的Python库。 它是使用概率模型进行快速实验和研究的测试平台,范围从小型数据集上的经典分层模型到大型数据集上的复杂深度概率模型。 Edward融合了三个领域:贝叶斯统计和机器学习、深度学习、概率编程。
它支持以下建模方法:
- 有向图模型
- 神经网络(通过tf.layers和Keras等库)
- 隐式生成模型
- 贝叶斯非参数和概率程序
它支持以下推理:
- Variational inference(变分推理)
- Black box variational inference(黑箱变分推理)
- Stochastic variational inference(随机变分推理)
- Generative adversarial networks(GAN对抗式生成网络)
- Maximum a posteriori estimation(最大后验估计)
- Monte Carlo(蒙特卡洛)
- Gibbs sampling(Gibbs采样)
- Hamiltonian Monte Carlo(Hamiltonian蒙特卡洛)
- Stochastic gradient Langevin dynamics(随机梯度朗之万动力学)
- Compositions of inference
- Expectation-Maximization (EM算法)
- Pseudo-marginal and ABC methods
- Message passing algorithms (信息传递算法)
支持以下模型评估和推断:
- Point-based evaluations
- Posterior predictive checks
Edward建立在TensorFlow上。 它支持计算图,分布式训练,CPU / GPU集成,自动微分和TensorBoard可视化等功能。
地址: