1 梯度消失问题与受限玻尔兹曼机

梯度下降法及其派生方法 在使用随机初始化权重的深度网络上效果并不好,其技术原因是:梯度会变得非常小。具体而言,当使用 反向传播方法 计算导数时,随着网络深度的增加,反向传播的梯度幅度值(从输出层到网络的最初几层)会急剧地减小。结果造成整体损失函数相对于最初几层权重的导数非常小。这样,当使用梯度下降法时,最初几层的权重变化非常缓慢,以至于不能从样本中进行有效学习。这种问题通常被称为 梯度的消失

梯度消失问题紧密相关的问题是:当神经网络中最后几层含有足够数量神经元时,可能单独这几层就足以对有标签数据进行建模,而不用最初几层的帮助。因此,对所有层都使用随机初始化方法进行训练所得到的网络,其性能将会与浅层网络(仅由深度网络的最后几层组成)性能相似,进而无法体现深度的优势

梯度消失一直困扰着深度神经网络发展,那么如何解决梯度消失问题呢?合理的初始权重是其中一种解决方案(见下面注释框)。多伦多大学的Geoff Hinton 教授提出的 受限玻尔兹曼机(Restricted Boltzmann Machines, RBM)[1] ,以及在其基础上堆叠而成的深度信念网络(Deeo Believe Network,DBN) ,通过逐层预训练对权重进行初始化,为解决梯度消失问题提供了一种方案。

解决梯度消失(或爆炸)问题的方法有很多种,包括:
(1)建立恒等映射。参考残差网络的思想,设计神经网络的跳跃连接结构,使反向传播的梯度值能直接传递到早期的层。
(2)更换激活函数。选择合适的激活函数来缓解梯度消失问题,如:relu 相比 sigmoid 属于非饱和激活函数,其导数在正数部分是恒等于 1 的,因此在深层网络中使用 relu 激活函数就不会导致梯度消失和爆炸的问题。但 relu 激活函数由于负数部分为 0,会导致神经元死亡,所以出现了很多变种,比如:leakrelu,elu 等。
(3)批量归一化。把每层神经网络神经元的输入值强行拉回到接近均值为 0 方差为 1 的标准正态分布,使激活输入值落在非线性函数对输入比较敏感的区域,从而让梯度变大。批量归一化应作用在激活函数前。
(4)梯度裁剪。检查误差梯度的值是否超过阈值,如果超过阈值,则将梯度设置为阈值,可以一定程度上缓解梯度爆炸问题。
(5)权重初始化。初始权重的大小会对梯度值产生很大影响,所以选择合适的权重初始化方式至关重要,一般推荐 He 初始化和 Xavier 初始化,也可采用预训练方法获得初始权重。本文的受限玻尔兹曼机就是一种权重初始化的解决方法。
(6)权重正则化。检查权重大小,并通过正则化项惩罚产生较大权重值的损失函数。常用 L1 惩罚项或 L2 惩罚项。
(7)长短时记忆网络。与恒等映射相似,但主要针对循环神经网络(循环神经网络按照时序展开,即形成一个等价的深度非循环神经网络)。如:长短期记忆(LSTM)单元和门控神经元结构(GRU)等可建立不同时序网络节点间的跳跃连接,进而减少其梯度消失(或爆炸)问题。

2 什么是受限玻尔兹曼机

受限玻尔兹曼机是一种具有两层网络结构、无向对称连接、无自反馈的随机神经网络模型(可视为一种特殊的马尔科夫随机场),见 图 1RBM 其实是一种特征提取方法,常用于初始化前馈神经网络,以提高泛化能力,而由多个RBM 结构 堆叠而成的深度信念网络 能提取出更好更抽象的特征,进而更好地支持后续任务。

