閱讀參考吳軍老師《數學之美》一書第五章部分
引入:馬爾可夫鏈(Markov Chain),描述了一種狀態序列,其每個狀態值取決於前面有限個狀態 。馬爾可夫鏈是具有馬爾可夫性質的隨機變量的一個數列。這些變量的範圍,即它們所有可能取值的集合,被稱爲“狀態空間”,而的值則是在時間n的狀態。
首先,在任何一個時刻t,對應的狀態都是隨機的。
舉例:我們把,,……,,....看成是北京每天的最高氣溫,這裏的每個狀態都是隨機的。
第二,任一狀態的取值都可能和周圍其他的狀態相關。
即:上述例子中任何一天的最高氣溫與這段時間以前的最高氣溫是相關的。
故在這樣的隨機過程中就有了兩個維度的不確定性。
馬爾可夫爲了簡化問題,提出假設:隨機過程中的各個狀態的概率分佈,只與它的前一個狀態有關
即P(St|S1,S2,S3,…,St-1) = P(St|St-1)。(該假設稱爲馬爾可夫假設,符合這個假設的隨機過程則稱爲馬爾可夫過程,也稱爲馬爾可夫鏈)
在這個馬爾可夫鏈中,四個圈表示四個狀態,每條邊表示一個可能的狀態轉換,邊上的權值是轉移概率。
隱含馬爾可夫鏈是上述馬爾可夫鏈的一個擴展:任一時刻t的狀態St是不可見的。所以觀察者沒法通過觀察到一個狀態序列來推測轉移概率等參數。但是隱含馬爾可夫模型在每個時刻t會輸出一個符號,而且和相關且僅和St相關。這稱爲獨立輸出假設。
隱含馬爾可夫模型的結構如下圖,其中隱含的狀態是一個典型的馬爾可夫鏈。鮑姆把這種模型稱爲“隱含”馬爾可夫模型。
基於馬爾可夫假設和獨立輸出假設,可以計算出某個特定的狀態序列產生出輸出符號的概率。
圍繞隱含馬爾可夫模型的三個基本問題
1、給定一個模型,如何計算某個特定的輸出序列的概率?
Forward-Backward算法
2、給定一個模型和某個特定的輸出序列,如何找到最可能產生這個輸出的狀態序列?
維特比算法
3、給定足夠量的觀測數據,如何估計隱含馬爾可夫模型的參數?
訓練隱含馬爾可夫模型更實用的方式是僅僅通過大量觀測到的信號O1,O2,O3,….就能推算模型參數的P(St|St-1)和P(Ot|St)的方法(無監督訓練算法),其中主要使用鮑姆-韋爾奇算法。
在利用隱含馬爾可夫模型解決實際問題中,需要事先知道從前一個狀態進入當前狀態的概率,也稱爲轉移概率,和每個狀態產生相應輸出符號的概率,也稱爲生成概率。
這些概率成爲隱含馬爾可夫模型的參數,而計算或者估計這些參數的過程稱爲模型的訓練。
隱含馬爾可夫模型的五元組
一個ΗΜΜ可以記做λ = ( S, O, A, B, π) 或λ = ( A, B, π)
1. 狀態集合S={a1,a2,…,aN},一般以qt表示模型在t時刻的狀態;
2. 輸出符號集合O={O1,O2,…OM};
3. 狀態轉移概率矩陣A = aij(aij是從i狀態轉移到j狀態的概率)
4. 可觀察符號的概率分佈B = bj(k),表示在狀態j時輸出符
號vk的概率(又稱發射概率),其中:
5 .初始狀態概率分佈,一般記做π= {πi}, 其中: