1. 為什麼需要決策樹
我們在使用htk進行語音識別模型訓練的過程中,首先進行的是單音素、單個高斯的模型訓練。拋開單個高斯不說,單音素模型本身有很大缺點:沒有考慮到本音素前後音素的發音對本音素的影響。比如,同樣是乙個音素iy,如果它前面的音素分別是h和p,那麼iy這個音素在這兩種情況下的發音會有所不同,那麼模型引數也就會受到其影響,此時,如果用同乙個模型來描述音素iy,那麼就會不合理。
為了解決這個問題,採用三音素(triphones)模型,典型的三音素模型如下 [t-iy+n],這表示iy音素前乙個音素是t,後乙個因素是n,模型[t-iy+n] 用來表示這種情況下的音素iy模型,那麼此時,這個三音素模型和 [t-iy+ng] 不再表示同乙個模型了,雖然他們都是表示音素 iy的模型,但是因為中心音素(此處為iy)的上下文音素不同了,所以此時它們其實是兩個不同的模型。
如此以來,模型的數量會劇增。單因素模型時,假如我們只有40個音素需要建模,每個音素有3個hmm狀態。但是在三因素模型中,最壞的情況是需要給40×40×40 個模型進行建模,當然這其中有很多是不可能或者不會在訓練資料中出現的。但是相對於單音素模型來說,這個數目已經增加了很多倍,這就導致了乙個問題:訓練資料不足!那麼如何解決因為模型數量增加而導致訓練資料不足的問題呢?htk使用了模型狀態繫結的方法。所謂的模型狀態繫結,就是讓一些具有某些相似特徵的模型的一些狀態來共享一組模型引數,這樣就能夠有效的減少模型引數的數量從而解決訓練資料不足的問題。
2. 如何使用決策樹進行模型的狀態繫結
在進行狀態繫結時,我們首先要做的就是使用決策樹進行聚類。具有相同類別的模型,他們的某乙個狀態可以共享一組引數。例如:對於音素iy,如果它的前乙個音素分別是m和n,由於m和n發音比較像,所以模型[m-iy+*]和[n-iy+*]的第乙個狀態的引數就應該比較相似,那麼我們就把這兩個模型的第乙個狀態的引數進行繫結,也就是說這兩個模型的第乙個狀態引數是相同的。那麼到底如何確定那些模型的哪些狀態可以共用一組引數也就是可以進行繫結引數?這就用到了決策樹進行聚類,具有相同類別的狀態就可以共用一組引數。
在這裡,一定要注意,我們在建立決策樹時,是對每個音素的每個狀態都建立乙個決策樹, 而不是只對某乙個音素來建立。這裡,我們以音素ih的首狀態為例,詳細說明決策樹的建立過程。
在上圖中的每乙個類中,a、b……e,每乙個類中的第乙個狀態都被繫結在一起,如此進行,把所有的音素的所有狀態都進行決策樹的建立,就能完成引數的繫結。
3. 決策樹中的問題集
在上圖中,我們看到一些問題集,類似與「左邊是清音嗎?」等等,這些問題集都是根據聲學和語音學特徵提出來的。
4.kaldi中是自動生成問題集
通過查閱相關資料猜測問題集是根據音素聚類得出的,比如,用kmeans方法,特徵是聲學特徵,對音素進行乙個簡單分類,這些類就構成了decision tree中的問題集。之所以這麼做,也是danie povey在實踐中得出來的。
參考
決策樹01 決策樹的原理
此筆記根據 machine learning in action 和周志華教授的 機器學習 所作。缺點 可能會產生過度匹配問題。適用資料型別 數值型和標稱型 machine learning in action if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分...
決策樹和CART決策樹
首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...
決策樹(二)決策樹回歸
回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...