APP下载

基于知识蒸馏的中文自动语音识别的建模方法

2020-04-22舒真瀚许亮

现代计算机 2020年8期
关键词:标签语音特征

舒真瀚,许亮

(四川大学计算机学院,成都610065)

0 引言

随着人工智能的发展,近年来深度学习[1-2]技术已经替代了传统的统计学算法成为了自动语音识别(ASR)领域的主流技术[3-4]。正是由于目前神经网络的火热,大量基于神经网络的语音识别系统进入市场,但由于识别领域的细分。目前还没有出现一种通用的方法或模型在所有领域都表现良好。想要在某领域开发出能使用的产品通常需要花费大量的人力财力收集大量相关领域的语料进行标注和训练。因此用低成本的通用模型加少量局部语料训练一个良好的能降低训练成本和语料收集成本且泛化能力良好的混合模型就有了理论和实践上的研究价值。

目前能提升语音识别系统的整体泛化能力的方法有很多,大致分为两类:一类是采用自适应的语言模型或是混合语言模型方式。第二类就是通过迁移学习的方式。

第一类方法主要是优化语言模型。近年主要有Min Ma 和Michael Nirschl[5-7]关于神经网络语言自适应方法的研究,主要解决了语言模型语料库不匹配通用ASR 系统的测试分布。范正光等人[8-9]关于混合语言模型语言识别的方法研究,该方法也是语言模型多任务的一种。

第二类方式是目前主流和热门的方法,D Povey 和Pegah Ghahreman[10]就提出改进基于无格MMI(LFMMI)的ASR 模型。使用具有共享隐藏层的网络来进行ASR 模型的迁移。近年来深度神经网络的迁移学习主要是对声学部分各层特征的可迁移性做研究。多任务训练将多个任务同时训练。并加入主次任务,主次的关系主要体现在loss 上面。在训练过程中次任务辅助主任务取得好的成绩。知识蒸馏也是目前解决该问题最前沿的领域,Hinton[11]对声学模型采用知识蒸馏压缩法也能一定程度使得模型在学习小规模数据集模型时,能够不被大模型覆盖,从中学到知识。Li[12]提出了用大模型指导小模型进行训练,以此来进行迁移压缩。

借鉴上述方法的一些思想,本文尝试用类似知识蒸馏的方法,针对大小数据集或大小模型这种多领域任务的情况,进行声学模型的建模。知识蒸馏的本质是将一个大而笨重的模型转化为一个小而紧凑的模型且在转化过程中不会过多的损失模型精度。而本文将利用知识蒸馏的特点:将大模型的知识尽量无损的注入到小模型中,从而让生成的新模型尽可能的同时学习到大小数据集中的知识,让模型的泛化能力在两个数据集上都能得到体现。具体操作上是在大模型上获取到大模型的对齐信息利用这些信息生成一个软标签集合然后在训练小模型时将这个软标签集合作为小模型总目标函数的一部分,在训练时这部分数据就会将大模型的知识迁移到新模型中,本文将利用aishell1[13]这个数据集作为大模型的数据集,少量股票代码数据作为小数据集进行试验。

1 声学模型建模

1.1 声学模型

在神经网络的最后一层通常我们用Softmax 层来进行输出前的概率分布表达。计算公式如下:

但实际情况是通常训练好的大模型最后的Softmax 层输出的概率在正确的分类上是相当大的,而在其他分类上的概率是就接近于0 了。可以很容易看出我们若是直接利用Softmax 层的输出作标签的话,其实并不能比原本的数据集提供更多的信息。这样的话我们就没有将原本大模型的泛化能力,有效地利用到小模型上。Hinton[11]在其论文中提供了解决方案,本文中我们将利用其改进的方法对Softmax 层的计算公式做改进为式(2):

这里加入的新参数T 是指蒸馏温度,实际上就是对输出信息的利用强度,可以很容易看出当T 使用较大的值时,会使Softmax 层各分类概率的输出更为平滑,这样我们就可以利用大模型学习到更多的信息。T是我们在训练中用到的一个超参。当T=1 时Softmax的输出就是正常网络的训练目标,在这里我们将其称为“硬标签”。当T>1 时,Softmax 输出的概率分布我们称之为“软标签”。

在实际训练中大模型和小模型的之间后验概率分布的差异可以写作式(3):

也就是他们之间后验概率分布的KL 散度(相对熵)。

在训练过程中我们需要将其最小化,可以表示为式(4):

式(3)中i 表示为对齐状态下的下标;Si就是第i个对齐状态;Xt为大模型的特征;X 是小模型的特征,我们可以通过向前算法求得Pt(Si|Xt),即特征Xt在i 状态下的后验概率。

所以我们实际上要求的分布差异是:

由式子(5)可以看出相对熵的最小化已经化简为等同于求交叉熵最小化。与标准的以交叉熵为损失函数的训练过程完全相同。

不同的是在训练中我们将把硬标签,替换为加入超参数后产生的软标签。这个与Hinton 知识蒸馏的过程有所不同。相对而言有所简化。

1.2 声学模型建模流程

整个训练的流程分为几个主要的步骤:①通过大模型来生成硬标签;②通过大模型调整超参数T 生成软标签;③通过软标签,硬标签及小数据集特征训练小模型。

图1 小模型训练流程

硬标签等同于原本大模型Softmax 层的输出,例如[1,0,0,0,0,0,0,0]这组向量就代表输出的结果是类别1的项。通俗的讲就是我们将输出正确的项看做是概率为100%,也就是一个我们分类之前强制对齐的标注结果。

