LF-MMI在语音识别中的应用
目录
一. 语音识别在做什么
二. MMI推导过程
三. MMI在语音识别模型训练中的应用
四. LF-MMI有什么改进
五. LF-MMI在kaldi中的实现
最大互信息(Maximum Mutual Information)是分类算法常用的区分性准则,在Interspeech 2013的论文Sequence-discriminative training of deep neural networks中,被引入做语音识别深度模型训练。在Interspeech 2016的论文Purely sequence-trained neural networks for ASR based on lattice-free MMI中,发展为不使用Lattice的MMI声学模型损失函数。在2018年的多篇论文中,又应用在半监督的声学模型训练中。
本篇文章主要有两个目标:
1. 推导MMI准则求导、梯度计算等,对于声学模型训练的理论依据;
2. 理解LF-MMI做了什么改进,以及在语音识别开源框架Kaldi中的实现。
在推导数学公式之前,有必要复习一下导数的基本运算法则:
一. 语音识别在做什么
在给定语音观测序列的情况下,求出词语的概率,概率最大的序列即为最有可能的识别结果。该公式可以通过贝叶斯公式展开:
其中,
为语言模型,即可以通过统计概率,计算词语序列出现的概率。
为声学模型,即将语音信号的特征提取(一般为MFCC),通过非线性变换为HMM状态。
称为先验概率,而为后验概率,机器学习的很多算法都依赖贝叶斯公式,将较难计算的后验概率转换为先验概率的求解。
使用最大似然来实现模型训练:
那么,在这里,我们可不可以直接最大化?
实际证明,可以。
使用softmax的网络对于语音信号特征的输出如下:
其中,
是句子u对应t时刻的观测值。
是声学模型对句子对应时刻HMM状态的输出。
是激活层对句子对应时刻HMM状态的输出。
值得注意的是,这里讨论的是使用HMM隐状态来表示隐藏序列,因此序列和上述贝叶斯中的可以一一对应。
根据贝叶斯公式:
通过移项得:
两边取log得到似然公式:
其中,是全局统计得到的状态s出现的概率,是数据的本身分布,均和无关。
因此帧级别的交叉熵函数如下:
对softmax前的激活值求导,利用该值可以继续反向计算任意神经网络参数的更新梯度:
二.MMI推导过程
其中,
是全部的观测序列。
是句子对应的词语序列。
是对应的状态序列。
是声学伸缩系数。
进一步:
类似交叉熵,我们的目标也是要计算该式对softmax前的激活值的导数,但是该导数不易直接求得,因此我们先对求导,再利用链式法则对目标求导。
对求导时,只考虑中关于的项即可,其他项和无关,因此对的求导为0,所以只需要计算下式的导数:
其中,
我们把上式的左半部分(log式中是上半部分)称为分子项,右半部分(log式中是下半部分)称为分母项。
接下来,分别对分子项和分母项进行求导。
展开上式,
由于对应的项和都和无关,因此只需计算对的导数。很容易看出,当时,则导数为,否则导数为0,因此分子项的导数为:
分母项对求导,得:
因为是一个关于不同求和式,分开考虑其中各项。
(1) 若对应的,其(时刻所处状态)不等于,则该项与无关,求导结果为0;
(2) 若对应的,其等于,则该项与有关。我们任选一个这种来分析,假设其为,该项可写为:
注意,由于其中的项和均和无关。因为,所以和有关,该式对求导结果如下:
令,则:
将式(13)带回(12),
以上只是其中一个的导数,其他满足等于的也要参与求导。将所有的这些求和:
即,
综合上述分子项和分母项,式(6),(9),(16),
其中,
表示音频数据在时刻处在状态的概率。该值可以在完整的解码图中使用前后向算法求得。为了减少计算量也可以在一个更小的词格(Lattice)上计算。该Lattice需要使用一个已有的识别系统生成。Lattice中的路径除了,其他的路径正是模型容易混淆的路径。
最后根据式(17),使用链式法则计算对于softmax前的激活值的导数:
根据(2),
根据(4):
将(17)、(21)带入(19):
其中,
是给定神经网络声学模型,的输出状态是的概率。
是给定神经网络声学模型和解码网络,,其时刻输出状态是的概率,因此不仅依赖于时刻的,还依赖其他时刻的,并且依赖解码网络(语言学模型信息)。
可以看做是的一种拓展。
三. MMI在语音识别模型训练中的应用
由上述的推导可知,MMI的目标函数不仅与正确的标注(分子项)有关系,还与其他的所有可能的序列(分母项)有关系;不仅与声学模型有关系,还与语言模型有关系。要最大化该式,要么使分子尽可能的大,要么使分母尽可能的小,要么同时去优化两者。
为了减少计算使其可训练,一种方法是对的可能进行限制,让是有穷的,可枚举的。前辈们告诉我们,可以使用该语音对应语音识别解码的Lattice近似。语音识别解码生成的Lattice的示例如下图所示(图示为一个word级别的Lattice),在解码过程中,除了保留最优路径之外,我们还将未被解码器剪枝的其他路径也保存下来,并且合并一些相同的前缀和后缀,表示为图的形式。该图示是有穷的,可枚举,Lattice对所有W的近似,相当于通过识别解码仅仅保留了概率大的,而将大部分小概率的被忽略掉。
因为MMI的训练依赖Lattice,所以被称为Lattice Based-MMI,Lattice又依赖已经训练好的声学模型,所以在DNN的声学模型中,我们要先基于ML准则先训练好传统声学模型或DNN声学模型,然后做MMI的训练。但是由于Lattice本质上是一个解码过程,其生成代价很高,并且只能在CPU上进行解码完成。一般情况下,我们在训练使用MMI准则的声学模型前,会使用已有声学模型一次性生成全部训练集的Lattice,在区分性训练的过程中并不会根据当前更新后的声学模型实时生成Lattice。所以在这种方式中,Lattice是滞后的,和当前的声学模型并不同步。
四. LF-MMI有什么改进
如上所述,Lattice的生成计算代价高,有滞后性,不能使用GPU,面对这些弊端。那么MMI中的分母表示,在基于Lattice的MMI训练过程中,使用Lattice近似其分母。还有没有别的方法?
MMI中分母实际上是在考虑的各种可能,即词序列的各种可能,在语言模型中我们通过统计词频,计算N-gram的方式将词语序列的可能性表示为概率语言模型。同样的,这里,我们也可以通过概率统计模型N-gram去表示该分母。假设我们将表示为一个和语音识别解码时类似的语言模型G,并为MMI分母构建一个类似HCLG的解码图,则该解码图中组合了MMI中的声学模型和语言模型的信息。我们提到一定要是有限的,可枚举的,当MMI分母和语音识别解码图是一样时,即以词Word作为语言模型的单元,一般的语音识别系统词级别在数十万到百万之间,即使做个简单的bi-gram,其复杂度也非常非常高(HCLG的大小),训练代价非常高。
所以在实现中,由于声学模型的任务是区分音素(phone,或者说是做音素的分类任务),我们可以通过构建音素级别的语言模型来作为分母项,所以分母项的解码图实际上是:
HCP
其中H是HMM拓扑,C是CD-State,P是Phone的语言模型。Phone和State的个数,数百到数千,3-gram或4-gram的语言模型也在计算合理范围内。
当使用语言模型的思想表示MMI的分母时,我们无需再对训练语料进行解码,无需生成Lattice,所以称之为Lattice Free MMI(LF-MMI)。
五. LF-MMI在kaldi中的实现
1. chain模型,一种特殊的LF-MMI实现(TODO);
2. 源码分析(目前先上传了部分阅读源码时记录的调用逻辑和数据结构)。
参考资料:
1. https://zhuanlan.zhihu.com/p/113715935语音识别系列之区分性训练和LF-MMI, 张彬彬
2. http://placebokkk.github.io/asr/2019/12/24/asr-paper-se-mmi-note.html Sequence-discriminative training of DNNs笔记, Chao Yang
3. https://zhuanlan.zhihu.com/p/65557682 kaldi中的chain model(LFMMI)详解, 杨阳阳
4. https://www.danielpovey.com/files/2013_interspeech_dnn.pdf Sequence-discriminative training of deep neural networks, Interspeech
5. https://www.danielpovey.com/files/2016_interspeech_mmi.pdf Purely sequence-trained neural networks for ASR based on lattice-free MMI, Interspeech
- 点赞
- 收藏
- 关注作者
评论(0)