一种神经网络声学模型压缩及语音识别方法与流程

文档序号:12678448阅读:649来源:国知局

本发明涉及语音识别领域,特别涉及一种神经网络声学模型压缩及语音识别方法。



背景技术:

在语音识别领域,利用深层神经网络(Deep Neural Network,DNN)进行声学建模取得了很好的效果。DNN的深层结构使得模型具有很强的学习能力,同时导致模型参数量巨大,因此要在计算能力偏弱的移动设备上应用DNN进行语音识别的声学建模十分困难:主要面临着存储需求大和计算复杂度高的问题。

基于矢量量化的方法被用来对DNN模型进行压缩,从而节省储存空间和计算量。其原理如下:

对于DNN的权值矩阵将其每一个行向量都分裂为个维度为d的子向量:

其中是权值矩阵W第i行的第j个子向量,上标T表示转置,之后,使用矢量量化的方法将全部子向量量化为K个码本向量。这样,原本M×N的矩阵,就可以用一个包含了K个d维向量的码本表示,另外还需要(log2K)×(MJ)个比特来记录每个子向量在码本中的索引。该方法同时可以节省计算量,在DNN的前向计算中,由于处于同一列的子向量都是与相同的激活向量相乘,如果处于同一列的子向量中存在若干个子向量被量化为同一个码本向量,那么这些子向量与激活向量的相乘结果就可以共享,从而减少了计算次数。

利用矢量量化压缩DNN的方法会导致DNN的性能受到影响,其受影响的程度依赖于矢量量化的量化误差,然而传统的矢量量化只使用单级码本,当码本较小(即码本中的码本向量数量较少)时,量化误差比较高,为了降低量化误差,不得不呈指数地提高码本规模,这样就会使计算量大大增加,使得该方法失去了节省空间和计算的意义。



技术实现要素:

本发明的目的在于克服矢量量化压缩DNN的方法存在的量化误差较大的问题,提出利用多级矢量量化的方法对DNN进行压缩,通过加入第二级的量化,对第一级量化的残差进行再次量化,最终利用两级码本来代替原始的权值矩阵,一方面大大降低了量化误差,同时避免了码本规模呈指数增长。

为了实现上述目的,本发明提供了一种神经网络声学模型的压缩方法,所述方法包括:将神经网络声学模型的输出层权值矩阵W的行向量按照指定的维数划分为若干个子向量;对若干个子向量进行一级矢量量化,获得一级码本,用一级码本向量代替矩阵W的子向量,得到矩阵W*;利用矩阵W和W*,计算残差矩阵R,并对R的向量进行二级矢量量化;获得二级码本,用二级码本向量代替矩阵R的向量,得到矩阵R*;最后用矩阵W*和R*表示权值矩阵W。

上述技术方案中,所述方法具体包括:

步骤S1)将神经网络声学模型的输出层权值矩阵W的行向量分裂成维数为d的子向量:

其中,W为M×N矩阵;

步骤S2)对步骤S1)得到的子向量进行一级矢量量化,获得一级码本,用一级码本向量代替矩阵W的子向量,得到矩阵W*

对步骤S1)得到的子向量进行一级矢量量化,得到一级码本该码本共含有K1个码本向量,设权值矩阵W第i行的第j个子向量所对应的一级码本向量在C(1)中的索引值为id(1)(i,j)∈{1,…,K1},对应的码本向量为用码本向量代替矩阵W的子向量得到矩阵W*

步骤S3)利用矩阵W和W*,计算残差矩阵R,并对R的向量进行二级矢量量化;获得二级码本,用二级码本向量代替矩阵R的向量,得到矩阵R*

计算残差矩阵R:

其中,

对向量进行二级矢量量化,得到二级码本该码本共含有K2个码本向量,设权值矩阵R第i行的第j个子向量所对应的码本向量在C(2)中的索引值为id(2)(i,j)∈{1,…,K2},对应的码本向量为用码本向量代替对应的矩阵R的子向量得到矩阵R*

步骤S4)用矩阵W*和R*表示权值矩阵W:

矩阵W中的子向量在两级码本中的索引为id(1)(i,j)和id(2)(i,j);这样存储W转换成存储id(1)(i,j)和id(2)(i,j)。

上述技术方案中,所述步骤1)中的d的取值满足:d能被矩阵W的行数N整除。

基于上述的神经网络声学模型的压缩方法,本发明还提供了一种语音识别方法,所述方法包括:

步骤T1)对于输入的语音特征向量,经过输入层和隐层的前向计算之后,得到向量将其分裂为维度为d的子向量,得到其中

步骤T2)计算输出层具体包括:

权值矩阵W由两个码本C(1)和C(2)以及相应的索引id(1)(i,j)和id(2)(i,j)表示,其中i∈{1,2,…,M},

遍历对于i=1,2,…,M,依次计算和如果在这个过程当中,存在id(k)(i,j)=id(k)(i′,j),k∈{1,2},i′>i,则当计算时,直接使用的结果;计算:

得到输出:y=[y1,…,yi,…,yM];

步骤T3)对y进行softmax规整,得到似然值其中

步骤T4)将a送入解码器进行解码;获得文本形式的识别结果。

本发明的优点在于:本发明的方法能够降低神经网络声学模型的存储空间,同时大大降低了量化误差,避免了码本规模呈指数增长。

