聲學模型學習筆記(五) SDT(MMI/BMMI/MPE/sMBR)

原文鏈接:https://blog.csdn.net/xmdxcsj/article/details/52760111

版權聲明:本文爲博主原創文章,遵循 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章