一个 RBM 包含一个隐藏层(由若干随机隐单元构成,一般是伯努利分布)和一个可见层(由若干随机可见单元构成,一般是伯努利分布或高斯分布)。RBM 可表示成一个二分图模型(图 1),所有可见单元和隐单元之间存在全连接,而隐单元两两之间、可见单元两两之间不存在连接,也就是层间全连接,层内无连接( 普通玻尔兹曼机模型为层间、层内全连接,这也是“受限”二字的由来)。每一个可见层单元和隐藏层单元都有两种状态:激活状态时值为 11 ,未被激活状态值为 00 。这里的 0011 状态的意义代表了模型会使用哪些单元(处于激活状态的单元被使用,未处于激活状态的单元未被使用)。所有单元的激活概率由概率分布函数计算。

图 1 受限玻尔兹曼机的概率图模型

一个RBM中,v\mathbf{v} 表示所有可见单元,h\mathbf{h} 表示所有隐单元。要想确定该模型,只需得到模型三个参数,分别是权重矩阵 W\mathrm{W} ,可见层单元偏置 A\mathrm{A}, 隐藏层单元偏置 B\mathrm{B} 。 假设一个RBMnn 个可见单元和 mm 个隐单元,用 vi\mathbf{v}_{i} 表示第 ii 个可见单元, hj\mathbf{h}_{j} 表示第 jj 个隐单元,则其参数可形式化为:

W={wi,j}Rn×m\mathrm{W}=\{ w_{i, j}\} \in \mathbb{R}^{n \times m}wi,j\quad w_{i, j} 表示第 ii 个可见单元和第 jj 个隐单元之间的权值。

A={ai}Rn\mathrm{A}=\{a_{i} \} \in \mathbb{R}^{n}ai\quad a_{i} 表示第 ii 个可视单元的偏置阈值。

B={bj}Rm\mathrm{B}=\{b_{j} \} \in \mathbb{R}^{m}bj\quad b_{j} 表示第 jj 个隐单元的偏置阈值。

2.1 能量公式

为简单起见,假设可见层单元和隐藏层单元均服从伯努利分布,则根据玻尔兹曼机原理,对于给定的状态值 (v,h)(\mathbf{v}, \mathbf{h}) ,该受限玻尔兹曼机的能量为:

E(v,hθ)=i=1naivij=1mbjhji=1nj=1mviWijhj\mathrm{E}(\mathbf{v}, \mathrm{\mathbf{h}} \mid \boldsymbol{\theta})=-\sum_{i=1}^{n} a_{i} \mathbf{v}_{i}-\sum_{j=1}^{m} b_{j} \mathbf{h}_{j}-\sum_{i=1}^{n} \sum_{j=1}^{m} \mathbf{v}_{i} W_{i j} \mathbf{h}_{j}

其中,令 θ={Wij,ai,bj}\boldsymbol{\theta} =\{ W_{ij},a_i,b_j \}RBM 模型的所有参数(均为实数),上述能量公式表明:在 每一个可能的可见单元每一个可能的隐藏层单元 之间都存在一个能量值。

2.2 联合概率公式

对该能量公式做 指数化归一化 后,可得到可见层单元集合 v\mathbf{v} 和隐藏层单元集合 h\mathbf{h} 分别处于某一确定状态时的联合概率分布:

P(v,hθ)=eE(v,hθ)Z(θ)Z(θ)=v,heE(v,hθ)\begin{aligned} &\mathrm{P}(\mathbf{v}, \mathrm{\mathbf{h}} \mid \boldsymbol{\theta})=\frac{e^{-E(\mathbf{v}, \mathbf{h} \mid \boldsymbol{\theta})}}{Z(\boldsymbol{\theta})} \\ &\mathrm{Z}(\boldsymbol{\theta})=\sum_{\mathbf{v}, \mathbf{h}} e^{-E(\mathbf{v}, \mathbf{h} \mid \boldsymbol{\theta})} \end{aligned}

其中,Z(θ)Z(\boldsymbol{\theta}) 为归一化因子或 配分函数(partition function),为所有可见层单元和隐藏层单元的所有可能状态的能量指数之和。

2.3 边缘化与似然函数

基于联合概率分布 P(v,hθ)P(\mathbf{v},h \mid\boldsymbol{\theta}) ,通过对隐藏层单元 h\mathbf{h} 做边缘化( 即对所有可能的状态求和 ),就可以得到可见层单元 v\mathbf{v} 的边缘概率分布 P(vθ)P(v \mid \boldsymbol{\theta})

P(vθ)=1Z(θ)heE(v,hθ)\mathrm{P}(\mathbf{v} \mid \boldsymbol{\theta})=\frac{1}{Z(\boldsymbol{\theta})} \sum_{\mathbf{h}} e^{-E(\mathbf{v}, \mathbf{h} \mid \boldsymbol{\theta})}

该边缘分布为可见层单元 v\mathbf{v} 处于某一种状态时的概率,在贝叶斯统计方法中也被称为似然函数。

(受限)玻尔兹曼机 是一种无向概率图模型(马尔科夫随机场),其中可见层单元与隐藏层单元均为二值的离散随机变量。统计物理学中的能量公式,在此处被用于求解该无向图的联合概率分布。

2.4 联合概率的计算方法

注意, RBM 模型具有“层间全连接、层内无连接”的结构特点,因此根据马尔可夫随机场原理,具有以下重要性质:

  • 在给定可见单元状态 v\mathbf{v} 时,各隐藏层单元的激活状态 hj,j{1,...,m}h_j,j\in \{1,...,m\} 之间条件独立。其中第 jj 个隐单元的激活概率为:

P(hj=1v)=σ(bj+iviWij)\mathrm{P}\left(\mathbf{h}_{j}=1 \mid \mathbf{v}\right)=\sigma\left(b_{j}+\sum_{i} \mathbf{v}_{i} W_{i j}\right)

  • 相应的,当给定隐单元状态 h\mathbf{h} 时,可见单元的激活状态 vi,i{1,...,n}\mathbf{v}_i,\quad i \in \{1,...,n\} 之间同样条件独立,其中第 ii 个可见单元的激活概率为:

P(vi=1h)=σ(ai+jWijhj)\mathrm{P}\left(\mathbf{v}_{i}=1 \mid \mathrm{\mathbf{h}}\right)=\sigma\left(a_{i}+\sum_{j} W_{i j} \mathbf{h}_{j}\right)

  • 激活函数选择 sigmoid 函数,$$\sigma(x)=\frac{1}{1+e^{-x}}$$ ,其函数曲线如 图 2 所示:

图 2 Sigmoid 函数。采用sigmoid 函数 作为激活概率函数的原因:其定义域为 ,+)-\infty,+\infty),输出处于 (0,1)(0,1) 之间。无论函数输入值处于哪种范围,sigmoid 函数 都会输出一个符合概率值值域要求的结果,即单元的激活概率值。

根据马尔可夫随机场的基本原理,联合概率分布 P(v,hθ)P(\mathbf{v},\mathbf{\mathbf{h}} \mid \boldsymbol{\theta}) 可由独立的概率 P(hj=1v)P(\mathbf{\mathbf{h}}_j=1 \mid v)P(vi=1h)P(\mathbf{v}_i=1 \mid \mathbf{\mathbf{h}}) 计算获得。

3 模型参数求解

确定一个 RBM 模型需要明确两个部分的参数:

(1)首先要确定可见层和隐藏层单元的个数 nnmm,即确定网络结构。

可见层单元个数 nn 即为输入数据的维数,隐藏层单元个数 mm 有可能与可见层单元个数有关( 如:用 卷积受限玻尔兹曼机 处理图像数据 ),但大多数情况下,mm 需根据应用人为确定。有研究者提出了一种准则,即在参数 θ\boldsymbol{\theta} 确定条件下,选择能够使模型总能量最小的那组隐藏单元数量作为 mm

(2)其次要确定模型的三个参数 θ={Wij,ai,bj}\boldsymbol{\theta} = \{W_{ij},a_i,b_j\} ,即确定网络参数。

