隱馬爾可夫模型

姓名:周小蓬 16019110037

轉(zhuǎn)載自:http://blog.csdn.net/gongxifacai_believe/article/details/68948171

[嵌牛導(dǎo)讀]

隱形馬爾可夫模型,英文是 Hidden Markov Models氏捞,所以以下就簡(jiǎn)稱 HMM。

既是馬爾可夫模型怀估,就一定存在馬爾可夫鏈,該馬爾可夫鏈服從馬爾可夫性質(zhì):即無記憶性善玫。也就是說工窍,這一時(shí)刻的狀態(tài),受且只受前一時(shí)刻的影響壁畸,而不受更往前時(shí)刻的狀態(tài)的影響贼急。

隱馬爾可夫(HMM)好講,簡(jiǎn)單易懂不好講捏萍。我認(rèn)為@者也的回答沒什么錯(cuò)誤竿裂,不過我想說個(gè)更通俗易懂的例子。我希望我的讀者不是專家照弥,而是對(duì)這個(gè)問題感興趣的入門者腻异,所以我會(huì)多闡述數(shù)學(xué)思想,少寫公式这揣』诔#霍金曾經(jīng)說過,你多寫一個(gè)公式给赞,就會(huì)少一半的讀者机打。所以時(shí)間簡(jiǎn)史這本關(guān)于物理的書和麥當(dāng)娜關(guān)于性的書賣的一樣好。我會(huì)效仿這一做法片迅,寫最通俗易懂的答案残邀。

[嵌牛鼻子]

人工智能

基本概念

[嵌牛提問]

什么是隱馬爾可夫模型

如何學(xué)習(xí)

[嵌牛正文]

還是用最經(jīng)典的例子,擲骰子柑蛇。假設(shè)我手里有三個(gè)不同的骰子芥挣。第一個(gè)骰子是我們平常見的骰子(稱這個(gè)骰子為D6),6個(gè)面耻台,每個(gè)面(1空免,2,3盆耽,4蹋砚,5,6)出現(xiàn)的概率是1/6摄杂。第二個(gè)骰子是個(gè)四面體(稱這個(gè)骰子為D4)坝咐,每個(gè)面(1,2析恢,3墨坚,4)出現(xiàn)的概率是1/4。第三個(gè)骰子有八個(gè)面(稱這個(gè)骰子為D8)氮昧,每個(gè)面(1框杜,2浦楣,3,4咪辱,5振劳,6,7油狂,8)出現(xiàn)的概率是1/8历恐。

假設(shè)我們開始擲骰子,我們先從三個(gè)骰子里挑一個(gè)专筷,挑到每一個(gè)骰子的概率都是1/3弱贼。然后我們擲骰子,得到一個(gè)數(shù)字磷蛹,1吮旅,2,3味咳,4庇勃,5,6槽驶,7责嚷,8中的一個(gè)。不停的重復(fù)上述過程掂铐,我們會(huì)得到一串?dāng)?shù)字罕拂,每個(gè)數(shù)字都是1,2全陨,3爆班,4,5,6趁猴,7,8中的一個(gè)。例如我們可能得到這么一串?dāng)?shù)字(擲骰子10次):1 6 3 5 2 7 3 5 2 4

這串?dāng)?shù)字叫做可見狀態(tài)鏈雕沉。但是在隱馬爾可夫模型中,我們不僅僅有這么一串可見狀態(tài)鏈施无,還有一串隱含狀態(tài)鏈梦碗。在這個(gè)例子里,這串隱含狀態(tài)鏈就是你用的骰子的序列医瘫。比如侣肄,隱含狀態(tài)鏈有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8

