統計學習方法 李航---第10章 隱馬爾可夫模型


第10章隱馬爾可夫模型

隱馬爾可夫模型(hidden Markov model, HMM)是可用於標注問題的統計學習模型,描述由隱藏的馬爾可夫鏈隨機生成觀測序列的過程,屬於生成模型。

10.1 隱馬爾可夫模型的基本概念

定義10.1 (隱馬爾可夫模型) 隱馬爾可夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱為狀態序列(state sequence):每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱為觀測序列(observation sequenoe )。序列的每一個位置又可以看作是一個時刻。

隱馬爾可夫模型由初始概率分布、狀態轉移概率分布以及觀測概率分布確定。隱馬爾可夫模型的形式定義如下

設Q是所有可能的狀態的集合,V是所有可能的觀側的集合.

e6d473eb-96d9-41e1-bcf7-c65b7af4c877

其中,N是可能的狀態數,M是可能的觀測數.

I是長度為T的狀態序列,O是對應的觀測序列.

429ab539-1817-4f54-a6a5-d67cfa5d9c45

A是狀態轉移概率矩陣:

900fa950-6c9f-4c5b-8de9-b999cd64fec6 5d7099b6-602c-4e48-bdc4-ac7b1f8ada9f

是在時刻t處於狀態qi的條件下在時刻t+1轉移到狀態qj的概率。

B是觀測概率矩陣:

62d52fcd-0cc5-485f-9db1-2b7fba63d9b1 88f9d185-88b9-4a1b-94ba-03ad08273dc0

是在時刻t處於狀態qj的條件下生成觀測vk的概率。

n是初始狀態概率向量:

53b24b7e-b2c8-4aca-b822-92066df5364de828a4b8-980d-4afe-a666-30b3a436a2cc

是時刻t=1處於狀態qi的概率。

隱馬爾可夫模型兄可以用三元符號表示,即

8263e6d6-3fd1-41a4-8a92-8811eb5550f5

隱馬爾可夫模型由初始狀態概率向量pi、狀態轉移概率矩陣A和觀測概率矩陣B決定。A,B,pi稱為隱馬爾可夫模型的三要素。

狀態轉移概率矩陣A與初始狀態概率向量pi確定了隱藏的馬爾可夫鏈,生成不可觀測的狀態序列。

觀測概率矩陣B確定了如何從狀態生成觀測,與狀態序列綜合確定了如何產生觀測序列。

隱馬爾可夫模型作了兩個基本假設:

(1) 齊次馬爾可夫性假設,即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻t無關

7bd2abcb-bb53-4afe-ac1b-4f688f5148ca

(2) 觀測獨立性假設,即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他觀測及狀態無關.

513722da-84a0-4a6d-a1ef-4cf4638ae4cf

隱馬爾可夫模型可以用於標注,這時狀態對應着標記。標注問題是給定觀測的序列預測其對應的標記序列可以假設標注問題的數據是由隱馬爾可夫模型生成的。這樣我們可以利用隱馬爾可夫模型的學習與預測算法進行標注。

根據隱馬爾可夫模型定義,可以將一個長度為T的觀測序列,其生成過程描述如下:

0f43bf59-f7c9-4398-a7d2-b977e4cbfa46

隱馬爾可夫模型的3個基本問題

(1)概率計算問題。給定模型e88ee111-9eb0-4cc0-b435-20713f7878a4和觀測序列O=(o1,o2,... ,oT),計算在模型lamda之下觀測序列O出現的概率9b282b44-ea9b-4b0a-bee3-a1a016dab3bc

(2)學習問題。己知觀測序列O=(o1,o2,... ,oT),估計模型e88ee111-9eb0-4cc0-b435-20713f7878a4參數,使得在該模型下觀測序列概率9b282b44-ea9b-4b0a-bee3-a1a016dab3bc最大。即用極大似然估計的方法估計參數。

(3)預測問題,也稱為解碼(decoding)問題。己知模型e88ee111-9eb0-4cc0-b435-20713f7878a4和觀測序列O=(o1,o2,... ,oT),求對給定觀測序列條件概率P(I | O)最大的狀態序列I=(i1,i2,... ,iT),即給定觀測序列,求最有可能的對應的狀態序列。

10.2 概率計算算法

直接計算法

按概率公式直接計算通過列舉所有可能的長度為T的狀態序列I=(i1,i2,... ,iT),求各個狀態序列I與觀測序列O=(o1,o2,... ,oT)

的聯合概率f0f3e860-13d6-484b-80b0-5c6264af7a72,然后對所有可能的狀態序列求和,得到9b282b44-ea9b-4b0a-bee3-a1a016dab3bc

fec89f4f-bf1f-4d80-b998-2a9c39f788a5

db16e4a6-f8c2-4939-a77d-dd6aea51ef7e

