版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xmdxcsj/article/details/52760111
DNN训练使用的CE准则是基于每一帧进行分类的优化,最小化帧错误率,但是实际上语音识别是一个序列分类的问题,更关心的是序列的准确性。所以引入SDT(sequence-discriminative training),训练准则更符合实际,有利于提升识别率。常用的准则包括MMI/BMMI、MPE、MBR等。
准则 目标函数
CE 帧错误率
MMI/BMMI 句子正确率
MPE phone错误率
sMBR 状态错误率
MMI
MMI(maximum mutual information)准则最大化观察序列分布和word序列分布之间的互信息,减小句子错误率。
假设观察序列om=om1,...,omTmom=o1m,...,oTmm,word序列wm=wm1,...,wmNmwm=w1m,...,wNmm,其中mm表示utterance,TmTm表示帧数,NmNm表示word个数。训练集为S={(om,wm)|0≤m≤M},S={(om,wm)|0≤m≤M},MMI准则可以表示如下:
JMMI(θ;S)=∑m=1MJMMI(θ;om,wm)=∑m=1MlogP(wm|om;θ)
JMMI(θ;S)=∑m=1MJMMI(θ;om,wm)=∑m=1MlogP(wm|om;θ)
=∑m=1Mlogp(om|sm;θ)kP(wm)∑wp(om|sw;θ)kP(w)
=∑m=1Mlogp(om|sm;θ)kP(wm)∑wp(om|sw;θ)kP(w)
其中kk表示acoustic scale,θθ表示模型参数,smsm表示状态序列。物理意义可以理解为:分子表示准确结果对应路径的总得分(声学和语言),分母表示所有路径对应的得分总和(为了计算上的可操作性,实际用lattice简化表示)。模型参数的梯度可以表示如下:
∇JMMI(θ;om,wm)=∑m∑t∇zLmtJMMI(θ;om,wm)∂zLmt∂θ=∑m∑te¨Lmt∂zLmt∂θ
∇JMMI(θ;om,wm)=∑m∑t∇zmtLJMMI(θ;om,wm)∂zmtL∂θ=∑m∑te¨mtL∂zmtL∂θ
其中zLmtzmtL表示softmax层的输入(没有做softmax运算),跟CE准则的不同体现在e¨Lmte¨mtL,进一步计算如下:
e¨Lmt(i)=∇zLmt(i)JMMI(θ;om,wm)
e¨mtL(i)=∇zmtL(i)JMMI(θ;om,wm)
=∑r∂JMMI(θ;om,wm)∂logp(omt|r)∂logp(omt|r)∂zLmt(i)
=∑r∂JMMI(θ;om,wm)∂logp(otm|r)∂logp(otm|r)∂zmtL(i)
第一部分
∂JMMI(θ;om,wm)∂logp(omt|r)
∂JMMI(θ;om,wm)∂logp(otm|r)
=∂logp(om|sm)kP(wm)∑wp(om|sw)kP(w)∂logp(omt|r)
=∂logp(om|sm)kP(wm)∑wp(om|sw)kP(w)∂logp(otm|r)
=k∂logp(om|sm)∂logp(omt|r)−∂log∑wp(om|sw)kP(w)∂logp(omt|r)
=k∂logp(om|sm)∂logp(otm|r)−∂log∑wp(om|sw)kP(w)∂logp(otm|r)
考虑到p(om|sm)=p(om1|sm1)p(om2|sm2)...p(omTm|smTm)p(om|sm)=p(o1m|s1m)p(o2m|s2m)...p(oTmm|sTmm),所以上式第一项可以简化为:
k∂p(om|sm)∂logp(omt|r)=k(δ(r=smt))k∂p(om|sm)∂logp(otm|r)=k(δ(r=stm))
第二项可以进一步求导:
∂log∑wp(om|sw)kP(w)∂logp(omt|r)
∂log∑wp(om|sw)kP(w)∂logp(otm|r)
=∂log∑welogp(om|sw)kP(w)∂logp(omt|r)
=∂log∑welogp(om|sw)kP(w)∂logp(otm|r)
=1∑welogp(om|sw)kP(w)∂∑welogp(om|sw)kP(w)∂logp(omt|r)
=1∑welogp(om|sw)kP(w)∂∑welogp(om|sw)kP(w)∂logp(otm|r)
=1∑wp(om|sw)kP(w)∗∑welogp(om|sw)kP(w)∗∂logp(om|sw)kP(w)∂logp(omt|r)
=1∑wp(om|sw)kP(w)∗∑welogp(om|sw)kP(w)∗∂logp(om|sw)kP(w)∂logp(otm|r)
=1∑wp(om|sw)kP(w)∗∑wp(om|sw)kP(w)∗δ(smt=r)
=1∑wp(om|sw)kP(w)∗∑wp(om|sw)kP(w)∗δ(stm=r)
=∑w:st=rp(om|sw)kP(w)∑wp(om|sw)kP(w)
=∑w:st=rp(om|sw)kP(w)∑wp(om|sw)kP(w)
综合前面的第一项和第二项,可得:
∂JMMI(θ;om,wm)∂logp(omt|r)=k(δ(r=smt)−∑w:st=rp(om|sm)kP(w)∑wp(om|sm)kP(w))
∂JMMI(θ;om,wm)∂logp(otm|r)=k(δ(r=stm)−∑w:st=rp(om|sm)kP(w)∑wp(om|sm)kP(w))
第二部分
考虑到p(x|y)∗p(y)=p(y|x)∗p(x)p(x|y)∗p(y)=p(y|x)∗p(x),第二部分可以表示如下:
∂logp(omt|r)∂zLmt(i)
∂logp(otm|r)∂zmtL(i)
=∂logp(r|omt)−logp(r)+logp(omt)∂zLmt(i)
=∂logp(r|otm)−logp(r)+logp(otm)∂zmtL(i)
=∂logp(r|omt)∂zLmt(i)
=∂logp(r|otm)∂zmtL(i)
其中p(r|omt)p(r|otm)表示DNN的第r个输出,
p(r|omt)=softmaxr(zLmt)=ezLmt(r)∑jezLmt(j)
p(r|otm)=softmaxr(zmtL)=ezmtL(r)∑jezmtL(j)
所以,
∂logp(omt|r)∂zLmt(i)=δ(r=i)
∂logp(otm|r)∂zmtL(i)=δ(r=i)
按照文章的推导应该得到这个结果,但是实际上分母还包含zLmt(i)zmtL(i),是不是做了近似认为分母是常量,这一步有疑问????
综合上面两部分,可以得到最终的公式:
e¨Lmt(i)=k(δ(i=smt)−∑w:st=ip(om|sm)kP(w)∑wp(om|sm)kP(w))
e¨mtL(i)=k(δ(i=stm)−∑w:st=ip(om|sm)kP(w)∑wp(om|sm)kP(w))
Boosted MMI
JBMMI(θ;S)=∑m=1MJBMMI(θ;om,wm)=∑m=1MlogP(wm|om)∑wP(w|om)e−bA(w,wm)
JBMMI(θ;S)=∑m=1MJBMMI(θ;om,wm)=∑m=1MlogP(wm|om)∑wP(w|om)e−bA(w,wm)
=∑m=1MlogP(om|wm)kP(wm)∑wP(om|wm)kP(w)e−bA(w,wm)
=∑m=1MlogP(om|wm)kP(wm)∑wP(om|wm)kP(w)e−bA(w,wm)
相比于MMI,BMMI在分母上面增加了一个权重系数e−bA(w,wm)e−bA(w,wm),一般b=0.5b=0.5,A(w,wm)A(w,wm)是ww和wmwm之间准确率的度量,可以是word/phoneme/state级别的准确率。
物理意义:
参考[3]给出的解释,We boost the likelihood of the sentences that have more errors, thus generating more confusable data. Boosted MMI can viewed as trying to enforce a soft margin that is proportional to the number of errors in a hypothesised sentence。
结合参数理解,就是ww和wmwm越接近(错误的word越少),e−bA(w,wm)e−bA(w,wm)这个权重越小,相反,权重会越大,增加了数据的困惑度。
通过可以推导出误差信号:
e¨Lmt(i)=k(δ(i=smt)−∑w:st=ip(om|sw)kP(w)e−bA(w,wm)∑wp(om|sw)kP(w)e−bA(w,wm))
e¨mtL(i)=k(δ(i=stm)−∑w:st=ip(om|sw)kP(w)e−bA(w,wm)∑wp(om|sw)kP(w)e−bA(w,wm))
MPE/sMBR
MBR(minimum Bayes risk)的目标函数是最小化各种粒度指标的错误,比如MPE是最小化phone级别的错误,sMBR最小化状态的错误。目标函数如下:
JMBR(θ;S)=∑m=1MJMBR(θ;om,wm)=∑m=1M∑wP(w|om)A(w,wm)
JMBR(θ;S)=∑m=1MJMBR(θ;om,wm)=∑m=1M∑wP(w|om)A(w,wm)
=∑m=1M∑wP(om|sw)kP(w)A(w,wm)∑w′P(om|sw′)kP(w′)
=∑m=1M∑wP(om|sw)kP(w)A(w,wm)∑w′P(om|sw′)kP(w′)
其中A(w,wm)A(w,wm)表示两个序列之间的差异,MPE就是正确的phone的个数,sMBR是指正确的state的个数。求导可得:
e¨Lmt(i)=∇zLmt(i)JMBR(θ;om,wm)
e¨mtL(i)=∇zmtL(i)JMBR(θ;om,wm)
=∑r∂JMBR(θ;om,wm)∂logp(omt|r)∂logp(omt|r)∂zLmt(i)
=∑r∂JMBR(θ;om,wm)∂logp(otm|r)∂logp(otm|r)∂zmtL(i)
第一部分
对于MPE,参考文献[4]:
首先将JMBR(θ;om,sm)JMBR(θ;om,sm)分子分母求和部分分为两块,r∈swr∈sw和r∉swr∉sw
JMBR(θ;om,sm)=∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)
JMBR(θ;om,sm)=∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)
=∑s:r∈sP(om|s)kP(s)A(s,sm)+∑s:r∉sP(om|s)kP(s)A(s,sm)∑s′:r∈s′P(om|s′)kP(s′)+∑s′:r∉s′P(om|s′)kP(s′)
=∑s:r∈sP(om|s)kP(s)A(s,sm)+∑s:r∉sP(om|s)kP(s)A(s,sm)∑s′:r∈s′P(om|s′)kP(s′)+∑s′:r∉s′P(om|s′)kP(s′)
- 如果满足r∈sr∈s,那么导数满足以下关系:
∂P(om|s)k∂logp(omt|r)=∂ek∗logP(om|s)∂logp(omt|r)=k∗P(om|s)k
∂P(om|s)k∂logp(otm|r)=∂ek∗logP(om|s)∂logp(otm|r)=k∗P(om|s)k
- 如果不满足r∈sr∈s,那么导数将为0:
∂P(om|s)k∂logp(omt|r)=0
∂P(om|s)k∂logp(otm|r)=0
不难推出:
∂JMBR(θ;om,sm)∂logp(omt|r)
∂JMBR(θ;om,sm)∂logp(otm|r)
=k∗∑s:r∈sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)−k∗∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)∗∑s:r∈sP(om|s)kP(s)∑s′P(om|s′)kP(s′)
=k∗∑s:r∈sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)−k∗∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)∗∑s:r∈sP(om|s)kP(s)∑s′P(om|s′)kP(s′)
上面的等式可以简化为以下形式:
∂JMBR(θ;om,sm)∂logp(omt|r)=k∗γ¨DENmt(r)(A¯m(r=smt)−A¯m)
∂JMBR(θ;om,sm)∂logp(otm|r)=k∗γ¨mtDEN(r)(A¯m(r=stm)−A¯m)
各个部分的定义如下:
γ¨DENmt(r)=∑s:r∈sP(om|s)kP(s)∑s′P(om|s′)kP(s′)
γ¨mtDEN(r)=∑s:r∈sP(om|s)kP(s)∑s′P(om|s′)kP(s′)
A¯m=∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)
A¯m=∑sP(om|s)kP(s)A(s,sm)∑s′P(om|s′)kP(s′)
A¯m(r=smt)=E(A(s,sm))=∑s:r∈sP(om|s)kP(s)A(s,sm)∑s′:r∈s′P(om|s′)kP(s′)
A¯m(r=stm)=E(A(s,sm))=∑s:r∈sP(om|s)kP(s)A(s,sm)∑s′:r∈s′P(om|s′)kP(s′)
第一项表示occupancy statistics
第二项表示lattice中所有路径的平均准确率
第三项表示lattice中所有经过r的路径的平均准确率,是A(s,sm)A(s,sm)的均值,可以将三个三项合并起来进行还原就很容易里面均值的含义。
第二部分
第二部分和MMI的一致
tricks
lattice generation
区分性训练时生成高质量的lattice很重要,需要使用最好的模型来生成对应的lattice,并且作为seed model。
lattice compensation
如果lattice产生的不合理的话,会导致计算出来的梯度异常,比如分子的标注路径没有在分母中的lattice出现,这种情况对于silience帧尤其常见,因为silience经常出现在分子的lattice,但是很容易被分母的lattice忽略。有一些方法可以解决这种问题:
- fame rejection,直接删除这些帧
- 根据reference hypothesis修正lattice,比如在lattice中人为地添加一下silience边
frame smoothing
SDT很容易出现overfitting,两方面原因
- sparse lattice
- sdt的squence相比于frame增加了建模的维度,导致训练集的后验概率分布更容易跟测试集出现差异
可以修改训练准则来减弱overfitting,通过结合squence criteria和frame criteria来实现:
JFS−SEQ(θ;S)=(1−H)JCE(θ;S)+HJSEQ(θ;S)
JFS−SEQ(θ;S)=(1−H)JCE(θ;S)+HJSEQ(θ;S)
HH成为smoothing factor,经验值设为4/54/5到10/1110/11
learning rate
SDT的学习率相比于CE要下,因为
- SDT的起点一般基于CE训练出来的model
- SDT训练容易出现overfitting
criterion selection
sMBR效果相比其他会好一点,MMI比较容易理解和实现。
noise contrastIve estimation
NCE可以用于加速训练
参考
[1]《automatic speech recognition a deep learning approach》 chapter8
[2]Sequence-discriminative training of deep neural networks
[3]Boosted MMI for model and feature-space discriminative training
[4]discriminative training for large vocabulary speech recognition {daniel povey的博士论文chapter6}
————————————————
版权声明:本文为CSDN博主「xmucas」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xmdxcsj/article/details/52760111