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

第10章隱馬爾可夫模型

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

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

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

隱馬爾可夫模型由初始機率分佈、狀態轉移機率分佈以及觀測機率分佈肯定。隱馬爾可夫模型的形式定義以下學習

設Q是全部可能的狀態的集合,V是全部可能的觀側的集合.3d

e6d473eb-96d9-41e1-bcf7-c65b7af4c877

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

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

429ab539-1817-4f54-a6a5-d67cfa5d9c45

A是狀態轉移機率矩陣:數學

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

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

B是觀測機率矩陣:io

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

相關文章
相關標籤/搜索