一般來說,HMM中說到的馬爾可夫鏈其實(shí)是指隱含狀態(tài)鏈醇份,因?yàn)殡[含狀態(tài)(骰子)之間存在轉(zhuǎn)換概率(transition probability)稼锅。在我們這個(gè)例子里吼具,D6的下一個(gè)狀態(tài)是D4,D6矩距,D8的概率都是1/3拗盒。D4,D8的下一個(gè)狀態(tài)是D4锥债,D6陡蝇,D8的轉(zhuǎn)換概率也都一樣是1/3。這樣設(shè)定是為了最開始容易說清楚哮肚,但是我們其實(shí)是可以隨意設(shè)定轉(zhuǎn)換概率的登夫。比如,我們可以這樣定義允趟,D6后面不能接D4恼策,D6后面是D6的概率是0.9,是D8的概率是0.1潮剪。這樣就是一個(gè)新的HMM戏蔑。

同樣的,盡管可見狀態(tài)之間沒有轉(zhuǎn)換概率鲁纠,但是隱含狀態(tài)和可見狀態(tài)之間有一個(gè)概率叫做輸出概率(emission probability)总棵。就我們的例子來說,六面骰(D6)產(chǎn)生1的輸出概率是1/6改含。產(chǎn)生2情龄,3,4捍壤,5骤视,6的概率也都是1/6。我們同樣可以對(duì)輸出概率進(jìn)行其他定義鹃觉。比如专酗,我有一個(gè)被賭場(chǎng)動(dòng)過手腳的六面骰子,擲出來是1的概率更大盗扇,是1/2祷肯,擲出來是2,3疗隶,4佑笋,5,6的概率是1/10斑鼻。

其實(shí)對(duì)于HMM來說蒋纬,如果提前知道所有隱含狀態(tài)之間的轉(zhuǎn)換概率和所有隱含狀態(tài)到所有可見狀態(tài)之間的輸出概率,做模擬是相當(dāng)容易的。但是應(yīng)用HMM模型時(shí)候呢蜀备,往往是缺失了一部分信息的关摇,有時(shí)候你知道骰子有幾種,每種骰子是什么碾阁,但是不知道擲出來的骰子序列拒垃;有時(shí)候你只是看到了很多次擲骰子的結(jié)果,剩下的什么都不知道瓷蛙。如果應(yīng)用算法去估計(jì)這些缺失的信息悼瓮,就成了一個(gè)很重要的問題。這些算法我會(huì)在下面詳細(xì)講艰猬。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

如果你只想看一個(gè)簡(jiǎn)單易懂的例子横堡,就不需要往下看了。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

說兩句廢話冠桃,答主認(rèn)為呢命贴,要了解一個(gè)算法,要做到以下兩點(diǎn):會(huì)其意食听,知其形胸蛛。答主回答的,其實(shí)主要是第一點(diǎn)樱报。但是這一點(diǎn)呢葬项,恰恰是最重要,而且很多書上不會(huì)講的迹蛤。正如你在追一個(gè)姑娘民珍,姑娘對(duì)你說“你什么都沒做錯(cuò)!”你要是只看姑娘的表達(dá)形式呢盗飒,認(rèn)為自己什么都沒做錯(cuò)嚷量,顯然就理解錯(cuò)了。你要理會(huì)姑娘的意思逆趣,“你趕緊給我道歉蝶溶!”這樣當(dāng)你看到對(duì)應(yīng)的表達(dá)形式呢,趕緊認(rèn)錯(cuò)宣渗,跪地求饒就對(duì)了抖所。數(shù)學(xué)也是一樣,你要是不理解意思落包,光看公式部蛇,往往一頭霧水。不過呢咐蝇,數(shù)學(xué)的表達(dá)頂多也就是晦澀了點(diǎn),姑娘的表達(dá)呢,有的時(shí)候就完全和本意相反有序。所以答主一直認(rèn)為理解姑娘比理解數(shù)學(xué)難多了抹腿。

回到正題,和HMM模型相關(guān)的算法主要分為三類旭寿,分別解決三種問題:

1)知道骰子有幾種(隱含狀態(tài)數(shù)量)警绩,每種骰子是什么(轉(zhuǎn)換概率),根據(jù)擲骰子擲出的結(jié)果(可見狀態(tài)鏈)盅称,我想知道每次擲出來的都是哪種骰子(隱含狀態(tài)鏈)肩祥。

