參考文章:
《Tree-Based State Tying for High Accuracy Acoustic Modelling Basics Triphone Tying Decision Trees 》, S.J. Young, J.J. Odell, P.C. Woodland 1994.
1.為什么要用三音素建模
單音素建模沒有考慮協同發音效應,也就是上下文音素會對當前的中心音素發音有影響,會產生協同變化,這與該音素的單獨發音會有所不同(數據統計也就有所不同),為了考慮這個影響,
所以需要使用三音素建模,使得模型描述更加精准。
2.為什么需要狀態綁定
原因有兩個:1)需要對三音素進行精細建模,則需要大量的數據,而實際上很難獲得。
2)如果進行精細建模,則使得模型參數非常巨大。
舉個例子: 假設音素表有50個音素,則需要的三音素總個數有:50×50×50=125,000
假設3個狀態,每個狀態對應1個GMM,1個GMM用8個高斯(44個參數=8+(8+1)×8/2),則1個三音素對應132個參數
總的模型參數有:16500000,顯然模型參數非常大。
另外,每個三音素的模型建立,如果要全覆蓋,則需要很大的訓練數據,一般很難覆蓋到。
所以,精細建模不太現實;需要狀態綁定來減小參數。
兩種聚類方法:
兩種方法:1)傳統的三音素方法就是模型綁定,也就是歸一化三音素,使用一個后驗平滑的方法。盡管如此,基於模型的上下文綁定是受限的,因為上下文音素不能
單獨的對待。
2)當前中心音素,如果上下文的發音類型相似,則對當前音素的影響是相似的,則可以將這些數據聚為1類;具體要如何制定這些
規則(決策樹規則),靠語言發音學家的經驗知識,提問。(音素判別,再到狀態綁定) 對於節點分裂,需要尋找最佳的問題,按照looklikehood增加的原則。
kaldi可以自動產生問題集,根據音素本身數據上的相似性,自動聚為一類,這不需要語言學知識。
3.這篇文章解決的問題
狀態綁定已經可以通過數據驅動,貪婪性聚類完;這篇文章主要解決的是狀態綁定是如何通過決策樹完成的,它的最大優勢是完成看不見
的三音素構建(所謂看不見,其實應該就是通過數據本身的分布相似特點,所構建的3音素)
這篇文章改進的主要是第三步:
第一步,單音素標准模型用3個狀態,單個狀態用1個高斯描述。
第二步,三音素用BW算法訓練,拷貝單音素狀態輸出分布到還沒有綁定,覆蓋,量少的三音素初始化。
第三步,中心音素相同的三音素被聚類,一個典型的狀態被選擇出,同類的狀態綁定該狀態。
第四步,混合分量增加。
第五步,留下問題:為什么使用一個高斯
第六步,Bootstrap,Baum Welch
決策樹建立過程:
1. 假如所有狀態已被綁定,計算訓練數據產生的log似然概率。
2. 尋找問題,將節點分裂成兩個子節點,以滿足log似然概率最大化為准則。
3. 如果低於閾值或者最大次數,終止這個過程。
,S表示HMM的狀態
L(S)表示訓練幀集合F的在狀態S,HMM模型下似然概率
被觀測的后驗概率
,
如果概率密度函數是高斯函數,則L(S)進一步被表示為:
n,表示數據維度,因此整個數據集的Log似然度僅僅依賴於和
在重估計過程中,前者可以計算得到。
對於一個給定狀態S的節點,通過尋找問題q,它被分裂成兩個子節點
按照裝則,使得下面似然度的增量最大化:
當這個增量為小於閾值時,停止分裂。
最后,對於不同父節點下的葉子節點進行歸類,如果Log似然度減少在設定的閾值以內,則合並
基於數據驅動,與決策樹聚類對比
基於狀態與基於模型聚類對比