相信只要是涉足人工智能領域挪丢,你都會聽到這樣一個神秘的名字-隱含馬爾可夫模型。是的卢厂,看了一圈文章和資料后乾蓬,除了知道馬爾可夫是個聰明絕頂?shù)娜耍渌木蜕兑膊恢懒恕?/p>
正式開講之前慎恒,先大概了解一下任内,這個算法有哪些主要的應用場景。
一個詞概括融柬,進行預測死嗦。
20世界80年代末李開復堅持采用隱馬爾可夫模型的框架,成功的開發(fā)了世界上第一個大詞匯量連續(xù)語音識別系統(tǒng)sphinx粒氧。接下來越除,隱馬爾可夫模型陸續(xù)成功地應用于機器翻譯、拼寫糾錯外盯、手寫體識別摘盆、圖像處理、基因序列分析等領域饱苟。近20年來孩擂,它廣泛應用于股票預測和投資。
今天箱熬,我想拋棄那些眼花繚亂的數(shù)學公式类垦,去看看隱含馬爾可夫模型到底是什么?怎么用城须?
一护锤、隱含馬爾可夫模型是什么?
我們還是分成三個階段來了解酿傍。
【概念一】馬爾可夫假設
隨機過程中各個狀態(tài)st的概率分布烙懦,只與它前一個狀態(tài)st-1有關。
舉一個例子赤炒,我們可以把S1 ,?S2,S3...St...看做北京每天的最高氣溫氯析,這里面的每個狀態(tài)St都是隨機的。理論上莺褒,任何一天的最高氣溫St取值都可能和這段時間以前的最高氣溫是相關的掩缓。
馬爾可夫這個大神為了簡化問題,做出了如上圖的簡化的假設遵岩∧憷保回到上面的例子巡通,第二天的最高氣溫只跟昨天有關而與其他日期沒有任何關聯(lián)。
【概念二】馬爾可夫鏈
符合馬爾可夫假設的隨機過程稱為馬爾可夫過程舍哄,也稱為馬爾可夫鏈宴凉。
在這個馬爾可夫鏈中,四個圈表示四個狀態(tài)表悬,每條邊表示一個可能的狀態(tài)轉換弥锄,邊上的權值是轉移概率。
例如蟆沫,某個時刻t的狀態(tài)St是m2,則下一個時刻St+1=m3的概率是0.6籽暇,用數(shù)學符號表示是P(St+1=m3|St=m2)=0.6。
把這個馬爾可夫鏈想象成一臺機器饭庞,它隨機選擇一個狀態(tài)作為初始狀態(tài)戒悠,然后按照上述規(guī)則隨機選擇后續(xù)狀態(tài)。結果可能如下:
S1=m1 ?S2=m2 ??S3=m3 ?S4=m4
S1=m2 ?S2=m4 ???
S1=m3 ?S2=m3 ??S3=m4 ?
... ????????... ???????...
這樣經過一段時間的運轉舟山,就會產生一個狀態(tài)序列S1救崔,S2,S3... St捏顺。我們可以數(shù)出mi出現(xiàn)的次數(shù)六孵,以及mi轉換到mj的轉移概率》荆基于馬爾可夫假設劫窒,每一個狀態(tài)只與前一個狀態(tài)相關,例如從m3轉移到m4拆座,不論在此之前是怎么進入m3主巍,這個概率都是0.3。
【概念三】隱含馬爾可夫模型
隱馬爾可夫模型是上述馬爾可夫鏈的一個擴展:任一時刻t的狀態(tài)st是不可見的挪凑。所以觀察者沒法通過觀察到一個狀態(tài)序列s1,s2,s3,…sT-1來推測轉移概率等參數(shù)孕索。但是,隱馬爾可夫在每個時刻t會輸出一個符號ot躏碳,而且ot和st相關而且僅和st相關搞旭。這個被稱為獨立輸出假設。隱馬爾可夫模型結構如下:
其中包含的狀態(tài)s1,s2,s3,s4是一個典型的馬爾可夫鏈菇绵。鮑姆把這種模型稱為“隱含”馬爾可夫模型肄渗。
那么,問題來了咬最,什么是隱患狀態(tài)翎嫡?從馬爾可夫鏈中,我們看到的都是可見狀態(tài)啊永乌。這個問題真的困擾了我很久惑申,我找了大量的資料具伍,發(fā)現(xiàn)還是這樣一個經典例子能夠解釋得清楚,請看:
假設我手里有三個不同的骰子圈驼。第一個骰子是我們平常見的骰子(稱這個骰子為D6)人芽,6個面,每個面(1碗脊,2啼肩,3橄妆,4衙伶,5,6)出現(xiàn)的概率是1/6害碾。第二個骰子是個四面體(稱這個骰子為D4)矢劲,每個面(1,2慌随,3芬沉,4)出現(xiàn)的概率是1/4。第三個骰子有八個面(稱這個骰子為D8)阁猜,每個面(1丸逸,2,3剃袍,4黄刚,5,6民效,7憔维,8)出現(xiàn)的概率是1/8。
現(xiàn)在畏邢,我們開始擲骰子业扒,得到如下結果:
看出來了吧?什么是隱含狀態(tài)舒萎?擲出來的數(shù)字是可見的程储,但是每次取哪個骰子,我們是不是不知道臂寝?
回到隱含馬爾可夫模型虱肄,符號ot就是我們擲出來得數(shù)字(1,2交煞,3咏窿,4,5素征,6集嵌,7萝挤,8),隱患狀態(tài)st就是我們擲得骰子(D6根欧,D4怜珍,D8)。
【總結】
現(xiàn)在凤粗,我們以擲骰子為例酥泛,來總結一下隱患馬爾可夫模型得幾個構成要素:
1)可見狀態(tài)集:D6的可見狀態(tài)集(1,2嫌拣,3柔袁,4,5异逐,6)捶索,D4的可見狀態(tài)集(1,2灰瞻,3腥例,4),D8的可見狀態(tài)集(1酝润,2燎竖,3,4要销,5构回,6,7蕉陋,8)
2)隱患狀態(tài)集:上圖中的隱含狀態(tài)集為D6,D8,D8,D6,D4...
3)初始(隱含)狀態(tài)轉移概率:比如捐凭,第一次拿到D6,D4和D8的概率分別是0.1,0.4凳鬓,0.5茁肠。
4)(隱含)狀態(tài)轉移概率:比如,我們可以這樣定義缩举,D6后面不能接D4垦梆,D6后面是D6的概率是9,是D8的概率是0.1仅孩。
5)(隱含狀態(tài)至可見狀態(tài)的)輸出概率:就我們的例子來說托猩,六面骰(D6)產生1的輸出概率是1/6。產生2辽慕,3京腥,4,5溅蛉,6的概率也都是1/6公浪。我們同樣可以對輸出概率進行其他定義他宛。比如,我有一個被賭場動過手腳的六面骰子欠气,擲出來是1的概率更大厅各,是1/2,擲出來是2预柒,3队塘,4,5宜鸯,6的概率是1/10憔古。
二、隱含馬爾可夫模型能解決什么問題顾翼?
通用地講投放,圍繞HMM有三種類型的問題
問題1:給定一個模型奈泪,如何計算某個特定的輸出序列的概率适贸。(概率計算問題)
問題2:給定一個模型和某個特定的輸出序列,如何找到最可能產生這個輸出的狀態(tài)序列涝桅。(解碼拜姿,預測問題)
問題3:給定足夠的觀測數(shù)據(jù),如何估計隱馬爾可夫模型的參數(shù)冯遂。(非監(jiān)督學習方法)
目前來說蕊肥,第二種問題最常用,【中文分詞】【語音識別】【新詞發(fā)現(xiàn)】【詞性標注】都有它的一席之地蛤肌。
隱含馬爾可夫模型的應用
講到這壁却,隱馬爾可夫模型的理論定義和三個問題都介紹完畢,新問題又來了裸准,這個模型到底有什么用展东?
接下來請看一下典型的通信系統(tǒng)是什么樣子的,想必“隱馬爾可夫模型有什么用”這個問題便不攻自破了炒俱。
1)發(fā)送者(人或者機器)發(fā)送信息時盐肃,需要采用一種能在媒體中(比如空氣、電線)傳播的信號权悟,比如語音或者電話線的調制信號砸王,這個過程就是廣義上的編碼。
2)然后通過媒體傳播到接收方峦阁,這個過程是信道傳輸谦铃。
3)在接收方,接收者(人或者機器)根據(jù)事先約定好的方法榔昔,將這些信號還原成發(fā)送者的信息驹闰,這個過程是廣義上的解碼凿跳。
其中S1,S2,S3,…表示信息源發(fā)出的信號,比如手機發(fā)送的信號疮方。O1,O2,O3,…是接收器(比如另一部手機)接收到的信號控嗜。通信中的解碼就是根據(jù)接收到的信號O1,O2,O3,…,還原出發(fā)送的信號S1,S2,S3,…骡显。
這跟自然語言處理又有什么關系疆栏?不妨換個角度來考慮這個問題,所謂的語音識別惫谤,就是聽者(機器)去猜測說話者要表達的意思壁顶。這就像通信系統(tǒng)中,接收端根據(jù)收到的信號去還原出發(fā)送端發(fā)出的信號溜歪。
在通信中若专,如何根據(jù)接收端的觀測信號O1,O2,O3,…來推測信號源發(fā)送的信息S1,S2,S3,…呢?只需要從所有的源信息中找到最可能產生出觀測信號的那一個信息蝴猪。
同樣调衰,很多自然語言處理的應用也可以這樣理解。在從漢語到英語的翻譯中自阱,說話者講的是漢語嚎莉,但是信道傳播編碼的方式是英語,如果利用計算機沛豌,根據(jù)接收到的英語信息趋箩,推測說話者的漢語意思,就是機器翻譯加派。同樣叫确,如果根據(jù)帶有拼寫錯誤的語句推測說話者想表達的正確意思,那就是自動糾錯芍锦。這樣竹勉,幾乎所有的自然語言處理問題都可以等價成通信的解碼問題。?