語言識別模型的起源,一個數學家數了數小說中的20000字母

語言識別模型源於一個數學家讀小說的故事。測試

1913年,俄羅斯數學家安德雷·安德耶維齊·馬爾科夫拿起一本俄羅斯文學的經典做品,亞歷​​山大·普希金的歌劇小說《尤金·奧涅金》。不過馬爾科夫只是爲了測試自1909年發展起來的機率論。數學家更想看到一個個字母后面的數學結構。那時的機率論主要用來分析輪盤賭局和硬幣翻轉等現象,認爲以前的結果不會影響到的當前事件的可能性。可是馬爾科夫不贊同,他以爲大多數事情都有因果關係,他想要經過幾率分析一些事情,並創建模型。ui

德雷·安德耶維齊·馬爾科夫url

《尤金·奧涅金》成爲馬爾科夫的試驗材料。他的假設聽上去匪夷所思——這本經典文學做品中,某個位置會出現什麼字母,某種程度上取決於它以前的字母。spa

計算機還沒出現的1913,馬爾科夫抄錄了《尤金·奧涅金》書中的前 20000 個字母,不包括標點和空格。而後按10*10的排列方式,填在200個網格中,開始逐行逐列對元音字母進行計數。統計完發現,43%的字母是元音,57%是輔音。馬爾科夫還將這些字母分紅成對的元音和輔音組合,結果是:1104個元音對、3827個輔音對、15069個元音-輔音和輔音-緣由對。從統計學看,這證實,在普希金文本中的任何給定字母,若是是元音,則下一字母多是輔音,反之亦然。.net

馬爾科夫用這個結果證實《尤金·奧涅金》的文本不是字母的隨機分佈,而是具備能夠建模的基本統計的性質。後來,人們稱馬爾科夫這是給本身的數學技能找到一個實際用途——用鏈模型來模擬俄羅斯文學中輔音和元音的頭韻法。3d

鏈模型就是馬爾科夫鏈,又稱離散時間馬爾科夫鏈,指在狀態空間中,從一個狀態轉換到另外一個狀態的隨機過程,該過程是「無記憶」性質的,下一狀態的機率分佈只能由當前狀態決定。馬爾科夫在隨機過程領域的研究成果還有馬爾科夫決策過程,它提供面對部分隨機、部分可由人類決策的狀態下,如何進行決策,通過演化,被普遍應用在機器人學、自動化控制等領域。在馬爾科夫鏈衍和馬爾科夫決策過程理論基礎上,20世紀60年代,Leonard E. Baum 和其它一些做者描述了一種隱性馬爾科夫模型,這是大多數如今自動語音識別系統的基礎。code

維基百科上有一個事例來解釋隱形馬爾科夫模型。blog

假設你有一個住的很遠的朋友,他會天天打電話說當天作了什麼。他只會作三件事:公園散步、購物、清理房間,他根據天氣選擇作什麼事。你不知道他住處天天的天氣怎麼樣,可是你知道總趨勢,在他告訴你天天作了什麼事情的基礎上,你要猜想他所在地的天氣情況。事件

也就是說,在這個隱形馬爾科夫模型中,「雨」和「晴」的狀態對你來講是隱藏的,可觀察的數據就是「公園散步」、「購物」、「清理房間」,那麼用 Python 寫下來就是:ip

 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 表明第一次打電話的不肯定性,此時機率分佈不平均。transition_probability 表示基於馬爾科夫鏈模型的天氣變遷。emission_probability 表示了你朋友天天作某件事的機率。 

再以語音系統爲例,隱形馬爾科夫模型在語音處理上,能夠經過隱藏條件猜想下一個音,具體可從語義和發音兩方面看。一是單字的發音有先後關係,如英語中的"They are"經常發音成"They're",或是"Did you"會由於"you"的發音受"did"的影響,經常發音成"did ju"。語音識別須要考慮到每一個音節的先後關係,纔能有較高的準確率。二是,句子中的先後字節間的關係,好比英文中動詞後常接固定介詞或對應名詞,中文也相似。

固然,從馬爾科夫數字母,到隱性馬爾科夫模型的提出,再到語言識別、生成模型應用,期間還有不少人提出了各類各樣的理論。其中影響比較大的是信息論創造者克勞德·艾爾伍德·香農。

香農對馬爾科夫數字母背後的思想非常着迷,像馬爾科夫同樣,香農嘗試創建語言的統計模型,經過統計規則生成文本。

香農最初的實驗,經過26個字母加1個空格,共計27個符號,隨機抽取字母生成句子,每一個字母機率相同,獲得:

XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYD QPAAMKBZAACIBZLHJQD

香農說生成的這句話毫無心義,由於當咱們交流時,不會選擇同等機率的字母組合。正如馬爾科夫的實驗代表,輔音比元音更可能出現。可是在更高的粒度上,E 比 S 更廣泛,S 比 Q 更廣泛。爲了解決這個問題,香農修改了原始實驗字母,使其更精確模擬英語中每一個字母出現的機率。好比 E 出現的機率比 Q 高11%,這樣得出一個新的結果,更接近一個正確的句子:

OCRO HLI RGWR NMIELWIS EU LL NBNESEBYA THEI EEI ALHENHTTPA OOBTTVA NAH BRL

在以後的系列實驗中,香農證實了,隨着統計模型變得更加複雜,能夠獲得更容易理解的結果。

馬爾科夫和香農的實驗,被看作是對語言的統計屬性進行建模提供了一種新的思路,他們的語言建模和生成的統計方法爲天然語言處理開創了一個新的時代。

參考:

https://spectrum.ieee.org/tech-talk/artificial-intelligence/machine-learning/andrey-markov-and-claude-shannon-built-the-first-language-generation-models

https://zh.wikipedia.org/wiki/%E5%AE%89%E5%BE%B7%E9%9B%B7%C2%B7%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB

相關文章
相關標籤/搜索