隱形馬爾可夫模型侯嘀,英文是 Hidden Markov Models庆冕,所以以下就簡(jiǎn)稱 HMM。
既是馬爾可夫模型实夹,就一定存在馬爾可夫鏈橄浓,該馬爾可夫鏈服從馬爾可夫性質(zhì):即無(wú)記憶性粒梦。也就是說(shuō),這一時(shí)刻的狀態(tài)荸实,受且只受前一時(shí)刻的影響匀们,而不受更往前時(shí)刻的狀態(tài)的影響。
其實(shí)隱馬爾科夫模型就是一個(gè)三元的元組准给,隱含狀態(tài)轉(zhuǎn)移概率矩陣 A泄朴,觀測(cè)狀態(tài)轉(zhuǎn)移概率矩陣 B,初始狀態(tài)概率矩陣π露氮。
這里說(shuō)說(shuō)大概怎么用這個(gè)模型祖灰。
假設(shè)我有幾個(gè)句子:
要買(mǎi)\o 一個(gè)\o 70平\m 房子\o 價(jià)格\o 6000元\j 每平\o |
---|
想\o 買(mǎi)個(gè)\o 大小\o 80\m 房子\o 價(jià)格\o 5000元\j 每平\o |
一個(gè)\o 100平\m 房子\o 每平\o 9000\j |
有沒(méi)有\(zhòng)o 60平\m 房子\o 兩個(gè)人\o 住\o 夠\o |
大小\o 100平\m 房子\o 價(jià)格\o 80萬(wàn)\j |
那么這些句子連在一起我們就可以看做是一個(gè)鏈,在這個(gè)鏈中沦辙,每個(gè)詞就是一個(gè)可觀測(cè)序列夫植,每個(gè)詞對(duì)應(yīng)的標(biāo)簽就是它的隱藏狀態(tài)。例如:要買(mǎi)\o油讯,那么要買(mǎi)就是可觀測(cè)的详民,\o就是它的隱藏狀態(tài)。
對(duì)于這個(gè)鏈的三個(gè)狀態(tài)分別如下:
初始狀態(tài) π:表示隱含狀態(tài)在初始時(shí)刻t=1的[概率]矩陣陌兑,(例如t=1時(shí)沈跨,P(S1)=p1、P(S2)=P2兔综、P(S3)=p3饿凛,則初始狀態(tài)概率矩陣 π=[ p1 p2 p3 ]。
那么該鏈隱藏狀態(tài)的初始概率為软驰,
\o: 22/30
\m: 5/30
\j: 4/30
分別就是每個(gè)隱狀態(tài)出現(xiàn)的次數(shù)和所有隱狀態(tài)次數(shù)作比較涧窒。隱含狀態(tài)轉(zhuǎn)移概率矩陣 A:描述了HMM模型中各個(gè)狀態(tài)之間的轉(zhuǎn)移概率。其中Aij = P( Sj | Si ),1≤i,j≤N.表示在 t 時(shí)刻锭亏、狀態(tài)為 Si 的條件下纠吴,在 t+1 時(shí)刻狀態(tài)是 Sj 的概率。
p(sj|si) = #(si,sj)/(si)
sj/si | \o | \m | \j |
---|---|---|---|
\o | 13/22 | 5/22 | 4/22 |
\m | 1 | 0 | 0 |
\j | 1 | 0 | 0 |
這個(gè)矩陣就是指每個(gè)隱藏狀態(tài)和它前一刻的狀態(tài)的轉(zhuǎn)移概率慧瘤。
- 觀測(cè)狀態(tài)轉(zhuǎn)移概率矩陣 B(混淆矩陣):令N代表隱含狀態(tài)數(shù)目戴已,M代表可觀測(cè)狀態(tài)數(shù)目,則:Bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.表示在 t 時(shí)刻锅减、隱含狀態(tài)是 Sj 條件下糖儡,觀察狀態(tài)為 Oi 的概率。
p(oi|sj) = #(oi,sj)/#(sj)
sj/oi | 要買(mǎi) | 一個(gè) | 70平 | 房子 | 價(jià)格 | 每平 | 6000元 | 想 | 買(mǎi)個(gè) | 大小 | 80 | 5000元 | 100平 | 9000 | 有沒(méi)有 | 60平 | 兩個(gè)人 | 住 | 夠 | 80萬(wàn) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
\o | 1/22 | 2/22 | 0 | 5/22 | 3/22 | 3/22 | 0 | 1/22 | 1/22 | 2/22 | 0 | 0 | 0 | 0 | 1/22 | 0 | 1/22 | 1/22 | 1/22 | 0 |
\m | 0 | 0 | 1/5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1/5 | 0 | 2/5 | 0 | 0 | 1/5 | 0 | 0 | 0 | 0 |
\j | 0 | 0 | 0 | 0 | 0 | 0 | 1/3 | 0 | 0 | 0 | 0 | 1/3 | 0 | 1/3 | 0 | 0 | 0 | 0 | 0 | 0 |
一般的怔匣,可以用λ=(A,B,π)三元組來(lái)簡(jiǎn)潔的表示一個(gè)隱馬爾可夫模型握联。隱馬爾可夫模型實(shí)際上是標(biāo)準(zhǔn)馬爾可夫模型的擴(kuò)展,添加了可觀測(cè)狀態(tài)集合和這些狀態(tài)與隱含狀態(tài)之間的概率關(guān)系。
一般HMM模型對(duì)應(yīng)著三個(gè)問(wèn)題拴疤,我們來(lái)看看百度怎么說(shuō)的這三個(gè)問(wèn)題:
評(píng)估問(wèn)題:
給定觀測(cè)序列 O=O1O2O3…Ot和模型參數(shù)λ=(A,B,π)永部,怎樣有效計(jì)算某一觀測(cè)序列的概率,進(jìn)而可對(duì)該HMM做出相關(guān)評(píng)估呐矾。例如苔埋,已有一些模型參數(shù)各異的HMM,給定觀測(cè)序列O=O1O2O3…Ot蜒犯,我們想知道哪個(gè)HMM模型最可能生成該觀測(cè)序列组橄。通常我們利用forward算法或者Backward算法分別計(jì)算每個(gè)HMM產(chǎn)生給定觀測(cè)序列O的概率,然后從中選出最優(yōu)的HMM模型罚随。
對(duì)于上面咱們自己建的那個(gè)模型玉工,這個(gè)問(wèn)題就是給定一句話,并給出這句話中每個(gè)詞對(duì)應(yīng)的標(biāo)簽淘菩,根據(jù)模型遵班,計(jì)算每個(gè)標(biāo)簽的概率。解碼問(wèn)題:
給定觀測(cè)序列 O=O1O2O3…Ot 和模型參數(shù)λ=(A,B,π)潮改,怎樣尋找某種意義上最優(yōu)的隱狀態(tài)序列狭郑。在這類問(wèn)題中,我們感興趣的是馬爾科夫模型中隱含狀態(tài)汇在,這些狀態(tài)不能直接觀測(cè)但卻更具有價(jià)值翰萨,通常利用Viterbi算法來(lái)尋找。
對(duì)于上面已經(jīng)建好的模型糕殉,給定三個(gè)詞亩鬼,那么,根據(jù)模型阿蝶,計(jì)算產(chǎn)生這三個(gè)詞分別對(duì)應(yīng)了什么標(biāo)簽雳锋。學(xué)習(xí)問(wèn)題:
即HMM的模型參數(shù)λ=(A,B,π)未知,如何調(diào)整這些參數(shù)以使觀測(cè)序列O=O1O2O3…Ot的概率盡可能的大羡洁。通常使用Baum-Welch算法以及Reversed Viterbi算法解決玷过。
假設(shè)我只有一句話和這句話有哪些標(biāo)簽,那么我們?nèi)绾谓⒁粋€(gè)模型焚廊,使我們知道的句子的概率盡可能的大。
這里大概講兩種算法:
向前算法
假設(shè)我拿上面的一句話來(lái)做向前算法:
一個(gè)\o 100平\m 房子\o 每平\o 9000\j
- 那么在t=1時(shí)刻习劫,該時(shí)刻標(biāo)簽為\o咆瘟,如果該時(shí)刻的詞是一個(gè),那么概率就是
P(一個(gè),\o)=P(\o的初始概率) x P(一個(gè) | \o)=22/30 x 2/22 - 在t=2時(shí)刻該詞為100平诽里,那么\m概率
P(t=1 一個(gè),t=2 100平,t=2 \m) = [P(t=1 一個(gè),t=1 \o) x P(t=2 \m | t=1 \o) +P(t=1 一個(gè),t=1 \m) x P(t=2 \m | t=1 \m) + P(t=1 一個(gè),t=1 \j) x P(t=2 \m | t=1 \j)] x P(t=2 100平 | t=2 \m) - 在t=3時(shí)刻該詞為房子袒餐,那么\o的概率
P(t=1 一個(gè),t=2 100平,t=3 房子,t=3 \o)
...這里就不推了,太多了,不過(guò)計(jì)算方式如上灸眼。
維特比求解
也是我們假設(shè)我們有一句話:
一個(gè) 100平 房子 每平 9000
在這里我們只知道這個(gè)序列的可觀測(cè)狀態(tài)卧檐,想要獲得每一個(gè)詞的隱含狀態(tài)。那么焰宣,
- t=1時(shí)刻
P(\o)=P(一個(gè)|\o) x P(\o|初始概率)=2/22 x 22/30
P(\m)=P(一個(gè)|\m) x P(\m|初始概率)=0 x 5/30
P(\j)=P(一個(gè)|\j) x P(\j|初始概率)=0 x 4/30
那么一個(gè)這個(gè)詞最有可能的便簽就是\o - t=2時(shí)刻
P(t=1 \o,t=2 \o) = P(t=1 \o) x P(\o -> \o) x P(100平|\o)=(2/22 x 22/30) x 13/22 x 0
P(t=1 \o,t=2 \m) = P(t=1 \o) x P(\o -> \m) x P(100平|\m)
P(t=1 \o,t=2 \j) ...
P(t=1 \m,t=2 \o) ...
P(t=1 \m,t=2 \m) ...
P(t=1 \m,t=2 \j) ...
P(t=1 \j,t=2 \o) ...
P(t=1 \j,t=2 \m) ...
P(t=1 \j,t=2 \j) ... - t=3時(shí)刻計(jì)算方式如上霉囚,他們的狀態(tài)都只和上一時(shí)刻t-1有關(guān)。
最后我們可以獲得每一時(shí)刻最大概率的隱藏狀態(tài)就是每一時(shí)刻觀測(cè)狀態(tài)對(duì)應(yīng)的隱藏狀態(tài)匕积。
這個(gè)算法大概就是通過(guò)已知的可以觀察到的序列盈罐,和一些已知的狀態(tài)轉(zhuǎn)換之間的概率情況,通過(guò)綜合狀態(tài)之間的轉(zhuǎn)移概率和前一個(gè)狀態(tài)的情況計(jì)算出概率最大的狀態(tài)轉(zhuǎn)換路徑闪唆,從而推斷出隱含狀態(tài)的序列的情況盅粪。