53923a61-c4e5-4a81-bbf2-324b763f17f9

b1f2871a-a6d9-4eec-b5cc-56a11f8e48be

    但是,計算量很大,是O(TNT)階的,這種算法不可行。

前向-后向算法(forward-backward algorithm)

前向算法

定義10.2 (前向概率) 給定隱馬爾可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4,定義到時刻t部分觀測序列o1,o2,... ,ot且狀態為qi的概率為前向概率,記作

6de35303-bb63-4895-a9c3-56a58bac2db0

可以遞推地求得前向概率及觀測序列概率

95aefb3d-ef3b-4ed4-8d31-d5e15a3becaa

步驟(1)初始化前向概率,是初始時刻的狀態i1=qi和觀測o1的聯合概率。

步驟(2)是前向概率的遞推公式,計算到時刻t+1部分觀測序列為o1,o2,... ,ot ,ot+1且在時刻t+1處於狀態qi的前向概率,如圖10.1所示。

376c92b1-6bee-4fcd-a363-f32789752ebf

ai(j)是到時刻t觀測到o1,o2,... ,ot並在時刻t處於狀態qj的前向概率,那么乘積ai(j)aji就是到時刻t觀測到o1,o2,... ,ot在在時刻t處於狀態qj而在時刻t+1到達狀態qi的聯合概率。對這個乘積在時刻t的所有可能的N個狀態qj求和,其結果就是到時刻t觀測為o1,o2,... ,ot並在時刻t+1處於狀態qi的聯合概率。方括弧里的值與觀測概率bi(ot+1)的乘積恰好是到時刻t+1觀測到

o1,o2,... ,ot ,ot+1且在時刻t+1處於狀態qi的前向概率。

步驟(3):

因為 

048b78c2-42cd-4e9e-95da-afaede8afdab

所以

06bcb84e-5240-4e08-b93c-0aca0879e474

前向算法實際是基於“狀態序列的路徑結構”遞推計算9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的算法。前向算法高效的關鍵是其局部計算前向概率,然后利用路徑結構將前向概率“遞推”到全局,得到9b282b44-ea9b-4b0a-bee3-a1a016dab3bc。具體地,在時刻t=1,計算a1(i)的N個值(i=1,2,...,N);在各個時刻t=1,2,...,T-1,計算at+1(i)的N個值(i=1,2,...,N),而且每個at+1(i)的計算利用前一時刻ai(j)。

減少計算量的原因在於每一次計算直接引用前一個時刻的計算結果,避免重復計算。利用前向概率計算9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的計算量是O(N2T)階的,而不是直接計算的O(TNT)階。

后向算法

定義10.3 (后向概率) 給定隱馬爾可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4,定義在時刻t部狀態為qi的條件下,從t+1到T的部分觀測序列為ot+1,ot+2 ,... ,oT的概率為后向概率,記作

79f3b920-223f-4779-a5bd-d62d4e5caa36

可以遞推地求得后向概率及觀測序列概率

68edc065-8829-4ec9-9319-b1104f973a53

步驟(1)初始化初始化后向概率,對最終時刻的所有狀態qi規定6fbfeea2-75a0-4ddc-b691-762638262d3b

步驟(2)是后向概率的遞推公式,如圖10.3所示,為了計算在時刻t部狀態為qi的條件下,從t+1到T的部分觀測序列為ot+1,ot+2 ,... ,oT的后向概率1936d7b4-c8c5-48ed-9d39-7eaeca11b693。只需考慮在時刻t十1所有可能的N個狀態qj的轉移概率(即aij項),以及在此狀態下的觀測ot+1的觀測概率(即bj(oi+1)項),然后考慮狀態qj之后的觀測序列的后向概率(即b9a387d6-837f-488b-b936-b0db9b37ec5f項)。

步驟(3)求解9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的思路與步驟(2)一致,只是初始概率2558fb11-be7e-4f2e-9911-e5113e1b9230代替轉移概率.

f89f4e59-3c77-41a3-844d-af00711ff2f5

利用前向概率和后向概率的定義可以將觀測序列概率統一寫成

8ff63e94-35d6-4e24-a264-076c0e90e716

此式當t=1和t=T-1時分別為式(10.17)和式(10.21)。

一些概率與期望值的計算

給定隱馬爾可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4和觀測O,利用前向概率和后向概率,可以得到關於單個狀態和兩個狀態概率的計算公式,

(1)在時刻t處於狀態qi的概率。記

e5c543c1-0a4e-4f94-b003-9ac123c7dcdf

由前向和后向概率的定義可知,

9f00e87a-a6e4-4545-b430-74a37d628667

所以

d1bfd35d-0a62-4252-8fe2-0b10878e9146

(2)在時刻t處於狀態qi的概率且在時刻t+1處於狀態qj的概率。記