软标签通过设置T>1 进行输出,向量的概率分布变得相对平滑,例如[0.02,0.83,0.01,0.1,0.07,0.07],这时该向量属于标签3 的概率就是0.01。这个做法让我们在迁移的过程中人为的添加了部分干扰,如果按照传统的方法进行迁移,小规模的数据难以扰动过大过复杂的模型。新的知识也难以被模型所学习到。同时这样也让我们在新模型的训练上人为地防止了过拟合,提高了模型的泛化能力。

在训练时,将小数据中提取的特征和软标签进行对齐。得到带小数据特征的对齐软标签。然后就可以利用这个特征和软标签训练小模型了。训练时仅仅更新小模型的参数。训练过程由之前式(5)KL 散度负责监督进行优化。

2 实验

2.1 实验数据

本文的大模型数据集采用了希尔贝壳提供的aishell1 数据集作为通用数据集,股票代码数据作为局部数据集。Aishell1 是中文普通话开源语音数据库AISHELL-ASR0009-OS1 录音时长178 小时,是希尔贝壳中文普通话语音数据库AISHELL-ASR0009 的一部分。AISHELL-ASR0009 录音文本涉及智能家居、无人驾驶、工业生产等11 个领域。录制过程在安静室内环境中,同时使用3 种不同设备:高保真麦克风(44.1kHz,16-bit);Android 系统手机(16kHz,16-bit);iOS 系统手机(16kHz,16-bit)。400 名来自中国不同口音区域的发言人参与录制。小模型数据集是股票代码数据是由20 位志愿者录制的总共9 小时语音标注数据。

2.2 实验设置

本实验在Kaldi[14]工具集平台上进行。数据输入阶端点检测策略采用基于能量值的方式。

使用特征是梅尔频率倒谱系数(MFCC)和mel 标度滤波器组特征(FBANK),特征输入帧长取25ms,帧偏移量取10ms。

MFCC 在配置时为了获得更多的细节我们设置13个梅尔三角滤波器,得到13 个梅尔系数,但在特征输入前会做一阶差分和二阶差分运算,所以实际输入的特征为61 维特征(其中1 维是帧能量值)。

DNN 网络是由GMM 系统提供对齐信息进行训练,其入特征为FBANK,其特征维度40 维,相邻帧由前后5 个窗口共11 帧进行连接,连接的特征经过LDA转换,维度降低到200。

本文使用的预言模型(LM)是由aishell1 以及9小时股票数据的文本混合训练的三元文法语言模型(3-gram),其词表大小为135823。搜索策略为束搜索(beam-search)。

3 实验讨论

3.1 大模型

大模型采用两种网络模型一种是TDNN[15],另外一种是CNN-TDNN。两种网络在测试集上表现差别不大,仅仅是在TDNN 网络加入了CNN 为头部。但两个模型的参数量差别较大。这样的对比我们希望能看出在迁移过程中大参数量和小参数量模型是否在知识传授上有所影响。

TDNN 模型包含8 个隐层每层1563 个节点。CNN-TDNN 模型在TDNN 模型的基础上增加了2 个卷积层和4 个全连接层。全连接层节点数为1600 个,输出层由3386 个单元组成。卷积层采用最大池化的池化策略。学习率均设置为0.008。采用反向传播(BP)算法进行训练。网络的损失函数为交叉熵,使用随机梯度下降(SGD)算法进行优化。

对于大模型的数据集划分,aishell1 的85%划分为训练集,10%划分为测试集(t-test),5%划分为开发集。训练集用于模型参数的更新,开发集用于超参数的确定和模型的选择,测试集用于模型的打分。

对于本文实验设置两种测试集一个是t-test,一个是小数据集中的2 小时语料数据s-test,生成的两个模型分别是T-TDNN 和T-CNN-TDNN,为了结果更容易观察,再设置一个由aishell1 数据集和股票数据集混合训练的模型ALL-TDNN,表1 为三种模型在t-test 和s-test 上WER(错词率)。

由表1 可以看出,大模型在加入股票数据集进行训练WER 下降幅度也非常小。在s-test 上的泛化能力没有得到提升。

3.2 小模型

小模型选用TDNN 网络模型,模型包含8 个隐藏层每层1563 个节点。小模型的标签为之前通过T 进行软化的大模型(T-TDNN 以及T-CNN-TDNN)的softmax 层输出。模型参数更新利用小数据集的7 小时数据进行更新,超参数的设置在aishell1 的开发集上进行。学习率为0.008。优化策略为(5)式,即KL 散度最小化。

小模型测试级同样为t-test 和s-test,生成小模型分别为S-TDNN 和S-CNN-TDNN。表2 为小模型在t-test 和s-test 上的WER。

表2

由表2 可以看出,小模型在接受大模型指导后在t-test 具备同大模型相当的泛化能力,同时在s-test 上WER 有了明显的下降,泛化能力有所提高。

4 结语

本文利用知识蒸馏的基本思想,提出了一种中文语音识别在多领域的声学模型建模方法,利用大模型对小模型进行指导,计算出软标签,在训练过程中防止大模型标签带来过快拟合的影响,使得小模型能够更有效地从小模型中获取到知识,泛化能力更强。未来将加入更多领域数据进行实验,同时从语言模型层面对泛化能力进行进一步优化。

猜你喜欢

标签语音特征
离散型随机变量的分布列与数字特征
微信语音恐惧症
魔力语音
Magic Phonetics魔力语音
抓特征解方程组
不忠诚的四个特征
对方正在输入……
不害怕撕掉标签的人,都活出了真正的漂亮
让衣柜摆脱“杂乱无章”的标签
科学家的标签