隱馬爾科夫模型_第1頁
隱馬爾科夫模型_第2頁
隱馬爾科夫模型_第3頁
隱馬爾科夫模型_第4頁
隱馬爾科夫模型_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、隱馬爾科夫模型隱馬爾可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些學者發(fā)表在一系列的統(tǒng)計學論文中,隨后在語言識別,自然語言處理以及生物信息等領(lǐng)域體現(xiàn)了很大的價值。平時,經(jīng)常能接觸到涉及 HMM 的相關(guān)文章,一直沒有仔細研究過,都是蜻蜓點水,因此,想花一點時間梳理下,加深理解??紤]下面交通燈的例子,一個序列可能是紅-紅/橙-綠-橙-紅。這個序列可以畫成一個狀態(tài)機,不同的狀態(tài)按照這個狀態(tài)機互相交替,每一個狀態(tài)都只依賴于前一個狀態(tài),如果當前的是綠燈,那么接下來就是橙燈,這是一個確定性系統(tǒng),因此更容易理解和分析,只要

2、這些狀態(tài)轉(zhuǎn)移都是已知的。但是在實際當中還存在許多不確定性系統(tǒng)。在日常生活當中,我們總是希望根據(jù)當前天氣的情況來預(yù)測未來天氣情況,和上面的交通燈的例子不同,我們不能依靠現(xiàn)有知識確定天氣情況的轉(zhuǎn)移,但是我們還是希望能得到一個天氣的模式。一種辦法就是假設(shè)這個模型的每個狀態(tài)都只依賴于前一個的狀態(tài),這個假設(shè)被稱為馬爾科夫假設(shè),這個假設(shè)可以極大簡化這個問題。顯然,這個假設(shè)也是一個非常糟糕的假設(shè),導致很多重要的信息都丟失了。當涉及到天氣的時候,馬爾科夫假設(shè)描述為,假設(shè)如果我們知道之前一些天的天氣信息,那么我們就能預(yù)測今天的天氣。當然,這個例子也是有些不合實際的。但是,這樣一個簡化的系統(tǒng)可以有利于我們的分析,

3、所以我們通常接受這樣的假設(shè),因為我們知道這樣的系統(tǒng)能讓我們獲得一些有用的信息,盡管不是十分準確的。談到 HMM,首先簡單介紹一下馬爾可夫過程 (Markov Process),它因俄羅斯數(shù)學家安德烈·馬爾可夫而得名,代表數(shù)學中具有馬爾可夫性質(zhì)的離散隨機過程。該過程中,每個狀態(tài)的轉(zhuǎn)移只依賴于之前的 n 個狀態(tài),這個過程被稱為1個 n 階的模型,其中 n 是影響轉(zhuǎn)移狀態(tài)的數(shù)目。最簡單的馬爾科夫過程就是一階過程,每一個狀態(tài)的轉(zhuǎn)移只依賴于其之前的那一個狀態(tài)。注意這和確定性系統(tǒng)不一樣,因為這種轉(zhuǎn)移是有概率的,而不是確定性的。馬爾可夫鏈是隨機變量 X1, ,

4、0;Xn 的一個數(shù)列。這些變量的范圍,即他們所有可能取值的集合,被稱為“狀態(tài)空間”,而 Xn  的值則是在時間 n 的狀態(tài)。如果 Xn+1 對于過去狀態(tài)的條件概率分布僅是 Xn 的一個函數(shù),則這里 x 為過程中的某個狀態(tài)。上面這個恒等式可以被看作是馬爾可夫性質(zhì)。馬爾可夫鏈的在很多應(yīng)用中發(fā)揮了重要作用,例如,谷歌所使用的網(wǎng)頁排序算法(PageRank)就是由馬爾可夫鏈定義的下圖展示了天氣這個例子中所有可能的一階轉(zhuǎn)移:注意一個含有 N 個狀態(tài)的一階過程有 N2 個狀態(tài)轉(zhuǎn)移。每一個

