一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于命令词的语音识别模型压缩方法与流程

2022-07-23 13:07:32 来源:中国专利 TAG:


1.本发明属于人工智能领域,涉及到人工智能领域语音识别技术,具体涉及一种基于命令词的语音识别模型压缩方法。


背景技术:

2.随着计算设备性能的提升,各种基于深度学习技术的应用也随之普及。语音作为人机交互的接口,在智能家居环境的应用需求也日益增长。因此,设备端测的语音识别芯片应时而生。但由于端侧芯片的算力和存储空间有限,如何在不降低语音识别效果的基础上降低算力和存储空间成为端侧语音推广的一大难题。解决这个难题的一种方法是在设备端按照智能家居产品的使用特性制定常用的命令词,在实际使用时只需要识别这些词即可。传统端侧命令词识别过程是使用大量语料训练一个连续语音识别模型,然后用这个模型去识别某一产品对应的命令词。现有技术存在的问题是语音识别模型参数量过大,从而导致端侧设备存在存储和算力的瓶颈;一旦命令词条数过多,会导致端侧语音芯片无法应用到该产品。因此传统的方法很难得到有效推广。


技术实现要素:

3.为克服现有技术存在的缺陷,本发明公开了一种基于命令词的语音识别模型压缩方法。
4.本发明所述基于命令词的语音识别模型压缩方法,包括如下步骤:s1:进行初始训练,得到原始语音识别模型md1,并得到相应的音素分类类别m;s2:根据需要训练的命令词a得到a对应的音素类别k,然后在原始语音识别模型md1中选取所述音素类别k,并将原始语音识别模型md1中包括噪声音素的剩余音素聚类为1类;聚类后,原始语音识别模型的音素类别为k 1;s3: 根据命令词a在初始训练使用的语料中筛选与命令词a对应的训练语料,利用筛选后的训练语料对原始语音识别模型md1进行微调训练得到更新后的第二模型md2;所述微调训练具体为:保留原始语音识别模型md1中除输出层外的其余层参数,并更新输出层的节点数为k 1,进行模型迁移训练,所有层的模型参数进行梯度更新。
5.优选的,s3步骤中,进行模型迁移训练时降低学习率。
6.优选的,还包括对第二模型md2的稀疏化剪枝操作,具体为:s4:筛选出第二模型md2上权重参数小于设定的稀疏化阈值的神经元,将这些神经元的权重参数置为0;得到第三模型md3;s5:对s4步骤得到的第三模型md3进行微调训练,具体为禁止权重为0的参数进行梯度更新,对不为0的权重参数进行梯度更新,进而得到第四模型md4。
7.优选的,还包括对第四模型md4的权重参数聚类量化,具体为:
s6:对第四模型md4进行权重参数聚类量化, 得到第五模型md5;s7:采用步骤s3中筛选后的命令词语料对s6步骤得到的第五模型md5进行微调训练,具体为禁止所有权重参数的梯度更新,只进行偏置参数的梯度更新。得到第六模型md6;s8:对第六模型md6进行霍夫曼存储压缩,得到霍夫曼压缩矩阵。
8.优选的,所述权重参数聚类量化采用k均值聚类算法。
9.本发明通过降低参数量,可在不显著影响识别效果的情况下显著减小语音识别模型的占用空间;进一步采用稀疏化剪枝训练、权重参数聚类量化及霍夫曼存储压缩提高存储效率,削减模型的物理存储空间占用,使得以往庞大的语音识别模型变小并易于部署在存储空间有限的嵌入式设备中。
具体实施方式
10.本发明所述基于命令词的语音识别模型压缩方法,包括如下步骤。
11.s1:进行初始训练,得到原始语音识别模型md1,并得到相应的音素分类类别m,即输出层节点个数为m,初始训练通常采用大量语料进行训练以提高模型准确性;s2:为了降低语音识别模型参数量,本发明中根据需要训练的命令词a得到a对应的音素类别k,然后在原始语音识别模型md1中选取所述音素类别k,并将原始语音识别模型md1中的剩余音素,包括噪声音素聚类为1类;聚类后,原始语音识别模型的音素类别为k 1;s3: 根据命令词a在初始训练使用的语料中筛选与命令词a对应的训练语料,利用筛选后的训练语料对原始语音识别模型md1进行微调训练得到更新后的第二模型md2;所述微调训练具体为:保留原始语音识别模型md1中除输出层外的其余层参数,并更新输出层的节点数为k 1,然后进行模型迁移训练,所有层的模型参数进行梯度更新;梯度更新为现有技术,指神经网络理论中利用sgd(梯度下降法)或者adam(自适应运动估计)等算法对模型参数进行更新的算法。
12.本步骤中,由于原始语音识别模型已经形成,可适当降低学习率,降低更新速度,更容易找到参数最佳值。
13.经过步骤s3后,第二模型md2相对原始语音识别模型md1的模型参数量减小。
14.通过降低原始语音识别模型md1的模型参数量,将无关音素聚类为1类,第二模型占用空间可显著缩小。
15.为进一步降低模型的物理存储占用空间,使得语音识别模型易于嵌入式设备部署;本发明对s3步骤更新后的第二模型md2进行稀疏化剪枝操作,去除没有贡献的神经元连接,具体为s4:筛选出第二模型md2上权重参数小于设定的稀疏化阈值的神经元,将这些神经元的权重参数置为0;得到第三模型md3;例如,假设神经网络的某一层权重参数为3*3的权重矩阵a;
,对权重矩阵a按照稀疏化阈值为0.3进行稀疏化,即可得到矩阵b;,b矩阵中,将矩阵a中权重参数小于0.3的值全部置为0。
16.s5:对s4步骤得到的第三模型md3进行微调训练,具体为禁止权重为0的参数进行梯度更新,对不为0的权重参数进行梯度更新,进而得到第四模型md4;由于梯度更新后的权重参数大概率不为0,因此禁止对已经稀疏化后为0的权重参数进行梯度更新以保持稀疏化。微调训练是为了让网络重新收敛,同时为保证矩阵为稀疏化,仅更新不为0的权重参数。
17.s6:对第四模型md4进行权重参数聚类量化, 得到第五模型md5;聚类量化可采用k均值聚类算法,k均值聚类是利用k-means方法得到权重的聚类中心和标签,同时根据聚类中心和标签回推得到一个新的权重,聚类量化技术可以有效降低模型参数量,在芯片实现的角度上可以有效降低片上缓存的容量。
18.例如对一个3*4的权重矩阵,聚类个数为3,则通过k-means算法可以得到其聚类中心为
,标签为;则根据聚类中心和标签得到新的聚类矩阵为 ;矩阵a4相对初始的权重矩阵a1,所有元素中不同的元素数量减少到只有3个。
19.s7: 采用步骤s3中筛选后的命令词语料对s6步骤得到的第五模型md5进行微调训练,具体为禁止所有权重参数的梯度更新,只进行偏置参数的梯度更新,得到第六模型md6;s8:基于第六模型md6,进行霍夫曼(huffman)存储压缩,压缩后频次越高的参数编码长度越短,模型最终的存储空间进一步降低。
20.对稀疏矩阵进行k-means聚类操作可以将矩阵用k个值来代替,同时可以统计出每个值在矩阵中出现的次数;因此,可以结合霍夫曼编码进行存储压缩,由于频次较高的值在存储时所用编码长度更短,从而降低存储空间稀疏化是为了降低需要存储的模型参数,使用稀疏编码可以不用存储0值,稀疏度越高,存储所需空间越小;同时,由于权重矩阵稀疏化,使得其余非0权重参数可以用更少的类别进行聚类,意味着k-means聚类的k值减小,可以降低后续huffman编码所需存储空间。而音素削剪直接降低了整个模型的参数量,因此模型需要存储的参数会大大降低。
21.步骤s4-s8中,具体的稀疏模型存储压缩方案具体如下:对经过s3步骤微调后的第二模型md2每层的权重矩阵进行编码,稀疏编码( sparse encode)格式根据原始矩阵的行列大小分为csr和csc编码,若矩阵的行数小于列数
则采用csr编码;否则采用csc编码,行列相等则两种编码方式均可。
22.通过csr或csc编码将得到非零元素向量data、行/列号向量indices、行/列偏移向量indptr;csr是一种能够使稀疏数据进行压缩存储的方法;其可以用三类数据来表达:数值、列号以及行偏移。数值表示原始矩阵中非0值,列号表示该数据在矩阵中的列号,行偏移表示某一行的第一个元素在数值里面的起始偏移位置。
23.csc也是一种能够使稀疏数据进行压缩存储的方法;其可以用三类数据来表达:数值、行号以及列偏移。数值表示原始矩阵中全部非零值,行号表示该数据在矩阵中的行号,列偏移表示某一列的第一个元素在数值里面的起始偏移位置。
24.例如给定一个原始矩阵,则使用csr编码后得到三个向量:非零元素向量[1,7,2,8,5,3,9,6,4],每个非零元素对应的列号即列号向量:[0,1,1,2,0,2,3,1,3] ,行偏移向量:[0,2,4,7,9]。在矩阵a中,第一行第一个元素1是0偏移,第二行第一个元素2是2偏移,第三行第一个元素5是4偏移,第4行第一个元素6是7偏移,在行偏移的最后为数值矩阵总的个数为9。
[0025]
如果使用csc编码则有:非零元素向量:[1,5,7,2,6,8,3,9,4],每个非零元素对应的行号即行号向量:[0,2,0,1,3,1,2,2,3],列偏移向量:[0,2,5,7,9]。
[0026]
对于1个m行*n列(m小于n)的矩阵,如果其稀疏度为30%,即该矩阵有70%数据为0,使用csr编码可以节约数据存储空间约为(m*n-0.3*2*m*n-m)。
[0027]
霍夫曼编码(huffman encode)是一种基于最小冗余编码的压缩算法。最小冗余编码是指,如果知道一组数据中符号出现的频率,就可以用一种特殊的方式来表示符号从而减少数据需要的存储空间,例如用较少的位对代表出现频率高的符号编码,用较多的位对代表出现频率低的符号编码。
[0028]
具体在本发明中利用稀疏编码得到非零元素向量data、行/列号向量indices、行/列偏移向量indptr进行霍夫曼编码压缩得到霍夫曼压缩矩阵。由于模型每层权重存储的是聚类量化后的参数,因此可以使用霍夫曼编码进行参数存储,从而降低参数存储所用空间。
[0029]
本发明采用上述措施得到一个压缩后的语音识别模型,可方便的存储在空间较小的嵌入式设备中,在实际使用该压缩后的语音识别模型时,需要先对存储模型进行调用解码,在内存中才行正常运行。
[0030]
解码过程可以具体为:将霍夫曼压缩矩阵解码得到稀疏矩阵,所述稀疏矩阵包括
非零元素向量data、行/列号向量indices、行/列偏移向量indptr数据;再将稀疏矩阵还原为原始矩阵。解码过程为编码压缩的逆操作,本领域技术人员容易实现。
具体实施例
[0031]
本实施例在卡尔迪(kaldi)环境下实施;首先选用大量语料训练一个深度神经网络(ftdnn)模型作为原始语音识别模型md1,其音素聚类个数为3485即输出层个数为3485。
[0032]
使用取暖桌的相关命令词得到其对应的音素类别个数为994,然后在原始的3485个音素中保留这994个音素类别,并把其余的音素类别和噪音音素映射到另一类,最后得到995个音素类别。
[0033]
根据取暖桌命令词筛选对应的训练语料,然后在原始模型的基础上进行微调训练,更改原始模型的输出节点为995,得到第二模型md2。
[0034]
将得到的第二模型md2进行稀疏化剪枝操作,将该模型中权重进行非结构化稀疏化剪枝,稀疏化程度为26%,将模型中除了输出层之外的所有层权重按照26%程度稀疏化,意味着原始模型参数有74%的值变为0;得到第三模型md3。
[0035]
对第三模型md3进行微调训练,禁止权重参数为0的梯度更新,对其余不为0的权重参数进行梯度更新,得到一个新的第四模型md4。
[0036]
具体训练得到第四模型md4的过程中,可使用激活函数relu进行更新,假设一个神经网络某一层的计算如下:f(x)=relu(wx b)其中:w为权重矩阵,b为偏置,x为输入特征,relu为激活函数;则在训练网络时需要保证权重矩阵w中参数为0的不进行更新,其余参数正常更新。
[0037]
采用训练好的模型第四模型md4进行权重参数聚类量化采用k均值聚类算法,k=32,即量化位宽为5bit,得到一个新的第五模型md5;采用之前进行命令词筛选后的训练语料对步骤6得到的第五模型md5进行微调训练,禁止所有权重参数的梯度更新,只进行偏置参数的梯度更新,得到第六模型md6。
[0038]
基于训练好的第六模型md6,进行霍夫曼存储压缩,从而进一步降低模型在芯片上的存储。
[0039]
本实施例中,每个测试集的样本个数为248条音频,各个模型的测试结果如表1表1 表1中m表示106,音乐、新闻和电机分别表示不同的噪声环境,各个百分比表示在各个测试环境下的正确识别率,从表1可见,在模型参数量减少三分之一,即模型大小等比
例下降约三分之一的前提下, 各个噪声环境下识别正确率在音乐环境下仅下降约在新闻噪声环境下仅下降4%,在电机噪声环境下仅下降不足1%。
[0040]
本发明通过降低参数量,可在不显著影响识别效果的情况下显著减小语音识别模型的占用空间;进一步采用稀疏化剪枝训练、权重参数聚类量化及霍夫曼存储压缩提高存储效率,削减模型的物理存储空间占用,使得以往庞大的语音识别模型变小并易于部署在存储空间有限的嵌入式设备中。
[0041]
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献