數(shù)學(xué)之美 系列三 -- 隱含馬爾可夫模型在語言處理中的應(yīng)用
uT("time114523190259377514");前言:隱含馬爾可夫模型是一個(gè)數(shù)學(xué)模型,到目前為之,它一直被認(rèn)為是實(shí)現(xiàn)快速精確的語音識別系統(tǒng)的最成功的方法。復(fù)雜的語音識別問題通過隱含馬爾可夫模型能非常簡單地被表述、解決,讓我不由由衷地感嘆數(shù)學(xué)模型之妙。
自然語言是人類交流信息的工具。很多自然語言處理問題都可以等同于通信系統(tǒng)中的解碼問題 -- 一個(gè)人根據(jù)接收到的信息,去猜測發(fā)話人要表達(dá)的意思。這其實(shí)就象通信中,我們根據(jù)接收端收到的信號去分析、理解、還原發(fā)送端傳送過來的信息。以下該圖就表示了一個(gè)典型的通信系統(tǒng):
其中 s1,s2,s3...表示信息源發(fā)出的信號。o1, o2, o3 ... 是接受器接收到的信號。通信中的解碼就是根據(jù)接收到的信號 o1, o2, o3 ...還原出發(fā)送的信號 s1,s2,s3...。
其實(shí)我們平時(shí)在說話時(shí),腦子就是一個(gè)信息源。我們的喉嚨(聲帶),空氣,就是如電線和光纜般的信道。聽眾耳朵的就是接收端,而聽到的聲音就是傳送過來的信號。根據(jù)聲學(xué)信號來推測說話者的意思,就是語音識別。這樣說來,如果接收端是一臺計(jì)算機(jī)而不是人的話,那么計(jì)算機(jī)要做的就是語音的自動識別。同樣,在計(jì)算機(jī)中,如果我們要根據(jù)接收到的英語信息,推測說話者的漢語意思,就是機(jī)器翻譯; 如果我們要根據(jù)帶有拼寫錯(cuò)誤的語句推測說話者想表達(dá)的正確意思,那就是自動糾錯(cuò)。
那么怎么根據(jù)接收到的信息來推測說話者想表達(dá)的意思呢?我們可以利用叫做“ 隱含馬爾可夫模型 ”(Hidden Markov Model)來解決這些問題。以語音識別為例,當(dāng)我們觀測到語音信號 o1,o2,o3 時(shí),我們要根據(jù)這組信號推測出發(fā)送的句子 s1,s2,s3。顯然,我們應(yīng)該在所有可能的句子中找最有可能性的一個(gè)。用數(shù)學(xué)語言來描述,就是在已知 o1,o2,o3,...的情況下,求使得條件概率
P (s1,s2,s3,...|o1,o2,o3....) 達(dá)到最大值的那個(gè)句子 s1,s2,s3,...
當(dāng)然,上面的概率不容易直接求出,于是我們可以間接地計(jì)算它。利用貝葉斯公式并且省掉一個(gè)常數(shù)項(xiàng),可以把上述公式等價(jià)變換成
P(o1,o2,o3,...|s1,s2,s3....) * P(s1,s2,s3,...)
其中
P(o1,o2,o3,...|s1,s2,s3....) 表示某句話 s1,s2,s3...被讀成 o1,o2,o3,...的可能性, 而
P(s1,s2,s3,...) 表示字串 s1,s2,s3,...本身能夠成為一個(gè)合乎情理的句子的可能性,所以這個(gè)公式的意義是用發(fā)送信號為 s1,s2,s3...這個(gè)數(shù)列的可能性乘以 s1,s2,s3...本身可以一個(gè)句子的可能性,得出概率。
(讀者讀到這里也許會問,你現(xiàn)在是不是把問題變得更復(fù)雜了,因?yàn)楣皆綄懺介L了。別著急,我們現(xiàn)在就來簡化這個(gè)問題。)我們在這里做兩個(gè)假設(shè):
第一,s1,s2,s3,... 是一個(gè)馬爾可夫鏈,也就是說,si 只由 si-1 決定 (詳見 系列一 );
第二, 第 i 時(shí)刻的接收信號 oi 只由發(fā)送信號 si 決定(又稱為獨(dú)立輸出假設(shè), 即 P(o1,o2,o3,...|s1,s2,s3....) = P(o1|s1) * P(o2|s2)*P(o3|s3)...。
那么我們就可以很容易利用算法 Viterbi 找出上面式子的最大值,進(jìn)而找出要識別的句子 s1,s2,s3,...。
滿足上述兩個(gè)假設(shè)的模型就叫隱含馬爾可夫模型。我們之所以用“隱含”這個(gè)詞,是因?yàn)闋顟B(tài) s1,s2,s3,...是無法直接觀測到的。
隱含馬爾可夫模型的應(yīng)用遠(yuǎn)不只在語音識別中。在上面的公式中,如果我們把 s1,s2,s3,...當(dāng)成中文,把 o1,o2,o3,...當(dāng)成對應(yīng)的英文,那么我們就能利用這個(gè)模型解決機(jī)器翻譯問題; 如果我們把 o1,o2,o3,...當(dāng)成掃描文字得到的圖像特征,就能利用這個(gè)模型解決印刷體和手寫體的識別。
P (o1,o2,o3,...|s1,s2,s3....) 根據(jù)應(yīng)用的不同而又不同的名稱,在語音識別中它被稱為“聲學(xué)模型” (Acoustic Model), 在機(jī)器翻譯中是“翻譯模型” (Translation Model) 而在拼寫校正中是“糾錯(cuò)模型” (Correction Model)。 而P (s1,s2,s3,...) 就是我們在系列一中提到的語言模型。
在利用隱含馬爾可夫模型解決語言處理問題前,先要進(jìn)行模型的訓(xùn)練。 常用的訓(xùn)練方法由伯姆(Baum)在60年代提出的,并以他的名字命名。隱含馬爾可夫模型在處理語言問題早期的成功應(yīng)用是語音識別。七十年代,當(dāng)時(shí) IBM 的 Fred Jelinek (賈里尼克) 和卡內(nèi)基·梅隆大學(xué)的 Jim and Janet Baker (貝克夫婦 ,李開復(fù)的師兄師姐) 分別獨(dú)立地提出用隱含馬爾可夫模型來識別語音,語音識別的錯(cuò)誤率相比人工智能和模式匹配等方法降低了三倍 (從 30% 到 10%)。 八十年代李開復(fù)博士堅(jiān)持采用隱含馬爾可夫模型的框架, 成功地開發(fā)了世界上第一個(gè)大詞匯量連續(xù)語音識別系統(tǒng) Sphinx。
我最早接觸到隱含馬爾可夫模型是幾乎二十年前的事。那時(shí)在《隨機(jī)過程》(清華“著名”的一門課)里學(xué)到這個(gè)模型,但當(dāng)時(shí)實(shí)在想不出它有什么實(shí)際用途。幾年后,我在清華跟隨王作英教授學(xué)習(xí)、研究語音識別時(shí),他給了我?guī)资墨I(xiàn)。 我印象最深的就是賈里尼克和李開復(fù)的文章,它們的核心思想就是隱含馬爾可夫模型。復(fù)雜的語音識別問題居然能如此簡單地被表述、解決,我由衷地感嘆數(shù)學(xué)模型之妙。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