5、轉(zhuǎn)移的概率叫做狀態(tài)轉(zhuǎn)移概率 (state transition probability),就是從一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)的概率。這所有的 N2 個概率可以用一個狀態(tài)轉(zhuǎn)移矩陣來表示,其表示形式如下:對該矩陣有如下約束條件:下面就是海藻例子的狀態(tài)轉(zhuǎn)移矩陣:這個矩陣表示,如果昨天是晴天,那么今天有50%的可能是晴天,37.5%的概率是陰天,12.5%的概率會下雨,很明顯,矩陣中每一行的和都是1。為了初始化這樣一個系統(tǒng),我們需要一個初始的概率向量:這個向量表示第一天是晴天。到這里,我們就為上面的一階馬爾科夫過程定義了以下三個部分:狀態(tài):晴天、陰天和下雨。初始向量:定義系統(tǒng)在時間為0

6、的時候的狀態(tài)的概率狀態(tài)轉(zhuǎn)移矩陣:每種天氣轉(zhuǎn)換的概率所有的能被這樣描述的系統(tǒng)都是一個馬爾科夫過程。然而,當馬爾科夫過程不夠強大的時候,我們又該怎么辦呢?在某些情況下,馬爾科夫過程不足以描述我們希望發(fā)現(xiàn)的模式。例如,一個隱居的人可能不能直觀的觀察到天氣的情況,但是民間傳說告訴我們海藻的狀態(tài)在某種概率上是和天氣的情況相關(guān)的。在這種情況下我們有兩個狀態(tài)集合,一個可以觀察到的狀態(tài)集合(海藻的狀態(tài))和一個隱藏的狀態(tài)(天氣狀況)。我們希望能找到一個算法可以根據(jù)海藻的狀況和馬爾科夫假設(shè)來預(yù)測天氣的狀況。一個更現(xiàn)實的例子是語音識別,我們聽到的聲音是聲帶、喉嚨和一起其他的發(fā)音器官共同作用的結(jié)果。這些因素相互作用,

7、共同決定了每一個單詞的聲音,而一個語音識別系統(tǒng)檢測的聲音(可以觀察的狀態(tài))是人體內(nèi)部各種物理變化(隱藏的狀態(tài)、引申一個人真正想表達的意思)產(chǎn)生的。某些語音識別設(shè)備把內(nèi)部的發(fā)音機制作為一個隱藏的狀態(tài)序列,把最后的聲音看成是一個和隱藏的狀態(tài)序列十分相似的可以觀察到的狀態(tài)的序列。在這兩個例子中,一個非常重要的地方是隱藏狀態(tài)的數(shù)目和可以觀察到的狀態(tài)的數(shù)目可能是不一樣的。在一個有3種狀態(tài)的天氣系統(tǒng)(sunny、cloudy、rainy)中,也許可以觀察到4種潮濕程度的海藻(dry、dryish、damp、soggy)。在語音識別中,一個簡單的發(fā)言也許只需要80個語素來描述,但是一個內(nèi)部的發(fā)音機制可以產(chǎn)生

8、不到80或者超過80種不同的聲音。在上面的這些情況下,可以觀察到的狀態(tài)序列和隱藏的狀態(tài)序列是概率相關(guān)的。于是我們可以將這種類型的過程建模為有一個隱藏的馬爾科夫過程和一個與這個隱藏馬爾科夫過程概率相關(guān)的并且可以觀察到的狀態(tài)集合。這就是本文重點介紹的隱馬爾可夫模型。隱馬爾可夫模型 (Hidden Markov Model) 是一種統(tǒng)計模型,用來描述一個含有隱含未知參數(shù)的馬爾可夫過程。其難點是從可觀察的參數(shù)中確定該過程的隱含參數(shù),然后利用這些參數(shù)來作進一步的分析。下圖是一個三個狀態(tài)的隱馬爾可夫模型狀態(tài)轉(zhuǎn)移圖,其中x 表示隱含狀態(tài),y 表示可觀察的輸出,a 表示狀態(tài)轉(zhuǎn)換概率,b 表示輸出概率

9、。下圖顯示了天氣的例子中隱藏的狀態(tài)和可以觀察到的狀態(tài)之間的關(guān)系。我們假設(shè)隱藏的狀態(tài)是一個簡單的一階馬爾科夫過程,并且他們兩兩之間都可以相互轉(zhuǎn)換。對 HMM 來說,有如下三個重要假設(shè),盡管這些假設(shè)是不現(xiàn)實的。假設(shè)1:馬爾可夫假設(shè)(狀態(tài)構(gòu)成一階馬爾可夫鏈)假設(shè)2:不動性假設(shè)(狀態(tài)與具體時間無關(guān))假設(shè)3:輸出獨立性假設(shè)(輸出僅與當前狀態(tài)有關(guān))隱藏的狀態(tài)和可觀察到的狀態(tài)之間有一種概率上的關(guān)系,也就是說某種隱藏狀態(tài) H 被認為是某個可以觀察的狀態(tài) O1 是有概率的,假設(shè)為 P(O1 | H)。如果可以觀察的狀態(tài)有3種,那么很顯然 P(O1 | H)+P(O2

10、60;| H)+ P(O3 | H) = 1。這樣,我們也可以得到一個另一個矩陣,稱為混淆矩陣 (confusion matrix)。這個矩陣的內(nèi)容是某個隱藏的狀態(tài)被分別觀察成幾種不同的可以觀察的狀態(tài)的概率,在天氣的例子中,這個矩陣如下圖:上邊的圖示都強調(diào)了 HMM 的狀態(tài)變遷。而下圖則明確的表示出模型的演化,其中綠色的圓圈表示隱藏狀態(tài),紫色圓圈表示可觀察到狀態(tài),箭頭表示狀態(tài)之間的依存概率,一個 HMM 可用一個5元組 N, M, ,A,B  表示,其中 N 表示隱藏狀態(tài)的數(shù)量,我們要么知道確切的值,要么猜測該值,M 表示可

11、觀測狀態(tài)的數(shù)量,可以通過訓練集獲得, =i 為初始狀態(tài)概率,A=aij 為隱藏狀態(tài)的轉(zhuǎn)移矩陣 Pr(xt(i) | xt-1(j),B=bik 表示某個時刻因隱藏狀態(tài)而可觀察的狀態(tài)的概率,即混淆矩陣,Pr(ot(i) | xt(j)。在狀態(tài)轉(zhuǎn)移矩陣和混淆矩陣中的每個概率都是時間無關(guān)的,即當系統(tǒng)演化時,這些矩陣并不隨時間改變。對于一個 N 和 M 固定的 HMM 來說,用 = , A, B  表示 HMM 參數(shù)。在正常的馬爾可夫模型中,狀態(tài)對于觀察者來說是直接可見的。這樣狀態(tài)的轉(zhuǎn)換概率便是全部的參

12、數(shù)。而在隱馬爾可夫模型中,狀態(tài)并不是直接可見的,但受狀態(tài)影響的某些變量則是可見的。每一個狀態(tài)在可能輸出的符號上都有一概率分布。因此輸出符號的序列能夠透露出狀態(tài)序列的一些信息。在 HMM 中有三個典型問題:(一) 已知模型參數(shù),計算某一給定可觀察狀態(tài)序列的概率假設(shè)我們已經(jīng)有一個特定的隱馬爾科夫模型  和一個可觀察狀態(tài)序列集。我們也許想知道在所有可能的隱藏狀態(tài)序列下,給定的可觀察狀態(tài)序列的概率。當給定如下一個隱藏狀態(tài)序列:那么在 HMM 和這個隱藏狀態(tài)序列的條件下,可觀察狀態(tài)序列的概率為而隱藏狀態(tài)序列在 HMM 條件下的概率為因

13、此,隱藏狀態(tài)序列和可觀察狀態(tài)序列的聯(lián)合概率為那么所有可能的隱藏狀態(tài)序列上,可觀察狀態(tài)序列的概率為例如,我們也許有一個海藻的“Summer”模型和一個“Winter”模型,因為海藻在夏天和冬天的狀態(tài)應(yīng)該是不同的,我們希望根據(jù)一個可觀察狀態(tài)(海藻的潮濕與否)序列來判斷現(xiàn)在是夏天還是冬天我們可以使用前向算法來計算在某個特定的 HMM 下一個可觀察狀態(tài)序列的概率,然后據(jù)此找到最可能的模型這種類型的應(yīng)用通常出現(xiàn)在語音設(shè)別中,通常我們會使用很多 HMM,每一個針對一個特別的單詞。一個可觀察狀態(tài)的序列是從一個可以聽到的單詞向前得到的,然后這個單詞就可以通過找到滿足這個可觀察狀態(tài)

14、序列的最大概率的 HMM 來識別下面介紹一下前向算法 (Forward Algorithm)如何計算一個可觀察序列的概率?1. 窮舉搜索給定一個 HMM,我們想計算出某個可觀察序列的概率。考慮天氣的例子,我們知道一個描述天氣和海藻狀態(tài)的 HMM,而且我們還有一個海藻狀態(tài)的序列。假設(shè)這個狀態(tài)中的某三天是(dry,damp,soggy),在這三天中的每一天,天氣都可能是晴朗,多云或者下雨,我們可以用下圖來描述觀察序列和隱藏序列在這個圖中的每一列表示天氣的狀態(tài)可能,并且每個狀態(tài)都指向相鄰的列的每個狀態(tài),每個狀態(tài)轉(zhuǎn)換在狀態(tài)轉(zhuǎn)移矩陣中都有一個概率。每一列

15、的下面是當天的可觀察的海藻的狀態(tài),在每種狀態(tài)下出現(xiàn)這種可觀察狀態(tài)的概率是由混淆矩陣給出的一個可能的計算可觀察概率的方法是找到每一個可能的隱藏狀態(tài)的序列,這里有32 = 27種,這個時候的可觀察序列的概率就是 Pr(dry, damp, soggy | HMM)=Pr(dry, damp, soggy | sunny, sunny, sunny) + . . . . + Pr(dry, damp, soggy | rainy, rainy, rainy)很顯然,這種計算的效率非常低,尤其是當模型中的狀態(tài)非常多或者序列很長的時候。事實上,我們可以利用概率不隨時間變化這個假設(shè)來降低時間的開

16、銷。2. 使用遞歸來降低復(fù)雜度我們可以考慮給定 HMM 的情況下,遞歸的計算一個可觀察序列的概率。我們可以首先定義一個部分概率,表示達到某個中間狀態(tài)的概率。接下來我們將看到這些部分概率是如何 在time=1 和 time = n (n > 1) 的時候計算的。假設(shè)一個T時間段的可觀察序列是:1) 部分概率下面這張圖表示了一個觀察序列(dry,damp,soggy)的一階轉(zhuǎn)移我們可以通過計算到達某個狀態(tài)的所有路徑的概率和來計算到達某個中間狀態(tài)的概率。比如說,t=2時刻,cloudy的概率用三條路徑的概率之和來表示:我們用 t(j) 來表示在 t 時刻是狀態(tài) j 的概率,

17、t(j)=Pr(觀察狀態(tài) | 隱藏狀態(tài) j ) x Pr(t 時刻到達狀態(tài) j 的所有路徑)。最后一個觀察狀態(tài)的部分概率就表示了整個序列最后達到某個狀態(tài)的所有可能的路徑的概率和,比如說在這個例子中,最后一列的部分狀態(tài)是通過下列路徑計算得到的:因為最后一列的部分概率是所有可能的路徑的概率和,所以就是這個觀察序列在給定 HMM 下的概率了。2) 計算 t=1時候的部分概率當 t=1 的時候,沒有路徑到某個狀態(tài),所以這里是初始概率,Pr(狀態(tài) j | t=0) = (狀態(tài) j ),這樣我們就可以計算 t=1 時候的部分概率為因為在初始的時候,狀態(tài) j 的概率不僅和這個狀態(tài)本身相關(guān)

18、,還和觀察狀態(tài)有關(guān),所以這里用到了混淆矩陣的值,k1 表示第一個觀察狀態(tài),bjk1 表示隱藏狀態(tài)是 j,但是觀察成 k1 的概率。3) 計算 t>1 時候的部分概率還是看計算部分概率的公式是:t(j) = Pr(觀察狀態(tài) | 隱藏狀態(tài) j) x Pr(t 時刻到達狀態(tài) j 的所有路徑)。 這個公式的左邊是從混淆矩陣中已知的,我只需要計算右邊部分,很顯然右邊是所有路徑的和。需要計算的路徑數(shù)是和觀察序列的長度的平方相關(guān)的,但是 t 時刻的部分概率已經(jīng)計算過了之前的所有路徑,所以在 t+1 時刻只需要根據(jù) t 時刻的概率來計算就可以了:這里簡單解釋下,b

19、jk(t+1) 就是在 t+1 時刻的第 j 個隱藏狀態(tài)被認為是當前的觀察狀態(tài)的概率,后面一部分是所有t時刻的隱藏狀態(tài)到 t+1 時候的隱藏狀態(tài)j的轉(zhuǎn)移的概率的和。這樣我們每一步的計算都可以利用上一步的結(jié)果,節(jié)省了很多時間。4) 公式推導5) 降低計算復(fù)雜度我們可以比較窮舉和遞歸算法的復(fù)雜度。假設(shè)有一個 HMM,其中有 n 個隱藏狀態(tài),我們有一個長度為 T 的觀察序列窮舉算法的需要計算所有可能的隱藏序列:需要計算:很顯然窮舉算法的時間開銷是和 T 指數(shù)相關(guān)的,即 NT,而如果采用遞歸算法,由于我們每一步都可以利用上一步的結(jié)果,所以是和 T 線性相關(guān)的,即復(fù)雜度是 N2T。這

20、里我們的目的是在某個給定的 HMM 下,計算出某個可觀察序列的概率。我們通過先計算部分概率的方式遞歸的計算整個序列的所有路徑的概率,大大節(jié)省了時間。在 t=1 的時候,使用了初始概率和混淆矩陣的概率,而在t時刻的概率則可以利用 t-1 時刻的結(jié)果。這樣我們就可以用遞歸的方式來計算所有可能的路徑的概率和,最后,所有的部分概率的計算公式為:使用天氣的例子,計算 t=2 時刻的 cloudy 狀態(tài)的概率方法如圖:我們使用前向算法在給定的一個 HMM 下計算某個可觀察序列的概率。前向算法主要采用的是遞歸的思想,利用之前的計算結(jié)果。有了這個算法,我們就可以在一堆&

21、#160;HMM 中,找到一個最滿足當前的可觀察序列的模型(前向算法計算出來的概率最大)。(二) 根據(jù)可觀察狀態(tài)的序列找到一個最可能的隱藏狀態(tài)序列和上面一個問題相似的并且更有趣的是根據(jù)可觀察序列找到隱藏序列。在很多情況下,我們對隱藏狀態(tài)更有興趣,因為其包含了一些不能被直接觀察到的有價值的信息。比如說在海藻和天氣的例子中,一個隱居的人只能看到海藻的狀態(tài),但是他想知道天氣的狀態(tài)。這時候我們就可以使用 Viterbi 算法來根據(jù)可觀察序列得到最優(yōu)可能的隱藏狀態(tài)的序列,當然前提是已經(jīng)有一個 HMM。另一個廣泛使用 Viterbi 算法的領(lǐng)域是自然語言處理中的詞性

22、標注。句子中的單詞是可以觀察到的,詞性是隱藏的狀態(tài)。通過根據(jù)語句的上下文找到一句話中的單詞序列的最有可能的隱藏狀態(tài)序列,我們就可以得到一個單詞的詞性(可能性最大)。這樣我們就可以用這種信息來完成其他一些工作。下面介紹一下維特比算法 (Viterbi Algorithm)一 如何找到可能性最大的隱藏狀態(tài)序列?通常我們都有一個特定的 HMM,然后根據(jù)一個可觀察狀態(tài)序列去找到最可能生成這個可觀察狀態(tài)序列的隱藏狀態(tài)序列。1. 窮舉搜索我們可以在下圖中看到每個隱藏狀態(tài)和可觀察狀態(tài)的關(guān)系通過計算所有可能的隱藏序列的概率,我們可以找到一個可能性最大的隱藏序列,這個可能性最大的隱藏序列最大

23、化了 Pr(觀察序列 | 隱藏狀態(tài)集)。比如說,對于上圖中的可觀察序列 (dry damp soggy),最可能的隱藏序列就是下面這些概率中最大的:Pr(dry, damp, soggy | sunny, sunny, sunny), ,Pr(dry, damp, soggy | rainy, rainy, rainy)這個方法是可行的,但是計算代價很高。和前向算法一樣,我們可以利用轉(zhuǎn)移概率在時間上的不變性來降低計算的復(fù)雜度。2. 使用遞歸降低復(fù)雜度在給定了一個可觀察序列和HMM的情況下,我們可以考慮遞歸的來尋找最可能的隱藏序列。我們可以先定義一個部分概率 ,即到達某個中間狀態(tài)的概率。接下來我

24、們將討論如何計算 t=1 和 t=n (n>1) 的部分概率。注意這里的部分概率和前向算法中的部分概率是不一樣的,這里的部分概率表示的是在t時刻最可能到達某個狀態(tài)的一條路徑的概率,而不是所有概率之和。1) 部分概率和部分最優(yōu)路徑考慮下面這個圖以及可觀察序列 (dry, damp, soggy) 的一階轉(zhuǎn)移對于每一個中間狀態(tài)和終止狀態(tài) (t=3) 都有一個最可能的路徑。比如說,在 t=3 時刻的三個狀態(tài)都有一個如下的最可能的路徑:我們可以稱這些路徑為部分最優(yōu)路徑。這些部分最優(yōu)路徑都有一個概率,也就是部分概率 。和前向算法中的部分概率不一樣,這里的概率只是一個最可能路徑的概率,而不

25、是所有路徑的概率和我們可以用 (i, t) 來表示在t時刻,到狀態(tài)i的所有可能的序列(路徑)中概率最大的序列的概率,部分最優(yōu)路徑就是達到這個最大概率的路徑,對于每一個時刻的每一個狀態(tài)都有這樣一個概率和部分最優(yōu)路徑最后,我們通過計算 t=T 時刻的每一個狀態(tài)的最大概率和部分最優(yōu)路徑,選擇其中概率最大的狀態(tài)和它的部分最優(yōu)路徑來得到全局的最優(yōu)路徑2) 計算 t=1 時刻的部分概率當 t=1 時刻的時候,到達某個狀態(tài)最大可能的路徑還不存在,但是我們可以直接使用在 t=1 時刻某個狀態(tài)的概率和這個狀態(tài)到可觀察序列 k1 的轉(zhuǎn)移概率3) 計算 t>1 時刻的部分概率接下來我們可以根據(jù) t-

26、1 時刻的部分概率來求 t 時刻的部分概率我們可以計算所有到狀態(tài) X 的路徑的概率,找到其中最可能的路徑,也就是局部最優(yōu)路徑。注意到這里,到達X的路徑必然會經(jīng)過 t-1 時刻的 A、B 和 C,所以我們可以利用之前的結(jié)果。達到X的最可能的路徑就是下面三個之一(狀態(tài)序列),. . .,A,X (狀態(tài)序列),. . .,B,X (狀態(tài)序列),. . .,C,X我們需要做的就是找到以 AX、BX 和 CX 結(jié)尾的路徑中概率最大的那個根據(jù)一階馬爾科夫的假設(shè),一個狀態(tài)的發(fā)生之和之前的一個狀態(tài)有關(guān)系,所以X在某個序列的最后發(fā)生的概率只依賴于其之前的一個狀態(tài)Pr (到達A的最優(yōu)路徑) . Pr (X | A

27、) . Pr (觀察狀態(tài) | X)有個了這個公式,我們就可以利用t-1時刻的結(jié)果和狀態(tài)轉(zhuǎn)移矩陣和混淆矩陣的數(shù)據(jù):將上面這個表達式推廣一下,就可以得到 t 時刻可觀察狀態(tài)為 kt 的第 i 個狀態(tài)的最大部分概率的計算公式其中 aji 表示從狀態(tài) j 轉(zhuǎn)移到狀態(tài) i 的概率,bikt 表示狀態(tài)i被觀察成 kt 的概率4) 后向指針考慮下圖在每一個中間狀態(tài)和結(jié)束狀態(tài)都有一個部分最優(yōu)概率 (i, t)。但是我們的目的是找到最可能的隱藏狀態(tài)序列,所以我們需要一個方法去記住部分最優(yōu)路徑的每一個節(jié)點。考慮到要計算 t 時刻的部分概率,我們只需要知道 t-1

28、時刻的部分概率,所以我們只需要記錄那個導致了 t 時刻最大部分概率的的狀態(tài),也就是說,在任意時刻,系統(tǒng)都必須處在一個能在下一時刻產(chǎn)生最大部分概率的狀態(tài)。如下圖所示我們可以利用一個后向指針  來記錄導致某個狀態(tài)最大局部概率的前一個狀態(tài),即這里 argmax 表示能最大化后面公式的j值,同樣可以發(fā)現(xiàn)這個公式和 t-1 時刻的部分概率和轉(zhuǎn)移概率有關(guān),因為后向指針只是為了找到“我從哪里來”,這個問題和可觀察狀沒有關(guān)系,所以這里不需要再乘上混淆矩陣因子。全局的行為如下圖所示5) 優(yōu)點使用 viterbi 算法對一個可觀察狀態(tài)進行解碼有兩個重要的優(yōu)點a) 通過使用遞歸來減少復(fù)

