MMI在ASR中的应用

介绍

  • ASR中DNN声学模型训练通常使用CE准则作为损失函数进行训练,CE准则是最小化帧错误率,但在基于帧识别的ASR中我们一般直接使用WER(自错误率)来评价语音识别准确率,更关心的是序列的准确性,会导致损失函数和训练目标不一致。
  • DT在识别序列上定义误差,更接近语音识别的最终目标。
  • 常用DT目标函数有MMI,BMMI,MPE,MBR。
    使用CE准则时,又可能帧的正确率提高了但是最终解码WER没变化甚至更高了,所以将训练准则损失函数直接和最后的评估函数(WER)直接关联。

ML与MMI的区别
在语音GMM-HMM框架下,使用ML准则进行训练,目标函数是:
FML=u=1UlogP(XuWu;θ){F_{ML}} = \sum\limits_{u = 1}^U {\log P({X_u}|{W_u};\theta )}
其中WuW_u是词标准序列,XuX_u是语音信号,θ\theta是声学模型参数。
MMI准则目标函数为:
FMMI=u=1UlogP(Wuxu;θ)=u=1UlogP(XuWu;θ)P(Wu)wP(Xuw;θ)P(w){F_{MMI}} = \sum\limits_{u = 1}^U {\log P({W_u}|{x_u};\theta )} = \sum\limits_{u = 1}^U {\log \frac{{P({X_u}|{W_u};\theta )P({W_u})}}{{\sum\nolimits_{w'} {P({X_u}{\rm{|}}w';\theta )P(w')} }}}
P(Wu)P(W_u)是固定的语言模型,
分子上的P(XuWu;θ)P(X_u|W_u;\theta),正式ML的目标函数;而分母则是所有文本(包括训练文本和它的所有竞争者)产生训练语音的概率(按语言模型加权)和。
两者之间的区别在于条件概率不同。ML中只要训练文本产生训练语音的概率大就行,而MMI要求的是训练语音对应训练文本的概率大,即训练文本产生语音信号的概率和其他文本产生语音信号的概率之差大。

DNN与MMI

  • MMI损失函数
    DNN神经网络中,DT准则可以替换CE准则作为损失函数。MMI准则为:
    JMMI(θ;S)=m=1MJMMI(θ;om,wm)=m=1MlogP(wmom;θ)=m=1Mlogp(omsm;θ)κP(wm)wp(omsw;θ)κP(w){J_{MMI}}(\theta ;S) = \sum\limits_{m = 1}^M {{J_{MMI}}(} \theta ;{o^m},{w^m}) = \sum\limits_{m = 1}^M {\log P({w^m}|{o^m};\theta ) = } \sum\limits_{m = 1}^M {\log \frac{{p{{({o^m}|{s^m};\theta )}^\kappa }P({w^m})}}{{\sum\nolimits_w {p{{({o^m}|{s^w};\theta )}^\kappa }P(w)} }}}
    其中,omo^mwmw^m分别是第m个音频样本的观察序列和正确的单词序列标注。θ\theta是声学模型参数,sms^mwmw^m对应的状态序列,κ\kappa是声学缩放系数。
    在MMI准则公式中,分子Numerator表示的是正确单词序列的可能性,分母Denominator是所有可能单词序列的可能性之和。理论上说,分母应该取遍所有可能的单词序列,但在实际中,这个求和运算是限制在解码得到的词图lattice上求和的,以减少运算量。
    MMI准则是最大化单词序列分布与观察序列分布之间的互信息,减小句子错误率。最大化分子,最小化分母。
    DT训练之前需要使用ML准则或CE准则生成alignments对齐和lattices词图,DT的初始化模型使用的是ML或CE准则训练出的最好模型。
    DNN训练算法一般是用来最小化一个目标方程,所以需要对MMI准则取反进行最小化,而不是最大化互信息。
  • MMI求导
    JMMI(θ;S)θ=m=1Mt=1TJMMI(θ;S)zmtzmtθ\frac{{\partial {J_{MMI}}(\theta ;S)}}{{\partial \theta }} = \sum\limits_{m = 1}^M {\sum\limits_{t = 1}^T {\frac{{\partial {J_{MMI}}(\theta ;S)}}{{\partial {z_{mt}}}}} } \frac{{\partial {z_{mt}}}}{{\partial \theta }}
    其中zmtz_{mt}表示softmax层的输入,zmtθ\frac{{\partial {z_{mt}}}}{{\partial \theta }}的计算方式和CE准则是一样的没有区别,用梯度反向传播算法,我们称之为外导数。真正与DT相关的是JMMI(θ;S)zmt{\frac{{\partial {J_{MMI}}(\theta ;S)}}{{\partial {z_{mt}}}}},我们称之为内导数。
    JMMI(θ;S)zmt(i)=κ(γmtnum(i)γmtden(i))\frac{{\partial {J_{MMI}}(\theta ;S)}}{{\partial {z_{mt}}(i)}} = \kappa (\gamma _{mt}^{num}(i) - \gamma _{mt}^{den}(i))
    其中zmt(i)z_{mt}(i)zmtz_{mt}的第i个元素,最终求导结果如上过程省略。γmtnum(i)\gamma _{mt}^{num}(i)γmtden(i)\gamma _{mt}^{den}(i)分别表示t时刻分子lattice和分母lattice在状态r上的后验概率,可以通过在lattice上使用前向-后向算法得到。
    γt(r)=P(st=r(θ;S))=αt(r)βt(r)rNαt(r){\gamma _t}(r) = P({s_t} = r|(\theta ;S)) = \frac{{{\alpha _t}(r){\beta _t}(r)}}{{\sum\nolimits_r^N {{\alpha _t}(r)} }}
    其中αt(r)\alpha_t(r)βt(r)\beta_t(r)分别是前向后向算法中计算出来的前向概率因子和后向概率因子,rNαt(r)\sum\nolimits_r^N {{\alpha _t}(r)}是前向或后向算法中从起始节点到结束节点的概率和。
    前向后向算法都是在lattice上进行的,下图是一个word级别的lattice:
    MMI在ASR中的应用
    kaldi中DT训练的流程图:
    MMI在ASR中的应用