5 月 27-28 日,机器之心主办的第一届全球机器智能峰会(GMIS 2017)将在北京 898 创新空间举行。在峰会第一天下午的「机器学习」主题 Session 上,清华大学副教授朱军将分享解读《珠算:贝叶斯深度学习的 GPU 库(ZhuSuan: a GPU Library for Bayesian Deep Learning)》。近日,清华大学机器学习组已经在 GitHub 上发布了「珠算(ZhuSuan)」这一软件库。机器之心在本文中编译介绍了该项目的介绍文档,如果你想现场聆听对该项目的更详细深入的介绍,可访问 GMIS 官网 gmis.jiqizhixin.com 了解参会方式或点击这里直达购票地址。
-
朱军 GMIS 演讲时间:5 月 27 日 14:10-14:30
-
演讲主题:珠算:贝叶斯深度学习的GPU库
珠算(ZhuSuan)是一个构建于 TensorFlow 之上的用于生成模型(Generative Model)的 Python 库。和现有的主要为有监督学习任务设计的深度学习库不同,珠算的主要特点是其在很大程度上植根于贝叶斯推理(Bayesian Inference),因此,珠算能支持各种生成模型:既包括传统的分层贝叶斯模型(如话题模型、贝叶斯逻辑回归等),也有最近的深度生成模型(如VAE、GAN等等)。
使用珠算,用户可以享有深度学习的强大拟合能力和多 GPU支持的高效训练,同时,还能通过生成模型对复杂环境进行建模,充分利用无标注数据,并通过严谨的贝叶斯推理处理不确定性。
目前支持的主要推理算法
变分推理和随机变分推理(VI & SVI)
支持多种变分后验:
-
平均场后验(Mean-field posterior):各因子完全独立的后验
-
结构化的后验(Structured posterior):隐变量间具有用户指定的依赖关系
支持的变分方法:
-
SGVB:随机梯度变分贝叶斯(Stochastic gradient variational Bayes)
-
IWAE:重要程度加权的目标(Importance weighted objectives)
-
NVIL:具有方差减缩的得分函数估计器(Score function estimator with variance reduction)
-
VIMCO:具有方差减缩的多样本得分函数估计器(Multi-sample score function estimator with variance reduction)
自适应重要程度采样
-
重新加权的唤醒-睡眠(RWS:Reweighted Wake-sleep):带有用户指定的自适应提议分布
马尔可夫链蒙特卡洛(MCMC)
-
哈密尔顿蒙特卡洛(HMC):自适应调整步长和质量(mass)
安装
珠算仍处在开发阶段。在第一个稳定版(1.0)发布之前,请从github克隆(clone)这个库并在主目录中运行以下代码:
1
|
pip install .
|
这会自动安装珠算及其依赖包。
文档
在线文档地址:http://zhusuan.readthedocs.io/
其中包含三个使用教程(Tutorials)和代码的API文档:
-
变分自编码器的分步实现
-
ZhuSuan中的基本概念
-
用于多元回归问题的贝叶斯神经网络
示例
如果你想运行我们提供的示例,你需要安装额外的依赖包。可以通过执行以下代码完成:
1
|
pip install
".[examples]"
|
-
高斯(Gaussian):HMC
-
Toy 2D Intractable Posterior: SGVB
-
贝叶斯神经网络:SGVB
-
变分自编码器(VAE):SGVB、IWAE
-
卷积 VAE:SGVB
-
半监督 VAE (Kingma, 2014):SGVB、RWS
-
深度 Sigmoid 信念网络:RWS、VIMCO
-
Logistic Normal 主题模型:HMC
如果要以「可编辑」或「开发」模式安装珠算,在主目录下运行:
1
|
pip install
-
e .
|
如果要移除安装,运行:
1
|
pip uninstall zhusuan
|
附加的开发用依赖包可通过以下代码安装:
1
|
pip install
".[dev]"
|
以下命令可在主目录中运行自动测试:
1
|
python
-
m unittest discover
-
v
|
测试范围:在运行测试之后,为了确保测试范围涵盖开发,请运行
1
|
coverage report
-
-
include
=
"zhusuan/*"
|
PEP8 代码风格检查:我们遵循 PEP8 Python 代码风格。要进行检查,在主目录中运行
1
|
pep8 .
|
文档在 docs/ 目录下,是 RestructuredText(.rst)文件。主页为 index.rst。关于 RestructuredText 的教程可参阅:https://pythonhosted.org/an_example_pypi_project/sphinx.html
API References 是通过 Sphinx 自动生成的。它们在 doc/api/ 目录下,在每次修改代码之后都应该重新生成:
1
|
make api
|
在 docs/ 目录下运行以下代码可将文档编译成网页:
1
|
make html
|
生成的网页存储在 docs/_build 目录,可以通过浏览器查看。