隱含馬爾可夫模型是什么以及如何應(yīng)用
隱含馬爾可夫模型最早成功的使用場景是語音識別,后來陸續(xù)成功的應(yīng)用在機器翻譯、拼寫錯誤、手寫體識別、圖像處理、基因序列分析等很多it領(lǐng)域,目前也被用于股票預(yù)測和投資。
背景介紹
若只有兩個事件Ot,St,那么,P(Ot|St) = P(Ot,St)/P(St)。
條件概率的意思:就是事件Ot在另外一個事件St已經(jīng)發(fā)生條件下的發(fā)生概率,條件概率表示為P(Ot|St),讀作“在St條件下Ot的概率”。
如果有足夠多人工標(biāo)記的數(shù)據(jù),知道經(jīng)過狀態(tài)St有多少次#(St),每次經(jīng)過這個狀態(tài)時,分別產(chǎn)生的輸出Ot是什么,并分別有多少次的#(Ot,St),就可以用兩者的比值P(Ot|St) =#(Ot,St)/#(St),估算出模型的參數(shù)。
有限狀態(tài)機
有限狀態(tài)機是一個特殊的有向圖,他包括一些狀態(tài)(節(jié)點)和連接這些狀態(tài)的有向弧。
地址的識別和分析是本地搜索必不可少的技術(shù),判斷一個地址的正確性,同時非常準(zhǔn)確的提煉出相應(yīng)的地理位置信息(省-市-區(qū)-街道-門牌號等)看似簡單實際很麻煩。
如:北京市大興區(qū)欣航路與黃鵝路交叉口東150米;北京市朝陽區(qū)東壩單店西路2號院。
這些地址寫的都有點模糊,但是郵件和包裹都能收到,說明郵遞員可以識別。但是,如果讓一個程序員寫一個分析器分析這些地址的描述,恐怕就不是一件容易的事情了。根本原因在于,地址的描述雖然看上去簡單,但是它依然是比較復(fù)雜的上下文有關(guān)的文法,而不是上下文無關(guān)。
如:北京市海淀區(qū)馬連洼街道19號院。當(dāng)識別器掃描到馬連洼街道時,它和后面的門牌號是否構(gòu)成一個正確的地址,需要看它的上下文即城市名。地址的文法是上下文有關(guān)文法中相對簡單的一種,因此有很多識別和分析的方法,但最有效的是有限動態(tài)機。
有限狀態(tài)機是一個特殊的有向圖,他包括一些狀態(tài)(節(jié)點)和連接這些狀態(tài)的有向弧。
每一個有限狀態(tài)機都有一個開始狀態(tài)和一個終止?fàn)顟B(tài),以及若干中間狀態(tài),每一條弧上都帶有從一個狀態(tài)進入下一個狀態(tài)的條件。比如:在途中,當(dāng)前狀態(tài)是“省”,如果遇到一個詞組和(區(qū))縣有關(guān),那么就進入“區(qū)縣”的狀態(tài),如果遇到的下一個詞組和城市有關(guān),那么就進入“市”的狀態(tài),如此等等。
如果一條地址能從狀態(tài)機的開始狀態(tài)經(jīng)過狀態(tài)機的若干中間狀態(tài),走到終止?fàn)顟B(tài),則這條地址有效,否則無效。比如:“北京市建國路88號”對于上面的有限狀態(tài)來講有效,而“上海市遼寧省馬家莊”則無效,因為無法從市走到省。
使用有效狀態(tài)機識別地址,關(guān)鍵要解決兩個問題:
- 通過一些有效的地址建立狀態(tài)機;
- 給定有限的狀態(tài)機后,地址字串的匹配算法。
有了關(guān)于地址的有限狀態(tài)機后,就可以用它分析網(wǎng)頁,找出網(wǎng)頁的地址部分,建立本地搜索的數(shù)據(jù)庫。同樣,也可以對用戶輸入的查詢進行分析,挑出其中描述地址的部分。當(dāng)然,剩下的關(guān)鍵字就是用戶要查找的內(nèi)容。比如:對于用戶輸入的“北京市建國路附近的麻辣燙”,本地會自動識別出地址“北京市建國路”和要找的對象“麻辣燙”。
基于狀態(tài)機的地址識別方法在實用中會存在一些局限:當(dāng)用戶輸入的地址不太標(biāo)準(zhǔn)時或者有錯別字的時候,有限狀態(tài)機會束手無措,因為它只能進行嚴(yán)格的匹配。當(dāng)用戶希望看到可以進行模糊匹配,并給出一個字串為正確地址的可能性。為了實現(xiàn)這一目的,科學(xué)家們提出了基于概率的有限狀態(tài)機。
馬爾可夫鏈
19世紀(jì),概率論的發(fā)展從相對靜態(tài)的隨機變量的研究到對隨機變量的時間序列s1,s2,s3…st,…即隨機過程(動態(tài))的研究。隨機過程要比隨機變量復(fù)雜得多。
- 首先,在任何時刻t,對應(yīng)的狀態(tài)時st,都是隨機的。舉個常見的例子,把s1,s2,s3…st,…看成是北京每天的高溫,這里面每一個st都是隨機的。
- 其次,任意狀態(tài)st的取值都可能和周圍的其他狀態(tài)有關(guān)。也就是說,任何一天的最高溫度,與這段時間以前的溫度有關(guān)的,這樣隨機過程就有了兩個維度的不確定性。
馬爾可夫為簡化這一問題,提出一種簡化的假設(shè),即隨機過程中的每個狀態(tài)st的概率分布,只與他的前一個狀態(tài)有關(guān)即p(st|s1,s2,s3…st-1)=p(st|st-1)。
比如:對于天氣預(yù)報,硬性假設(shè)今天的氣溫只和昨天有關(guān)而和前天無關(guān)。當(dāng)然這種假設(shè)未必適合所有的應(yīng)用,但是至少對以前很多不好解決的問題給出了相似解。這個假設(shè)后來被命名為馬爾可夫假設(shè),而符合這個假設(shè)的隨機過程稱為馬爾可夫過程,也稱為馬爾可夫鏈。
在馬爾可夫鏈中,四個圈表示四個狀態(tài),每條邊表示一個可能的狀態(tài)轉(zhuǎn)換,邊上的權(quán)值是轉(zhuǎn)移概率。例如:狀態(tài)m1到m2之間只有一條邊,并且邊上權(quán)值為1.0.這表示從m1只可能轉(zhuǎn)換到m2,轉(zhuǎn)移概率是100%。從m2出發(fā)的有兩條邊:到m3和到m4,其中0.6表示:某個時刻的狀態(tài)是m2,下一個時刻的狀態(tài)是m3的概率是60%。
把馬爾可夫鏈想象成一臺機器,它隨機地選擇一個狀態(tài)作為初始狀態(tài),隨后按照上述規(guī)則隨機的選擇后續(xù)狀態(tài)。運行一段時間后,就會產(chǎn)生一個狀態(tài)序列s1,s2,s3…st,…??吹竭@個序列,不難算出某個狀態(tài)的mi 的出現(xiàn)次數(shù)以及從mi到mj的轉(zhuǎn)換次數(shù),從而估算出概率。
隱含馬爾可夫模型是上述馬爾可夫鏈的一個拓展,在任何時刻t的狀態(tài)st是不可預(yù)見的。所以我們沒辦法觀察一個狀態(tài)序列,來推測出轉(zhuǎn)移概率等參數(shù)。但是,隱含馬爾可夫模型在每個時刻t會輸出一個符號o,而且這個符號僅與st相關(guān)。
使用場景
隱含馬爾可夫模型最早成功的使用場景是語音識別,后來陸續(xù)成功的應(yīng)用在機器翻譯、拼寫錯誤、手寫體識別、圖像處理、基因序列分析等很多it領(lǐng)域,目前也被用于股票預(yù)測和投資。
目前國內(nèi)已有的語音識別是iPhone的Siri,小米的小愛音箱能夠做到的也只是能夠喚醒某個軟件的啟動,微軟的小冰目前仍然有很大的局限性。
這是因為數(shù)據(jù)是人工標(biāo)記的,這種方法是有監(jiān)督的訓(xùn)練方法。人是無法確定產(chǎn)生某個語音的狀態(tài)序列的,因此也就無法標(biāo)注訓(xùn)練模型的數(shù)據(jù)。而在另外一些應(yīng)用中,雖然標(biāo)注數(shù)據(jù)是可行的,但是成本非常高。比如:訓(xùn)練中英機器翻譯的模型,需要大量中英對照的語料,還要把中英文的詞組一一對應(yīng)起來,這個成本非常高。
參考資料:《如何用簡單易懂的例子解釋隱馬爾可夫模型?》
本文由 @小可愛 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Pixabay,基于 CC0 協(xié)議
- 目前還沒評論,等你發(fā)揮!