首页> 中国专利> 基于前向神经网络语言模型的汉语语音关键词检索方法

基于前向神经网络语言模型的汉语语音关键词检索方法

摘要

本发明提供了基于前向神经网络语言模型的汉语语音关键词检索方法,所述方法包括:步骤1)将包含历史词的输入样本和目标词输入前向神经网络模型,对于每个目标词wi,加入概率分布为q(wi)的若干个噪声词,并将最后一个隐藏层的激活输出传至目标词和这些噪声词所在节点处,由此根据目标函数计算各层之间的转换矩阵;计算输出层的输出与目标词的误差,更新各转换矩阵直至前向神经网络模型训练完毕;步骤2)利用前向神经网络模型计算输入词历史的目标词概率;步骤3)将目标词概率用于解码器中,通过解码器对语音解码得到多候选识别结果的词图,再将词图转为混淆网络并生成逆序索引;在逆序索引中检索关键词,返回命中关键词及其出现的时间。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-15

    授权

    授权

  • 2017-07-11

    实质审查的生效 IPC(主分类):G10L15/16 申请日:20151209

    实质审查的生效

  • 2017-06-16

    公开

    公开

说明书

技术领域

本发明属于语音识别领域,具体地说,涉及基于前向神经网络语言模型的汉语语音关键词检索方法。

背景技术

在语音关键词检索系统中,最为常用的语言模型是N元文法语言模型。但是,即便在N为较小的值,如3或4时,N元文法语言模型也面临着严重的数据稀疏的问题。因此,很多平滑算法用于缓解这一问题。然而,该模型对未出现在训练集中的数据的估计依旧与训练充分的数据有较大差距,从而导致这些非常见词及其周围的常见词无法被正确识别,进而影响了关键词检索的性能。前向神经网络语言模型(Feed Forward Neural network language model,FFNNLM)通过将词典中的每个词映射到连续空间中,因此可以对未出现在训练集中的数据提供更好的预测概率。但由于其计算复杂度很高,往往用于识别的后处理模块。前向神经网络语言模型的计算复杂度大部分集中于输出层,这是因为在建模过程中,在输出层需要通过对每个节点计算以做概率规整,而其大小为识别词典的大小,往往在104数量级;而隐藏层大小一般要小一到两个数量级。因此,输出层的计算量占据了计算量中的大部分。但是,由于在后处理时搜索空间已经被限制,所以使用前向神经网络语言模型重估的效果是次优的。近年来,若干降低输出层计算复杂度的方法被提出,主要有:

(1)调整输出层结构以降低计算复杂度,如采用shortlist形式或将输出层表示为树的形式;

(2)通过基于熵的剪枝算法将前向神经网络语言模型转为N元文法语言模型;

(3)修改训练算法以估计规整因子,在预测时将该值固定为常数,如采用方差正则化(variance regularization)或noise-contrastive estimation(NCE)准则。

然而,上述方法均存在一定的不足。采用shortlist的形式,即只在输出层保留在训练集中最高频的若干词汇,其他词使用N元文法的语言模型估计,这种做法虽然在一定程度上降低了输出层的计算复杂度,但损害了模型的泛化性;而将输出层表示为树的方法的性能很大程度上依赖于树的构造。将FFNNLM转为N元文法模型虽然可以近似的在一遍解码过程中使用FFNNLM,但在转换过程中也会有一定的性能损失。使用方差正则化的训练准则降低了模型预测时的计算复杂度,但相比于NCE准则,在训练过程中并无法加速FFNNLM的训练速度。

发明内容

本发明的目的在于克服目前降低输出层计算复杂度的方法存在的上述缺陷,通过修改前向神经网络语言模型的训练准则,在训练和预测过程中避免对输出层做概率规整,从而降低前向神经网络语言模型的计算复杂度,使其应用于一遍解码,进而提升语音关键词的检索性能。

为了实现上述目的,本发明提供了基于前向神经网络语言模型的汉语语音关键词检索方法,所述方法包括:

步骤1)将包含历史词的输入样本和目标词输入前向神经网络模型,对于每个目标词wi,加入概率分布为q(wi)的若干个噪声词,并将最后一个隐藏层的激活输出传至目标词和这些噪声词所在节点处,由此根据训练的目标函数计算各层之间的转换矩阵;计算输出层的输出与目标词的误差,将误差通过网络回传,更新各转换矩阵,直至前向神经网络模型训练完毕;

步骤2)利用步骤1)得到的前向神经网络模型计算输入词历史的目标词概率;

