语音识别领域《Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation》中提出了一种方法LHUC,我们来看下它的实现:
摘要
本研究广泛探讨了通过学习隐藏单元贡献(LHUC:learning hidden unit contributions)的方法来调整神经网络声学模型的自适应能力——该方法以说话人依赖(speaker-depdent)或环境依赖(environment-dependent)的方式,使用少量无监督自适应数据线性重新组合隐藏单元。我们还把LHUC扩展到说话人自适应训练(SAT)框架中,从而得到一个更加可适应的DNN声学模型,该模型既能以说话人依赖的方式工作,也能以说话人独立的方式工作,无需维护辅助的说话人依赖特征提取器,也无需引入显著的说话人依赖的DNN结构变化。通过在四个不同的语音识别基准测试(TED演讲、Switchboard、AMI会议和Aurora4)上的一系列实验,这些测试涵盖了270名测试说话人,我们展示了无论是在仅限测试的LHUC还是在SAT变体中,都能实现一致的字错误率降低,降幅范围从5%到23%不等,具体取决于任务以及训练和测试数据之间的不匹配程度。此外,我们还研究了每个说话人的自适应数据量、无监督自适应目标的质量、与其他自适应技术的互补性、一次性自适应,以及扩展到以序列判别方式训练的DNN的自适应。
1.介绍
语音识别的准确性在过去几年中通过使用(深度)神经网络(DNN)声学模型得到了显著提高。Hinton等人[1]报告称,与基于区分性训练的高斯混合模型(GMM)系统相比,各种任务的字错误率(WER)降低了10-32%。这些结果利用神经网络作为混合DNN/HMM(隐马尔可夫模型)系统[1]-[5]的一部分,在这些系统中,神经网络提供缩放的可能性估计以替代GMM;以及作为串联或瓶颈特征系统[6]、[7],在这些系统中,神经网络被用作基于GMM的系统的判别特征提取器。对于许多任务,观察到已经适应说话人的基于GMM的系统(带有串联或瓶颈特征)比未适应的混合DNN/HMM系统[8]-[10]更准确,这表明DNN声学模型的适应是一个值得研究的重要课题。
声学模型自适应[11]旨在通过规范化训练和运行时数据分布之间的不匹配,这种不匹配是由说话人之间的声学变异性以及信道或声学环境引入的其他失真造成的。在本文中,我们研究了使用一种称为学习隐藏单元贡献(LHUC)[12]-[14]的新近引入的方法,对DNN声学模型进行无监督的基于模型的说话人和声学环境自适应。我们分别在仅限测试的自适应和说话人自适应训练(SAT)的扩展上下文中,介绍了LHUC方法,后者被称为SAT-LHUC[14]。我们使用四个标准语料库进行了广泛的实验分析:TED演讲[15]、AMI[16]、Switchboard[17]和Aurora4[18]。这些实验包括:交叉熵和序列训练的DNN声学模型的自适应(第VI-A至VI-C节);基于自适应目标的质量、自适应数据的质量和自适应数据量分析(第VI-D节);与基于最大似然线性回归[19]的特征空间自适应技术的互补性(第VI-E节);以及应用于结合说话人和环境自适应(第VII节)。
2.NEURAL NETWORK ACOUSTIC ADAPTATION回顾
略
3.LEARNING HIDDEN UNIT CONTRIBUTIONS (LHUC)
一个neural network可以被看成是一个关于自适应基函数(adaptive basis functions)的集合。在关于目标函数族(target function family)\(f^*\)的某些假设下,neural network可以看成是一个通用逼近器(universal approximator)。也就是说,在给定关于输入随机变量\(x \in R^d\)的一些vector的情况下,存在一个nueral network \(f_n(x): R^d \rightarrow R\)的形式:
\[f_n(x) = \sum\limits_{k=1}^n r_k \phi(w_k^T x + b_k)\]…(1)
它可以逼近\(f^*\),具有一个特别小的error \(\epsilon\),对应于这样的mean square error的一个distance measure(提供n是足够大的):
\[|| f^*(x) - f_n(x) ||_2 \leq \epsilon\]…(2)
在(1)中的\(\phi: R \rightarrow R\)是一个element-wise 非线性操作(non-linear operation),它在一个仿射变换(n affine transformation)后使用,这会形成一组由一个biases set \(b_k \in R\)和一个weight vectors \(w_k \in R^{d_x}进行参数化的自适应基函数(adaptive basis function)\)。接着目标近似(target approximation)会被构建成一个关于基函数的线性组合,每个基函数的权重为\(r_k \in R\)。
该公式可以扩展到m维映射上:\(f_n^m(x): R^d \rightarrow R^m\),只需将(1)中的模型拼接m次得到。当考虑更深的模型(嵌套)时,这些性质仍然成立[51](推论 2.6 和 2.7)。
深度神经网络(DNN)训练的结果是:隐单元(hidden units)会学习一个关于目标函数的联合表示,并变得专门化并互补。从基函数组合中学到的组合泛化性,在应用于看不见的测试数据时,会继续逼近似目标函数。这种解释激发了使用LHUC——学习隐藏单元贡献——进行测试集自适应的思想。在LHUC中,网络中的基函数,先前是使用大量训练数据估计的,保持固定。自适应(Adaptation)涉及修改隐藏单元的组合,以便根据自适应数据最小化自适应损失。图1展示了这种方法在回归问题中的应用,其中自适应通过基函数的线性重新组合执行,只改变等式(1)中的r参数。
图1
LHUC的核心思想是:使用一个说话人依赖的幅值函数(speaker-dependent amplitude function),来显式参数化每个隐单元(在每个在max-pooling之后的FC或convolutional layers中)的幅度(amplitudes)。假设:
- \(h_j^{l,s}\):表示在layer l中的第j个hidden unit activation(basis)
- \(r_j^{l,s} \in R\):表示第s个speaker-dependent amplitude function:
…(3)
幅度使用一个函数:\(\epsilon : R \rightarrow R^+\)——通常是一个范围在(0,2)以内的sigmoid【13】,但也可以使用一个identity function。
- \(w_j^l\)是相应的weight矩阵\(W^l\)的第j列
- \(b_j^l\)表示bias
- \(\phi\)是hidden unit activation function(除非声明,否则是sigmoid)
- \(\odot\)表示是一个Hadamard product
- \(\epsilon\)限制了hidden unit amplitude scaling的范围(对比图1),直接影响adaptation transform capacity——当适配潜在的noisy unsupervised targets时,我们希望有这样的能力。
图1 示例展示了LHUC是如何执行adaptation的(见颜色)。上:一个“bump” model(等式1),具有两个hidden units,可以逼近”bump” functions。中:为了在给定训练数据\(f_1\)下学习\(f_1\),我们将两个“bump” functions拼接在一起(4个hidden units,一个input/output)来学习一个关于function \(f_1\)的近似。底:模型的LHUC adaptation对\(f_1\)最优,适配到f2使用LHUC scaling参数。
LHUC adaptation会通过设置speaker-specific amplitude参数\(r_j^{l,s}\),并对由adaptation data提供的targets使用gradient descent来进行。
直接学习hidden unit amplitudes的思想在[55]中提出,接着由[12]应用到supervised speaker adaptation中。【13】中该方法会被扩展到unspervised adaptation上,non-sigmoid non-linearities,大的vocabulary speech recognition。等等
IV. SPEAKER ADAPTIVE TRAINING LHUC (SAT-LHUC)
当LHUC被应用到一个test-only adaptation中时,它会假设:在训练数据上估计的speaker-independent basis function的集合,会提供一个良好的起点,可以进一步对adaptation data的底层数据分布进行调参。然而,你可以生成一个counter-example,其中该假设会失败:图2的top plot展示了example training data会从两个竞争的分布\(f_1(a)\)和f_1(b)中均匀抽取出,其中:在平均模型(图2底部)中的结果basis的线性重组合,提供了一个对adaptation data的较差近似。
图2 一个4-hidden-unit模型,训练\(f1(a)\)和\(f1(b)\),
这启发了:使用speaker adaptive training(SAT)与LHUC进行组合,其中:hidden units会被训练用来捕获好的average representations以及speaker-specific representations,通过为每个training speaker估计speaker-specific hidden unit amplitudes。在给定来自所在分布的数据点的先验知识后,这在图3中会被可视化,我们会估计一个并行的LHUC transforms(每个分布一个)的集合,同时有一个额外的transform会负责建模平均属性(average properties)。图3的top展示了在图2中的相同实验,但有了三个LHUC transforms——你可以看到:以给定LHUC transform下,该场景中的4-hidden-unit MLP可以捕获每个底层分布以及平均表现。同时,生成的basis function(图3 bottom)会是一个对于adaptation更好的starting point(图3 middle)。
图2和图3中的示例可以通过对每个function的训练数据样本数目进行rebalance来打破对称来解决,这会导致在平均模型中更少的trivial并且更多adaptable的basis functions。然而,我们会在后续展示实验,在高维语音数据上呈现相似的效果,SAT-LHUC训练允许构建更可调节的标准语音模型,通过适配可以对指定speakers进行更好的裁减。
SAT-LHUC 的Test-only adaptation与LHUC相同:每个test speaker都会插入speaker-dependent LHUC参数集合 \(\theta_{LHUC}^s=\lbrace r_j^{l,s} \rbrace\),他们的值可以从无监督adaptation data进行最优化。我们也会使用一个LUHC变换\(\theta_{LHUC}^s\)的集合,其中:\(s = 1 \cdots S\),对于training speakers,它会与speaker-independent参数\(\theta_{SI} = \lbrace W^l, b^l \rbrace\)一起联合优化。这是一个额外的speaker-independent LHUC变换,表示为\(\theta_{LUHC}^0\),这会允许模型以speakerindependent的方式被使用,例如:为了生成first pass adaptation targets。关于hidden units with speaker-dependent LHUC标量的的联合学习过程是很重要的,它会产生一个更加可调的标准语音模型,可以更好的适应在测试时未见过的speakers,正如我们如图3所示,会在下面展示adaptation任务。
为了执行SAT-LHUC的 training,我们会使用negative log likelihood,并最大化在给定t时刻observation vector \(x_t\)下获得正确context-dependent tied-state \(c_t\)后验概率:
\[L_{SAT}(\theta_{SI}, \theta_{SD}) = - \sum\limits_{t \in D} log P(c_t | x_t^s; \theta_{SI}; \theta_{LHUC}^{m_t})\]…(4)
其中:s表示第s个speaker,\(m_t \in \lbrace 0, s \rbrace\)会从基于一个Bernoulli分布的\(\theta_{SD} \lbrace \theta_{LHUC}^0, \cdots, \theta_{LHUC}^S \rbrace\)选择SI或DS LHUC变换:
\[k_t \sim Bernoulli(\gamma) \\ m_t = ...\]…(5)(6)
其中:\(\gamma\)是一个超参数,它表示给定样本的概率,被看成是\(SI\)。SI/SD会在speaker、utterance或frame level上被执行。我们会进一步研究:在VI-B上的该方面。SAT-LHUC模型结构如图4所述,对于不同的speakers来说,注意forward和backward passes的alternative routes。
\(\partial{L_{SAT}}/\partial{h_j^{l,s}}\)表示第l层第j个unit的error BP。为了通过transform进行BP,我们需要将transform自身进行element-wise乘法,如下:
\[\frac{\partial{L_{SAT}}}{\partial \phi_j^l} = \frac{\partial {L_{SAT}}}{\partial h_j^{l,s}} \odot \epsilon (r_j^{l,s})\]…(7)
为了获得对\(r_j^{l,s}\)的gradient:
\[\partial(L_{SAT}){\partial r_j^{l,s}} = \frac{\partial L_{SAT}}{\partial h_j^{l,s}} \odot \frac{\partial \epsilon(r_j^{l,s})}{\partial r_j^{l,s}} \odot \phi_j^l\]…(8)
当执行mini-batch SAT training时,你需要显式说明这样的事实:不同data-points会通过不同的transforms进行流动:因为这会产生对于第s个speaker对于\(r_j^{l,s}\)产生的梯度,是属于speaker s的partial gradients的sum:
\[\frac{\partial L_{SAT}}{\partial r_j^{l,s}} = \sum\limits_{t, m_t=s} \frac{\partial L_{SAT}}{\partial h_j^{l,s}} \odot \frac{\partial epsilon(r_j^{l,s})}{\partial r_j^{l,s}} \odot \phi_j^l\]…(9)
或者对于在给定mini-batch中第s个speaker没有data-points被选中时为0。在本paper中所有adaptation方法需要first-pass decoding来获取adaptation targets,对于unseen test speakers会估计fMLLR变换,或者来执行DNN speaker-dependent参数更新。
#
略