当已经指定 nnmm 时,需要通过样本来求得这三个参数,其 基本思路 是:

  • 根据上述联合概率分布,可通过边缘化求得可见层 v\mathbf{v} 的概率分布。根据最大似然原理,能够使该概率分布最大的 θ^\boldsymbol{\hat \theta} 值为 θ\boldsymbol{\theta} 的最优解。也就是说,通过对似然函数求导并求极值的方式,可以计算获得最优的参数值。
  • 对于 RBM 来说,其本质是在给定 样本网络结构 后,通过调整模型参数来拟合给定样本,使得在该参数下 RBM 表示的可见层单元概率分布 P(vθ)P(\mathbf{v} \mid \boldsymbol{\theta}) 尽可能的与训练数据相符。

上面已经提到了,参数求解会用到似然函数对参数的求导。在概率模型中,通常不会对似然直接求导,而是将原始概率转换为对数形式,即 对数似然。从 P(vθ)=1Z(θ)heE(v,hθ)\mathrm{P}(\mathbf{v} \mid \boldsymbol{\theta})=\frac{1}{Z(\boldsymbol{\theta})} \sum_{\mathbf{h}} e^{-E(\mathbf{v}, \mathbf{h} \mid \boldsymbol{\theta})} 可知,能量 EE 和概率 PP 成反比关系,所以通过最大化 PP,才能使能量值 EE 最小。最大化似然函数的常用方法是梯度上升,梯度上升法指迭代地对参数按照以下公式进行更新:

θ=θ+μlnP(v)θ\boldsymbol{\theta}=\boldsymbol{\theta}+\mu \frac{\partial \ln P(\mathbf{v})}{\partial \boldsymbol{\theta}}

通过求 lnP(v)\ln P(\mathbf{v}) 关于 θ\boldsymbol{\theta} 的导数,即 lnP(v)θ\frac{\partial \ln P(\mathbf{v})}{\partial \boldsymbol{\theta}} ,然后对原 θ\boldsymbol{\theta} 值进行修改。如此迭代使似然函数 PP 达到最大,从而使能量 EE 最小。

技术难点分析:

设对数似然的形式为 lnP(vt)\ln P({\mathbf{v}}^t) ,其中 vt{\mathbf{v}}^t 表示模型的第 tt 轮输入。对数似然分别对 θ={Wij,ai,bj}\boldsymbol{\theta} = \{W_{ij},a_i,b_j\} 里的参数求偏微分,可得到如下解析形式:

lnP(vt)wi,j=P(hj=1vt)vitvP(v)P(hj=1v)vilnP(vt)ai=vitvP(v)vilnP(vt)bj=P(hj=1vt)vP(v)P(hj=1v)\begin{aligned} \frac{\partial \ln P\left(v^{t}\right)}{\partial w_{i, j}}&=P\left(\mathbf{h}_{j}=1 \mid v^{t}\right) \mathbf{v}_{i}^{t}-\sum_{v} P(\mathbf{v}) P\left(\mathbf{h}_{j}=1 \mid v\right) \mathbf{v}_{i} \\ \frac{\partial \ln P\left(v^{t}\right)}{\partial a_{i}}&=\mathbf{v}_{i}^{t}-\sum_{v} P(\mathbf{v}) \mathbf{v}_{i} \\ \frac{\partial \ln P\left(v^{t}\right)}{\partial b_{j}}&=P\left(\mathbf{h}_{j}=1 \mid v^{t}\right)-\sum_{v} P(\mathbf{v}) P\left(\mathbf{h}_{j}=1 \mid v\right) \end{aligned}

上面的三个偏微分公式中,第二项都含有 P(v)P(\mathbf{v}), 而 P(v)P(\mathbf{v}) 无法得到封闭形式解。因此,必须想办法获得 P(v)P(\mathbf{v}) 的解,求导工作才能实现。而众所周知,当无法取得封闭形式解时,最好的方法是通过蒙特卡洛方法获得一个近似解,即利用随机样本来表示分布 P(v)P(\mathbf{v}),并用该随机样本来计算后续任务 。

4 模型训练算法

4.1 Gibbs 采样算法

在上一节末尾谈到对参数求导时,存在不可求项 P(v)P(\mathbf{v}),只能采用蒙特卡洛方法来获得 P(v)P(\mathbf{v}) 的近似样本集,然后基于该样本集计算后续任务。蒙特卡洛采样方法很多,论文作者提出采用 Gibbs 采样方法。

Gibbs 采样的思想是:虽然不知道整个样本集 x=(x1,,xi,,xN)\mathbf{x}=(\mathbf{x}_1,\ldots,\mathbf{x}_i,\ldots,\mathbf{x}_N) 所对应的概率分布 P(x)P(\mathbf{x}),但根据玻尔兹曼机模型,可以得到每一个样本点的自由能和条件概率 p(xixi)p(\mathbf{x}_i \mid \mathbf{x}_{-i}) ,可以先求出每一个数据点的条件概率值,得到 x\mathbf{x} 的任一状态 [x1(0),...,xi(0),...,xN(0)][\mathbf{x}_1(0),...,\mathbf{x}_i(0),...,\mathbf{x}_N(0)] 。然后,用条件概率公式迭代对每一个数据点求条件概率。最终,迭代 kk 次的时候,x\mathbf{x} 的状态 [x1(k),...,xi(k),...,xN(k)][\mathbf{x}_1(k),...,\mathbf{x}_i(k),...,\mathbf{x}_N(k)] 将收敛于 x\mathbf{x} 的联合概率分布 P(x)P(\mathbf{x})

对于 RBM 来讲,执行过程如图 3 所示:

图三

图 3 Gibbs 采样过程

求解过程如下:

假设给出一个训练样本 v0v_0,根据公式 P(hj=1v)P(h_j=1 \mid v)h0h_0 中每个单元的条件概率,再根据公式 P(vi=1h)P(\mathbf{v}_i =1\mid h)v1v_1 中每个单元的条件概率,然后依次迭代,直到执行 kk 步(kk 足够大),此时 P(vh)P(v\mid h) 的概率将收敛于 P(v)P(\mathbf{v}) 的概率。如下所示:

h0P(hvo)v1P(vh0)h1P(hv1)v2P(vh1) ... ... vk+1P(vhk)\begin{aligned} &\mathbf{h}_{0} \sim P\left(h \mid \mathbf{v}_{o}\right)\\ &\mathbf{v}_{1} \sim P\left(v \mid \mathbf{h}_{0}\right)\\ &\mathbf{h}_{1} \sim P\left(h \mid \mathbf{v}_{1}\right)\\ &\mathbf{v}_{2} \sim P\left(v \mid \mathbf{h}_{1}\right)\\ &\text { ... ... }\\ &\mathbf{v}_{k+1} \sim P\left(v \mid \mathbf{h}_{k}\right) \end{aligned}

4.2 CD-k 算法