步骤3)将前向神经网络语言模型计算得到的目标词概率用于解码器中,通过解码器对语音解码得到多候选识别结果的词图,再将词图转为混淆网络并生成逆序索引;在检索阶段,根据关键词列表在逆序索引中检索关键词,返回命中关键词及其出现的时间。

上述技术方案中,所述步骤1)具体包括:

步骤101)输入N个训练样本时,同时输入一个基于训练样本的目标词统计得到的一元概率;

所述训练样本包括输入样本和目标词;其中N个输入样本为:ui(1≤i≤N),每个ui由n-1个词历史vij(1≤j≤n-1)组成,ui=(vi1,vi2,…vi,n-1);表示形式采用“N中选一”的编码模式;所述目标词为wi(1≤i≤N);

步骤102)将输入层的输入样本通过映射层矩阵映射到连续空间,串接在一起后作为第一个隐藏层的输入;然后将词向量继续向前传播,直至最后一个隐藏层;

步骤103)根据NCE准则,将步骤101)的一元概率生成若干噪声词;并将最后一个隐藏层的激活输出传至目标词和这些噪声词所在节点处,根据训练的目标函数计算各层之间的转换矩阵;

步骤104)计算输出层的输出与目标词的误差,将误差通过网络回传,更新各转换矩阵,直至神经网络训练完毕。

上述技术方案中,所述步骤103)的具体实现过程为:

对于每个目标词wi,加入概率分布为q(wi)的k个噪声样本wij,q(wi)采用Unigram的概率;引入变量C,那么一个词是由神经网络预测得到(C=1),还是由噪声样本得到(C=0),其概率如下式所示:

其中:

其中,D′是最后一个隐藏层到输出层的变换矩阵,b是偏置向量,Z(u)为规整因子,Z(u)在训练和预测过程中均设为1;

训练的目标函数J定义为最大化logP(C|w,u)的期望,即:

通过求最大化的J,求得各层之间的转换矩阵。

上述技术方案中,所述步骤2)具体包括:

步骤201)将包含n-1个词历史v0j(1≤j≤n-1)的向量u0输入上述训练完成的前向神经网络模型中;

步骤202)计算映射层上的不同词历史传至第一个隐藏层时的结果:CjDv0j(1≤j≤n-1),D为映射层的矩阵;保存计算结果;

步骤203)根据不同的词历史v0j,在内存中查找上述已经计算好的词向量CjDv0j,经过若干个隐藏层传至输出层;

步骤204)在输出层计算目标词的概率:

P(w|u0)=p(w|u0)=exp(D'h2+b)>

本发明的优点在于:

1、本发明的方法通过在神经网络的训练过程中引入噪声分布以避免对输出层每个节点进行处理;同时在训练和预测过程中,将规整因子置为常数,从而提高了训练和预测的速度,也使得将之应用于一遍解码成为了可能;

2、运用本发明的方法训练的前向神经网络语言模型,可为后续的解码提供质量更好的词图,从而提升语音关键词检索的性能。

附图说明

图1为本发明的基于前向神经网络语言模型的汉语语音关键词检索方法的流程图;

图2为本发明的前向神经网络语言模型的拓扑结构图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步地描述。

如图1所示,基于前向神经网络语言模型的汉语语音关键词检索方法,所述方法包括:

步骤1)利用训练样本采用NCE准则对前向神经网络语言模型进行训练;具体包括:

步骤101)输入N个训练样本时,同时输入一个基于训练样本的目标词统计得到的一元概率;

如图2所示,本实施例的前向神经网络语言模型包括输入层、映射层,两层隐藏层和输出层;

所述训练样本包括输入样本和目标词;其中N个输入样本为:ui(1≤i≤N),每个ui由n-1个词历史vij(1≤j≤n-1)组成,ui=(vi1,vi2,…vi,n-1);表示形式采用“N中选一”的编码模式;所述目标词为wi(1≤i≤N)。

步骤102)将输入层的输入数据通过映射层矩阵映射到连续空间,串接在一起后作为第一个隐藏层的输入;然后将词向量继续向前传播,直至第二个隐藏层;

在前向传输过程中,每个训练样本ui的词历史通过映射层矩阵(其中,|v|为词典的个数,d为第一个映射层的节点个数)映射到连续空间,串接在一起后作为第一个隐藏层的输入,第一个隐藏层的输出h1计算如下式所示:

其中(l为第一个隐层的节点个数)是位置相关的由映射层到隐藏层的变换矩阵,Dvij可以通过查表得到,激活函数采用rectified>

φ(x)=max(0,x)(2)

第二个隐藏层的输出计算如下:

h2=φ(Mh1)>

其中(m为第二个隐层的节点个数)为连接两个隐藏层的变换矩阵。

