日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HMM模型和Viterbi算法

發(fā)布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HMM模型和Viterbi算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、隱含馬爾可夫模型(Hidden Markov Model)

1、簡介

  隱含馬爾可夫模型并不是俄羅斯數(shù)學(xué)家馬爾可夫發(fā)明的,而是美國數(shù)學(xué)家鮑姆提出的,隱含馬爾可夫模型的訓(xùn)練方法(鮑姆-韋爾奇算法)也是以他名字命名的。隱含馬爾可夫模型一直被認(rèn)為是解決大多數(shù)自然語言處理問題最為快速、有效的方法。

2、馬爾可夫假設(shè)

  隨機(jī)過程中各個狀態(tài)St的概率分布,只與它的前一個狀態(tài)St-1有關(guān),即P(St|S1,S2,S3,…,St-1) = P(St|St-1)。

  比如,對于天氣預(yù)報,硬性假定今天的氣溫只與昨天有關(guān)而和前天無關(guān)。當(dāng)然這種假設(shè)未必適合所有的應(yīng)用,但是至少對以前很多不好解決的問題給出了近似解。

3、馬爾可夫鏈

  符合馬爾可夫假設(shè)的隨機(jī)過程稱為馬爾可夫過程,也稱為馬爾可夫鏈。

?

圖:馬爾可夫鏈

?

  在這個馬爾可夫鏈中,四個圈表示四個狀態(tài),每條邊表示一個可能的狀態(tài)轉(zhuǎn)換,邊上的權(quán)值是轉(zhuǎn)移概率。隱含馬爾可夫鏈?zhǔn)巧鲜鲴R爾可夫鏈的一個擴(kuò)展:任一時刻t的狀態(tài)St是不可見的。所以觀察者沒法通過觀察到一個狀態(tài)序列S1,S2,S3,…,ST來推測轉(zhuǎn)移概率等參數(shù)。但是隱含馬爾可夫模型在每個時刻t會輸出一個符號Ot,而且Ot和St相關(guān)且僅和St相關(guān)。這稱為獨立輸出假設(shè)。隱含馬爾可夫模型的結(jié)構(gòu)如下圖,其中隱含的狀態(tài)S1,S2,S3,…是一個典型的馬爾可夫鏈。鮑姆把這種模型稱為“隱含”馬爾可夫模型。

?

圖:隱含馬爾可夫模型

?

?

4、隱含馬爾可夫模型的三個基本問題

(1)給定一個模型,如何計算某個特定的輸出序列的概率??

  Forward-Backward算法

(2)給定一個模型和某個特定的輸出序列,如何找到最可能產(chǎn)生這個輸出的狀態(tài)序列?

  維特比算法

(3)給定足夠量的觀測數(shù)據(jù),如何估計隱含馬爾可夫模型的參數(shù)?

????? 訓(xùn)練隱含馬爾可夫模型更實用的方式是僅僅通過大量觀測到的信號O1,O2,O3,….就能推算模型參數(shù)的P(St|St-1)和P(Ot|St)的方法(無監(jiān)督訓(xùn)練算法),其中主要使用鮑姆-韋爾奇算法

?

5、隱含馬爾可夫模型的五元組

HMM是一個五元組(O , Q , O0,A , B):

  O:{o1,o2,…,ot}是狀態(tài)集合,也稱為觀測序列。

  Q:{q1,q2,…,qv}是一組輸出結(jié)果,也稱為隱序列。

  Aij?= P(qj|qi):轉(zhuǎn)移概率分布

  Bij?= P(oj|qi):發(fā)射概率分布

  O0是初始狀態(tài),有些還有終止?fàn)顟B(tài)。

?

二、維特比算法(Viterbi)

1、簡介

  維特比算法是一個特殊但應(yīng)用最廣的動態(tài)規(guī)劃算法,它是針對籬笆網(wǎng)絡(luò)的有向圖(Lattice)的最短路徑問題而提出的。凡是使用隱含馬爾可夫模型描述的問題都可以用維特比算法來解碼,包括今天的數(shù)字通信、語音識別、機(jī)器翻譯、拼音轉(zhuǎn)漢字、分詞等。

?

圖:籬笆網(wǎng)絡(luò)

?

2、維特比算法的基礎(chǔ)

(1)如果概率最大的路徑P(或叫最短路徑)經(jīng)過某個點,比如下圖中的X22,那么這條路徑上從起始點S到X22的這一段子路徑Q,一定是S到X22之間的最短路徑。否則,用S到X22的最短路徑R替代Q,便構(gòu)成了一條比P更短的路徑,這顯然是矛盾的。

(2)從S到E的路徑必定經(jīng)過第i時刻的某個狀態(tài),假定第i時刻有k個狀態(tài),那么如果記錄了從S到第i個狀態(tài)的所有k個節(jié)點的最短路徑,最終的最短路徑必經(jīng)過其中的一條。這樣,在任何時刻,只需要考慮非常有限條最短路徑即可。

?(3)結(jié)合上述兩點,假定當(dāng)我們從狀態(tài)i進(jìn)入狀態(tài)i+1時,從S到狀態(tài)i上各個節(jié)點的最短路徑已經(jīng)找到,并且記錄在這些節(jié)點上,那么在計算從起點S到前一個狀態(tài)i所有的k個結(jié)點的最短路徑,以及從這k個節(jié)點到Xi+1,j的距離即可。

?

3、維特比算法總結(jié)