CD 算法 是需要 kk 次(通常 k=1k=1Gibbs 采样对可见层单元进行重构得到可见层单元的概率分布。其思想是:假设给模型一个样本 v0v_0,通过 P(hj=1v)=σ(bj+iviWij)\mathrm{P}\left(\mathbf{h}_{j}=1 \mid \mathbf{v}\right)=\sigma\left(b_{j}+\sum_{i} \mathbf{v}_{i} W_{i j}\right) 求所有隐藏层单元的概率值,然后每一个概率值和随机数进行比较得到每一个隐藏层单元的状态,然后通过公式 P(vi=1h)=σ(ai+jWijhj)\mathrm{P}\left(\mathbf{v}_{i}=1 \mid \mathrm{\mathbf{h}}\right)=\sigma\left(a_{i}+\sum_{j} W_{i j} \mathbf{h}_{j}\right) 求每一个可见层单元的概率值,再由 P(hj=1v)=σ(bj+iviWij)\mathrm{P}\left(\mathbf{h}_{j}=1 \mid \mathbf{v}\right)=\sigma\left(b_{j}+\sum_{i} \mathbf{v}_{i} W_{i j}\right) 求每一个隐藏层单元的概率值。最后参数梯度的计算公式变为:

ΔWij=μ(<vihjdata vihj>recon )Δai=μ(<vidata vi>recom )Δbj=μ(<hjdata <hjrecon )\begin{gathered} \Delta W_{i j}=\mu\left(<\mathbf{v}_{i} \mathbf{h}_{j}\right\rangle_{\text {data }}-\left\langle \mathbf{v}_{i} \mathbf{h}_{j}>_{\text {recon }}\right) \\ \Delta a_{i}=\mu\left(<\mathbf{v}_{i}\right\rangle_{\text {data }}-\left\langle \mathbf{v}_{i}>_{\text {recom }}\right) \\ \left.\left.\Delta b_{j}=\mu\left(<\mathbf{h}_{j}\right\rangle_{\text {data }}-<\mathbf{h}_{j}\right\rangle_{\text {recon }}\right) \end{gathered}

其中,$\mu $ 是学习率,datadatareconrecon 分别表示训练数据的概率分布和重构后的概率分布。

通过以上方法都可以求出参数的梯度,由每一个参数的梯度对原参数值进行修改来使模型的能量减小。

图 4 CD 算法伪代码

5 模型的评估

对于模型的评估,一般程序中并不会去真的计算当模型训练好时的模型能量 EE ,而是采用近似方法来对模型进行评估。

常用近似方法是 重构误差,所谓重构误差是指以训练样本作为初始状态,经过 RBM 模型 的分布进行一次 Gibbs 采样 后与原数据的差异值。具体解释如下:

对于给定的样本 ,通过公式 P(hj=1v)=σ(bj+iviWij)\mathrm{P}\left(\mathbf{h}_{j}=1 \mid \mathbf{v}\right)=\sigma\left(b_{j}+\sum_{i} \mathbf{v}_{i} W_{i j}\right) 对所有隐藏层单元的条件概率进行采样,再通过公式 P(vi=1h)=σ(ai+jWijhj)\mathrm{P}\left(\mathbf{v}_{i}=1 \mid \mathrm{\mathbf{h}}\right)=\sigma\left(a_{i}+\sum_{j} W_{i j} \mathbf{h}_{j}\right) 对所有可见层单元的条件概率进行采样,最后由样本值和采样出的可见层概率值做差取绝对值,作为该模型的评估。重构误差能够在一定程度上反映 RBM 对训练数据的似然度。

6 单元状态如何确定

对于每一层单元状态值( 00 或者 11)的确定是采用与随机数(在 0011 之间)进行比较的方法,如果单元被激活的概率值大于一个随机产生的数,则认为该单元被激活。原因是:给定可见层单元 v\mathbf{v} 时,隐藏层第 jj 个单元状态为 11 的激活概率为 pjvp_j^v 。这时,在区间 [0,1][0,1] 上产生一个随机数 rjr_j落在子区间 [0,pjv][0,p_j^v] 的概率也是 pjvp_j^v ,既然两个事件的概率相等,若随机数 rjr_j 落在子区间 [0,pjv][0,p_j^v] ,则认为第 jj 个单元的状态为 11 ,否则为 00 。如下:

(1)对于隐藏层单元的激活状态

(2)同理,对于可见层单元的激活状态

总结:受限玻尔兹曼机网络模型的目的就是最大可能的拟合输入数据,即最大化 P(v)P(\mathbf{v})Hinton 提出的一种快速训练算法,即 Contrastive Divergence( 对比散度 CD-k )算法

该算法需要迭代 kk 次,就可以获得模型对输入数据的估计,而通常 kk11CD 算法 在开始是用训练数据去初始化可见层,然后用条件概率分布计算隐藏层;然后,再根据隐藏层状态用条件概率分布计算可见层。这样产生的结果就是对训练数据的一个重构。根据 CD 算法 可得模型对网络权值的梯度:

ΔWij=μ(<vihjdata <vihj>recon )\left.\Delta W_{i j}=\mu\left(<\mathbf{v}_{i} \mathbf{h}_{j}\right\rangle_{\text {data }}-<\mathbf{v}_{i} \mathbf{h}_{j}>_{\text {recon }}\right)

其中,$\mu $ 是学习率, <vihj>data<\mathbf{v}_ih_j>_{data} 是样本数据的期望, <vihj>recon<\mathbf{v}_ih_j>_{recon} 是重构后可见层数据的期望。

7 深度置信网络

本节讨论 RBM 如何堆叠组成一个 深度置信网络(Deep Belief Network, DBN),从而作为 DBN 预训练 的基础模型。在进行细节探究之前,需要首先知道,由 HintonSalakhutdinov文章[2] 提出的这种预训练过程是一种 无监督的逐层预训练 的通用技术,也就是说,不是只有 RBM 可以堆叠成一个深度生成式或判别式网络,其他类型的网络也可以使用相同方法来生成网络,比如 Bengio 等人文献[3] 中提出的 自动编码器(AutoEncoder) 的变种。

图 5 描述了一个逐层训练的例子,将一定数目的 RBM 堆叠成一个 DBN,然后从底向上逐层预训练。堆叠过程如下:

(1)训练一个高斯-伯努利 RBM (适用于语音应用的连续特征)或 伯努利-伯努利 RBM(适用于正态分布或二项分布特征应用,如黑白图像或编码后的文本)后,将隐单元的激活概率作为下一层 伯努利-伯努利 RBM 的输入数据。

(2)第二层 伯努利-伯努利 RBM 的激活概率作为第三层 伯努利-伯努利 RBM 的可见层输入数据。

(3)以后各层以此类推。

关于这种有效的 逐层贪婪学习策略 的理论依据由 文献[2] 给出。已经表明,上述贪婪过程达到了近似的最大似然学习。该学习过程是无监督的,所以不需要标签信息。

当应用到分类任务时,生成式预训练可以和其他算法结合使用,典型的是判别式方法,它通过有效地调整所有权值来改善网络的性能。判别式 精调(fine-tune) 通常是在现有网络的最后一层上再增加一层单元,用来表示想要的输出或者训练数据提供的标签,它与标准的 前馈神经网络(feed-forward neural network) 一样,可使用 反向传播算法(back-propagation algorithm) 来调整或精调网络的权值。DBN 最后一层即标签层的内容,应根据不同的任务和应用来确定。

图 5 DBN 逐层预训练示意图

上述生成式预训练应用在音素和语音识别中,要比随机初始化网络的效果要好。研究也表明了其他种类预训练策略的有效性。比如,在执行逐层贪婪训练时,可以在每一层的生成损失函数中增加一项判别项。如果不适用生成式预训练,只使用随机梯度下降方法来对随机初始化 DBN 进行判别式训练,研究结果表明,当非常仔细的选取初始权值并且谨慎的选取适合于随机梯度下降的 小批量”(mini-batch) 的大小(例如,随着训练轮数增加大小),也将会获得很好的效果。小批量 用于在收敛速度和噪声梯度之间进行折中。同时,在建立 小批量 时,对数据进行充分的随机化也是至关重要的。另外,很重要的一个发现是:从一个只含有一层的浅层神经网络开始学习一个 DBN 是非常有效的。当折中方法用于训练区分式模型时(使用提前结束训练的策略以防止过拟合的出现),在第一个隐藏层和标签的 softmax 输出层 之间插入第二个隐藏层,然后对整个网络应用反向传播来微调网络的权值。这种判别式预训练在实践中取得了比较好的效果,特别是在有大量的训练数据的情况下效果较好。当训练数据不断增多时,即使不使用上述预训练,一些特别设计的随机初始化方法也能够取得很好的效果。

参考文献

[1] Hinton G. A practical guide to training restricted Boltzmann machines[J]. Momentum, 2010, 9(1): 926.

[2] Hinton G E, Osindero S, Teh Y W. A fast learning algorithm for deep belief nets[J]. Neural computation, 2006, 18(7): 1527-1554.

[3] Bengio Y, Lamblin P, Popovici D, et al. Greedy layer-wise training of deep networks[J]. Advances in neural information processing systems, 2007, 19: 153.