DNN声学建模笔记
2017-04-09
原文:Deep Neural Networks for Acoustic Modeling in Speech Recognition
DNN 包含多个隐层和大数量的输出单元,这适应了大量的HMM状态(由多个不同的三音节HMM状态建模产生,即同时考虑了音素及其两侧。)。即使大多数三音节HMM被绑定在一起,仍有成千的被绑定的状态。
论文介绍了使用DNN的两个阶段:
- 通过拟合一堆生成模型(RBM)来初始化多个特征检测层(一次初始化一层),每个生成模型具有一层潜在变量(atent variables)。训练这些模型不需要HMM状态的任何信息,而这些状态信息是声学模型所需(用来区分)。
- 第一步的每个生成模型用于初始化DNN中的相应层的隐藏单元(hidden units),然后对整个网络进行区别地微调(discriminatively fine-tuned)以预测目标HMM状态(target)。这些target通过GMM-HMM模型进行强制对齐获得。
训练深度神经网络
深层神经网络(DNN)是一种向前反馈的人工神经网络,在其输入和其输出层之间具有多于一层的隐藏单元。一层隐层,每层两个神经单元的神经网络:
每个隐层单元(j)通常用logistc函数来映射前一层的总的输入$ x_j $,计算出$ y_j$作为下层的输入。
$$ y_j = logistic(x_i) = \frac{1}{1+{\rm e}^{x_i}} \qquad, \quad x_j = b_j + \sum_{i} y_jw_{ij} $$
$b_j$是神经单元 j 的偏差,i 是前一层的标示,$w_{ij}$是从前一层单元i,连接单元j的权重。单个神经元示意图:
对于多类别分类应用,通过softmax函数,输出单元j,将所有的输入$x_j$转化成某类的概率$p_j$。
对于大的训练集,在与梯度成比例地更新权重之前,在小的,随机的“小批量”训练集而不是整个训练集上计算导数通常更有效。 这种随机梯度下降法可以通过使用“动量”系数(0 <α<1)来进一步改进,该系数使对于小批量t计算的梯度更加平滑,从而加速梯度下降速度。小批量训练集示意图,Mini-batch的组合往往是随机的:
而偏差的更新规则可以通过将它们视为来自单元的连接上的权重来导出,通常总是1。
为了减少过度拟合,大权重可以与它们的平方幅度成比例地加罚项,或者学习训练可以在验证集上的性能开始变坏的点处提前终止。 在相邻层之间具有完全连通性的DNN中,初始权重会被给予小随机值,以防止层中的所有隐藏单元获得完全相同的梯度。
具有许多隐藏层的DNN优化起来十分困难,从原点附近的随机起点开始梯度下降不是找到一组好的权重的最好方法。另外除非仔细选择权重的初始值,反向传播的梯度在不同层中将具有非常不同的幅度。
除了优化问题,DNN可能不适合泛化测试数据。 具有许多隐藏层并且每层有许多神经单元的DNN,往往是伴随着大量参数并且非常灵活的模型。这使得DNN具有复杂的建模能力,以及输入输出之间有高度的非线性关系。这种能力对于高质量声学建模非常重要,但是这同时会对训练集中偶然出现的个例(如噪声)进行建模,导致严重的过拟合。
权重罚项或早期停止可以减少过度拟合,但是往往以牺牲建模能力为代价。非常大的训练集可以减少过度拟合,同时保持建模能力,但对计算能力有很大要求。我们需要一个更好的方法通过训练集信息构建多层非线性特征检测器(feature detectors )。
A. 生成预训练(pre-training)
暂不考虑构建一个可以区别分类的特征检测器,我们先考虑构建特征检测器使其能对输入数据的结构进行建模。方法是一次学习一层的神经网路层(训练参数参数),其中一层的状态作为下一层的训练数据。在这种生成“预训练”之后,我们得到了神经网路的初始权重,然后再通过DNN的反向传播算法进行微调。生成性预训练产生的一些高级特征对于区分类别没有什么用处,但是比原始输入更有用。生成性预训练找到一个权重空间,可以使微调快速进行,并且显著减少过度拟合。
可以通过将具有一层隐藏变量的生成模型拟合到输入数据来学习单层特征检测器(feature detectors )。有两大类生成模型可供选择:
- 有向模型首先从先验分布( prior distribution)中选择潜在变量的状态,然后从给定潜在状态的条件分布中选择可观察变量的状态来生成数据。
- 无向模型有一种非常不同的生成数据的方式。不是使用一组参数来定义潜在变量上的先验分布,而是使用单独的参数集来定义给定潜在变量的值的可观察变量的条件分布。无向模型使用单个参数集W,通过能量函数定义观测变量取值向量 v, 隐层变量取值向量 h 的联合概率。能量方程E :
$$ p(v, h; W) = \frac{1}{Z}{\rm e}^{-E(v, h; W)} \quad , Z = \sum_{v’, h’} {\rm e}^{-E(v’, h’; W)} \qquad \qquad (5)$$
如果许多不同的隐藏变量非线性交互生成每个数据向量,由于“explaining away”的现象,在定向模型中难以从观测数据推断隐藏变量的状态。然而在无向模型中,只要潜在变量没有连接它们的边,推理就变得很容易。这种受限的无向模型对于分层预训练是理想的,因为每个层将具有容易的推理过程。
我们首先描述受限玻尔兹曼机(RBM)的近似学习算法,RBM包含一层二值可见(visible)单元,代表二值输入数据,这些可见单元连接到一层随机的二值隐藏单元( that learn to model significant non-independencies between the visible units)。在可见单元和隐藏单元之间有无向连接,可见单元之间和隐藏单元之间不存在连接。
RBM是一种马尔可夫随机场(MRF),但是在几个方面与大多数MRF不同:
- 具有二分连通图;
- 它通常不在不同单位之间共享权重
- 即使在训练期间,变量的子集也是不可见的。
B. RBM的有效学习过程
RBM的可见和隐藏单元组合(v , h)的能量方程可以表示为:
$$ E(v, h) = - \sum_{i \in visible}{a_iv_i} - \sum_{j \in hidden}{b_jh_j} - \sum_{i , j}{v_ih_jw_{ij}} \qquad \qquad (6)$$
其中$v_i , h_j$分别是可见单元 i 以及隐藏单元 j 二值状态,$a_i , b_j$ 是他们的偏差, $w_{ij}$是他们之间的权重。网络通过该能量函数向可见和隐性向量的可能对(pair)计算概率,如等式5。由联合概率分布关于观测数据向量v 的边缘分布(也叫似然函数)可以表示为:
$$ p(v) = \frac{1}{Z}\sum_{ h} {\rm e}^{-E(v, h)} \qquad \qquad\qquad \qquad (7)$$
类似也可以得到隐藏数据向量h 的似然函数。这样训练集的对数概率分布对于权重的导数出奇地简单:
$$ \frac{1}{N}\sum_{n = 1}^{n = N}{\frac{\mathrm{d}logp(v^n)}{\mathrm{d}w_{ij}}} = <v_ih_j>_{data} - <v_ih_j>{model} \qquad \qquad (8)$$
其中N是训练集的大小,尖括号用于表示由下标所指定的数据分布下的期望值。方程8 中简单的导数,得到一个非常简单的学习规则,在训练数据的对数概率中执行最陡的随机梯度上升:
$$\Delta w{ij} = \epsilon (<v_ih_j>_{data} - <v_ih_j>_{model} ) \qquad \qquad (9)$$
其中的$\epsilon$是学习速率( learning rate.)。
在RBM中的隐藏单元之间不存在直接连接,使得$<v_ih_j>_{data}$的无偏差样本非常容易获得。 给定随机选择的训练样本v,每个隐藏单元 j 的二进制状态 $h_j$ 为1的概率为:
$$ p(h_j = 1 | v) = logistic(b_j + \sum_{i}{v_iw_{ij}}) \qquad \qquad (10)$$
$v_ih_j$是无偏差样本。
在RBM中的可见单元之间不存在直接连接,使得可见单元的状态的无偏样本非常容易获得,给定隐藏向量
$$ p(v_i = 1 | h) = logistic(a_i + \sum_{j}{h_jw_{ij}}) \qquad \qquad (11)$$
然而,获得$<v_ih_j>_{model}$模型的无偏差样本要困难得多。这可以通过在可见单元的任何随机状态开始并且执行长时间交替Gibbs采样来完成。交替Gibbs采样使用等式10并行地更新所有隐藏单元,随后使用等式11并行地更新所有可见单元。
另一种被称为“对比发散”(CD)的更快的学习过程,该算法将可见单元的状态设置为训练向量作为开始,之后使用等式10并行地计算隐藏单元的二进制状态,并以等式11给出的概率将每个$v_i$设置为1来进行重构(reconstruction)。最终,再次更新隐藏单元的状态。 权重的变化可以表示为:
$$\Delta w_{ij} = \epsilon (<v_ih_j>_{data} - <v_ih_j>_{recon} ) \qquad \qquad (12)$$
简化后的相同学习规则可以用在偏差上,这种规则使用独立单元的状态(隐层或显层状态)而不是使用成对状态。
即使只是粗略地近似训练数据的对数概率的梯度,对比发散算法也表现出良好性能。如果在收集学习规则中的第二项的统计之前使用更多步骤的交替Gibbs采样,RBM会学习到更好的生成模型。但是如果以预训练特征检测器为目的,更多的替换通常是没有价值的。并且所有的结果是使用CD获得的,其在隐藏单元的初始更新之后进行了交替Gibbs采样的单个完整步骤。
为了抑制学习中的噪声,隐藏单元的重建和后续状态通常使用实值概率(real-valued probabilities)而不是二值样本。但使用二值样本进行隐藏状态的第一次计算依然十分重要,因为采样噪声作为正则化器(regularizer),非常有效地防止过拟合。
C. 建模实值(real-valued)数据
诸如MFCC的实值数据往往可以由具有高斯噪声的线性变量建模,可以修改RBM能量函数对这些变量建模,由此给出高斯-伯努利RBM(GRBM):
$$ E(v, h) = - \sum_{i \in vis}{\frac{(v_i-a_i)^2}{2\sigma_i^2}} - \sum_{j \in hid}{b_jh_j} - \sum_{i , j}{\frac{v_i}{\sigma_i}h_jw_{ij}} \qquad \qquad (13)$$
其中$\delta_i$是可见单元i的高斯噪声的标准方差,用于CD的两个条件分布为:
$$ p(h_j | v) = logistic(b_j + \sum_{i}{\frac{v_i}{\sigma_i}w_{ij}}) \qquad \qquad \qquad (14)$$
$$p (v_i|h) = N (a_i + \sigma_i \sum_{j}{h_jw_{ij}}, \sigma_i^2) \qquad \qquad \qquad (15)$$
其中N(μ,$σ^2$)是高斯分布。由于引用中描述的原因,学习GRBM的标准方差存在一定问题,因此对于使用CD的预训练,需对数据进行归一化,使得每个系数均值为0,方差为1。在计算p(v | h)时,将标准差设置为1,并且在重建(reconstructions)程中不添加噪声。这避免了deciding the right noise level的问题。
堆叠RBM形成深信念网络
在对数据训练RBM之后,被推测出的隐藏单元状态可以用作训练另一个RBM的数据,该RBM通过学习对第一次的RBM的隐藏单元之间的相关性进行建模。根据需要多次重复该过程,以产生多层非线性特征检测器,逐渐可以表示数据中更复杂的统计结构。这样多个RBM堆叠在一起组合成了单个多层的生成模型:深度置信网(DBN)。虽然每个RBM是非定向模型,但整个堆叠形成的DBN是混合生成模型,其顶部两层是非定向的(它们是堆叠过程中最后的RBM),但是其下层具有自顶向下的定向连接:
图中操作序列用于创建具有三个隐藏层的DBN并将其转换为预训练后的DBN-DNN。 首先,训练GRBM以对实值声学系数的帧窗口进行建模。然后,GRBM的二值隐藏单元的状态被用作于训练接下来的RBM输入数据。 该过程可根据需要重复以创建尽可能多的隐藏层。然后通过由自顶向下的定向连接替换低级RBM的无向连接,将RBM的堆叠转换为单生个成模型DBN(反向传播微调参数)。最后,通过添加“softmax”输出层来创建预训练的DBN-DNN,该输出层包含每个HMM的每个可能状态的单元。然后区别性地训练DBN-DNN,以预测输入窗口的中心帧相对应的HMM状态(in a forced alignment)。
为了理解RBM如何组成一个DBN,我们重写公式7,并且明确对$W$的依赖:
$$ p(v; W) = \sum_{h}{p(h; W)p(v|h; W)} \qquad \qquad \qquad (16)$$
其中p(h; W)如等式7中所定义,但是要互换可见单元v和隐藏单元h。现在清楚的是,可以通过在训练RBM后保持p(v | h; W)不变来优化模型,但用更好的先验来替换隐藏向量的先验概率p(h; W),例如该先验更接近于聚集后的隐藏向量(can be sampled by first picking a training case)的后验,并随后用等式14推断隐藏向量。这个聚合的后验正是在堆叠中的下一个RBM训练建模的数据。
如[22]所示,训练数据的对数概率存在一系列变分边界( variational bounds),此外,每次将新的RBM添加到堆栈中时,新的和更深的DBN上的变分界限( variational bounds)优于 先前的变分边界( variational bounds),前提是新的RBM以正确的方式初始化和学习。 虽然数学上存在一个持续改进的约束,但它能解决本文中提到的实际问题,即训练好的特征检测器是否可用于在训练DBN时对未知的任务的进行区分。同样不能保证当我们使用类似CD这些快捷办法时,训练效果得到改进。
DBN有别于其他多层,有向,非线性生成模型的一个非常好的特性是:可以在单个正向传递中推断隐藏单元的层的状态。在推导变分边界中使用的这种推断虽然不完全正确,但相当准确。因此,在通过训练一堆RBM来学习DBN之后,我们可以抛弃整个概率框架,简单地使用反向生成的权重初始化前向反馈(feed-forward)DNN的所有特征检测层。然后我们添加最终的softmax层并有区别训练整个DNN。
E .连接DNN与HMM
已被区分地微调后的DNN的输出的概率可以表示为p(HMMstate | AcousticInput)。但是为了计算维特比对齐或者在HMM框架内运行前向-后向算法,我们需要似然概率 p(AcousticInput | HMMstate)。 通过将DNN输出的后验概率除以用于微调DNN的强制对齐中的HMM状态的频率,可以将DNN输出的后验概率转换为缩放后的似然度。
$$p(AInput_t | Hstate_t) = p(Hstate_t | AInput_t) p(AInput_t)/p(Hstate_t)$$
以这种方式产生的所有似然度由相同的未知因子p(AInput)缩放,但这对对齐没有影响。虽然这种转换似乎对一些识别任务几乎没有影响,但是对于训练标签高度不平衡(例如,输入语音中包含许多静默帧)的任务来说,是比较重要的。
参考链接
一天搞懂深度学习
神经网路反向传播例子
受限玻尔兹曼机(RBM)学习笔记
The Application of Hidden Markov Models in Speech Recognition
Context-Dependent Pre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition