1、馬爾科夫過程:算法
在已知目前狀態(如今)的條件下,它將來的演變(未來)不依賴於它以往的演變 (過去 )。例如森林中動物頭數的變化構成——馬爾可夫過程。在現實世界中,有不少過程都是馬爾可夫過程,如液體中微粒所做的布朗運動、傳染病受感染的人數、車站的候車人數等,均可視爲馬爾可夫過程。函數
2、馬爾科夫鏈:工具
時間和狀態都是離散的馬爾可夫過程稱爲馬爾可夫鏈,簡記爲Xn=X(n),n=0,1,2…學習
3、馬爾可夫模型(Markov Model):spa
是一種統計模型,普遍應用在語音識別,詞性自動標註,音字轉換,機率文法等各個天然語言處理等應用領域。通過長期發展,尤爲是在語音識別中的成功應用,使它成爲一種通用的統計工具。xml
一個馬爾科夫過程包括一個初始向量和一個狀態轉移矩陣。關於這個假設須要注意的一點是狀態轉移機率不隨時間變化。blog
4、隱馬爾科夫模型:it
(1)概述io
在某些狀況下馬爾科夫過程不足以描述咱們但願發現的模式。譬如,一個隱居的人可能不能直觀的觀察到天氣的狀況,可是有一些海藻。民間的傳說告訴咱們海藻的狀態在某種機率上是和天氣的狀況相關的。在這種狀況下咱們有兩個狀態集合,一個能夠觀察到的狀態集合(海藻的狀態)和一個隱藏的狀態(天氣的情況)。咱們但願能找到一個算法能夠根據海藻的情況和馬爾科夫假設來預測天氣的情況。bfc
其中,隱藏狀態的數目和能夠觀察到的狀態的數目多是不同的。在語音識別中,一個簡單的發言也許只須要80個語素來描述,可是一個內部的發音機制能夠產生不到80或者超過80種不一樣的聲音。同理,在一個有三種狀態的天氣系統(sunny、cloudy、rainy)中,也許能夠觀察到四種潮溼程度的海藻(dry、dryish、damp、soggy)。在此狀況下,能夠觀察到的狀態序列和隱藏的狀態序列是機率相關的。因而咱們能夠將這種類型的過程建模爲一個隱藏的馬爾科夫過程和一個和這個馬爾科夫過程機率相關的而且能夠觀察到的狀態集合。
(2)HMM的模型表示
HMM由隱含狀態S、可觀測狀態O、初始狀態機率矩陣pi、隱含狀態機率轉移矩陣A、可觀測值轉移矩陣B(混淆矩陣)組成。
pi和A決定了狀態序列,B決定了觀測序列,所以,HMM能夠由三元符號表示:
HMM的兩個性質:
1. 齊次假設:
2.觀測獨立性假設:
齊次假設:本質就是時刻t的狀態爲qi,本來是要給定t時刻以前的全部狀態和觀測才能夠肯定,可是其實咱們給出前一個時刻t-1的狀態就可將t時刻與以前隔斷,也就是說咱們假設t時刻與t-1以前的全部狀態和觀測是獨立的。
觀測獨立性假設:本質就是t時刻的觀測爲ot,本來是要給定包括t時刻和t時刻以前全部的觀測和狀態才能肯定,如今咱們給定t時刻狀態qi就將ot與前邊隔斷,也就是說咱們假設t時刻的觀測ot與t時刻以前的全部狀態和觀測是獨立的
(3)HMM的三個問題
機率計算問題:前向-後向算法----動態規劃
給定模型 λ = (A, B, π)和觀測序列O={o1, o2, o3 ...},計算模型λ下觀測O出現的機率P(O | λ)
學習問題:Baum-Welch算法----EM算法
已知觀測序列O={o1, o2, o3 ...},估計模型λ = (A, B, π)的參數,使得在該參數下該模型的觀測序列P(O | λ)最大
預測問題:Viterbi算法----動態規劃
解碼問題:已知模型λ = (A, B, π)和觀測序列O={o1, o2, o3 ...},求給定觀測序列條件機率P(I | O,λ)最大的狀態序列I
a)機率計算問題
對於機率計算問題,能夠採用暴力計算法、前向算法和後向算法
暴力法:
問題:已知HMM的參數 λ,和觀測序列O = {o1, o2, ...,oT},求P(O|λ)
思路:--------------------------------------------------------------------------
步驟:
1,最終目標是求O和I同時出現的聯合機率,即:
P(O,I|λ)= P(O|I, λ)P(I|λ)
那就須要求出P(O|I, λ) 和 P(I|λ)。
2,求P(I|λ) ,即狀態序列I = {i1,i2, ..., iT} 的機率:
2.1,P(I|λ) = P(i1,i2, ..., iT |λ)
=P(i1 |λ)P(i2, i3, ..., iT |λ)
=P(i1 |λ)P(i2 | i1, λ)P(i3, i4, ..., iT |λ)
=......
=P(i1 |λ)P(i2 | i1, λ)P(i3 | i2, λ)...P(iT | iT-1, λ)
而上面的P(i1 |λ) 是初始爲狀態i1的機率,P(i2 | i1, λ) 是從狀態i1轉移到i2的機率,其餘同理,因而分別使用初始機率分佈π 和狀態轉移矩陣A,就獲得結果:
PS:上面的ai1i2表明A的第i1行第i2列。
3,P(O|I, λ),即對固定的狀態序列I,觀測序列O的機率是:
4,代入第一步求出P(O,I|λ)。
5,對全部可能的狀態序列I求和獲得觀測序列O的機率P(O|λ):
時間複雜度:
每一個時刻有n個狀態,一共有t個時刻,而根據上面的第5步能夠知道每一個時刻狀態ai相乘的複雜度爲nT,而後乘以各個對應的b,因此時間複雜度大概爲:O(TnT)階
機率消失:
能夠經過取對數,防止P的值太小。
前向機率:
前向機率的定義:當第t個時刻的狀態爲i時,前面的時刻分別觀測到q1,q2, ..., qt的機率。
初值:
遞推:
最終值:
時間複雜度:
由公式可見,括號裏面的時間複雜度爲N^2,迭代過程當中,又乘上T個時刻的b,所以,時間複雜度爲O(TN^2)階的。
對於暴力法和前向算法時間複雜度的理解:
對於兩種算法,其實本質上都是經過狀態 x 觀測機率得到的機率值,只不過區別在於,前向算法將每個時刻的狀態機率先進行相加而後乘以觀測機率,得到最終值。
能夠理解爲:a1*a2*a3... 若是ai有n種取值,其複雜度爲 O(n^T)
對於另外一種表達方式: α*a1 同理 α有n種取值,ai有n種取值,那麼複雜度爲 O(n^2)
時間複雜度計算:
後向機率和前向機率相似,此處不贅述。
b)學習問題
學習問題分兩種:
對於監督學習,利用大數定律「頻率的極限是機率」便可求解:
對於非監督學習,通常採用Baum-Welch算法。
對於觀測數據Q、隱藏狀態I、機率P(Q, I ;λ)即爲暴力法的表達式,其對數似然函數爲:ln(P(Q, I ;λ)),而後用EM算法求解便可。
求 π:利用約束條件:全部πi的和爲1。
拉格朗日函數求解:
同理:
c)預測問題:
對於預測問題,本文主要講Viterbi算法。Viterbi算法實際是用動態規劃的思路求解HMM預測問題。求出機率最大的路徑,每一個路徑對應一個狀態序列。
盒子和球模型λ= (A, B,π),狀態集合Q={1, 2, 3},觀測集合V={白,黑},已知觀測序列「白黑白白黑」,求最優的隱藏狀態
同理:
能夠看到結果如圖:
咱們從後往前查詢,第5時刻最大機率的狀態爲3,而後往前推導,究竟第5個狀態是從哪個狀態的來的呢?
max{ 0.00384*0.1 0.00768*0.6 0.0144*0.3 } 能夠看到,應該取狀態2 -> 3纔是最大的,故第4個時刻的狀態爲2。
最終求得最優狀態爲:2 3 2 2 3
5、viterbi用於詞性標註
詞性標註問題映射到隱馬模型能夠表述爲:模型中狀態(詞性)的數目爲詞性符號的個數N;從每一個狀態可能輸出的不一樣符號(單詞)的數目爲詞彙的個數M。假設在統計意義上每一個詞性的機率分佈只與上一個詞的詞性有關(即詞性的二元語法),而每一個單詞的機率分佈只與其詞性相關。那麼,咱們就能夠經過對已分詞並作了詞性標註的訓練語料進行統計,統計出HMM的參數 λ,固然這就是上述學習問題。
而後能夠根據已知的詞語,經過viterbi算法,求出每一個詞語對應的詞性,即完成詞性標註。