29、雜度,這點和之前的前向算法是一樣的b) 可以根據(jù)可觀察序列找到最優(yōu)的隱藏序列,這個的計算公式是這里就是一個從左往右翻譯的過程,通過前面的翻譯結(jié)果得到后面的結(jié)果,起始點是初始向量 3. 補充但在序列某個地方有噪聲干擾的時候,某些方法可能會和正確答案相差的較遠。但是 Viterbi 算法會查看整個序列來決定最可能的終止狀態(tài),然后通過后向指針來找到之前的狀態(tài),這對忽略孤立的噪聲非常有用Viterbi 算法提供了一個根據(jù)可觀察序列計算隱藏序列的很高效的方法,它利用遞歸來降低計算復(fù)雜度,并且使用之前全部的序列來做判斷,可以很好的容忍噪聲在計算的過程中,這個算法計算每一個時刻

30、每一個狀態(tài)的部分概率,并且使用一個后向指針來記錄達到當前狀態(tài)的最大可能的上一個狀態(tài)。最后,最可能的終止狀態(tài)就是隱藏序列的最后一個狀態(tài),然后通過后向指針來查找整個序列的全部狀態(tài)(三) 根據(jù)觀察到的序列集來找到一個最有可能的 HMM在很多實際的情況下,HMM 不能被直接的判斷,這就變成了一個學習問題,因為對于給定的可觀察狀態(tài)序列 O 來說,沒有任何一種方法可以精確地找到一組最優(yōu)的 HMM 參數(shù)  使 P(O | ) 最大,于是人們尋求使其局部最優(yōu)的解決辦法,而前向后向算法(也稱為Baum-Welch算法)就成了 HMM 學習問題

31、的一個近似的解決方法前向后向算法首先對于 HMM 的參數(shù)進行一個初始的估計,但這個很可能是一個錯誤的猜測,然后通過對于給定的數(shù)據(jù)評估這些參數(shù)的的有效性并減少它們所引起的錯誤來更新 HMM 參數(shù),使得和給定的訓練數(shù)據(jù)的誤差變小,這其實是機器學習中的梯度下降的思想。對于網(wǎng)格中的每一個狀態(tài),前向后向算法既計算到達此狀態(tài)的“前向”概率,又計算生成此模型最終狀態(tài)的“后向”概率,這些概率都可以通過前面的介紹利用遞歸進行高效計算??梢酝ㄟ^利用近似的 HMM 模型參數(shù)來提高這些中間概率從而進行調(diào)整,而這些調(diào)整又形成了前向后向算法迭代的基礎(chǔ)。另外,前向

32、后向算法是 EM 算法的一個特例,它避免了 EM 算法的暴力計算,而采用動態(tài)規(guī)劃思想來解決問題,Jelinek 在其書Statistical Methods for Speech Recognition中對前向后向算法與 EM 算法的關(guān)系進行了詳細描述,有興趣的讀者可以參考這本書類似于上面講到的前向算法,我們也可以定義后向變量 t(i) 來計算給定當前隱藏狀態(tài) i 時,部分觀察序列 ot+1,ot+2,oT的概率,即與前向算法類似,我們也可以通過迭代算法有效計算 t(i),計算公式如下其中進一步我們可以發(fā)現(xiàn)因此下面開始介紹前向后向算法首先我們需要定義兩個輔助變量,這兩個變量可以用前文介紹過的前向變量和后向變量進行定義第一個變量定義為 t 時狀態(tài) i 和 t+1 時狀態(tài) j 的概率,即該變量在網(wǎng)格中所代表的關(guān)系如下圖所示該等式等價于利用前向變量和后向變量,上式可以表示為第二個變量定義為后驗概率,也就是在給定觀察狀態(tài)序列和 HMM 的情況下,t 時狀態(tài) i 的概率,即利用前向變量和后向變量,上式可以表示為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論