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

5.3 降噪自动编码器预训练

在逐层生成的DBN预训练中,我们使用RBM作为积木组件。然而,RBM不是唯一可以用来生成性地预训练模型的技术。一个同样有效的方法是采用降噪自动编码器,如图5.6所示,目标是训练一个隐层表示,可以使用这个隐层表示从随机损坏的版本重建原始输入。在自动编码器中,目标是基于没有标注的训练数据集S={(vm)|1≤mM}。找到一个Nh维隐层表示,通过它可以使用最小均方误差(MSE)把初始的Nv维信号v重建为

图5-6 降噪自动编码器

理论上,确定的编码函数f(v)及确定的解码函数g(h)可以是任意函数。在实践中,通常选择一些特定形式的函数来降低优化问题的复杂度。

最简单的一个线性隐层可以用来表示输入信号。在这个条件下,隐层神经元采用数据的前Nh个主成分用来表达输入。而在通常情况下,隐层是非线性的,这时自动编码器和主成分分析(PCA)的表现就不一样,它有获取输入分布的多重模态属性的潜力。

既然我们这里感兴趣的是使用自动编码器来初始化由sigmoid单元构成的DNN中的权重。我们选择

h=f(v)=σ(Wev+b)  (5.36)

其中,是编码矩阵,是隐层偏置向量。如果输入特征取二进制值,则可以选择

其中,是重建层偏置向量。如果输入特征取实数值,我们可以选择

注意到与在RBM中不同,在自动编码器中,尽管它们通常被绑定为We=WWd=WT,一般意义下,权重矩阵WeWd可能是不同的。无论输入特征是二进制还是实数,无论使用何种编码和解码函数,在第4章中描述的反向传播算法都能够用来学习自动编码器中的参数。

在自动编码器中,我们希望分布式的隐层表示h可以捕捉训练数据中的主要变化因素。自动编码器的训练准则是最小化训练数据集上的重建误差,它对与训练样本同分布的测试样本通常可以给出较低的重建误差,但对其他样本给出相对较高的重建误差。

当隐层表示的维度高于输入特征的维度时,自动编码器就存在一个潜在的问题。如果除最小化重建误差外没有其他限制,那么自动编码器可能只学习到恒等函数,而没有提取出在训练数据集中出现的任何统计规律。

这个问题可以由多种途径解决。例如,我们可以给隐层添加一个稀疏性限制,从而强制令隐层大部分节点为零。或者,我们可以在学习过程中添加随机扰动。在降噪自动编码器[51]中使用了这种方法,它强制隐层去发掘更多的鲁棒特征[206],以及通过从一个损坏的版本重建输入以阻止它只学习到恒等函数。

存在很多方式损坏输入,最简单的方式是随机选择输入条目(一半条目)并把它们设置为零。一个降噪自动编码器做了两件事情:一是保存输入的信息,二是撤销随机损坏过程的影响。后者只能通过捕捉输入中的统计依赖性实现。注意到在RBM的对比散度训练过程中,采样步骤本质上执行的就是对输入的随机损坏过程。

类似于使用RBM,我们可以使用降噪自动编码器来预训练一个DNN[51]。首先训练一个降噪自动编码器,使用其编码权重矩阵作为第1个隐层的权重矩阵。然后,把隐层的表示作为第2个降噪自动编码器输入,训练结束后,把第2个降噪自动编码器的编码权重矩阵作为DNN第2个隐层的权重矩阵。可以继续这个过程,直到得到所需要的隐层数。

基于自降噪编码器预训练和DBN(RBM)预训练有相似的属性,两者都是生成过程,不需要有标注的数据。这样,可以把DNN权重调整到一个较好的初始点,并潜在地使用生成性预训练准则正则化DNN训练过程。