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),所有可见单元和隐单元之间存在全连接,而隐单元两两之间、可见单元两两之间不存在连接,也就是层间全连接,层内无连接( 普通玻尔兹曼机模型为层间、层内全连接,这也是“受限”二字的由来)。每一个可见层单元和隐藏层单元都有两种状态:激活状态时值为 $1$ ,未被激活状态值为 $0$ 。这里的 $0$ 和 $1$ 状态的意义代表了模型会使用哪些单元(处于激活状态的单元被使用,未处于激活状态的单元未被使用)。所有单元的激活概率由概率分布函数计算。

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

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

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

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

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

2.1 能量公式

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

$$
\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}
$$

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

2.2 联合概率公式

对该能量公式做 指数化归一化 后,可得到可见层单元集合 $\mathbf{v}$ 和隐藏层单元集合 $\mathbf{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(\boldsymbol{\theta})$ 为归一化因子或 配分函数(partition function),为所有可见层单元和隐藏层单元的所有可能状态的能量指数之和。

2.3 边缘化与似然函数

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

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

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

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

2.4 联合概率的计算方法

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

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

$$
\mathrm{P}\left(\mathbf{h}{j}=1 \mid \mathbf{v}\right)=\sigma\left(b{j}+\sum_{i} \mathbf{v}{i} W{i j}\right)
$$

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

$$
\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)$ 之间。无论函数输入值处于哪种范围,sigmoid 函数 都会输出一个符合概率值值域要求的结果,即单元的激活概率值。

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

3 模型参数求解

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

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

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

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

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

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

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

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

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

技术难点分析:

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

$$
\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(\mathbf{v})$, 而 $P(\mathbf{v})$ 无法得到封闭形式解。因此,必须想办法获得 $P(\mathbf{v})$ 的解,求导工作才能实现。而众所周知,当无法取得封闭形式解时,最好的方法是通过蒙特卡洛方法获得一个近似解,即利用随机样本来表示分布 $P(\mathbf{v})$,并用该随机样本来计算后续任务 。

4 模型训练算法

4.1 Gibbs 采样算法

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

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

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

图三

图 3 Gibbs 采样过程

求解过程如下:

假设给出一个训练样本 $v_0$,根据公式 $P(h_j=1 \mid v)$ 求 $h_0$ 中每个单元的条件概率,再根据公式 $P(\mathbf{v}i =1\mid h)$ 求 $v_1$ 中每个单元的条件概率,然后依次迭代,直到执行 $k$ 步($k$ 足够大),此时 $P(v\mid h)$ 的概率将收敛于 $P(\mathbf{v})$ 的概率。如下所示:
$$
\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 算法 是需要 $k$ 次(通常 $k=1$)Gibbs 采样对可见层单元进行重构得到可见层单元的概率分布。其思想是:假设给模型一个样本 $v_0$,通过 $\mathrm{P}\left(\mathbf{h}{j}=1 \mid \mathbf{v}\right)=\sigma\left(b{j}+\sum_{i} \mathbf{v}{i} W{i j}\right)$ 求所有隐藏层单元的概率值,然后每一个概率值和随机数进行比较得到每一个隐藏层单元的状态,然后通过公式 $\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)$ 求每一个可见层单元的概率值,再由 $\mathrm{P}\left(\mathbf{h}{j}=1 \mid \mathbf{v}\right)=\sigma\left(b_{j}+\sum_{i} \mathbf{v}{i} W{i j}\right)$ 求每一个隐藏层单元的概率值。最后参数梯度的计算公式变为:

$$
\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 $ 是学习率,$data$ 和 $recon$ 分别表示训练数据的概率分布和重构后的概率分布。

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

图 4 CD 算法伪代码

5 模型的评估

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

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

对于给定的样本 ,通过公式 $\mathrm{P}\left(\mathbf{h}{j}=1 \mid \mathbf{v}\right)=\sigma\left(b{j}+\sum_{i} \mathbf{v}{i} W{i j}\right)$ 对所有隐藏层单元的条件概率进行采样,再通过公式 $\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 单元状态如何确定

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

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

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

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

该算法需要迭代 $k$ 次,就可以获得模型对输入数据的估计,而通常 $k$ 取 $1$ 。CD 算法 在开始是用训练数据去初始化可见层,然后用条件概率分布计算隐藏层;然后,再根据隐藏层状态用条件概率分布计算可见层。这样产生的结果就是对训练数据的一个重构。根据 CD 算法 可得模型对网络权值的梯度:
$$
\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 $ 是学习率, $<\mathbf{v}ih_j>{data}$ 是样本数据的期望, $<\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.