要畢業(yè)啦,小編最近忙著找工作九火,更新的比較慢赚窃,希望大家不要放棄我哦,電臀師兄的地域文章判別下期更新岔激,已經(jīng)約好啦~今天我們介紹上次說好的隱馬爾可夫模型(HMM)勒极。
關(guān)于HMM模型的介紹,網(wǎng)上的資料已經(jīng)爛大街虑鼎,但是大部分都是在背書背公式辱匿,盡可能的撇開公式,撇開推導(dǎo)炫彩。結(jié)合實(shí)際例子匾七,爭取做到雅俗共賞,童叟無欺江兢。沒有公式就沒有傷害昨忆,小編爭取盡可能少用公式。
文章最后有舉栗子??杉允,不喜歡從概念出發(fā)的同學(xué)們邑贴,可以直接跳到文末的例子分割線那~等有點(diǎn)感覺了限府,再回頭看概念和原理。
一痢缎、HMM的由來
隱馬爾可夫模型(Hidden Markov Model,HMM)其實(shí)并不是19世界俄羅斯數(shù)學(xué)家馬爾可夫(Andrey Markov)發(fā)明的世澜,而是美國數(shù)學(xué)家鮑姆等人提出的独旷,HMM的訓(xùn)練方法(鮑姆-韋爾奇算法)就是以他的名字命名的。
二寥裂、HMM的簡介
在介紹HMM之前嵌洼,我們可能需要先了解馬爾可夫假設(shè),馬爾可夫鏈等封恰,概念如下:
1 馬爾可夫假設(shè)
即隨機(jī)過程中各個(gè)狀態(tài)st的概率分布麻养,只與它前一個(gè)狀態(tài)st-1有關(guān),即
2 馬爾可夫鏈
符合馬爾可夫假設(shè)的隨機(jī)過程稱為馬爾可夫過程诺舔,也稱為馬爾可夫鏈鳖昌。如下圖:
圖1 馬爾可夫鏈
在上圖的馬爾可夫鏈中,四個(gè)圈表示四個(gè)狀態(tài)低飒,每條邊表示一個(gè)可能的狀態(tài)轉(zhuǎn)換许昨,邊上的權(quán)值是轉(zhuǎn)移概率。
3 隱馬爾可夫模型
隱馬爾可夫模型是上述馬爾可夫鏈的一個(gè)擴(kuò)展:任一時(shí)刻t的狀態(tài)st是不可見的褥赊。所以觀察者沒法通過觀察到一個(gè)狀態(tài)序列s1,s2,s3,…sT-1來推測轉(zhuǎn)移概率等參數(shù)糕档。但是,隱馬爾可夫在每個(gè)時(shí)刻t會(huì)輸出一個(gè)符號ot拌喉,而且ot和st相關(guān)而且僅和st相關(guān)速那。這個(gè)被稱為獨(dú)立輸出假設(shè)。隱馬爾可夫模型結(jié)構(gòu)如下:其中包含的狀態(tài)s1,s2,s3,s4是一個(gè)典型的馬爾可夫鏈尿背。鮑姆把這種模型稱為“隱含”馬爾可夫模型端仰。如下圖:
圖2 隱馬爾可夫模型
簡而言之,HMM的核心就是一個(gè)五元組:
狀態(tài)值集合
觀察值集合
轉(zhuǎn)移概率矩陣
發(fā)射概率矩陣
初始狀態(tài)分布
圍繞HMM有三種類型的問題:
1)給定一個(gè)模型残家,如何計(jì)算某個(gè)特定的輸出序列的概率榆俺。(利用Forward-backward算法)
2)給定一個(gè)模型和某個(gè)特定的輸出序列,如何找到最可能產(chǎn)生這個(gè)輸出的狀態(tài)序列坞淮。(利用viterbi算法)
3)給定足夠的觀測數(shù)據(jù)茴晋,如何估計(jì)隱馬爾可夫模型的參數(shù)。(利用Baum-Welch算法)
其中回窘,第三種問題最玄乎也最不常用诺擅,第二種問題最常用,【中文分詞】啡直,【語音識別】烁涌,【新詞發(fā)現(xiàn)】苍碟,【詞性標(biāo)注】都有它的一席之地。此處涉及的三個(gè)算法暫時(shí)不做深入介紹撮执,文章太長大家估計(jì)也看不下去微峰。
三、HMM的應(yīng)用
20世界80年代末李開復(fù)堅(jiān)持采用隱馬爾可夫模型的框架抒钱,成功的開發(fā)了世界上第一個(gè)大詞匯量連續(xù)語音識別系統(tǒng)sphinx蜓肆。接下來,隱馬爾可夫模型陸續(xù)成功地應(yīng)用于機(jī)器翻譯谋币、拼寫糾錯(cuò)仗扬、手寫體識別、圖像處理蕾额、基因序列分析等領(lǐng)域早芭。近20年來,它廣泛應(yīng)用于股票預(yù)測和投資诅蝶。所以大概應(yīng)用如下:
語音識別退个、中文斷詞/分詞或光學(xué)字符識別;
機(jī)器翻譯秤涩;
生物信息學(xué)和基因組學(xué)帜乞;
股票預(yù)測和投資;
四筐眷、HMM的相關(guān)文獻(xiàn)參考
1 Lawrence R. Rabiner, A Tutorial onHidden Markov Models and Selected Applications in Speech Recognition.Proceedings of the IEEE, 77 (2), p. 257–286, February 1989.
2 浙江大學(xué)計(jì)算機(jī)學(xué)院《人工智能引論》課件黎烈,《第九講 隱馬爾可夫模型初步》
~此處是例子分割線~
??????????????????????????????????
沒有公式,就沒有傷害匀谣,舉個(gè)栗子??:
假設(shè)你有一個(gè)住得很遠(yuǎn)的朋友照棋,他每天跟你打電話告訴你他那天做了什么。你的朋友僅僅對三種活動(dòng)感興趣:公園散步武翎,購物以及清理房間烈炭。他選擇做什么事情只憑天氣。你對于他所住的地方的天氣情況并不了解宝恶,但是你知道總的趨勢符隙。在他告訴你每天所做的事情基礎(chǔ)上,你想要猜測他所在地的天氣情況垫毙。
你認(rèn)為天氣的運(yùn)行就像一個(gè)馬爾可夫鏈霹疫。其有兩個(gè)狀態(tài) "雨"和"晴",但是你無法直接觀察它們综芥,也就是說丽蝎,它們對于你是隱藏的。每天膀藐,你的朋友有一定的概率進(jìn)行下列活動(dòng):“散步”屠阻,“購物”红省, 或 “清理”。 因?yàn)槟闩笥迅嬖V你他的活動(dòng)国觉,所以這些活動(dòng)就是你的觀察數(shù)據(jù)吧恃。這整個(gè)系統(tǒng)就是一個(gè)隱馬爾可夫模型HMM蚜枢。
你知道這個(gè)地區(qū)的總的天氣趨勢,并且平時(shí)知道你朋友會(huì)做的事情需频。也就是說這個(gè)隱馬爾可夫模型的參數(shù)是已知的丁眼。可以用程序語言(Python)寫下來:
在這些代碼中:
states代表狀態(tài)序列昭殉;
observations代表觀察序列苞七;
start_probability代表了你對于你朋友第一次給你打電話時(shí)的天氣情況的不確定性(你知道的只是那個(gè)地方平均起來下雨多些);
transition_probability表示基于馬爾可夫鏈模型的天氣變遷挪丢,在這個(gè)例子中蹂风,如果今天下雨乾蓬,那么明天天晴的概率只有30%;
emission_probability表示了你朋友每天做某件事的概率任内。如果下雨撵渡,有 50% 的概率他在清理房間;如果天晴死嗦,則有60%的概率他在外頭散步节腐;
今天的文章就到這里啦,希望沒有辜負(fù)大家的等待~下期見哈~