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