隨機過程:是隨時間而隨機變化的過程。又稱為隨機函數。
馬爾科夫模型(VMM):它描述了一類重要的隨機過程。
一個系統有有限個狀態集S = {s1,s2,sN},隨時間推移,該系統將同某一狀態轉移到另一狀態。Q=(s1,s2,,,sN)為一隨機變量序列,隨機變量取值為狀態集S中的一個狀態,設時間t時狀態為qt。
對系統的描述通常是給出當前時刻t的狀態與其前面所有狀態的關系:當前時刻 t 處於狀態sj的概率取決於其在時間1,2,···,t-1時刻的狀態,該概率為
P(qt = sj | qt-1 = si,qt-2 = sk ,···).
特定條件下,系統在當前時間t的狀態只與t-1的狀態相關,即:
P(qt = sj | qt-1 = si,qt-2 = sk ,···)= P(qt = sj | qt-1 = si),該系統構成一個離散的一階馬爾科夫鏈。
進一步,如果只考慮上式獨立於時間t的隨機過程(即與時間t的具體大小無關,亦即下面說到的狀態轉移矩陣不隨時間變化):
P(qt = sj | qt-1 = si) = aij,1<= i,j <=N,該隨機模型稱為馬爾可夫模型。其中狀態轉移概率必須滿足:aij>= 0,ai1 + ai2 +...+ajN = 1 。
有N個狀態的一階馬爾科夫過程有N2次狀態轉移,它們可以表示成一個狀態轉移矩陣。
馬爾科夫模型可以視為一個隨機的有限狀態機。一個馬爾科夫鏈的狀態序列的概率可以通過狀態轉移矩陣上的狀態轉移概率計算。
隱馬爾科夫模型(HMM):我們不知道模型所經過的狀態序列(模型的狀態轉換過程是不可觀察的,是隱蔽的),只知道狀態的隨機函數。
例:假定暗室中有N的口袋,每個口袋有M中不同的顏色的球。操作人員按照某一概率分布隨機取一個初始口袋,從中根據不同顏色球的概率分布,隨機的取出一個球,並向室外的人報告球的顏色。
然后根據口袋的概率分布選擇另一個口袋,根據不同顏色球的概率分布從中隨機的取出另一個球並報告顏色。重復這個過程。
該過程中,每個口袋對應HMM中的狀態,從一個口袋轉向另一個口袋對應的是狀態轉移,從口袋中選取一個球並報告顏色對應於從一個狀態中輸出觀察符號。
一個HMM由以下五個部分組成:
1)模型中狀態的集合S,其數目N;
2)每個狀態可能輸出不同的符號集合K,其數目M;
3)狀態轉移概率矩陣A={aij}。
其中, aij = P(qt = sj | qt-1 = si) ,1<= i,j <=N,
aij>= 0,ai1 + ai2 +...+ajN = 1 。
4)從狀態sj觀察到符號vk的概率分布矩陣B ={bj(k)}。(觀察符號的概率又稱為發射概率)
其中,bj(k) = P(Ot = vk | qt = sj), 1<= j <=N 。(O = O1O2···OT,表示觀察序列)
5)初始狀態概率分布π = {πi}
一般一個HMM記為一個五元組μ = {S,K,A,B,π},有時簡單記為三元組μ = (A,B,π)。
一旦一個系統可以作為HMM被描述,就可以用來解決三個基本問題。其中前兩個是模式識別的問題:給定HMM求一個觀察序列的概率(評估);搜索最有可能生成一個觀察序列的隱藏狀態序列(解碼)。第三個問題是給定觀察序列生成一個HMM(學習)。
HMM三個基本問題:
1)估計問題:給定觀察序列O = O1O2···OT和模型μ,如何快速的計算出給定模型μ情況下,觀察序列O的概率,即P(O|μ)?
2)序列問題:給定觀察序列O = O1O2···OT和模型μ,如何快速選擇在一定意義下“最優“的狀態序列Q = q1q2···qT,使得該狀態序列“最好的解釋”觀察序列?
3)訓練問題和參數估計問題:給定觀察序列O = O1O2···OT,如何根據最大似然估計求模型的參數值?即如何調節模型μ的參數是的P(O|μ)最大?
總結(Summary)
由一個向量和兩個矩陣(pi,A,B)描述的隱馬爾科夫模型對於實際系統有着巨大的價值,雖然經常只是一種近似,但它們卻是經得起分析的。隱馬爾科夫模型通常解決的問題包括:
1. 對於一個觀察序列匹配最可能的系統——評估,使用前向算法(forward algorithm)解決;
2. 對於已生成的一個觀察序列,確定最可能的隱藏狀態序列——解碼,使用Viterbi 算法(Viterbi algorithm)解決;
3. 對於已生成的觀察序列,決定最可能的模型參數——學習,使用前向-后向算法(forward-backward algorithm)解決。