步骤103)根据NCE准则,将步骤101)的一元概率生成若干噪声词;并将第二个隐藏层的激活输出传至目标词和这些噪声词所在节点处,根据训练的目标函数计算各层之间的转换矩阵;

NCE(noise-contrastive estimation)训练准则假设:对于每个目标词wi,加入概率分布为q(wi)的k个噪声样本wij,q(wi)采用Unigram的概率;引入变量C,那么一个词是由神经网络预测得到(C=1),还是由噪声样本得到(C=0),其概率如下式所示:

其中:

其中,是由第二个隐藏层到输出层的变换矩阵,b是偏置向量,Z(u)为规整因子,Z(u)在训练和预测过程中均设为1;

训练的目标函数J定义为最大化logP(C|w,u)的期望,即:

通过求最大化的J,求得各层之间的转换矩阵。

NCE训练准则通过引入噪声分布来避免计算(6)中的规整因子Z(u);这样在训练过程均可以带来倍的提速。

步骤104)计算输出层的输出与目标词的误差,将误差通过网络回传,更新各转换矩阵,直至神经网络训练完毕。

步骤2)利用步骤1)得到的前向神经网络模型对语音关键词进行检索;具体包括:

步骤202)计算映射层上的不同词历史传至第一个隐藏层时的结果:CjDv0j(1≤j≤n-1),D为映射层的矩阵;保存计算结果;

步骤203)根据不同的词历史v0j,在内存中查找上述已经计算好的词向量CjDv0j,经过若干个隐藏层传至输出层;

步骤204)在输出层计算目标词的概率:

P(w|u0)=p(w|u0)=exp(D'h2+b)(8)

如果采用传统的计算公式(6),对每个预测词来说,模型的计算复杂度为:o(n-1)×d×l×m+m×|v|。而通过公式(8)可以将计算复杂度降低到:o(d×m+m)。

步骤3)将前向神经网络语言模型计算得到的目标词概率用于解码器中,通过解码器对语音解码得到多候选识别结果的词图,再将词图转为混淆网络并生成逆序索引;在检索阶段,根据关键词列表在逆序索引中检索关键词,返回命中关键词及其出现的时间。

下面结合实施例分析本发明的方法的性能。

本发明实验数据为真实的汉语电话交谈的录音,测试集时长共5小时。在测试集中一共选择了141个关键词,其中100个集内词,共出现697次;集外词共41个,共出现268次。测试语音为采样率8000HZ、单声道、16bit的语音数据。实验中前向神经网络语言模型的映射层和两个隐藏层的规模均为256,输出层为全词典大小,共43514个节点;基于NCE准则训练的神经网络的噪声采样个数为100。语言模型的训练集为电话交谈领域的语料,共有1020万个词。

基线系统的语言模型采用基于modified Kneser-Ney折扣平滑算法的三元文法。测试结果见表1:

表1

可以看出,通过将神经网络应用于一遍解码中,可以更好地将神经网络的优势发挥出来,相比于用于重估,ATWV指标在集内词和集外词均有2%的绝对提升;F1值在集外词上提升更为明显,绝对提升3.39%。这说明,通过在一遍解码中引入神经网络语言模型,不仅可以提高高精度区域的检索性能,同时也提升了整个系统的召回率,这为后续采用更为复杂的置信度估计算法提升系统性能提供了可能。而将神经网络用于重估阶段,相对于只使用三元文法,在ATWV指标上集外词的检索性能有所提升,在集内词上并无明显改善;而F1值上使用神经网络语言模型对检索性能几乎没有影响。这是因为经过基于三元文法语言模型解码产生的词图已经限制了搜索范围,神经网络语言模型对集外词的语言模型概率起到了平滑作用,但在集内词上与三元文法语言模型的效果相当。

此外,实验还比较了基于交叉熵准则和基于NCE准则的训练和预测的速度,如表2和表3所示:

表2

训练准则训练时间/迭代交叉熵16.315小时NCE1.205小时

可以看到,通过使用基于NCE准则训练的神经网络语言模型,其训练速度是传统的基于交叉熵准则模型的10倍以上。在上面的实验中已经证明,基于这两种准则训练的模型性能相当,因此使用NCE准则训练的模型可以在保证性能不下降的同时达到速度的显著提升;表3为预测过程中的处理速度:

表3

模型每秒处理词数基于交叉熵准则的前向神经网络语言模型基于NCE准则的前向神经网络语言模型+提前计算输入词向量与隐藏层的乘积

可以看到,使用NCE准则训练的神经网络语言模型后,在计算语言模型概率时可以加速100倍以上;而在提前计算输入词向量与隐藏层乘积后,又可以获得将近3倍的速度提升。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号