這個(gè)問題呢,在語音識(shí)別領(lǐng)域呢缩膝,叫做解碼問題混狠。這個(gè)問題其實(shí)有兩種解法,會(huì)給出兩個(gè)不同的答案疾层。每個(gè)答案都對(duì)将饺,只不過這些答案的意義不一樣。第一種解法求最大似然狀態(tài)路徑痛黎,說通俗點(diǎn)呢予弧,就是我求一串骰子序列,這串骰子序列產(chǎn)生觀測(cè)結(jié)果的概率最大湖饱。第二種解法呢掖蛤,就不是求一組骰子序列了,而是求每次擲出的骰子分別是某種骰子的概率井厌。比如說我看到結(jié)果后坠七,我可以求得第一次擲骰子是D4的概率是0.5,D6的概率是0.3旗笔,D8的概率是0.2.第一種解法我會(huì)在下面說到彪置,但是第二種解法我就不寫在這里了,如果大家有興趣蝇恶,我們另開一個(gè)問題繼續(xù)寫吧拳魁。

2)還是知道骰子有幾種(隱含狀態(tài)數(shù)量),每種骰子是什么(轉(zhuǎn)換概率)撮弧,根據(jù)擲骰子擲出的結(jié)果(可見狀態(tài)鏈)潘懊,我想知道擲出這個(gè)結(jié)果的概率。

看似這個(gè)問題意義不大贿衍,因?yàn)槟銛S出來的結(jié)果很多時(shí)候都對(duì)應(yīng)了一個(gè)比較大的概率授舟。問這個(gè)問題的目的呢,其實(shí)是檢測(cè)觀察到的結(jié)果和已知的模型是否吻合贸辈。如果很多次結(jié)果都對(duì)應(yīng)了比較小的概率释树,那么就說明我們已知的模型很有可能是錯(cuò)的,有人偷偷把我們的骰子給換了。

3)知道骰子有幾種(隱含狀態(tài)數(shù)量)奢啥,不知道每種骰子是什么(轉(zhuǎn)換概率)秸仙,觀測(cè)到很多次擲骰子的結(jié)果(可見狀態(tài)鏈),我想反推出每種骰子是什么(轉(zhuǎn)換概率)桩盲。

這個(gè)問題很重要寂纪,因?yàn)檫@是最常見的情況。很多時(shí)候我們只有可見結(jié)果赌结,不知道HMM模型里的參數(shù)捞蛋,我們需要從可見結(jié)果估計(jì)出這些參數(shù),這是建模的一個(gè)必要步驟柬姚。

問題闡述完了拟杉,下面就開始說解法。(0號(hào)問題在上面沒有提伤靠,只是作為解決上述問題的一個(gè)輔助)

0.一個(gè)簡(jiǎn)單問題

其實(shí)這個(gè)問題實(shí)用價(jià)值不高捣域。由于對(duì)下面較難的問題有幫助,所以先在這里提一下宴合。

知道骰子有幾種焕梅,每種骰子是什么,每次擲的都是什么骰子卦洽,根據(jù)擲骰子擲出的結(jié)果贞言,求產(chǎn)生這個(gè)結(jié)果的概率。

解法無非就是概率相乘:

解法無非就是概率相乘:

1.看見不可見的阀蒂,破解骰子序列

這里我說的是第一種解法该窗,解最大似然路徑問題。

舉例來說蚤霞,我知道我有三個(gè)骰子酗失,六面骰,四面骰昧绣,八面骰规肴。我也知道我擲了十次的結(jié)果(1 6 3 5 2 7 3 5 2 4),我不知道每次用了那種骰子夜畴,我想知道最有可能的骰子序列拖刃。

其實(shí)最簡(jiǎn)單而暴力的方法就是窮舉所有可能的骰子序列,然后依照第零個(gè)問題的解法把每個(gè)序列對(duì)應(yīng)的概率算出來贪绘。然后我們從里面把對(duì)應(yīng)最大概率的序列挑出來就行了兑牡。如果馬爾可夫鏈不長(zhǎng),當(dāng)然可行税灌。如果長(zhǎng)的話均函,窮舉的數(shù)量太大亿虽,就很難完成了。

另外一種很有名的算法叫做Viterbi algorithm. 要理解這個(gè)算法边酒,我們先看幾個(gè)簡(jiǎn)單的列子经柴。

首先狸窘,如果我們只擲一次骰子:

看到結(jié)果為1.對(duì)應(yīng)的最大概率骰子序列就是D4墩朦,因?yàn)镈4產(chǎn)生1的概率是1/4,高于1/6和1/8.

把這個(gè)情況拓展翻擒,我們擲兩次骰子:

氓涣、

結(jié)果為1,6.這時(shí)問題變得復(fù)雜起來陋气,我們要計(jì)算三個(gè)值劳吠,分別是第二個(gè)骰子是D6,D4巩趁,D8的最大概率痒玩。顯然,要取到最大概率议慰,第一個(gè)骰子必須為D4蠢古。這時(shí),第二個(gè)骰子取到D6的最大概率是

同樣的别凹,我們可以計(jì)算第二個(gè)骰子是D4或D8時(shí)的最大概率草讶。我們發(fā)現(xiàn),第二個(gè)骰子取到D6的概率最大炉菲。而使這個(gè)概率最大時(shí)堕战,第一個(gè)骰子為D4。所以最大概率骰子序列就是D4 D6拍霜。

繼續(xù)拓展嘱丢,我們擲三次骰子:

同樣,我們計(jì)算第三個(gè)骰子分別是D6祠饺,D4越驻,D8的最大概率。我們?cè)俅伟l(fā)現(xiàn)吠裆,要取到最大概率伐谈,第二個(gè)骰子必須為D6。這時(shí)试疙,第三個(gè)骰子取到D4的最大概率是

同上诵棵,我們可以計(jì)算第三個(gè)骰子是D6或D8時(shí)的最大概率。我們發(fā)現(xiàn)祝旷,第三個(gè)骰子取到D4的概率最大履澳。而使這個(gè)概率最大時(shí)嘶窄,第二個(gè)骰子為D6,第一個(gè)骰子為D4距贷。所以最大概率骰子序列就是D4 D6 D4柄冲。

寫到這里,大家應(yīng)該看出點(diǎn)規(guī)律了忠蝗。既然擲骰子一二三次可以算现横,擲多少次都可以以此類推。我們發(fā)現(xiàn)阁最,我們要求最大概率骰子序列時(shí)要做這么幾件事情戒祠。首先,不管序列多長(zhǎng)速种,要從序列長(zhǎng)度為1算起姜盈,算序列長(zhǎng)度為1時(shí)取到每個(gè)骰子的最大概率。然后配阵,逐漸增加長(zhǎng)度馏颂,每增加一次長(zhǎng)度,重新算一遍在這個(gè)長(zhǎng)度下最后一個(gè)位置取到每個(gè)骰子的最大概率棋傍。因?yàn)樯弦粋€(gè)長(zhǎng)度下的取到每個(gè)骰子的最大概率都算過了救拉,重新計(jì)算的話其實(shí)不難。當(dāng)我們算到最后一位時(shí)舍沙,就知道最后一位是哪個(gè)骰子的概率最大了近上。然后,我們要把對(duì)應(yīng)這個(gè)最大概率的序列從后往前推出來拂铡。

2.誰動(dòng)了我的骰子壹无?

比如說你懷疑自己的六面骰被賭場(chǎng)動(dòng)過手腳了,有可能被換成另一種六面骰感帅,這種六面骰擲出來是1的概率更大斗锭,是1/2,擲出來是2失球,3岖是,4,5实苞,6的概率是1/10豺撑。你怎么辦么?答案很簡(jiǎn)單黔牵,算一算正常的三個(gè)骰子擲出一段序列的概率聪轿,再算一算不正常的六面骰和另外兩個(gè)正常骰子擲出這段序列的概率。如果前者比后者小猾浦,你就要小心了陆错。

比如說擲骰子的結(jié)果是:

要算用正常的三個(gè)骰子擲出這個(gè)結(jié)果的概率灯抛,其實(shí)就是將所有可能情況的概率進(jìn)行加和計(jì)算。同樣音瓷,簡(jiǎn)單而暴力的方法就是把窮舉所有的骰子序列对嚼,還是計(jì)算每個(gè)骰子序列對(duì)應(yīng)的概率,但是這回绳慎,我們不挑最大值了纵竖,而是把所有算出來的概率相加,得到的總概率就是我們要求的結(jié)果偷线。這個(gè)方法依然不能應(yīng)用于太長(zhǎng)的骰子序列(馬爾可夫鏈)磨确。

我們會(huì)應(yīng)用一個(gè)和前一個(gè)問題類似的解法沽甥,只不過前一個(gè)問題關(guān)心的是概率最大值声邦,這個(gè)問題關(guān)心的是概率之和。解決這個(gè)問題的算法叫做前向算法(forward algorithm)摆舟。

首先亥曹,如果我們只擲一次骰子:

看到結(jié)果為1.產(chǎn)生這個(gè)結(jié)果的總概率可以按照如下計(jì)算,總概率為0.18:

把這個(gè)情況拓展恨诱,我們擲兩次骰子:

看到結(jié)果為1媳瞪,6.產(chǎn)生這個(gè)結(jié)果的總概率可以按照如下計(jì)算,總概率為0.05:

繼續(xù)拓展照宝,我們擲三次骰子:

看到結(jié)果為1蛇受,6,3.產(chǎn)生這個(gè)結(jié)果的總概率可以按照如下計(jì)算厕鹃,總概率為0.03:

同樣的兢仰,我們一步一步的算,有多長(zhǎng)算多長(zhǎng)剂碴,再長(zhǎng)的馬爾可夫鏈總能算出來的把将。用同樣的方法,也可以算出不正常的六面骰和另外兩個(gè)正常骰子擲出這段序列的概率忆矛,然后我們比較一下這兩個(gè)概率大小察蹲,就能知道你的骰子是不是被人換了。

3.擲一串骰子出來催训,讓我猜猜你是誰

(答主很懶洽议,還沒寫,會(huì)寫一下EM這個(gè)號(hào)稱算法的方法)

上述算法呢漫拭,其實(shí)用到了遞歸亚兄,逆向推導(dǎo),循環(huán)這些方法嫂侍,我只不過用很直白的語言寫出來了儿捧。如果你們?nèi)タ磳I(yè)書籍呢荚坞,會(huì)發(fā)現(xiàn)更加嚴(yán)謹(jǐn)和專業(yè)的描述。畢竟菲盾,我只做了會(huì)其意颓影,要知其形,還是要看書的懒鉴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诡挂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子临谱,更是在濱河造成了極大的恐慌璃俗,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悉默,死亡現(xiàn)場(chǎng)離奇詭異城豁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抄课,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門唱星,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跟磨,你說我怎么就攤上這事间聊。” “怎么了抵拘?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵哎榴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我僵蛛,道長(zhǎng)尚蝌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任墩瞳,我火速辦了婚禮驼壶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喉酌。我一直安慰自己热凹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布泪电。 她就那樣靜靜地躺著般妙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪相速。 梳的紋絲不亂的頭發(fā)上碟渺,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音突诬,去河邊找鬼苫拍。 笑死芜繁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绒极。 我是一名探鬼主播骏令,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼垄提!你這毒婦竟也來了榔袋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤铡俐,失蹤者是張志新(化名)和其女友劉穎凰兑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體审丘,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吏够,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了备恤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿饰。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖露泊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旅择,我是刑警寧澤惭笑,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站生真,受9級(jí)特大地震影響沉噩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柱蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一川蒙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧长已,春花似錦畜眨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胞四,卻和暖如春恬汁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辜伟。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工氓侧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脊另,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓约巷,卻偏偏與公主長(zhǎng)得像尝蠕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子载庭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容