A Deep Belief Networks Training Strategy Based on Multi-hidden Layer Gibbs Sampling
-
摘要: 深度信念网络(Deep belief network,DBN)作为一类非常重要的概率生成模型,在多个领域都有着广泛的用途.现有深度信念网的训练分为两个阶段,首先是对受限玻尔兹曼机(Restricted Boltzmann machine,RBM)层自底向上逐层进行的贪婪预训练,使得每层的重构误差最小,这个阶段是无监督的;随后再对整体的权值使用有监督的反向传播方法进行精调.本文提出了一种新的DBN训练方法,通过多隐层的Gibbs采样,将局部RBM层组合,并在原有的逐层预训练和整体精调之间进行额外的预训练,有效地提高了DBN的精度.本文同时比较了多种隐层的组合方式,在MNIST和ShapeSet以及Cifar10数据集上的实验表明,使用两两嵌套组合方式比传统的方法错误率更低.新的训练方法可以在更少的神经元上获得比以往的训练方法更好的准确度,有着更高的算法效率.Abstract: Deep belief network (DBN) is a very important probabilistic generative model that can be used in many areas. The current training approach of DBN involves two phases. The first is a fully unsupervised pre-training process, which is a down-top and layer-by-layer one to train the restricted Boltzmann machine (RBM) layers, making the reconstruction error of each layer minimal. The second is a supervised stage which uses the back propagation to fine-tune the entire parameters of the model. In this paper, a new training strategy for DBN is proposed. Between the current two training phases, this paper introduces another training strategy to combine multiple local RBMs into an overall probability model for multi hidden layer Gibbs sampling, which effectively improves the accuracy of DBN. This paper has compared a variety of combinations of RBM layers, experiments on the MNIST, ShapeSet and Cifar10 dataset show that our method outperforms the existing training algorithms for DBN. The new algorithm can achieve better accuracy with fewer neurons, also achieves higher algorithm efficiency.
-
在机器学习领域里, 最重要也是最困难的莫过于特征的提取, 抓住事物区分度强的特征也就抓住了事物的本质.在此基础上, 分类器的性能会得到极大的提高.但长期以来如何进行特征提取一直是个棘手的问题, 不同领域的数据涉及到不同的提取方法, 需要大量的领域知识作为支撑.另一方面, 一直以来各种深度神经网络模型都困扰在如何找到有效的训练方法.传统的反向传播算法在多隐层神经网络上存在着梯度消失的问题, 使得深度网络的性能甚至还不如浅层网络[1].这两个关键问题在2006年Hinton提出的文献[2]中得到了很大程度上的解决.在文献[2]中提出的多层限制玻尔兹曼机(Restrict Boltzmann machine, RBM)堆叠降维的方法, 在无监督的情况下实现了自动化的特征学习, 实验表明效果比传统的PCA方法要好得多.在此基础上增加分类器就构成了深度信念网络模型(Deep belief network, DBN).作为一种生成模型, DBN有着重要的研究价值.相对于判别式模型, 生成模型可以反向生成研究对象的实例, 可以直观地观察出生成对象的各种特征, 为进一步的研究提供可能.在随后的大量研究中, DBN被广泛应用到了图像识别[3-4]、语音识别[5]、自然语言处理[6]、控制[7]等多个领域, 并取得了很好的效果.
针对DBN训练方法的研究一直是一个热点[8-9]. Goh等[10]提出了一种有监督的预训练方法, 提高了DBN的精度.李飞等[11]从Gibbs采样的次数入手, 提出了动态的采样方法, 乔俊飞等[12]将自适应学习率引入到对比散度(Contrastive divergence, CD)算法中, 提高了算法收敛速度.典型的DBN的训练分为2个阶段[13], 分别是逐层预训练和整体精调.在逐层预训练阶段, 从网络最底层的RBM开始, 自底向上逐层使用无监督的贪婪方法来使得每层RBM的损失误差最小.然后在整体精调阶段使用有监督的学习方法, 针对有标签的数据使用梯度下降进行整体权值修正.实验表明此种方法是有效的, 很好地解决了一直以来深度网络无法有效训练的难题.逐层预训练将网络的权重调整到一个“合适”的初始位置, 如果不进行逐层预训练而直接进行整体精调, 则网络很难收敛, 在逐层预训练的基础上进行整体精调可以确保网络能够收敛到很好的位置上.在此基础上, 网络权重的初始位置有没有进一步改进的可能, 从而获得更好的网络性能呢?DBN的逐层预训练是在堆叠着的每个RBM内进行多步Gibbs采样来逼近数据的真实分布的, 采样在RBM的可视层和隐藏层之间迭代进行.本文在此基础上, 提出了一种两阶段的无监督预训练方法, 在已有预训练的基础上引入多隐层Gibbs采样预训练方法, 将多个RBM组合成一个整体概率模型进行预训练, 使得Gibbs采样在多个RBM中进行, 从而获得更“合适”的网络权值初始位置.在MNIST、ShapeSet和Cifar10数据集上的实验表明, 此种方法比传统的深度信念网络训练方法可以获得更好的分类效果, 在包含(1 300, 1 300, 1 300, 1 300)四层隐层的DBN上使用固定学习率的实验, 相对于传统方法的可以将MNIST的错误率从$ 1.25\% $降低到$ 1.09\% $.
本文先介绍了受限玻尔兹曼机和深度信念网络模型, 然后提出了改进后的算法, 最后在MNIST、ShapeSet和Cifar10数据集上验证并讨论了实验结果.
1. 受限玻尔兹曼机模型
DBN的预训练是通过受限玻尔兹曼机的训练进行的, 所以我们先描述RBM模型. RBM是一个无向图模型, 它可以被看做是一个二部图(Bipartite graph), 两个部分分别是可视层$ \pmb{v} $和隐层$ \pmb{h} $, 层间结点全连接, 层内结点不连接, 如图 1所示.可视层接收数据输入, 两层间的连接权值用$ W $表示, $ W\in {{\bf R}}^{n\times m} $.可视层的偏置用$ \pmb{a} $表示, $ \pmb{a} \in {{\bf{R}}^n} $, 隐层的偏置用$ \pmb{b} $表示, $ \pmb{b}\in {{\bf{R}}^m} $. RBM的隐层可以理解为模型中尚未被观测到的部分, 可视层可以理解为可以观测到的部分, 它们的节点状态一般是二进制的, 取值1或0.
RBM是能量模型系统, 它通过能量来表示系统当前的状态, 能量定义为[2]:
$ \begin{equation} E\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right) = - \sum\limits_{i = 1}^n {{a_i}{v_i}} - \sum\limits_{j = 1}^m {{b_j}{h_j}} - \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^m {{v_i}{W_{ij}}{h_j}} } \end{equation} $
(1) 其中, $ n $表示可视层的节点数目, $ m $表示隐藏层节点数目, 就表示可视层$ i $节点到隐层$ j $节点的权值大小.使用$ {\theta} = \left\{ {W, {\pmb{a}}, {\pmb{b}}} \right\} $表示系统所有参数的集合.
给定了能量定义, 就可以在此基础上定义系统整体的概率分布[2]:
$ \begin{equation} P\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right) = \dfrac{{{{\rm e}^{ - E\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right)}}}}{ {\sum\limits_{{\pmb{v}}, {\pmb{h}}} {{{\rm e}^{ - E\left( {{\pmb{v, h}|{\theta}}} \right)}}} }} \end{equation} $
(2) 其中, 分母部分称之为归一化因子或配分函数(Partition function), 使得系统概率取值在[0, 1]范围内, 一般用$ Z\left( {\theta} \right) = \sum_{{\pmb{v}}, {\pmb{h}}} {{\rm e}^{-E\left({{\pmb{v, h}}|{{\theta}}} \right)}} $表示.
RBM的结构决定了隐层和可见层是相互条件独立的, 于是可以得到条件概率分布[14]:
$ \begin{equation} P\left( {{\pmb{h}}|{\pmb{v}}, {\theta}} \right) = \prod\limits_{j = 0}^m {\frac{1}{\left( {1 + \exp \left( { - W_j^{\rm{T}}{\pmb{v}} - {b_j}} \right)} \right)}} \end{equation} $
(3) 以及
$ \begin{equation} P\left( {{\pmb{v}}|{\pmb{h}}, {\theta}} \right) = \prod\limits_{i = 0}^n {\frac{1}{\left( {1 + \exp \left( { - W_i{\pmb{h}} - {a_i}} \right)} \right)}} \end{equation} $
(4) RBM的训练就是依据训练样本来估计模型的参数, 使得此模型的推断数据尽可能地接近真实数据.由式(2)可得边缘概率分布, 通过使用最大似然的方法来估计, 对其对数求导数有[1]:
$ \begin{align*} &\frac{\partial \log P\left( {{\pmb{v}}|{\theta}} \right)}{\partial {\theta}} = \\ &\qquad \frac{{\partial \log \sum\limits_{\pmb{h}} {{{\rm e}^{ - E\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right)}}} }}{{\partial {\theta}}} - \frac{{\partial \log \sum\limits_{{\pmb{v, h}}} {{{\rm e}^{ - E\left( {{\pmb{v}}, {\pmb{h}}|{{\theta }}} \right)}}} }}{{\partial {{\theta }}}} = \\ &\qquad - \sum\limits_{\pmb{h}} {P\left( {{\pmb{h}}|{\pmb{v}}, {\theta}} \right)} \frac{{\partial E\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right)}}{{\partial {{\theta }}}}{\rm{ + }}\\ &\qquad\sum\limits_{{\pmb{v}}, {\pmb{h}}} {P\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right)} \frac{\partial E\left( {{\pmb{v}}, {\pmb{h}}|{\theta}} \right)}{\partial {\theta}} \end{align*} $
(5) 对于训练样本, 使用“data”表示分布$ P\left( {\pmb{h}|\pmb{v}, {\theta }} \right) $, 使用“model”表示分布$ P\left( {\pmb{v}, \pmb{h}|{\theta }} \right) $.其中, 使用$ {\left\langle \cdot \right\rangle}_p $表示关于分布$ p $的数学期望.因为$ {\theta} = \left\{{W, {\pmb{a}}, {\pmb{b}}} \right\} $, 联合式(1)的导数, 式(5)可表示为[1]:
$ \begin{equation} \frac{{\partial \log P\left( {{\pmb{v}}|{\theta}} \right)}}{{\partial {W_{ij}}}} = {\left\langle {{v_i}{h_j}} \right\rangle _{\rm{data}}} - {\left\langle {{v_i}{h_j}} \right\rangle _{\rm{model}}} \end{equation} $
(6) $ \begin{equation} \frac{{\partial \log P\left( {{\pmb{v}}|{\theta}} \right)}}{{\partial {a_i}}} = {\left\langle {{v_i}} \right\rangle _{\rm{data}}} - {\left\langle {{v_i}} \right\rangle _{\rm{model}}} \end{equation} $
(7) $ \begin{equation} \frac{{\partial \log P\left( {{\pmb{v}}|{\theta}} \right)}}{{\partial {b_j}}} = {\left\langle {{h_j}} \right\rangle _{\rm{data}}} - {\left\langle {{h_j}} \right\rangle _{\rm{model}}} \end{equation} $
(8) 期望$ \left\langle \cdot \right\rangle _{\rm{model}} $没有有效的解析解计算方法, 目前主要的做法是通过对于上述模型使用式(3)和式(4)进行交替Gibbs采样[15], 来近似逼近对数似然概率. $ K $次交替Gibbs采样, 具体来说就是先将用样本赋值给$ {\pmb v}^0 $, 然后使用式(3)和式(4)交替进行采样, $ {\pmb v}^0{\rm{\sim}}\hat P({\pmb{v}}) $, $ {{\pmb{h}}^0}{\rm{\sim}}P({\pmb{h}}|{{\pmb{v}}^0}, {\theta}) $, $ {{\pmb{v}}^1}{\rm{\sim}}P({\pmb{v}}|{{\pmb{h}}^0}, {\theta}) $, $ {{\pmb{h}}^1}{\rm{\sim}}P({\pmb{h}}|{{\pmb{v}}^1}, {\theta}) $, $ \cdots, {{\pmb{v}}^{k + 1}}{\rm{\sim}}P({\pmb{v}}|{{\pmb{h}}^k}, {{\theta }}) $, 上标表示采样顺序, $ \hat P({\pmb{v}}) $表示训练集的分布.通过式(6)$ \sim $(8)获得RBM参数的梯度来更新$ W $, $ \pmb{a} $, $ \pmb{b} $.
$ \begin{equation} \left\{ \begin{array}{l} \Delta {W_{ij}} = \varepsilon \left( {v_i^0h_j^0 - v_i^kh_j^k} \right)\\ \Delta {a_i} = \varepsilon \left( {v_i^0 - v_i^k} \right)\\ \Delta {b_j} = \varepsilon \left( {h_j^0 - h_j^k} \right) \end{array} \right. \end{equation} $
(9) 其中, $ \varepsilon $为学习率.
2. 深度信念网络
多个玻尔兹曼机堆叠后, 就形成了深度信念网络[13].通常可以在最上层再增加一层逻辑回归(Logistic regression)层来作为有监督学习分类器. DBN模型示意图见图 2.
Hinton在文献[13]中提出了深度信念网络的训练方法, 分为逐层预训练和整体精调两个阶段.在逐层预训练阶段, 从网络最底层的RBM开始, 自底向上逐层使用无监督的贪婪方法来使得每层RBM的损失误差最小.在此过程中相邻的RBM两两连接, 下层RBM的输出传递到上一层RBM作为输入, 最底层的输入为训练数据, 最顶层的输出传递给分类器.在整体精调阶段使用有监督的学习方法, 将所有隐层的权值看做一个整体, 使用梯度下降的方法针对有标签的数据进行权值修正.第一阶段的学习过程提高了在构造模型下训练数据的似然概率的变分下限, 是无监督的, 不需要标签信息.如果不进行第一阶段的逐层预训练, 直接使用随机初始化的参数直接进行梯度下降法则很容易导致训练失败, 模型容易陷入局部极值点[1].通过RBM的逐层训练, 深度网络每层的参数都已处于一个比较好的位置上, 在此前提下进行全局性的梯度下降可以精调整个模型的精度, 获得更好的结果.
3. 多隐层Gibbs采样预训练
作为生成模型的DBN, 在向下的生成方向上, 不仅是最底层的可视层, 整个网络的每一层都是为了使得重构数据的分布和真实数据的分布尽可能地接近.如图 3所示, $ {{\pmb{h}}_m}, \cdots, {{\pmb{h}}_n} $表示DBN的隐层.传统的逐层训练算法, 针对$ {{\pmb{h}}_{m+1}}, {{\pmb{h}}_m} $组合的RBM, $ {{\pmb{h}}_m} $是其可视层, $ {{\pmb{h}}_{m+1}} $是其隐层, Gibbs采样是在这两层之间迭代的, 使得此RBM参数$ W_{m+1} $收敛, 以更好地接近$ {{\pmb{h}}_m} $层输入的分布.采样先从$ {{\pmb{h}}_m} $层的输入开始向上构建$ {{\pmb{h}}_{m+1}} $层, 概率为$ P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_m}, {W_{m + 1}}} \right) $, 再在此基础上反向重构出$ {{\pmb{h}}_m} $层的数据, 概率为$ P\left( {{{\pmb{h}}_m}|{{\pmb{h}}_{m + 1}}, {W_{m + 1}}} \right) $. Salakhutdinov等在文献[16]中指出, 在DBN中如果每层RBM都被正确地初始化(可以通过逐层预训练保证), 则反向的$ P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right) $是比$ P\left( {{{\bf{h}}_{m + 1}}|{{\pmb{h}}_m}, {W_{m + 1}}} \right) $更好的$ {{\pmb{h}}_{m + 1}} $上的后验分布.反向的概率$ P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right) $是由高层多个隐层计算得到, 包含了比低层更抽象更丰富的信息.在此基础上我们使用$ P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right) $来代替$ P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_m}, {W_{m + 1}}} \right) $以获得更好的近似.
于是针对$ {{\pmb{h}}_{m + 1}}, {{\pmb{h}}_m} $组合的RBM, $ {{\pmb{h}}_m} $层的对数似然梯度为
$ \begin{align*} &\frac{\partial \log P\left( {{{\pmb{h}}_m}|{\theta}} \right)}{\partial {\theta}} = \\ &\qquad - \sum\limits_{{\pmb{h}}_{m + 1}} {P\left( {{{\pmb{h}}_{m{\rm{ + 1}}}}|{{\pmb{h}}_m}, {\theta}} \right)} \frac{\partial E\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{\theta}} \right)}{\partial {{\theta }}} +\\ &\qquad\sum\limits_{{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}} {P\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{\theta}} \right)} \frac{\partial E\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{\theta}} \right)}{\partial {\theta}} \end{align*} $
(10) 考虑到
$ \begin{align} &P\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{W_{m + 1}}}\right) = \\ &\qquad P\left( {{{\pmb{h}}_m}|{W_{m + 1}}} \right)P\left({{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_m}, {W_{m + 1}}} \right)\approx\\ &\qquad P\left( {{{\pmb{h}}_m}|{W_{m + 1}}} \right)P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right) \end{align} $
(11) 以及能量对于$ W_{m + 1} $的梯度, 所以式(10)的第二部分为
$ \begin{align} &\sum\limits_{{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}}{P\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{W_{m + 1}}} \right)}\times \\ &\qquad\frac{\partial E\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{W_{m + 1}}} \right)}{\partial {W_{m + 1, i, j}}}\approx\\ &\qquad -\sum \limits_{{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}} P\left( {{{\pmb{h}}_m}|{W_{m + 1}}} \right)\\ &\qquad P\left( {{{\pmb{h}}_{m + 1}}|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right){h_{m, i}}{h_{m +1, j}} = \\ &\qquad -\sum\limits_{{\pmb{h}}_m} P\left({{{\pmb{h}}_m}|{W_{m + 1}}} \right)\\ &\qquad P\left( {{h_{m + 1, j}} = 1|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right){h_{m, i}} = \\ &\qquad-\left\langle {{{\pmb{h}}_m}|{W_{m + 1}}} \right\rangle P\left( {{h_{m + 1, j}} = 1|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}}\right) \end{align} $
(12) 同理, 式(10)的第一部分为
$ \begin{align*} &- \sum\limits_{{{\pmb{h}}_{m + 1}}} {P\left( {{\pmb{h}}_{m+1}}|{\pmb{h}}_m, W_{m + 1} \right)}\times \nonumber\\ &\qquad\frac{\partial E\left( {{{\pmb{h}}_m}, {{\pmb{h}}_{m + 1}}|{W_{m + 1}}} \right)}{\partial {W_{m + 1, i, j}}} = \\ &\qquad \sum\limits_{{{\bf{h}}_{m + 1}}} {P\left( {{\pmb{h}}_{m+1}}|{\pmb{h}}_m, W_{m + 1} \right)} {h_{m + 1, j}}{h_{m, i}} = \\ &\qquad P\left( {h_{m + 1, j} = 1|{\pmb{h}}_m, W_{m + 1}} \right){h_{m, i}} \end{align*} $
(13) 最终可得对于$ {\pmb{W}_{m + 1}} $的对数似然梯度
$ \begin{align*} &\frac{\partial \log P\left( {{{\pmb{h}}_m}|{W_{m + 1}}} \right)}{\partial {W_{m + 1, i, j}}} = \\ &\qquad P\left( {{h_{m + 1, j}} = 1|{{\pmb{h}}_m}, {W_{m + 1}}} \right){h_{m, i}} -\\ &\qquad\left\langle {{{\pmb{h}}_m}|{W_{m + 1}}} \right\rangle P\left( {{h_{m + 1, j}} = 1|{{\pmb{h}}_{m + 2}}, {W_{m + 2}}} \right) \end{align*} $
(14) 条件概率为
$ \begin{align*} &P\left( {{\pmb{h}}_{m + 1}|{\pmb{h}}_m, {W_{m + 1}}}\right) = \\ &\qquad\prod\limits_{j = 0}^{\left| {{{\pmb{h}}_{m + 1}}} \right|} {P\left( {h_{m + 1, j}|{\pmb{h}}_m, {W_{m + 1}}}\right)} = \\ &\qquad\prod\limits_{j = 0}^{\left| {{{\pmb{h}}_{m + 1}}} \right|} {\frac{1}{\left( {1 + \exp \left( { - W_{m + 1, j}^{\rm{T}}{\pmb{h}}_m - {b_{m + 1, j}}} \right)} \right)}} \end{align*} $
(15) $ \begin{align*} &P\left( {{\pmb{h}}_{m + 1}|{\pmb{h}}_{m + 2}, {W_{m + 2}}}\right) = \\ &\qquad\prod\limits_{i = 0}^{\left|{{{\pmb{h}}_{m + 1}}} \right|}{P\left( {h_{m + 1, i}|{\pmb{h}}_{m + 2}, {W_{m + 2}}}\right)} = \\ &\qquad\prod\limits_{i = 0}^{\left|{{{\pmb{h}}_{m + 1}}} \right|} {\frac{1}{\left( {1 + \exp \left( { - {\pmb{h}}_{m + 2}{W}_{m + 2, i} - {b_{m + 1, i}}} \right)} \right)}} \end{align*} $
(16) 对于$ {b_m} $和$ {b_{m+1}} $的梯度可以通过类似的方法推导, 使用之前的记号, 可以得到类似式(6)$ \sim $(8)的结论.
$ \begin{align} &\frac{\partial \log P\left( {{{\pmb{h}}_m}|{\theta}} \right)}{\partial {W_{m + 1, i, j}}} = {\left\langle {{h_m}_{, i}{h_{m + 1, }}_j} \right\rangle _{\rm{data}}} -\\ &\qquad {\left\langle {{h_m}_{, i}{{\tilde h}_{{{_{m + 1, }}_j}}}} \right\rangle _{\rm{model}}} \end{align} $
(17) $ \begin{equation} \frac{\partial \log P\left( {{{\pmb{h}}_m}|{\theta}} \right)}{\partial {b_{m, i}}} = {\left\langle {{h_{m, i}}} \right\rangle _{\rm{data}}} - {\left\langle {{{\tilde h}_{{{_{m, }}_i}}}} \right\rangle _{\rm{model}}} \end{equation} $
(18) $ \begin{equation} \frac{\partial \log P\left( {{{\pmb{h}}_m}|{\theta}} \right)}{\partial {b_{m + 1, j}}} = {\left\langle {{h_{m + 1, j}}} \right\rangle _{\rm{data}}} - {\left\langle {{{\tilde h}_{{{_{m + 1, }}_j}}}} \right\rangle _{\rm{model}}} \end{equation} $
(19) 其中, $ {\tilde h_{{{_{m, }}_j}}} $和$ {\tilde h_{{{_{m + 1, }}_j}}} $表示从高层反向生成的$ {\pmb{h}}_m $和$ {\pmb{h}}_{m+1} $层单元的估计值, 且比传统的自下而上生成的$ {h_{m, j}} $和$ {h_{m + 1, j}} $要更精确. $ {\tilde h_{{{_{m, }}_j}}} $和$ {\tilde h_{{{_{m + 1, }}_j}}} $可以通过在高层多个隐层中使用的Gibbs采样来进行估计.
Gibbs采样是一种马尔科夫蒙特卡罗(Markov chain Monte Carlo, MCMC)方法, 可以利用已有数据来推断丢失的数据.对于从$ {\pmb{h}_{m}} $到$ {\pmb{h}_{n}} $的多隐层Gibbs采样是在$ {\pmb{h}_{m}}, {{\pmb{h}}_{m +1}}, \cdots, {{\pmb{h}}_{n-1}}, {{\pmb{h}}_{n}} $这$ n-m+1 $个隐层上进行的.信号先从$ {\pmb{h}_{m}} $层开始向上使用式(15)传播, 到达最上层$ {\pmb{h}_{n}} $层后开始使用(16)反向传播, 等到信号回退到$ {\pmb{h}_{m+1}} $层后使用采样值来估计$ {{\tilde{\pmb h}}_{_{m + 1}}} $, 随后向下采样估计$ {{\tilde{\pmb h}}_{_m}} $, 再使用式(17) $ \sim $(19)来更新网络参数.注意到我们仅更新$ {\pmb{h}_{m + 1}}, {\pmb{h}_{m}} $层相关权重, 而将高层权重固定, 以保持模型的稳定, 所以本质上还是一种逐层训练方法.在迭代时要注意从底向上逐层进行.如前两节所述, 现有的DBN预训练是针对每层的RBM使用Gibbs采样来逼近模型的真实分布, 使得每层RBM和其真实分布的差异减小, 但DBN的推断过程是将所有的RBM层看做一个整体进行的, 通过引入多隐层Gibbs采样可以在逐层逼近的基础上进一步在局部模型上逼近真实分布.
多隐层的选择和组合方式有多种可能, 本文通过实验讨论了以下4种类型的组合方式:两两不嵌套组合(Non-nested)、两两嵌套组合(Nested)、增量不嵌套组合(Incremental non-nested)和增量嵌套组合(Incremental nested).以4隐层的DBN举例, 假设4个隐层分别为$ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $, 那么两两不嵌套组合的RBM序列为($ {{\pmb{h}_{0}}, {\pmb{h}_{1}}} $), ($ {{\pmb{h}_{2}}, {\pmb{h}_{3}}} $); 两两嵌套组合的RBM为($ {{\pmb{h}_{0}}, {\pmb{h}_{1}}} $), ($ {{\pmb{h}_{1}}, {\pmb{h}_{2}}} $), ($ {{\pmb{h}_{2}}, {\pmb{h}_{3}}} $); 不嵌套增量组合的序列为($ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $), ($ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $), ($ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $), ($ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $); 嵌套增量组合的序列为($ {{\pmb{h}_{0}}, {\pmb{h}_{1}}} $), ($ {{\pmb{h}_{1}}, {\pmb{h}_{2}}} $), ($ {{\pmb{h}_{2}}, {\pmb{h}_{3}}} $), ($ {{\pmb{h}_{0}}, {\pmb{h}_{1}}, {\pmb{h}_{2}}} $), ($ {{\pmb{h}_{1}}, {\pmb{h}_{2}}, {\pmb{h}_{3}}} $), ($ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $).
综上所述, 基于多隐层Gibbs采样的DBN模型算法整体描述如下:
步骤1.无监督的逐层预训练.对于DBN中的RBM层进行逐层贪婪预训练.令$ \pmb{X} $为最底层RBM的输入.自底向上, 对于第$ i $层RBM, 计算隐层节点概率并交替采样, 具体如下.
步骤1.1.进行$ K $次Gibbs采样.使用式(3)计算概率分布, 然后从分布中抽取$ h_{i + 1, j}^k \in {\rm{\{ 0, 1\} }} $, 再使用式(4)计算并从中抽取$ h_{i, j}^{k + 1} \in {\rm{\{ 0, 1\} }} $.
步骤1.2.以下式和(9)来更新参数
$ \begin{equation} \left\{ \begin{array}{l} {W_{ij}} = {W_{ij}} - \Delta {W_{ij}}\\ {a_i} = {a_i} - \Delta {a_i}\\ {b_j} = {b_j} - \Delta {b_j} \end{array} \right. \end{equation} $
(20) 步骤2.无监督的多隐层预训练.自底向上组合多隐层, 对于每个RBM组合, 执行以下步骤进行多隐层预训练.
步骤2.1.依据式(15)向上计算每层概率分布并抽取出$ h_{i, j} \in {\rm{\{ }}0, 1{\rm{\} }} $, 直到顶层.
步骤2.2.依据式(16)计算反向概率, 每计算一层同时抽取$ {\tilde h_{{{_{m, }}_j}}} $, 直到底层.
步骤2.3.使用式(17)$ \sim $(19)计算梯度, 并更新权重.
步骤3.有监督的全局精调.步骤如下.
步骤3.1.对于所有的RBM层, 自底向上传递信号.第$ i $层的输出作为第$ i+1 $层的输入.
步骤3.2.将最上层RBM的输出和样本标签$ \pmb{Y} $传递给分类器, 使用梯度递减更新所有的参数.
4. 实验与分析
实验部分使用MNIST手写数字数据集、合成的数据集ShapeSet以及真实物体图像数据集Cifar10来测试本文的模型. MNIST数据集包含70 000张人类手写数字的图片, 每张图片包含一个0$ \sim $9的手写数字, 被分割成$ 28\times 28 $的黑白两色点阵.数据集分为两部分, 一部分是包含60 000张图片的测试用数据, 一部分是剩下的10 000张用于测试.每张图片都有对应的标签数据, 表明正确的数字是什么. MNIST数据集是一个广泛使用的评估机器学习算法的数据库, 其中包含的手写数字信息来自于不同的书写方式, 且数据集没有经过任何拉伸转换等几何上的处理.在本文实验中, 也没有进行任何额外的预处理, 相当于没有任何领域知识的介入. ShapeSet是一个人工生成的数据集, 每个样本可以包含任意多个平行四边形、三角形或圆形的图像, 图像之间可以互相叠加遮挡, 且有任意的前景和背景色.在本文的实验中, 设置每个样本的大小为$ 32\times 32 $, 限制样本中出现的图形数为1或2, 两个图形之间的遮挡率为不超过50%. Cifar10数据集包含60 000张$ 32\times32 $大小, 有RGB三原色信息的彩色图片, 共有10类物体, 每个类别6 000张.
在DBN的最上层, 增加了一层逻辑回归层来预测类别, 使用Softmax激活函数, 用预测值和真实类别值之间的负对数似然函数来计算损失.通常情况下动态的学习率会取得更好的结果, 学习率一般随着训练次数的增加而逐渐减小, 以防止模型错过最小值.在本文的实验中, 目的是验证新的算法相对传统算法的有效性, 没有去讨论模型在实验数据集上所能达到的最优结果, 所以使用了常数的学习率.无论是DBN还是改进后的算法, 在训练的第一阶段, 也就是逐层训练时使用的学习率都是0.01, 在最后一个阶段整体精调时使用的学习率是0.1, 改进后的算法的第二阶段使用0.01的学习率.在所有实验的整体精调阶段和本文提出的算法的第二阶段, 都使用了“早停” (Early stop)的技术, 来防止模型过拟合.为了加速算法, 本文使用了小批量(Mini-batch)的方法来把数据批量提交给GPU计算.文献[17]中, Vincent等给出了Mini-batch的数量设置建议, 通常情况下每个小Batch包含的样例数目应等于类别的数量, 在本文的实验中设置为10.逐层训练阶段循环Epoch数设置为100, 整体精调阶段设置为1 000, 改进的算法的第二阶段设置为100.
本文使用Python ver. 3.5.2语言在Theano ver. 0.8库的基础上实现了基本的DBN算法以及提出的改进算法.在一台Xeno E3-1230V3, 8 GB内存, Ubuntu16.10 64位的系统上, 通过GeForce GTX1070 GPU加速来运行实验程序.
4.1 4隐层, 不同RBM嵌套组合方式
在本组实验中, 使用了$ 784\times N\times N\times N\times N\times10 $的网络结构.包含了4层相同节点数的隐层. $ N $的取值从100递增到3 000.针对不同的方法, 在MNIST数据集上做了5组实验, 实验结果如图 4.
可以看到对于4隐层$ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $的深度信念网络, 使用两两嵌套组合, ($ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $), ($ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $), ($ {\pmb{h}_{2}} $, $ {\pmb{h}_{3}} $)方式训练的错误率最低, 无论是全局最低值还是整体平均值.在$ 1\, 300\times 1\, 300\times 1\, 300\times 1\, 300 $隐层的结构下, 达到最好的错误率1.09%, 比传统的DBN在同样结构时的1.25%要降低0.16%.在整组实验中使用两两嵌套组合方式的错误率普遍要好于其他方式.当隐层节点数逐渐增加到大于200以后时, 两两嵌套组合的方法要普遍好于传统方法的DBN.两两嵌套组合方式最小错误率1.09%比传统方法的最好结果1.15% (1 500隐层结点时)要低0.06%, 且在更少的隐层节点下取得, 这表明两两嵌套组合方式能够比传统方法更早更好地找到数据的特征.同时因为是深层层间全连接网络, 1 300隐层节点的网络要比1 500节点的网络少大约1/4的层间参数, 相应的计算量要少得多, 分类的速度会更快.
不嵌套组合的方法在隐层节点低于1 500时和传统的DBN接近, 大于1 500时比DBN要好, 但普遍比两两嵌套组合方式要差.
增量不嵌套和增量嵌套的组合方式表现出了较大的波动性, 错误率围绕传统DBN上下摆动.相对于不递增的组合方式, 它们对数据进行了更多轮的学习, 也消耗了更多的运算时间, 出现这样现象的原因可能是因为组合了超过3层的隐层, 从而导致出现了梯度消失或激增的情况, 导致了网络性能的不稳定[18].
4.2 3隐层, 2RBM组合交叉实验
为了进一步验证模型有效性, 在本组实验中, 改变了网络的深度, 使用了$ 784\times N\times N\times N\times 10 $的网络结构, 隐层为三层.同样的, 为了方便考察算法性能, 设置了同样的节点数, 都为$ N $. $ N $的取值设定为从100到4 000.如果对于3隐层从底向上编号为$ {\pmb{h}_{0}} $, $ {\pmb{h}_{1}} $, $ {\pmb{h}_{2}} $, 增量嵌套的训练序列是$ \left( {{\pmb{h}_{0}}, {\pmb{h}_{1}}} \right) $, $ \left( {{\pmb{h}_{1}}, {\pmb{h}_{2}}} \right) $, $ \left( {{\pmb{h}_{0}}, {\pmb{h}_{1}}, {\pmb{h}_{2}}} \right) $, 嵌套组合的训练序列是$ \left( {{\pmb{h}_{0}}, {\pmb{h}_{1}}} \right) $, $ \left( {{\pmb{h}_{1}}, {\pmb{h}_{2}}} \right) $.最终的MNIST数据集上实验结果如图 5.
最好的错误率同时出现在两两嵌套组合算法隐层为1 500节点和2 500节点时, 都为1.11%, 对应的传统的DBN算法错误率为1.25%和1.27%, 分别降低了0.14%和0.16%.在其他节点数的情况下, 从200开始改进后的算法错误率都要普遍优于传统算法.相对于4隐层的结果, 3隐层下增量嵌套组合的稳定性要更好, 虽然不如嵌套组合的效果, 但也普遍优于传统算法.
4.3 ShapeSet数据集和Cifar10数据集
为了进一步验证算法的有效性, 在ShapeSet和Cifar10数据集上针对两两嵌套组合算法和传统的DBN算法再次做了比较.实验结果如图 6和图 7. ShapeSet数据集上错误率普遍比传统方法低2个百分点. Cifar10数据集上从1 000结点规模后普遍比传统方法要低3个百分点.类似的结论再次验证本文提出的算法相对于传统DBN算法的有效性, 两两嵌套组合算法在各种隐层节点数量的模型上普遍获得了更低的错误率.
4.4 其他方法的比较
上述实验是在传统的DBN方法的基础上增加一轮无监督的组合训练得到的.传统的DBN在逐层预训练阶段使用的是基于对比散度(CD)的采样方法, 实验表明CD-1, 也就是Gibbs链迭代1次后的采样效果就已经很好了. Tieleman等[19-20]在传统的DBN上提出了一种改进的对比散度方法, 称之为Persistent contrastive divergence (PCD)算法.实验表明PCD要优于传统的基于CD-1采样的DBN算法, 和10次交替采样的CD-10接近.在本文之前实验中的对比算法就是使用CD-1的DBN算法为基准.在CD-1的基础上增加组合训练可以改进模型的精度, 那么在使用PCD或CD-10来逐层预训练的基础上能否进一步的改进模型精度呢?在MNIST数据集3隐层的模型上CD-1和CD-10的对比实验结果见图 8, 4隐层上的CD-1和CD-10以及PCD的对比结果见图 9和图 10.
可以看到, 在3隐层的网络上, CD-10的基础上再次进行RBM嵌套组合预训练并不能显著提高模型精度.最好的结果仍然是在CD-1+嵌套组合预训练的情况下.
在4隐层的网络上的结论类似, 最好的结果还是在CD-1的基础上进行嵌套组合预训练. CD-10和PCD-10的情况下, 模型错误率围绕CD-1波动, 在CD-10或PCD的基础上增加一轮组合预训练并不能显著地提高系统的精度.
4.5 时间消耗和算法效率
本文在新增的多隐层Gibbs采样预训练中使用了“早停”机制, 在训练中一旦检测到模型的代价值增加就会提前终止训练.实际中在大部分的情况下只需额外训练很少的轮数就会满足终止条件, 实际消耗的时间非常少.几种算法的实际训练时间对比见图 11.可以看到本文的算法相对于CD-1时间略微增加, 远少于CD-10和PCD算法.
上述实验表明, 本文方法能够在更小模型规模上实现比传统DBN更好的分类效果.为了量化比较, 使用算法效率(Algorithm efficiency, AE)来度量识别速度、错误率和模型规模之间的关系. AE定义为负的算法识别时间和错误率的乘积:
$ \begin{equation} AE = - time \times error \end{equation} $
(21) 在4隐层上的算法效率对比见图 12.可以看出本文方法相比传统的方法有着更高的算法效率.
5. 总结和展望
理论分析和实验表明在传统的DBN训练方法的基础上, 增加一轮基于多隐层的Gibbs采样无监督预训练, 对于提高深度信念网络的精度是有效的, 可以为进一步的有监督全局精调提供更好的初始化.对比多种隐层的组合方式, 本文发现两两嵌套组合相邻的RBM进行训练的效果最好.此种训练方法在原有无监督逐层训练的基础上进一步地提高了模型训练数据似然概率的变分下限, 相对于传统的使用CD或PCD的两阶段训练方法可以将错误率进一步降低, 同时也有着更高的算法效率.
无监督的预训练不需要样本标签, 堆叠基本组件逐层预训练也是众多深度学习模型[17, 21-22]的一种通用的学习框架.现有的深度网络还有以其他组件为基本元素组合而成的, 如深度降噪自编码网络[23], 其使用自动编码器来代替限制玻尔兹曼机, 组合基本组件混合训练的思想在理论上也可以推广到这些结构上, 是否有效也还有待进一步的实验证明.
-
[1] Bengio Y. Learning deep architectures for AI. Foundations & Trends in Machine Learning, 2009, 2(1):1-127 http://d.old.wanfangdata.com.cn/OAPaper/oai_arXiv.org_1206.5538 [2] Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks. Science, 2006, 313(5786):504-507 doi: 10.1126/science.1127647 [3] Lee H, Grosse R, Ranganath R, Ng A Y. Unsupervised learning of hierarchical representations with convolutional deep belief networks. Communications of the ACM, 2011, 54(10):95-103 doi: 10.1145/2001269 [4] Goh H, Thome N, Cord M, Lim J H. Learning deep hierarchical visual feature coding. IEEE Transactions on Neural Networks and Learning Systems, 2014, 25(12):2212-2225 doi: 10.1109/TNNLS.2014.2307532 [5] Mohamed A R, Dahl G E, Hinton G. Acoustic modeling using deep belief networks. IEEE Transactions on Audio, Speech, and Language Processing, 2012, 20(1):14-22 doi: 10.1109/TASL.2011.2109382 [6] Sarikaya R, Hinton G E, Deoras A. Application of deep belief networks for natural language understanding. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2014, 22(4):778-784 doi: 10.1109/TASLP.2014.2303296 [7] 段艳杰, 吕宜生, 张杰, 赵学亮, 王飞跃.深度学习在控制领域的研究现状与展望.自动化学报, 2016, 42(5):643-654 http://www.aas.net.cn/CN/abstract/abstract18852.shtmlDuan Yan-Jie, Lv Yi-Sheng, Zhang Jie, Zhao Xue-Liang, Wang Fei-Yue. Deep learning for control:the state of the art and prospects. Acta Automatica Sinica, 2016, 42(5):643-654 http://www.aas.net.cn/CN/abstract/abstract18852.shtml [8] Wu F, Wang Z H, Lu W M, Li X, Yang Y, Luo J B, et al. Regularized deep belief network for image attribute detection. IEEE Transactions on Circuits and Systems for Video Technology, 2017, 27(7):1464-1477 doi: 10.1109/TCSVT.2016.2539604 [9] Wang B Y, Klabjan D. Regularization for unsupervised deep neural nets. In: Proceedings of the 31st AAAI Conference on Artificial Intelligence. San Francisco, CA, USA: AAAI, 2017. 2681-2687 [10] Goh H, Thome N, Cord M, Lim J H. Top-down regularization of deep belief networks. In: Proceedings of the 26th International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada, USA: ACM, 2013. 1878-1886 [11] 李飞, 高晓光, 万开方.基于动态Gibbs采样的RBM训练算法研究.自动化学报, 2016, 42(6):931-942 http://www.aas.net.cn/CN/abstract/abstract18884.shtmlLi Fei, Gao Xiao-Guang, Wan Kai-Fang. Research on RBM training algorithm with dynamic Gibbs sampling. Acta Automatica Sinica, 2016, 42(6):931-942 http://www.aas.net.cn/CN/abstract/abstract18884.shtml [12] 乔俊飞, 王功明, 李晓理, 韩红桂, 柴伟.基于自适应学习率的深度信念网设计与应用.自动化学报, 2017, 43(8):1339-1349 http://www.aas.net.cn/CN/abstract/abstract19108.shtmlQiao Jun-Fei, Wang Gong-Ming, Li Xiao-Li, Han Hong-Gui, Chai Wei. Design and application of deep belief network with adaptive learning rate. Acta Automatica Sinica, 2017, 43(8):1339-1349 http://www.aas.net.cn/CN/abstract/abstract19108.shtml [13] Hinton G E, Osindero S, Teh Y W. A fast learning algorithm for deep belief nets. Neural Computation, 2006, 18(7):1527-1554 doi: 10.1162/neco.2006.18.7.1527 [14] Salakhutdinov R, Murray I. On the quantitative analysis of deep belief networks. In: Proceedings of the 25th International Conference on Machine Learning. Helsinki, Finland: ACM, 2008. 872-879 [15] Hinton G E. A practical guide to training restricted Boltzmann machines. Neural Networks: Tricks of the Trade. Berlin, Germany: Springer, 2012. 599-619 [16] Salakhutdinov R, Hinton G. Deep Boltzmann machines. In: Proceedings of the 12th International Conference on Artificial Intelligence and Statistics. Florida, USA: PMLR, 2009. 1967-2006 [17] Vincent P, Larochelle H, Lajoie I, Bengio Y, Manzagol P A. Stacked denoising autoencoders:learning useful representations in a deep network with a local denoising criterion. The Journal of Machine Learning Research, 2010, 11:3371-3408 https://dl.acm.org/citation.cfm?id=1953039 [18] Nielsen M. Neural Networks and Deep Learning. Determination Press[Online], available: http://neuralnetworksanddeeplearning.com, February 9, 2018. [19] Tieleman T. Training restricted Boltzmann machines using approximations to the likelihood gradient. In: Proceedings of the 25th International Conference on Machine Learning. Helsinki, Finland: ACM, 2008. 1064-1071 [20] Tieleman T, Hinton G. Using fast weights to improve persistent contrastive divergence. In: Proceedings of the 26th Annual International Conference on Machine Learning. Montreal, Quebec, Canada: ACM, 2009. 1033-1040 [21] Abdel-Hamid O, Deng L, Yu D, Jiang H. Deep segmental neural networks for speech recognition. In: Proceedings of the 14th Annual Conference of the International Speech Communication Association. Lyon, France: International Speech and Communication Association, 2013. 1849-1853 [22] Bengio Y, Thibodeau-Laufer É, Alain G, Yosinski J. Deep generative stochastic networks trainable by backprop. In: Proceedings of the 31st International Conference on Machine Learning. Beijing, China: JMLR, 2014. 226-234 [23] Wang X S, Ma Y T, Cheng Y H. Domain adaptation network based on hypergraph regularized denoising autoencoder. Artificial Intelligence Review, DOI: 10.1007/s10462-017-9576-0 期刊类型引用(9)
1. 任银广,王平,毛金凤. 深度Q-RBF网络下的瓶装食品装箱机械臂无碰轨迹规划. 机床与液压. 2023(05): 89-95 . 百度学术
2. 史昭娣,黄越辉,李湃,王伟胜. 计及深度信念网络场景生成的风/光/储协同优化规划方法. 电网技术. 2023(04): 1331-1342 . 百度学术
3. 杨子琳,陈家清. 基于随机波动模型的医疗器材需求预测仿真. 计算机仿真. 2023(06): 528-532 . 百度学术
4. 任立胜,陈红红,包永红. 基于流量行为特征的网络异常稳定识别仿真. 计算机仿真. 2023(08): 403-407 . 百度学术
5. 齐迹. 基于RCNN模型的英语文本摘要自适应分类方法. 信息技术. 2023(10): 23-28 . 百度学术
6. 吴丹,王俊,许燕. 基于深度学习的公共充电桩故障预测模型. 电子设计工程. 2022(05): 127-130+135 . 百度学术
7. 孙运文,徐秀林. 基于深度神经网络的肿瘤细胞分类器的研究. 软件工程. 2020(10): 1-4 . 百度学术
8. 刘东伟. 基于深度信念网络的网络安全态势预测. 国外电子测量技术. 2020(12): 44-48 . 百度学术
9. 沈卉卉,刘国武,付丽华,刘智慧,李宏伟. 一种基于修正动量的RBM算法. 电子学报. 2019(09): 1957-1964 . 百度学术
其他类型引用(15)
-