隱馬爾可夫模型(Hidden Markov Model,HMM)是統(tǒng)計(jì)模型,它用來描述一個(gè)含有隱含未知參數(shù)的馬爾可夫過程弛秋。其難點(diǎn)是從可觀察的參數(shù)中確定該過程的隱含參數(shù)汽纤。然后利用這些參數(shù)來作進(jìn)一步的分析,例如模式識(shí)別。
在正常的馬爾可夫模型中,狀態(tài)對(duì)于觀察者來說是直接可見的。這樣狀態(tài)的轉(zhuǎn)換概率便是全部的參數(shù)你弦。而在隱馬爾可夫模型中,狀態(tài)并不是直接可見的燎孟,但受狀態(tài)影響的某些變量則是可見的禽作。每一個(gè)狀態(tài)在可能輸出的符號(hào)上都有一概率分布。因此輸出符號(hào)的序列能夠透露出狀態(tài)序列的一些信息揩页。
坊間有流傳過這么一段《胡適留學(xué)日記》:
7月4日: 新開這本日記旷偿,也為了督促自己下個(gè)學(xué)期多下些苦功。先要讀完手邊的莎士比亞的《亨利八世》碍沐。
7月13日: 打牌狸捅。
7月14日: 打牌。
7月15日: 打牌累提。
7月16日: 胡適之啊胡適之尘喝!你怎么能如此墮落!先前訂下的學(xué)習(xí)計(jì)劃你都忘了嗎斋陪?子曰:“吾日三省吾身朽褪。”不能再這樣下去了无虚!
7月17日: 打牌缔赠。
7月18日: 打牌。
且不論真假友题,突然覺得倒是很合適用來作為 Hidden Markov Model (HMM) 的例子來講的嗤堰,因?yàn)楹蜁险n上講的例子,天氣呀遛狗啊還是馬克杯啊什么的度宦,果然還是這個(gè)比較好玩一點(diǎn)啊踢匣。
假設(shè)小明有很嚴(yán)重的拖延癥,在每一天他會(huì)處于沒有拖延癥的正常狀態(tài) Normal戈抄、以及不同程度的拖延癥 Light离唬、Heavy 和 Critical 狀態(tài)中的一種。每天的狀態(tài)會(huì)隨著前一天所處的狀態(tài)不同而發(fā)生改變划鸽,轉(zhuǎn)移方式如圖(fig: 1)所示输莺。
簡(jiǎn)單來說:小明一開始會(huì)處于正常狀態(tài)戚哎,不過由于他拖延癥非常嚴(yán)重,第二天毫無懸念地會(huì)進(jìn)入輕度拖延癥狀態(tài)嫂用。在輕度拖延癥狀態(tài)中有很大的概率 (0.7) 會(huì)進(jìn)入重度拖延癥狀態(tài)或者以 0.3 的概率維持在輕度拖延癥狀態(tài)中型凳。一旦進(jìn)入到重度拖延癥狀態(tài),他會(huì)以 0.8 的概率一直保留在那個(gè)狀態(tài)尸折,或者有比較小的幾率 (0.2) 進(jìn)入“致命拖延”狀態(tài)啰脚。在“致命拖延”狀態(tài)中度過一天之后小明會(huì)幡然醒悟,下定決心重新做人实夹,并在第二天成功回復(fù)正常狀態(tài)。然后……周而復(fù)始粒梦、世襲罔替……
圖 1
小明的拖延癥狀態(tài)轉(zhuǎn)移圖
不過亮航,小明的拖延癥狀態(tài)是“隱藏”在他大腦里的(這也是 HMM 中 Hidden 的由來),他自己也搞不清楚匀们。但是我們知道他在不同的狀態(tài)下會(huì)做什么樣的事情缴淋。
小明在不同狀態(tài)下打牌的概率
狀態(tài)打牌的概率不打牌的概率
Normal01
Light0.30.7
Heavy0.80.2
Critical10
雖然我們沒法把小明的腦袋打開看看里面的寄存器是什么狀態(tài),但是我們可以偷看小明的日記觀察小明的日常生活泄朴。通過這些歷史數(shù)據(jù)重抖,我們可以做這樣一些事情:
給定小明某一段時(shí)間的日記(打牌、不打牌)祖灰,計(jì)算該日記是否是偽造的概率钟沛。更確切地說,計(jì)算該日記所記錄的日常生活是來自于小明的拖延癥模型的概率局扶。
給定小明某一段時(shí)間的日記恨统,推斷出每一天小明最有可能處在什么狀態(tài)。
另外三妈,如果我們并不事先知道小明的拖延癥模型(狀態(tài)轉(zhuǎn)移和不同狀態(tài)下的行為)畜埋,如果有足夠多的歷史數(shù)據(jù)(日記),我們還可以做的第三件事情就是:
估計(jì)小明的拖延癥模型參數(shù)畴蒲。
這三件事正好對(duì)應(yīng)了 HMM 中的三個(gè)任務(wù)悠鞍,分別是 Scoring、Matching (或者 Decoding)模燥、Traing (或者 Learning)咖祭。對(duì)應(yīng)這三個(gè)任務(wù)分別有三個(gè)算法:
Scoring:Forward-Backward 算法,是 Graphical Model 里的Sum-Product 算法的特例涧窒。
Matching:Viterbi 算法心肪,是 Graphical Model 里的 Max-Product 算法的特例。
Training:Baum-Welch 算法纠吴,是EM 算法的特例硬鞍。
熟悉 Graphical Model 的同學(xué)肯定一下子能看出來,前兩個(gè)問題屬于 Inference 問題,分別就是算 Marginal 和 MAP 推斷固该;而最后一個(gè)問題則是 Learning 問題锅减,之所以 EM 算法也是因?yàn)闋顟B(tài)是沒有觀察到的隱變量。由于三個(gè)問題都定義得非常清楚伐坏,而且也有非常高效的算法進(jìn)行計(jì)算怔匣,加之 HMM 模型的適用范圍非常廣,所以在諸如語(yǔ)音識(shí)別桦沉、自然語(yǔ)言處理每瞒、機(jī)器翻譯、基因序列對(duì)齊纯露、機(jī)器人定位等等各種各樣的應(yīng)用中得到廣泛采用剿骨。雖然它提出來也已經(jīng)有相當(dāng)年頭了,并且也有自己的局限和問題埠褪,但是浓利,比如說,現(xiàn)在的 state-of-the-art 的語(yǔ)音識(shí)別系統(tǒng)仍然主要是基于 HMM 框架的钞速。
具體來說贷掖,HMM 可以定義為一個(gè)三元組。其中用于描述初始狀態(tài)的分布渴语,在小明的例子里初始狀態(tài)是 deterministic 地位于“Normal”狀態(tài)的苹威,General 的 HMM 并不要求這樣。則是狀態(tài)轉(zhuǎn)移矩陣遵班,表示在時(shí)刻處于狀態(tài)的情況下屠升,時(shí)刻轉(zhuǎn)移到狀態(tài)的概率:
注意時(shí)刻的狀態(tài)分布只依賴于時(shí)刻的狀態(tài),而與更之前的狀態(tài)無關(guān) (independent)(更確切地說狭郑,是在給定了的情況下與更早的等狀態(tài)無關(guān)腹暖,亦即是 Conditional Independence。條件獨(dú)立性是 Graphical Model 里的核心概念翰萨。下面關(guān)于“觀察值”的獨(dú)立性類似脏答。),這類的性質(zhì)通常叫做Markov Property亩鬼,這也是為什么 HMM 叫做“Markov Model”的原因殖告。除了狀態(tài)有這個(gè)性質(zhì)之外,每個(gè)時(shí)刻所得到的觀察值也有類似的性質(zhì):時(shí)刻的觀察值(打牌還是不打牌)只依賴于時(shí)刻的狀態(tài)雳锋,并由三元組中的來決定黄绩,具體來說
對(duì)于小明的例子,我們實(shí)際上是用狀態(tài)轉(zhuǎn)移圖來給出了和玷过,并用表格的形式給出了爽丹。由于 HMM 總是對(duì)應(yīng)一個(gè) sequence (的狀態(tài)或者觀察值)筑煮,所以另一個(gè)非常常見的 HMM 的表達(dá)方式是用每個(gè)時(shí)刻的對(duì)應(yīng)的狀態(tài)和觀察值的隨機(jī)變量的 Graphical Model 來表示,例如我們直接從 Wikipedia 上盜用一個(gè)圖(它這里用表示狀態(tài)粤蝎,表示觀察值):
從這個(gè) Graphical Model 上能更加清楚地看出各個(gè)隨機(jī)變量之間的條件獨(dú)立性真仲,也就是 Markov 性質(zhì)。不過不要忘記的是在這個(gè)圖模型中每個(gè)橫向箭頭所對(duì)應(yīng)的轉(zhuǎn)移概率函數(shù)全都是一樣的初澎,同樣秸应,縱向箭頭所對(duì)應(yīng)的觀察值生成概率分布也是所有時(shí)刻公用的。
最后碑宴,假設(shè)胡適先生上面的日記日期是連續(xù)的話软啼,我用 Viterbi 算法算了一下,最可能的狀態(tài) sequence 是:他進(jìn)入了“重度拖延癥”狀態(tài)之后就再也沒能出來過延柠。^_^bb嘛焰宣,也許是模型參數(shù)設(shè)得不夠好呢?