1.2.2 完全可见置信网络

完全可见置信网络(FVBN)中不存在不可观察的潜在变量(隐变量),高维度的观察变量的概率表达式被链式法则从维度上进行分解,即对于n维观察变量x,其概率表达式为:

自回归网络是最简单的完全可见置信网络,其中每一个维度的观察变量xi都构成概率模型的一个节点,而所有这些节点{x1,x2,…,xn}共同构成一个完全有向图,图中任意两个节点都存在连接关系,如图1-4所示。

图1-4 自回归网络

因为自回归网络中已经有了随机变量的链式分解关系,所以核心问题便成为如何表达条件概率pxi xi-1xi-2,…,x1)。最简单的模型是线性自回归网络,即每个条件概率均被定义为线性模型,对实数值数据使用线性回归模型(例如定义pxi |xi-1xi-2,…,x1)=w1x1+w2x2+…+wi-1xi-1),对二值数据使用逻辑回归模型,而对离散数据使用softmax回归模型,具体计算过程如图1-5所示。但线性模型容量有限,拟合函数的能力不足。在神经自回归网络中,我们使用神经网络代替线性模型,该模型可以任意增加容量,理论上可以拟合任意联合分布。神经自回归网络还使用了特征重用的技巧,例如神经网络从观察变量xi学习到的隐藏抽象特征hi不仅会在计算pxi+1|xixi-1,…,x1)时使用,也会在计算pxi+2|xi+1xi,…,x1)时进行重用,其计算图如图1-6所示。同时,该模型不需要分别使用不同神经网络表示每个条件概率的计算,而是可以整合为一个神经网络,因此只要设计成抽象特征hi只依赖于x1x2,…,xi即可。目前,神经自回归密度估计器是神经自回归网络中比较具有代表性的方案,它引入了参数共享的方案,即从观察变量xi到任意隐藏抽象特征hi+1hi+2,…的权值参数是共享的。总之,使用了特征重用、参数共享等深度学习技巧的神经自回归密度估计器具有更优秀的性能。

图1-5 线性自回归网络计算图

图1-6 神经自回归网络计算图

WaveNet1是谷歌提出的一个语音生成模型,用于自回归地生成语音序列。它所采用的主要计算模块是空洞因果卷积,核心思想是基于之前时间节点的语音信息生成当前时间节点的语音信息。空洞因果卷积如图1-7所示,在每一层的一维卷积神经网络中,其输出依赖于前一层的第t个和第t-d个时间节点的信息,其中d为空洞因子,例如第1、2、3个隐层的空洞因子分别为1、2、4。需要说明的是,当前时间节点的语音不会与之前所有时间节点的语音建立某种联系,故样本概率的表达式与式(1.11)有所出入,具体的依赖关系由卷积层的设定决定。在输出语音信息时,先通过μ-law量化方法获得256维的概率分布,每一个维度表示一个语音信号数值,然后从概率分布中采样获得当前时间节点的信号。

PixelRNN和PixelCNN2也属于完全可见置信网络。从名字可以看出,这两个模型一般用于图像的生成。它们将图像x的概率px)按照像素分解为n个条件概率的乘积,其中n为图像的像素点个数,即在每一个像素点上定义了一个条件概率,用以表达像素之间的依赖关系,该条件概率分别使用循环神经网络(RNN)或者卷积神经网络(CNN)进行学习。为了将输出离散化,通常将RNN或CNN的最后一层设置为softmax层,用以表示其输出不同像素值的概率。在PixelRNN中,我们一般定义从左上角开始沿着右方和下方依次生成每一个像素点,如图1-8所示。当设定了节点依赖顺序后,便可以得到样本的对数似然的表达式,后续在训练模型时只需要将其极大化即可。

图1-7 WaveNet空洞因果卷积示意图(见彩插)

图1-8 PixelRNN生成像素顺序

PixelRNN在其感受野内可能具有无边界的依赖范围,因为待求位置的像素值依赖之前所有已知像素点的像素值,这将需要极大的计算代价。PixelCNN使用标准卷积层来捕获有界的感受野,其训练速度要快于PixelRNN。在PixelCNN中,每个位置的像素值仅与其周围已知像素点的值有关,如图1-9所示。上部分为已知像素,而下部分为未知像素,计算当前位置的像素值时,需要把方框区域内的所有已知像素值传递给CNN,由CNN最后的softmax输出层来表达在中间矩形位置取不同像素值的概率,这里可以使用由0和1构成的掩膜矩阵将方框区域内的灰色位置像素抹掉。PixelRNN和PixelCNN此后进行了非常多改进,例如为了在生成像素时消除盲点,Gated PixelCNN3将感受野拆分为水平和垂直两个方向,进一步提升了生成质量。但由于它是逐个像素点地生成图像,像素点前后存在依赖关系,具有串行性,故在实际应用中采样效率难以保证,这也是诸多FVBN类模型经常出现的问题。

图1-9 PixelCNN原理

PixelCNN模型是完全可见置信网络中比较易于理解的模型,以下为PixelCNN模型的核心代码: