語言識(shí)別模型的起源,一個(gè)數(shù)學(xué)家數(shù)了數(shù)小說中的 20000 字母
語言識(shí)別模型源于一個(gè)數(shù)學(xué)家讀小說的故事。
1913 年,俄羅斯數(shù)學(xué)家安德雷 · 安德耶維齊 · 馬爾科夫拿起一本俄羅斯文學(xué)的經(jīng)典作品,亞歷山大 · 普希金的歌劇小說。不過馬爾科夫只是為了測試自 1909 年發(fā)展起來的概率論。數(shù)學(xué)家更想看到一個(gè)個(gè)字母后面的數(shù)學(xué)結(jié)構(gòu)。那時(shí)的概率論主要用來分析輪盤賭局和硬幣翻轉(zhuǎn)等現(xiàn)象,認(rèn)為之前的結(jié)果不會(huì)影響到的當(dāng)前事件的可能性。但是馬爾科夫不贊同,他覺得大多數(shù)事情都有因果關(guān)系,他想要通過概率分析一些事情,并建立模型。
德雷 · 安德耶維齊 · 馬爾科夫
成為馬爾科夫的試驗(yàn)材料。他的假設(shè)聽上去匪夷所思——這本經(jīng)典文學(xué)作品中,某個(gè)位置會(huì)出現(xiàn)什么字母,某種程度上取決于它之前的字母。
計(jì)算機(jī)還沒出現(xiàn)的 1913,馬爾科夫抄錄了書中的前 20000 個(gè)字母,不包括標(biāo)點(diǎn)和空格。然后按 10*10 的排列方式,填在 200 個(gè)網(wǎng)格中,開始逐行逐列對(duì)元音字母進(jìn)行計(jì)數(shù)。統(tǒng)計(jì)完發(fā)現(xiàn),43% 的字母是元音,57% 是輔音。馬爾科夫還將這些字母分成成對(duì)的元音和輔音組合,結(jié)果是:1104 個(gè)元音對(duì)、3827 個(gè)輔音對(duì)、15069 個(gè)元音 - 輔音和輔音 - 元音對(duì)。從統(tǒng)計(jì)學(xué)看,這證明,在普希金文本中的任何給定字母,如果是元音,則下一字母可能是輔音,反之亦然。
馬爾科夫用這個(gè)結(jié)果證明的文本不是字母的隨機(jī)分布,而是具有可以建模的基本統(tǒng)計(jì)的性質(zhì)。后來,人們稱馬爾科夫這是給自己的數(shù)學(xué)技能找到一個(gè)實(shí)際用途——用鏈模型來模擬俄羅斯文學(xué)中輔音和元音的頭韻法。
鏈模型就是馬爾科夫鏈,又稱離散時(shí)間馬爾科夫鏈,指在狀態(tài)空間中,從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的隨機(jī)過程,該過程是 “無記憶”性質(zhì)的,下一狀態(tài)的概率分布只能由當(dāng)前狀態(tài)決定。馬爾科夫在隨機(jī)過程領(lǐng)域的研究成果還有馬爾科夫決策過程,它提供面對(duì)部分隨機(jī)、部分可由人類決策的狀態(tài)下,如何進(jìn)行決策,經(jīng)過演化,被廣泛應(yīng)用在機(jī)器人學(xué)、自動(dòng)化控制等領(lǐng)域。在馬爾科夫鏈衍和馬爾科夫決策過程理論基礎(chǔ)上,20 世紀(jì) 60 年代,Leonard E. Baum 和其它一些作者描述了一種隱性馬爾科夫模型,這是大多數(shù)現(xiàn)在自動(dòng)語音識(shí)別系統(tǒng)的基礎(chǔ)。
維基百科上有一個(gè)事例來解釋隱形馬爾科夫模型。
假設(shè)你有一個(gè)住的很遠(yuǎn)的朋友,他會(huì)每天打電話說當(dāng)天做了什么。他只會(huì)做三件事:公園散步、購物、清理房間,他根據(jù)天氣選擇做什么事。你不知道他住處每天的天氣怎么樣,但是你知道總趨勢,在他告訴你每天做了什么事情的基礎(chǔ)上,你要猜測他所在地的天氣狀況。
也就是說,在這個(gè)隱形馬爾科夫模型中,“雨”和 “晴”的狀態(tài)對(duì)你來說是隱藏的,可觀察的數(shù)據(jù)就是 “公園散步”、“購物”、“清理房間”,那么用 Python 寫下來就是:
states = ('Rainy', 'Sunny') observations = ('walk', 'shop', 'clean') start_probability = {'Rainy': 0.6, 'Sunny': 0.4} transition_probability = { 'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3}, 'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6}, } emission_probability = { 'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5}, 'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1}, }
在這些代碼中,start_probability 代表第一次打電話的不確定性,此時(shí)概率分布不平均。transition_probability 表示基于馬爾科夫鏈模型的天氣變遷。emission_probability 表示了你朋友每天做某件事的概率。
再以語音系統(tǒng)為例,隱形馬爾科夫模型在語音處理上,可以通過隱藏條件猜測下一個(gè)音,具體可從語義和發(fā)音兩方面看。一是單字的發(fā)音有前后關(guān)系,如英語中的 "They are" 常常發(fā)音成 "They're",或是"Did you"會(huì)因?yàn)?you"的發(fā)音受"did"的影響,常常發(fā)音成"did ju"。語音識(shí)別需要考慮到每個(gè)音節(jié)的前后關(guān)系,才能有較高的準(zhǔn)確率。二是,句子中的前后字節(jié)間的關(guān)系,比如英文中動(dòng)詞后常接固定介詞或?qū)?yīng)名詞,中文也類似。
當(dāng)然,從馬爾科夫數(shù)字母,到隱性馬爾科夫模型的提出,再到語言識(shí)別、生成模型應(yīng)用,期間還有很多人提出了各種各樣的理論。其中影響比較大的是信息論創(chuàng)造者克勞德 · 艾爾伍德 · 香農(nóng)。
香農(nóng)對(duì)馬爾科夫數(shù)字母背后的思想很是著迷,像馬爾科夫一樣,香農(nóng)嘗試建立語言的統(tǒng)計(jì)模型,通過統(tǒng)計(jì)規(guī)則生成文本。
香農(nóng)最初的實(shí)驗(yàn),通過 26 個(gè)字母加 1 個(gè)空格,共計(jì) 27 個(gè)符號(hào),隨機(jī)抽取字母生成句子,每個(gè)字母概率相同,得到:
XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYD QPAAMKBZAACIBZLHJQD
香農(nóng)說生成的這句話毫無意義,因?yàn)楫?dāng)我們交流時(shí),不會(huì)選擇同等概率的字母組合。正如馬爾科夫的實(shí)驗(yàn)表明,輔音比元音更可能出現(xiàn)。但是在更高的粒度上,E 比 S 更普遍,S 比 Q 更普遍。為了解決這個(gè)問題,香農(nóng)修改了原始實(shí)驗(yàn)字母,使其更精確模擬英語中每個(gè)字母出現(xiàn)的概率。比如 E 出現(xiàn)的概率比 Q 高 11%,這樣得出一個(gè)新的結(jié)果,更接近一個(gè)正確的句子:
OCRO HLI RGWR NMIELWIS EU LL NBNESEBYA THEI EEI ALHENHTTPA OOBTTVA NAH BRL
在之后的系列實(shí)驗(yàn)中,香農(nóng)證明了,隨著統(tǒng)計(jì)模型變得更加復(fù)雜,可以得到更容易理解的結(jié)果。
馬爾科夫和香農(nóng)的實(shí)驗(yàn),被看做是對(duì)語言的統(tǒng)計(jì)屬性進(jìn)行建模提供了一種新的思路,他們的語言建模和生成的統(tǒng)計(jì)方法為自然語言處理開創(chuàng)了一個(gè)新的時(shí)代。