隱馬爾科夫模型,學習筆記
1. 隱馬爾科夫模型的三個基本問題
1. 概率計算問題,已知模型和觀測序列,計算在當前模型下觀測序列出現的概率。
2. 學習問題。已知觀測序列,來估計模型的引數(轉移概率等等),使得在該模型下已知的觀測序列出現的概率最大(極大似然)
3. 預測(解碼)問題,已知模型和觀測序列,求最有可能對應的狀態序列。
2. 求解概率計算問題
如果已經知道模型的話,那麼狀態轉移概率矩陣,初始狀態概率向量,觀測概率矩陣都已知。
首先考慮暴力的直接計演算法。
直接計演算法:(不現實)
就是直接按照概率公式。
1.求出所有的可能出現的狀態序列,
2.對於每種可能出現的狀態序列,計算已知的觀測序列出現的概率(乘上對應的觀測概率矩陣)
3.將全部的概率相加,就是已知的觀測序列出現的概率。
前向演算法:
前向概率:到一個時刻t,時刻t時狀態為q(而非觀測),觀測序列為(o1,o2.....ot)的概率。
前向演算法:
1. 計算初值:根據初始狀態概率向量,和觀測概率矩陣,計算出每一種狀態對應的t=1的前向概率。
2. 遞推:計算每一種狀態轉移到當前狀態i的概率和,再乘上觀測概率。
3. 終止:概率計算為:對T時刻的每一種狀態i的前向概率求和。
後向演算法:
基本和前向演算法很類似。
具體而言,定義t時刻狀態為q,但已知觀測序列為(ot+1,ot+2.....oT)
後向演算法:
1. 初始T時刻的所有狀態i的後向概率為1。(因為後向概率就是這麼定義的。“在時刻t的狀態為i的條件下”)
2. 前推,前一時刻,對於所有t+1時刻狀態j * 轉移概率i->j * 觀測概率觀測到Oj 求和
3. 終止。
利用前向和後向概率,我們可以求什麼(應用)
1. 時刻t,處於狀態qi的概率:參見統計機器學習P179(前向*後向)/(對於所有狀態求和前向*後向)
2.時刻t處於狀態qi,且時刻t+1,處於狀態qj的概率:
3. 觀測O下狀態i出現的期望值
4.觀測O下由狀態i轉移的期望值
5. 觀測O下由狀態i轉移到狀態j的期望值
3.學習演算法(已知觀測序列,求模型引數,即構建模型)
1.監督學習方法:訓練資料中包含觀測序列和對應的狀態序列
極大似然估計法。
1.估計轉移概率:用頻數做比,i->j / i->所有狀態
2. 估計觀測概率:頻數做比 ,狀態j觀測為k/狀態j觀測為任意狀態
3. 初始狀態概率:S個樣本中初始狀態為i的概率
2. 非監督學習方法:Baum-Welch演算法
只給出S個觀測序列,而沒有給出對應的狀態序列。
使用EM演算法。
(略)
3. 預測演算法:(根據模型和觀測序列,得到最優的狀態序列)
就像是訓練出模型之後,輸入樣本(觀測序列),得到輸出(狀態序列)
1. 近似演算法
在每個時刻t選擇在該時刻最有可能出現大的狀態i,從而得到一個狀態序列作為預測的結果。
(這裡用到之前計算的某一時刻狀態i的概率,在前向和後向演算法那裡)
計算某一時刻t下,所有狀態i的概率,取其中的最大值。
計算所有時刻,形成一個序列。
2. 維特比演算法
使用動態規劃解馬爾可夫模型預測問題。(求概率最大的路徑,這時一條路徑對應一個狀態序列)
根據動態規劃原理,如果最優路徑(狀態序列),在時刻t通過節點(狀態)i,那麼之後的部分路徑也一定是最優的。
即子路徑最優原則。
略
參見統計機器學習中的例子。很詳細。