一、基礎
設X是一串已經觀察的聽覺特徵向量,W表示一個詞序列。那麼最可能的詞序列就是W*:
貝葉斯準則
其中P(X|W)是聲學模型,P(W)是語言模型。
Lexicon是字典。HMM模型就是一種聲學模型。
‘下面舉個例子:
“NO right”分爲兩個詞,每個詞又分爲幾個音素。對於每個音素跑HMM模型。
HMM模型如下:
參數 入 :
轉移概率是akj,表示從sk狀態轉移到sj狀態的概率。
輸出概率密度函數bj(x)表示,在隱藏狀態的sj的情況下,觀測值是x的概率。
當然也可能一個狀態對應的觀測值有很多。
統計獨立性:一個觀測狀態x是與生成他的狀態的其他觀測值獨立(簡稱,不同時間的觀測值相互獨立)
馬爾科夫過程:一個狀態和它以前的狀態統計獨立。
一元高斯函數,如第一個,有協方差矩陣和均值向量。
上圖給出矢量高斯函數。P是維數
通常實際應用中,一元的高斯函數是不夠的需要很多元。比如M=8以上。
高斯分佈的具體指示不在介紹。
下面具體說明一下對於均值向量和協方差矩陣的估計。
我們一般使用已知的n個X的值進行估計。
下面我們求最大似然估計:
解得這兩種估計確實是最大似然估計。
概率密度函數由方差和均值確定,注意
是一個二次型。
訓練序列可以對參數進行估計,估計值:
二、聚類算法
k-means是一個自動對無標籤數據進行聚類的算法。
保證收斂,結果與初始化的設置有關。
對上圖進行聚類。
選初始化3個點。
第一次聚類 並找到中心。
再聚類 繼續找中心。直到下圖收斂。
更復雜的情況是,一個M維的高斯分佈是M個函數的線性組合。
P(j)是參數,p(x|j)相當於第J個的高斯分佈PDF。
我們可以根據貝葉斯公式:
p(x|j)表示在已知觀察序列的情況下是第J個高斯函數產生的觀察序列的概率。
而且。
如果我們知道是哪個混合高斯元,產生的觀察值X
那麼我們可以分配每個每一個點給對應的混合高斯元
而且我們可以估計均值(比如用K-MEANS聚類算法)
然後在計算協方差。
但我們還不知道,觀測數據點來自哪個混合高斯元,因此我們要用上面的概率進行計算。
===============================================================================
三、GMM
通常的混合模型是高斯混合模型:也就是說p(x|j)是高斯函數。
假設一個GMM模型,每個N(x;uj;oj2),都有
那麼產生x的概率是等於每個高斯元產生的概率乘以相應的高斯函數概率值的和。
。
設置一個變量zjn。如果j產生了xn那麼爲1,否則爲0.
如果zjn不是隱藏的那麼我們可以計算出j狀態可以產生多少個xn觀測點:
並且估測他們的均值:
但是我們不知道這些,所以沒用。
當我們不知道X是由哪個狀態J產生的時候,還有軟分配:
就是說對各數進行概率的加權分配而不是隻有0,1的分配。
問題又回到了P(j|X)是如何得到的呢。
我們需要p(x|j)和P(j)去估計p(x|j)和P(j)的參數。
因此我們就需要用一個迭代算法(E-M算法):
E-step:計算P(j|x)用當前的GMM參數(均值,方差,p(j))
M-step:計算參數用剛纔E步求的P(j|x)
開始 利用如k-means算法進行初始化,然後這樣迭代知道收斂。
EM算法也可以用最大似然表示。
讓產生觀察序列的概率最大,進而估計這些參數。就是訓練,意思就是通過已知的觀察序列,進而求得參數 如均值和協方差還有權值。
四。HMM
回到HMM
使用HMM有三個問題。
1.計算產生X序列的全部概率。
2.識別,就是給定一個HMM和觀察變量(如MFCC提取後的序列)選出最大可能的隱含狀態。
3.訓練,給定一組觀察序列,和HMM,求出最佳的HMM參數。
1.概率:前向算法。
目標是:求出P(X|入)
計算所有的可能導致X的狀態序列。S1S2S3...ST
不是枚舉所有序列而是遞歸的計算概率