附图说明

图1本发明的神经网络声学模型压缩方法的流程图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细的说明。

如图1所示,一种神经网络声学模型的压缩方法,所述方法包括:

步骤S1)将神经网络声学模型(DNN)的输出层权值矩阵W的行向量分裂成维数为d的子向量:

其中,W为M×N矩阵;

在本实施例中,DNN模型共有7层,其中5个隐层的权值矩阵规模都是5000×500,输入层的权值矩阵规模为5000×360,输出层的权值矩阵规模为20000×500。输入观测向量的维度为360,具体来说是13维梅尔域倒谱系数(MFCC)特征经过扩展、线性鉴别分析(LDA)、最大似然线性变换(MLLT)以及特征空间的最大似然线性回归(FMLLR)后得到40维特征,之后对其进行上下文各4帧的扩展,得到(4+1+4)×40=360维的输入特征。采用的数据集为标准英语数据集Switchboard,训练数据为286小时,测试数据3小时;输出层参数量约占整个模型参数量的一半。

在本实施例中,

步骤S2)采用规模为1024的码本,对步骤1)得到的子向量进行一级矢量量化,获得一级码本该码本共含有K1个码本向量,设权值矩阵W第i行的第j个子向量所对应的码本向量在C(1)中的索引值为id(1)(i,j)∈ {1,…,K1},对应的码本向量为用码本向量标识代替矩阵W的子向量得到矩阵W*

步骤S3)利用矩阵W和W*,计算残差矩阵R,并对R的向量进行二级矢量量化;获得二级码本,用二级码本向量代替矩阵R的向量,得到矩阵R*

计算第一级量化的残差,得到残差矩阵R:

其中,

采用规模为1024的码本对残差向量进行二级矢量量化,得到二级码本该码本共含有K2个码本向量,设权值矩阵R第i行的第j个子向量所对应的码本向量在C(2)中的索引值为id(2)(i,j)∈{1,…,K2},对应的码本向量为用码本向量代替对应的矩阵R的子向量得到矩阵R*

步骤S4)用矩阵W*和R*表示权值矩阵W:

矩阵W中的子向量在两级码本中的索引为id(1)(i,j)和id(2)(i,j);这样存储W转换成存储id(1)(i,j)和id(2)(i,j);

本发明的方法继承了传统方法能够节省计算量的特性,在本方法中,一个子向量会被量化为两个分属不同级码本的码本向量之和,因此在DNN前向计算过程中,单个子向量与激活向量相乘,也会转化为两部分分别相乘再加和:

若处于同一列的子向量在第一级或者第二级量化中共享码本矢量,就可以简化运算。

基于上述神经网络声学模型压缩方法,本发明还提供了一种语音识别方法;所述方法包括:

步骤T1)对于输入的语音特征向量,经过输入层和隐层的前向计算之后,得到向量将其分裂为维度为d的子向量,得到其中

在本实施例中,与输出层权值矩阵对应,M=20000,N=500,d=4。

步骤T2)计算输出层

由于权值矩阵W可由两个码本C(1)和C(2)以及相应的索引id(1)(i,j)和id(2)(i,j)表示,其中i∈{1,2,…,M},

遍历对于i=1,2,…,M,依次计算和如果在这个过程当中,存在id(k)(i,j)=id(k)(i′,j),k∈{1,2},i′>i,则当计算时,可以直接使用的结果,从而节省了计算量;

计算:

得到输出:y=[y1,…,yi,…,yM];

步骤T3)对y进行softmax规整,得到似然值其中

步骤T4)将a送入解码器进行解码;获得文本形式的识别结果。

下面对本实施例的性能进行分析。

利用测试集测试各个模型的单词错误率(word error rate,WER),模型分别为未经压缩的模型,单级矢量量化压缩的模型(1024规模的码本和8192规模的码本)和多级矢量量化压缩的模型(1024规模码本进行第一级量化,1024规模码本进行第二级量化);

单词错误率的计算公式如下:

压缩比值得是模型压缩后和压缩前所需储存空间之比,其计算公式为:

其中M和N分别为矩阵的行和列,分别等于20000和500,J为每行子向量个数,取值为500/4=125,K1和K2分别为两级码本的规模,sizeof(data)指的是存储单个数据所需要的比特数,比如对于浮点型数据,需要32比特。

利用本发明的二级矢量量化压缩后的权值矩阵所需要的存储空间为:

sizeof(data)×d×(K1+K2)+log2(K1×K2)×M×J。

实验结果见表1:

表1

由实验结果可以看出,采用单级矢量量化,量化误差较大,使用单级矢量量化压缩后的DNN性能受损明显;当采用多级矢量量化对DNN进行压缩后,只需要采用两个规模较小的码本,便可以大大降低量化误差,同时使得模型的识别性能近乎无损。对比表格中的后两行:“8192”和“1024+1024”,虽然多级矢量量化后模型的压缩比高于单级矢量量化后的模型,这是由于新加入的二级码本需要额外的空间来记录索引;但是得益于码本总规模的缩小,多级矢量量化方法在计算量降低方面的表现要优于单级矢量量化方法,在避免码本规模呈指数增长的同时,做到了对DNN的性能无损压缩。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1