(1)從點S出發(fā),對于第一個狀態(tài)X1的各個節(jié)點,不妨假定有n1個,計算出S到它們的距離d(S,X1i),其中X1i代表任意狀態(tài)1的節(jié)點。因為只有一步,所以這些距離都是S到它們各自的最短距離。

(2)對于第二個狀態(tài)X2的所有節(jié)點,要計算出從S到它們的最短距離。對于特點的節(jié)點X2i,從S到它的路徑可以經(jīng)過狀態(tài)1的n1中任何一個節(jié)點X1i,對應(yīng)的路徑長度就是d(S,X2i) = d(S,X1i) + d(X1i,X2i)。由于j有n1種可能性,我們要一一計算,找出最小值。即:

d(S,X2i) = minI=1,n1?d(S,X1i) + d(X1i,X2i)

這樣對于第二個狀態(tài)的每個節(jié)點,需要n1次乘法計算。假定這個狀態(tài)有n2個節(jié)

點,把S這些節(jié)點的距離都算一遍,就有O(n1·n2)次計算。

(3)接下來,類似地按照上述方法從第二個狀態(tài)走到第三個狀態(tài),一直走到最后一個狀態(tài),就得到了整個網(wǎng)格從頭到尾的最短路徑。每一步計算的復(fù)雜度都和相鄰兩個狀態(tài)Si和Si+1各自的節(jié)點數(shù)目ni,ni+1的乘積成正比,即O(ni·ni+1)

(4)假設(shè)這個隱含馬爾可夫鏈中節(jié)點最多的狀態(tài)有D個節(jié)點,也就是說整個網(wǎng)格的寬度為D,那么任何一步的復(fù)雜度不超過O(D2),由于網(wǎng)格長度是N,所以整個維特比算法的復(fù)雜度是O(N·D2)。

?

三、HMM模型+維特比算法實例

1、問題描述

假設(shè)連續(xù)觀察3天的海藻濕度為(Dry,Damp,Soggy),求這三天最可能的天氣情況。

?

2、已知信息

①天氣只有三類(Sunny,Cloudy,Rainy),海藻濕度有四類{Dry,Dryish, Damp,Soggy },而且海藻濕度和天氣有一定的關(guān)系。

②隱藏的狀態(tài):Sunny, Cloudy, Rainy;

③觀察狀態(tài)序列:{Dry, Damp, Soggy}

④初始狀態(tài)序列:

Sunny

Cloudy

Rainy

0.63

0.17

0.20

?

?

?

⑤狀態(tài)轉(zhuǎn)移矩陣:

?

Sunny

Cloudy

Rainy

Sunny

0.5

0.375

0.125

Cloudy

0.25

0.125

0.625

Rainy

0.25

0.375

0.375

?

?

?

?

?

?

⑥發(fā)射矩陣:

?

Dry

Dryish

Damp

Soggy

Sunny

0.6

0.2

0.15

0.05

Cloudy

0.25

0.25

0.25

0.25

Rainy

0.05

0.10

0.35

0.5

?

?

?

?

?

?

?

3、分析

  由一階HMM可知,Day2的天氣僅取決于Day1;Day3的天氣又只取決于Day2的天氣。

?

4、計算過程

(1)Day1由于是初始狀態(tài),我們分別求

P(Day1-Sunny)=0.63*0.6;

P(Day1-Cloudy)=0.17*0.25;

P(Day1-Rain)=0.20*0.05;

Choose max{ P(Day1-Sunny) , P(Day1-Cloudy),P(Day1-Rainy)}, 得到P(Day1-Sunny)最大,得出第1天Sunny的概率最大。

?

(2)Day2的天氣又取決于Day1的天氣狀況,同時也受Day2觀察的海藻情況影響。

P(Day2-Sunny)= max{ P(Day1-Sunny)*0.5, P(Day1-Cloudy)*0.25,? P(Day1-Rainy)*0.25} *0.15;

P(Day2-Cloudy)= max{ P(Day1-Sunny)*0.375,? P(Day1-Cloudy)*0.125, P(Day1-Rainy)*0.625} *0.25;

P(Day2-Rainy)= max{ P(Day1-Sunny)*0.125,? P(Day1-Cloudy)*0.625 , P(Day1-Rainy)*0.375} *0.35;

Choosemax{ P(Day2-Sunny) , P(Day2-Cloudy), P(Day2-Rainy)},得到P(Day2-Rainy)最大,得出第2天Rainy的概率最大。

故{Sunny,Rainy}是前兩天最大可能的天氣序列。

?

(3)Day3的天氣又取決于Day2的天氣狀況,同時也受Day3觀察的海藻情況影響。

  P(Day3-Sunny)= max{ P(Day2-Sunny)*0.5, P(Day2-Cloudy)*0.25,? P(Day2-Rainy)*0.25} *0.05;

  P(Day3-Cloudy)= max{ P(Day2-Sunny)*0.375,? P(Day2-Cloudy)*0.125, P(Day2-Rainy)*0.625} *0.25;

  P(Day3-Rainy)= max{ P(Day2-Sunny)*0.125,? P(Day2-Cloudy)*0.625, P(Day2-Rainy)*0.375} *0. 05;

?

  Choosemax{ P(Day3-Sunny) , P(Day3-Cloudy), P(Day3-Rainy)},得到P(Day3-Rainy)最大,得出第3天Rainy的概率最大。故{Sunny,Rainy,Rainy}是這三天最可能的天氣序列。

總結(jié)

以上是生活随笔為你收集整理的HMM模型和Viterbi算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。