人工智能:语音识别理解与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.2 深度置信网络预训练

一个RBM可以被视为一个具有无限层的生成模型,所有层共享相同的权重矩阵,如图5-5(a)和图5-5(b)所示。如果我们从图5-5(b)所示的深度生成模型中分离出底层,剩余的层次就构成了另一个同样具有无限层且共享权重矩阵的生成模型。这些剩余层次等价于另一个RBM,这个RBM的可见层神经元和隐层神经元转换成了如图5-5(c)所示的结构。这种模型是一种生成模型,叫作深度置信网络(Deep Belief Network,DBN),在这个网络中,顶层是一个无向图RBM,而下面的层次构成了一个有向图生成模型。我们把同样的理由应用到图5-5(c),可以发现它等价于图5-5(d)所示的DBN。

RBM和DBN的关系暗示了一种逐层训练非常深层次的生成模型的方法[867]。一旦我们训练了一个RBM,就可以用这个RBM重新表示数据。对每个数据向量v,我们计算一个隐层神经元期望激活值的向量h(它等价于概率)。我们把这些隐层期望值作为训练数据来训练一个新的RBM。这样,每个RBM的权重都可以用来从前一层的输出中提取特征。一旦我们停止训练RBM,就拥有了一个DBN所有隐层权重的初始值,而这个DBN隐层的层数刚好等于我们训练的RBM的数量。这个DBN可以进一步通过Wake-sleep算法[204]模型精细调整。

在上面的步骤中,我们假设RBM的维数是固定的。在这种配置下,如果这个RBM经过了完美的训练,DBN将与RBM表现得完全相同。然而,这个假设并不是必要的,我们可以堆叠不同维度的RBM。这允许了DBN架构的灵活性,并且堆叠额外的层次能潜在地提高似然度的上界。

DBN的权重可以作为由sigmoid神经元构成的DNN的初始权重。这是因为条件概率P(h|v)在RBM中与在DNN中具有相同的形式,如果DNN使用的是sigmoid非线性激活函数,则可以把第4章中描述的DNN视为一种统计图模型,其中每个隐层(0<ℓ<L)对给定输入向量v−1的二进制值输出神经元h的后验概率进行建模,使其服从伯努利分布,而此处的输出神经元向量h的各维在给定输入向量v−1时是条件独立的:

图5-5  RBM和等价于DBN的关系

输出层则采用多项式概率分布来近似正确的标注y

给定观察到的特征o和标注yP(y|o)的精确建模需要整合所有层h的所有可能取值,而这是难以实现的。一种有效的实践技巧是用平均场逼近[205]替换边缘分布。换句话说,我们定义

于是我们得到了第4章中讨论的传统的DNN的非随机描述。

从这种视角看由sigmoid神经元构成的DNN,我们发现DBN的权重可以被用作DNN的初始权重。DBN和DNN之间的唯一区别是在DNN中使用了标注。基于此,在DNN中,当预训练结束后,我们会添加一个随机初始化的softmax输出层,并用反向传播算法鉴别性地精细调整网络中的所有权重。

通过生成性的预训练初始化DNN的权重可以潜在地提升DNN在测试数据集上的性能。这归因于以下三点。第一,DNN是高度非线性且非凸的。特别是在使用批量模式训练算法的时候,初始化点可能很大程度地影响最终模型。第二,预训练阶段使用的生成性准则与反向传播阶段使用的鉴别性准则不同。在生成性预训练得到的模型的基础上开始BP训练隐式地对模型进行了正则化。第三,既然只有监督式的模型精细调整阶段需要有标注的数据,我们可以在预训练的过程中潜在地利用大量无标注的数据。试验已经证明,除预训练需要额外的时间外,生成性预训练通常有帮助,而且绝不会有损DNN的训练。生成性预训练在训练数据集很小的时候格外有效。

如果只使用一个隐层,则DBN的预训练并不重要,预训练在有两个隐层的时候最有效[13, 49]。随着隐藏层数量的增加,预训练的效果通常会减弱。这是因为DBN的预训练使用了两个近似。第一,在训练下一层的时候使用了平均场逼近来生成目标。第二,学习模型参数的时候使用了近似的对比散度算法。这两个近似为每一个额外的层都引入了模型误差。随着层数的增加,总体误差增大,而DBN预训练的效果减弱。显然,尽管我们仍然可以使用DBN预训练的模型作为使用了线性修正单元的DNN的初始模型,但由于两者之间没有直接关联,效果将大打折扣。