Sequence Training in ASR

在识别任务中,我们会产生这样的一个疑问,即分类器训练的越充分,是否会带来更高的识别率?从经验上来说不能承认这一点,因为基于CE的分类只是针对frame级别的判别(误差定义在frame上)而识别的本质是一个序列mapping的任务。序列区分性训练尝试在识别序列上定义误差,从这一点上来看,更加接近于识别的最终目标,因而也会相应的获得较高的识别率。

目前的区分性准则(在kaldi中)主要有MMI(最大互信息),MPE(最小音素错误),MBR(最小贝叶斯风险,一般是state-level的,称为sMBR)。

CE

将$y_{ut}$定义为softmax层的输出,$\alpha_{ut}$定义为softmax层的输入,网络的每个输出节点对应一个pdf(状态s)的后验:

交叉熵的代价函数定义为:

和交叉熵比较相似的一个概念是相对熵(也称为KL散度),用来衡量两个分布之间的差异(egs. $p, q$):

其中,$- \sum_{i}p(i) \log q(i)$就是交叉熵:

$p$为真实分布,$q$为网络拟合的分布,网络训练的目标是让$q$的分布接近于$p$,在$p$已知的情况下,$\sum_{i}p(i) \log p(i)$为常数,因此$D_{KL}$和$H$同时取得最小值,因此可用交叉熵来替代KL散度作为目标函数。

执行分类任务时候,先验分布编码为one-hot形式,即$p(s) = \delta_{s, s_{ut}}$,$\delta$为克罗内克函数,$s_{ut}$为句子$u$在$t$时刻的label(类别)索引。因此在表达式$\mathcal{F}_{CE}$中,有

MMI

定义特征(观测)序列 $\mathbf{O}_u = \{\mathbf{o}_{u1}, \mathbf{o}_{u2}, \cdots, \mathbf{o}_{uT_u}\}$,$W_u$为句子$u$的抄本序列,$S_u$为在抄本$W_u$下对齐得到的中间状态序列$\{\mathbf{s}_{u1}, \mathbf{s}_{u2}, \cdots, \mathbf{s}_{uT_u}\}$。MMI准则下的目标函数为:

显然,MMI是定义在整个句子上的,直观的理解就是要最大化正确解码序列概率在所有可能序列中的占比(关注句子的正确率)。

MPE/sMBR

延续MMI中的定义,MPE和sMBR的目标函数可以统一用下面的式子表示:

其中$A(W, W_u)$表示以$W_u$为参考,音素(MPE)和状态(sMBR)的正确率。也就是说,它们更加关注解码序列中的音素/状态的正确率。