4393b0a9-3e67-427b-ab3a-e6ddb35e06a4

根據前后向概率計算:

8b6fc194-f860-44da-a171-b7bb82fc53f048e223fa-8f9f-4592-8ca9-2fd91caf16ff

所以

814660e2-1f21-4319-9b7a-9a158d4231b0

(3)將(1)和(2)中的概率對各個時刻t求和,可以得到一些有用的期望值

在觀測O下狀態i出現的期望值:d88575d1-262e-46c1-85cf-8669ac64ff15

在觀測O下由狀態i轉移的期望值:f6c66e2f-3a88-4219-a4aa-be4160a67af3

在觀測O下由狀態i轉移到狀態j的期望值:ecead9e4-967b-48cf-a0c7-28e246048409

10.3 學習算法

隱馬爾可夫模型的學習,根據訓練數據是包括觀測序列和對應的狀態序列還是只有觀測序列,可以分別由監督學習與非監督學習實現.

監督學習算法

假設已給訓練數據包含S個長度相同的觀測序列和對應的狀態序列{(O1,I1),...,(OS,IS)},利用極大似然估計法來估計隱馬爾可夫模

型的參數。

(1)轉移概率aij的估計
  設樣本中時t處於狀態i時刻t+1轉移到狀態j的頻數為Aij,那么狀態轉移概率的估計是

f62cb2d9-c10f-4507-9e47-40d96293ffa9

(2)觀測概率bj(k)的估計

設樣本中狀態為j並觀測為k的頻數是Bjk,那么狀態為j觀測為k的概率的估計是

f1c26faa-9389-46e9-9791-e6557668c790

(3)初始狀態概率cfb92e51-42b1-4d32-9dd4-87eebf8d88ab的估計為S個樣本中初始狀態為qi的頻率

非監督學習算法--Baum-Welch算法(即EM算法)

假設給定訓練數據只包含S個長度為T的觀測序列{O1,...,OS)}而沒有對應的狀態序列,目標是學習隱馬爾可夫模型的參數。將觀測序列數據看作觀測數據O,狀態序列數據看作不可觀測的隱數據I,那么隱馬爾可夫模型事實上是一個含有隱變量的概率模型

fcacc65c-aa0a-436c-ae96-6cda4c56b284

它的參數學習可以由EM算法實現。

完全數據由觀測數據和隱數據組成(O,I)=(o1,o2,... ,oT,i1,i2,... ,iT),對數似然函數是553517ee-f616-4137-ac97-574dc37c45f9

EM算法的E步:求Q函數

eeb1d67a-f03c-4a16-a26e-3d2063ae210f

EM算法的M步:極大化Q函數求模型參參數:極大似然函數可得,

5a00f4d5-45ec-4cc7-8ca2-36ddbc25ae3b

c48e26cd-a265-49ae-90bc-378d70295b8b

6cf42d97-ebcc-47ee-a14c-48188a64ac31

利用之前求得的概率5547b9e2-4e49-44be-8cad-d4a5bbcd04b0表示,可得算法詳細如下:

23e34c9a-4643-4571-86fd-25ad7ddd2193

10.4 預測算法

隱馬爾可夫模型預測的兩種算法:近似算法與維特比算法(Viterbi algorithm)

近似算法

近似算法的想法是:在每個時刻t選擇在該時刻最有可能出現的狀態it*,得到一個狀態序列27824433-e88f-42a3-ade2-65576e41a6bb作為預測的結果。

在每一時刻t最有可能的狀態it*通過下式得到:

35ec072a-cf1d-48da-bbdb-8f3c5f4a4ed5

近似算法的優點是計算簡單,其缺點是不能保證預測的狀態序列整體是最有可能的狀態序列,因為預測的狀態序列可能有實際不發生的部分。該方法得到的狀態序列中有可能存在轉移概率為0的相鄰狀態

維特比算法

維特比算法實際是用動態規划解隱馬爾可夫模型預側問題,即用動態規划(dynamic programming)求概率最大路徑(最優路徑)。一條路徑對應着一個狀態序列。

根據動態規划原理,最優路徑具有這樣的特性:如果最優路徑在時刻t通過結點it*,那么這一路徑從結點it*到終點iT*的部分路徑,對於從it*到iT*的所有可能的部分路徑來說,必須是最優的。依據這一原理,我們只需從時刻t=1開始,遞推地計算在時刻t狀態為i的各條部分路徑的最大概率,直至得到時刻t=T狀態為i的各條路徑的最大概率。時刻t=T的最大概率即為最優路徑的概率P*

最優路徑的終結點iT*也同時得到。之后,從終結點iT*開始,由后向前逐步求得結點iT-1* , ... , i1*

c7fb6629-63fe-4d9f-9e7e-98bc517fc036


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM