AI机动队
首发于AI机动队
玻尔兹曼机、生成随机网络与自回归网络——深度学习第二十章(二)

玻尔兹曼机、生成随机网络与自回归网络——深度学习第二十章(二)

继续总结花书第20章,这一章花了很大的篇幅介绍玻尔兹曼机及其变种,但实际应用中主要用到的三种方法还是1.自回归网络Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN)。2.变分自解码器Variational Autoencoder (VAE)。3.生成对抗网路Generative Adversarial Networks(GAN)。所以这篇会简要的总结一下玻尔兹曼机以及生成随机网络,然后着重总结一下自回归网络。

在第一篇生成模型综述——深度学习第二十章(一)我们总结了生成模型的谱系,今天总结的几个模型如下图红框所示

玻尔兹曼机

先来总结一下玻尔兹曼机(Boltzmann machine)。玻尔兹曼机是一种基于能量函数的概率模型,其联合分布概率可表示为 p(\vec{v},\vec{h})=\frac{exp(-E(\vec{v},\vec{h}))}{Z} ,其中 \vec{v} 代表了输入的观察到的变量, \vec{h} 代表了隐藏变量,Z是配分函数, E(\vec{v},\vec{h})=-\vec{v}^TR\vec{v}-\vec{v}^TW\vec{h}-\vec{h}^TS\vec{h}-\vec{b}^T\vec{v}-\vec{c}^T\vec{h} 。而受限玻尔兹曼机(Restricted Boltzmann machine)对这一能量函数进一步简化,假定了网络中仅有隐藏变量与观察变量的连接,而观察变量间没有连接,隐藏变量间也没有连接,且隐藏变量可用 n_h 个二进制随机变量表示,如下图的无向图所示

能量函数变为 E(\vec{x},\vec{h})=-\vec{x}^TW\vec{h}-\vec{b}^T\vec{x}-\vec{c}^T\vec{h} 。从联合分布我们可以推导出条件概率分布 p(\vec{h}|\vec{v}) = \frac{p(\vec{h},\vec{v})}{p(\vec{v})} = \prod_{i=1}^{n_h}\sigma((2\vec{h}-1)\odot(\vec{c}+W^T\vec{v}))_j

同样的, p(\vec{v}|\vec{h}) = \prod_{i=1}^{n_v}\sigma((2\vec{v}-1)\odot(\vec{b}+W^T\vec{h}))_i

其训练过程可利用Gibbs sampling(蒙特卡罗方法——深度学习第十七章),我们可以同时sample所有的\vec{h},然后再同时sample所有的\vec{v}依次交替进行。

以RBM为基础,我们添加若干层隐藏变量且只有相邻层间有连接,就可以构成深度玻尔兹曼机,如下图所示

生成随机网络

再来看看另一种利用马尔科夫链采样的生成模型,生成对抗网络GSN,与玻尔兹曼机相比,它不是显性的定义观察量与隐藏量的联合分布,而是在马尔科夫链中利用了两个条件概率分布:

  1. p(\vec{x}^{(k)}|\vec{h}^{(k)}) 指导如何根据现在的隐藏变量产生下一个观察量。
  2. p(\vec{h}^{(k)}|\vec{h}^{(k-1)},\vec{x}^{(k-1)}) 根据前一个状态的隐藏变量和观察量更新隐藏变量。

联合概率分布只是隐性定义的,是马尔科夫链的稳态分布。

自回归网络

自回归网络Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN),是一种有向概率图,其中条件概率用神经网络来表示,利用概率的链式法则,它将关于观察量的联合概率分布,分为一系列条件概率 p(x_i|x_{i-1},...,x_1) 的乘积形式 p(x)=\prod_{i=1}^{n_i}p(x_i|x_{i-1},...,x_1) ,利用之前的变量来预测下一个变量。

简单的线性自回归网络结构没有隐藏变量,也不共享特征或参数,如下图所示

上图是FVBN的有向图表示,下图是相应的计算图

如果我们想增大模型的容量,使其可以近似任意联合概率分布,则可以加入隐藏变量,另外还可以通过特征或参数共享使得泛化效果更好,其计算图如下所示

其优点有在可以表述随机变量的高阶依赖关系的同时减少了模型所需要的参数,例如假设变量可取离散的k种不同的值,则每个 p(x_i|x_{i-1},...,x_1) 可用有 (i-1)\times k 个输入及 k 个输出的神经网络表示,而不需要指数级别的参数。另一个优点是我们不需要对于每一个 x_i 都采用一个不同的神经网络,而是将它们合并为一个神经网络,即用来预测 x_i 的隐藏特征可以被重复利用来对 x_{i+k}\ (k>0) 进行预测,这些隐藏单位的参数因此可以通过联合优化使得序列中所有变量的预测都得到改善。

在生成图像时,FVBN类模型通常能够得到更高质量的图片,由于其直接模拟概率分布,更容易评估训练效果,其训练过程也较GAN稳定,但是由于其训练过程的序列性,训练过程较为缓慢。

FVBN有两类模型PixelRNN和PixelCNN在图像合成方面应用广泛,尤其是由残缺图像补全完整图像的应用。

其基本思想是从某个角落里开始,依据之前的像素信息利用RNN或CNN来预测下一个位置的像素值。

对于PixelRNN其过程如下图所示,其中与之前变量的依赖关系用RNN如LSTM结构来模拟:

对于补全残缺图像的任务,其效果如下图所示

而PixelCNN则利用了Mask CNN结构来模拟依赖于之前变量的条件概率分布,如下图所示

另外在语音合成领域,FVBN也有较好的效果,例如DeepMind的WaveNet模型就是基于FVBN的原理。

总结

这一篇总结了三种方法,两种是直接模拟密度概率分布的,即玻尔兹曼机与自回归网络,另一种是隐性密度模型生成随机网络,其中自回归网络生成效果好但训练速度较慢。下一篇会总结另一个重要的模型变分自编码器,to be continued。


注:截图来自Ian Goodfellow等合著的Deep Learning一书以及斯坦福Syllabus | CS 231N中与Generative Model相关的讲义,推荐阅读原书和原课程。

发布于 2018-11-25

文章被以下专栏收录