1. 程式人生 > >隱馬爾可夫模型HMM---《統計學習方法》第十章

隱馬爾可夫模型HMM---《統計學習方法》第十章

標註問題

標註問題的輸入是一個觀測序列,輸出是一個標記序列或狀態序列。標註問題的目的在於學習一個模型,使它能夠對觀測序列給出標記序列作為預測。
標註常用的統計學習方法有:隱馬爾可夫模型,條件隨機場。
舉例:給定一個由單片語成的句子,對這個句子中的每一個單詞進行詞性標註,即對一個單詞序列預測其對應的詞性標記序列。
重點

隱馬爾可夫模型

隱馬爾可夫的基本概念

隱馬爾可夫模型是關於時序的概率模型,描述了一個由隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。
隱馬爾可夫模型由初始狀態概率向量π,狀態轉移概率矩陣A和觀測概率矩陣B決定。
隱馬爾可夫模型是一個生成模型

,表示狀態序列和觀測序列的聯合分佈,但是狀態序列是隱藏的,不可觀測的。
兩個基本的假設:
1)齊次馬爾可夫性假設,即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於上一時刻的狀態,與其他時刻的狀態和觀測無關,也與時刻t無關;
2)觀測獨立性假設,即假設任意時刻的觀測只依賴於當前時刻的馬爾可夫鏈的狀態,與其他觀測與狀態無關。
隱馬爾可夫的三個基本問題:
1)概率計算問題,給定模型λ=(A,B,π)和觀測序列O=(o1,o2,..,ot),計算在該模型下觀測序列出現的概率;
2)學習問題,給出觀測序列O=(o1
,o2,..,ot)
,估計模型引數,使得在該模型下觀測序列出現的概率最大,即用極大似然估計的方法估計引數;
3)預測問題,也稱為解碼問題。給定模型λ=(A,B,π)和觀測序列O=(o1,o2,..,ot),求對給定的觀測序列條件概率P(I|O)最大的狀態序列I。

  • 考慮這樣一個題目:
    例項
    概率計算就是計算在已知模型λ引數的條件下,計算出現這種觀測序列“紅紅白白紅”的概率;
    學習演算法就是預測模型引數的演算法,當狀態序列和觀測序列已知時為監督學習,當僅觀測序列已知時為非監督學習,用EM演算法。
    預測演算法就是已知模型引數和觀測序列“紅紅白白紅”的條件下,預測最有可能的每次選擇哪個盒子的概率。

概率計算演算法

對應例項中的問題是:在已知模型λ引數的條件下,計算出現這種觀測序列的概率。
它有三種計算方法:
1.暴力計算,計算出在各種狀態序列情況下出現觀測序列的概率,然後對概率求和。複雜度極高!
換句話說:即列舉出所有可能的每一次選取哪個盒子的情況,然後對這些可能求解。例如每次選取的盒子是(1,1,1),(1,1,2)(1,1,3)(1,2,1)…
2.前向演算法遞迴求解,依次求出時間t情況下狀態為i且前邊的觀測序列為題目所給的概率,對最後一次的計算結果求和。
換句話說:分別計算第一個時刻選擇第i和盒子且預測狀態為“紅”,然後遞迴計算第二個時刻選擇第i個盒子且預測狀態為“紅”,遞迴計算第三個時刻選擇第i個盒子且預測狀態為“白”,…,一直計算到最後一個時刻,然後把最後一個時刻選擇不同盒子的概率相加。
3.後向演算法遞迴求解,依次求出時間t情況下狀態為i且後邊的觀測序列為題目所給的概率,對最開始的狀態結果和觀測結果的乘積求和。
換句話說:分別計算最後一個時刻選擇第i個盒子的概率(均為1),遞迴計算倒數第2個時刻狀態為i的條件下倒數第一個觀測序列為“紅”的概率,…,一直計算到第一個時刻狀態為i的情況下後面的觀測序列為”紅白白紅“的概率,最後對第一個狀態的可能結果與觀測結果的乘積求和。
前向-後向演算法是通過遞迴地計算前向-後向概率可以高效地進行隱馬爾可夫模型的概率計算。

學習演算法

分為兩種,一種是給定了觀測序列與狀態序列,直接根據極大似然估計法來估計模型引數,另外一種是隻給定觀測序列,此時需要使用EM法,隱變數是狀態序列。
後一種方法利用EM演算法在隱馬爾可夫模型中具體實現就是Baum-Welch演算法,它是一種非監督學習演算法。

預測演算法

近似演算法

在每個時刻t選擇在該時刻最有可能出現的狀態,從而得到狀態序列。
優點是計算簡單,缺點是不能保證預測的序列整體上是最有可能的狀態序列,因為預測的狀態序列可能有實際不發生的部分。

維特比演算法

維特比演算法應用動態規劃高效地求解最優路徑,即概率最大的狀態序列。
具體地,從時刻t=1開始,遞推地計算在時刻t狀態為i的各條路徑的最大概率,直至得到時刻t=T狀態為i的各條路徑的最大概率。時刻t=T的最大概率即為最優路徑的概率P,最優路徑的終結點也同時得到。之後,為了找出最優路徑的各個節點,從終結點開始,從後向前逐步求得結點得到最優路徑。