初学者也能看懂的隐马尔科夫模型介绍
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
隱馬爾科夫模型是(hidden Markov model,HMM)是可用于標(biāo)注問(wèn)題的統(tǒng)計(jì)學(xué)習(xí)模型,描述由隱藏的馬爾科夫鏈隨機(jī)生成觀測(cè)序列的過(guò)程。
隱馬爾可夫模型(hidden Markov model,HMM)是時(shí)間序列的概率模型,常用于詞性標(biāo)注,語(yǔ)音識(shí)別,文本分析等領(lǐng)域。HMM是基于馬爾科夫鏈進(jìn)行標(biāo)注的,我們對(duì)已經(jīng)觀察的數(shù)據(jù)序列O進(jìn)行標(biāo)注,標(biāo)注序列I相當(dāng)于不可觀測(cè)序列(隱變量),如何求解概率最大的標(biāo)注序列?I?是HMM的核心問(wèn)題,我們以圖解的方式形象的描述HMM問(wèn)題。
已知觀測(cè)序列,標(biāo)注序列,其中觀測(cè)序列是相互獨(dú)立的且與對(duì)應(yīng)的標(biāo)注序列相關(guān),標(biāo)注序列符合馬爾科夫鏈模型,如下圖:
再次強(qiáng)調(diào)下隱馬爾科夫模型假設(shè)的場(chǎng)景,1)觀測(cè)序列是相互獨(dú)立的,2)標(biāo)注序列符合馬爾科夫鏈模型,3)觀測(cè)序列由標(biāo)注序列決定。
HMM模型主要處理以下三個(gè)問(wèn)題:
1)已知觀測(cè)序列O,如何求解HMM模型參數(shù)。
2)已知觀測(cè)序列O和模型參數(shù),如何求解最有可能的標(biāo)注序列 I 。
3)已知觀測(cè)序列O和模型參數(shù),如何求解觀測(cè)序列O出現(xiàn)的概率。
下面給出大致的解決方案:
1) 已知觀測(cè)序列O,如何求解模型參數(shù)。
其中I為標(biāo)注序列,在上式中的含義為隱變量,因此可用EM算法求解上式的模型參數(shù)。
2) 已知觀測(cè)序列O和模型參數(shù),如何求解最有可能的標(biāo)注序列?I?
3)已知觀測(cè)序列O和模型參數(shù),如何求解觀測(cè)序列O出現(xiàn)的概率概率
后續(xù)內(nèi)容會(huì)給出具體的算法和實(shí)例。
介紹到這里,相信大家對(duì)HMM有了初步的理解了吧,舉一個(gè)例子來(lái)說(shuō)明HMM的應(yīng)用場(chǎng)景:
小明每天穿的服裝為,假設(shè)小明穿的服裝與前一天穿的服裝是相互獨(dú)立的,且服裝的選擇受精神狀態(tài)的影響,當(dāng)天的精神狀態(tài)受到前一天精神狀態(tài)的影響,精神狀態(tài)為,已知觀察序列,求對(duì)應(yīng)的精神狀態(tài)序列,這類(lèi)問(wèn)題我們可以用HMM來(lái)解決。
介紹到這里,相信大家對(duì)HMM的基本概念和應(yīng)用場(chǎng)景有了一定的概念,如果對(duì)HMM還不是很理解的話,先別慌,下面循環(huán)漸進(jìn)的介紹HMM,數(shù)學(xué)要求不高的人也能很好的理解。
1.概率與隨機(jī)過(guò)程的區(qū)別
概率是反映隨機(jī)事件發(fā)生的可能性,大學(xué)課程《概率論與數(shù)理統(tǒng)計(jì)》全文內(nèi)容是基于概率介紹的。若隨機(jī)事件發(fā)生的概率隨時(shí)間而改變,我們?cè)诳紤]時(shí)間因素或空間因素的情況下去分析隨機(jī)事件發(fā)生的概率,稱(chēng)為隨機(jī)過(guò)程。
若我們每次拋擲硬幣且正面向上的概率為0.5,正面向上的概率不隨拋擲次數(shù)而改變,我們可以用概率來(lái)描述這一事件,如P(X),其中X表示硬幣正面向上的隨機(jī)事件。
若我們每次拋擲硬幣,硬幣落在地上會(huì)導(dǎo)致形狀的改變,正面向上的概率隨拋擲次數(shù)的改變而改變,我們用隨機(jī)過(guò)程來(lái)描述這一事件,如,其中表示第i次拋擲硬幣正面向上的隨機(jī)事件。籠統(tǒng)的講,概率是分析一個(gè)隨機(jī)變量,而隨機(jī)過(guò)程是分析一組隨機(jī)變量。
2.馬爾科夫過(guò)程的概念
當(dāng)隨機(jī)過(guò)程的變量滿足馬爾科夫性的無(wú)記憶性質(zhì)時(shí),則稱(chēng)為馬爾科夫過(guò)程。
我們定義為第i個(gè)時(shí)刻的隨機(jī)變量,如下圖的隨機(jī)過(guò)程:
若隨機(jī)變量滿足:
上式的含義為t時(shí)刻的隨機(jī)變量只依賴(lài)于t-1時(shí)刻的隨機(jī)變量,與其他時(shí)刻無(wú)關(guān),則稱(chēng)該過(guò)程為馬爾科夫過(guò)程。
3.馬爾科夫模型與隱馬爾科夫模型的區(qū)別
馬爾科夫模型與隱馬爾科夫模型的區(qū)別在于是否含有隱變量,本節(jié)還是用小明穿服裝的例子來(lái)形象的說(shuō)明馬爾科夫模型與隱馬爾可夫模型的區(qū)別:
若小明每天的服裝只受到前一天所穿服裝的影響, 下圖為小明最近N天所穿服裝的序列:
由上節(jié)介紹可知服裝序列為馬爾科夫過(guò)程,基于馬爾科夫過(guò)程的統(tǒng)計(jì)模型則稱(chēng)為馬爾科夫模型。
若小明每天的服裝與前一天所穿服裝是相互獨(dú)立的,且每天所穿的服裝是受到當(dāng)天的精神狀態(tài)影響,精神狀態(tài)符合馬爾科夫鏈原理,令服裝序列為,精神狀態(tài)序列為,用下圖描述這一過(guò)程:
其中服裝序列是可觀測(cè)序列且觀測(cè)變量是相互獨(dú)立的,精神狀態(tài)序列是不可觀測(cè)序列(隱變量)且狀態(tài)變量符合馬爾科夫模型,基于上述過(guò)程的統(tǒng)計(jì)模型稱(chēng)為隱馬爾科夫模型。
4.隱馬爾科夫模型參數(shù)介紹
由上節(jié)介紹可知,隱馬爾科夫模型包含了觀測(cè)序列和未觀測(cè)的狀態(tài)序列,其中狀態(tài)序列由初始狀態(tài)概率向量π和狀態(tài)轉(zhuǎn)移概率矩陣A決定,觀測(cè)序列由觀測(cè)概率矩陣B決定。
還是用小明作為例子,假設(shè)小明可選的服裝為三件,分別為。小明的精神狀態(tài)有兩種,分別為。
因此狀態(tài)轉(zhuǎn)移概率矩陣A表示為:
其中,
是在時(shí)刻t處于狀態(tài)的條件下在時(shí)刻t+1轉(zhuǎn)移到的概率。
觀測(cè)概率矩陣B表示為:
其中,
是在時(shí)刻t處于狀態(tài)的條件下生成觀測(cè)的概率。
初始狀態(tài)概率向量表示為:
其中,
是時(shí)刻t=1處于狀態(tài)的概率。
我們用參數(shù)λ表示隱馬爾科夫模型參數(shù),即:
A,B,π稱(chēng)為隱馬爾可夫模型的三要素。
5.?隱馬爾可夫模型參數(shù)求解算法
上節(jié)我們介紹了隱馬爾可夫模型參數(shù)的含義,如何僅通過(guò)觀測(cè)序列,求解模型參數(shù)。
我們知道隱馬爾可夫過(guò)程包含了隱變量 I,那么隱馬爾可夫模型事實(shí)上是一個(gè)含有隱變量的概率模型:
當(dāng)構(gòu)建包含隱變量的模型參數(shù)時(shí),我們首先想到用EM(期望最大值)算法實(shí)現(xiàn),算法可參考文章(一文讓你完全入門(mén)EM算法)
模型參數(shù)求解步驟:
1)初始化隱馬爾可夫模型參數(shù)
2)確定模型完全數(shù)據(jù)的對(duì)數(shù)似然函數(shù),隱馬爾可夫模型的完全數(shù)據(jù)包含了觀測(cè)數(shù)據(jù)
和隱數(shù)據(jù),完全數(shù)據(jù)是
因此完全數(shù)據(jù)的對(duì)數(shù)似然函數(shù)為:
3)EM算法的E步,即求完全對(duì)數(shù)似然函數(shù)下隱變量的期望,稱(chēng)為Q函數(shù)
有:
其中是隱馬爾科夫模型的當(dāng)前估計(jì)值,是馬爾科夫模型參數(shù)。
根據(jù)上節(jié)介紹的隱馬爾可夫模型參數(shù)的含義,完全數(shù)據(jù)的似然函數(shù)可展開(kāi)為:
因此Q函數(shù)可寫(xiě)成:
4)?EM算法的M步,求Q函數(shù)的最大值,得到模型參數(shù),由上節(jié)可知模型參數(shù)
即令:
約束條件為初始狀態(tài)概率分布的和等于1,即:
狀態(tài)已知的情況下,觀測(cè)概率分布的和等于1,即:
由上面的等式得到模型參數(shù),即更新了模型參數(shù)的值。具體計(jì)算過(guò)程這里不再詳細(xì)描述了,具體可參考李航老師的《統(tǒng)計(jì)學(xué)習(xí)方法》,若有不懂歡迎交流。
5)重復(fù)步驟(3)(4),直到函數(shù)收斂,得到最終的模型參數(shù)
6.觀測(cè)序列概率計(jì)算算法
上一節(jié)介紹了如何通過(guò)觀測(cè)序列去估計(jì)模型參數(shù),當(dāng)模型參數(shù)已知時(shí),隱馬爾可夫模
型也相應(yīng)的確定了,觀測(cè)序列的概率可以通過(guò)模型參數(shù)計(jì)算出來(lái)。下面介紹兩種觀測(cè)序列概
率計(jì)算算法:
1)枚舉法
給定模型和觀測(cè)序列,計(jì)算觀測(cè)序列O出現(xiàn)的概率。假設(shè)狀態(tài)序列,可能的狀態(tài)數(shù)是N,因此每個(gè)觀測(cè)變量都可能由N個(gè)狀態(tài)生成,且模型參數(shù)已知,我們就能算出每個(gè)可能的狀態(tài)序列生成觀測(cè)序列的概率。如下圖:
這種列舉所有可能的狀態(tài)數(shù)來(lái)計(jì)算觀測(cè)序列的概率理論上是可行的,但是計(jì)算量非常大,如上圖對(duì)于長(zhǎng)度為T(mén)的觀測(cè)序列,復(fù)雜度達(dá)到了。
2)遞推法
隱馬爾科夫具有時(shí)間序列的特點(diǎn),因此我們可以用遞推的方法去計(jì)算觀測(cè)序列出現(xiàn)的概率。給定馬爾科夫模型?,定義到時(shí)刻t部分觀測(cè)序列為且狀態(tài)為的前向概率為。
1)時(shí)刻t=1時(shí)刻的觀測(cè)概率為:
2)遞推,對(duì)于,有:
3)當(dāng)t=T時(shí),
算法復(fù)雜度研究:因?yàn)樵撍惴紤]的是用遞推關(guān)系求觀測(cè)序列的概率,遞推過(guò)程如下圖:
方程表示為:
由上式可知,計(jì)算t+1時(shí)刻狀態(tài)為?i?的計(jì)算量為N次相乘求和,且t+1時(shí)刻狀態(tài)的可能數(shù)為N,因此由t時(shí)刻遞推到t+1時(shí)刻的計(jì)算量為?階,觀測(cè)序列的長(zhǎng)度為T(mén),那么計(jì)算量為階,與之前枚舉法相比,計(jì)算量大大降低了。
7.狀態(tài)序列預(yù)測(cè)算法
給定模型參數(shù)?和觀測(cè)序列,如何預(yù)測(cè)最有可能的狀態(tài)序列,這是隱馬爾科夫模型的應(yīng)用最廣的場(chǎng)景,如詞性標(biāo)注,給定一個(gè)句子,標(biāo)注每個(gè)單詞的特性;
本節(jié)介紹維特比算法(Viterbi algorithm)來(lái)預(yù)測(cè)狀態(tài)序列。維特比算法是一種動(dòng)態(tài)規(guī)劃算法,用于尋找最有可能產(chǎn)生的狀態(tài)序列。
通過(guò)節(jié)點(diǎn)
算法的核心思想是:若t時(shí)刻最有可能的狀態(tài)序列通過(guò)節(jié)點(diǎn)(為t時(shí)刻的狀態(tài)),那么從t時(shí)刻到T時(shí)刻的最優(yōu)路徑一定包括。我們利用這一思想確定了最優(yōu)狀態(tài)序列的最后一個(gè)時(shí)刻的狀態(tài),然后利用該狀態(tài)回溯時(shí)刻的最優(yōu)狀態(tài)。用一個(gè)例子說(shuō)明維特比算法:
已知模型,觀測(cè)集合V={紅,白},狀態(tài)集合Q={1,2,3},其中
若觀測(cè)序列O=(紅,白,紅),求最優(yōu)狀態(tài)序列
解:定義為時(shí)刻t狀態(tài)為?i?的所有單個(gè)路徑中概率的最大值,含義為給定前t-1時(shí)刻的狀態(tài)和前t時(shí)刻的觀測(cè)序列,求最優(yōu)路徑t時(shí)刻的狀態(tài),即:
定義為時(shí)刻t狀態(tài)為?i?的所有單個(gè)路徑中概率最大路徑的第t-1個(gè)節(jié)點(diǎn)為:
根據(jù)維特比算法的核心思想,我們計(jì)算觀測(cè)序列下的最優(yōu)路徑:
1)t=1時(shí),令是觀測(cè)為狀態(tài)為i的概率,由題目可知為紅色,有:
代入已知條件得:
記
2)t=2時(shí),
由上面兩式得:
2)t=3時(shí),
得:
以表示最優(yōu)路徑的概率,最優(yōu)路徑的終點(diǎn):
因此最優(yōu)狀態(tài)序列:
8.小結(jié)
本文首先用一個(gè)例子通俗的講解了隱馬爾可夫模型的適用場(chǎng)景以及隱馬爾可夫模型的三個(gè)主要處理問(wèn)題,然后循序漸進(jìn)的介紹了隱馬爾可夫模型的概念和相關(guān)問(wèn)題的解決方法,所用的例子選取了《統(tǒng)計(jì)學(xué)習(xí)方法》的內(nèi)容。后續(xù)文章會(huì)介紹另一種相似的算法——條件隨機(jī)場(chǎng)以及兩者的區(qū)別,希望對(duì)初學(xué)者能有所幫助。
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。
下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~
總結(jié)
以上是生活随笔為你收集整理的初学者也能看懂的隐马尔科夫模型介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: LaTeX数学符号表
- 下一篇: 达梦数据库学习之备份还原
