一、語言模型簡介
語言模型用於對特定序列的一系列詞彙的出現概率進行計算。一個長度爲m的詞彙序列{
其中
上面的P(S)即爲語言模型。
1.1 語言模型的應用
①機器翻譯:P(high winds tonite) > P(large winds tonite);
②拼寫糾錯:P(about fifteen minutes from) > P(about fifteen minuets from);
③語音識別:P(I saw a van) >> P(eyes awe of an);
自動文摘、問答系統、etc.!etc.!
二、Markov Assumption與N-gram
假設我們基於上述模型進行計算,那麼將會出現指數冪種可能句子,也無法有足夠的數據老訓練模型,這個時候馬爾科夫假設(Markov Assumption)就閃亮登場了,其假設當前出現的單詞僅僅與前一個或k個單詞有關,即:
Or
理論上k取得越大那麼模型的效果就會越好,但是如果取得過大又會出現原來的問題,在實際應用中,k的值一般取2或者3,即分別爲2-gram(Bigram model)和3-gram(Trigram model)。
最終每個單詞到來的概率計算公式爲:
相應的語言模型變爲:
三、建立語言模型
一般地,通過最大似然估計(Maximum Likelihood Estimate)來建立語言模型,即:
假設存在訓練語料爲:
< s> I am Sam < /s>
< s> Sam I am < /s>
< s> I do not like green eggs and ham < /s>
那麼通過計算可得:
如果存在一個更大的語料,通過同樣的計算方法得到如下信息:
最終句子< s> I want english food < /s>的概率爲:
P(< s> I want english food < /s>)
= P(I|< s>)× P(want|I)× P(english|want) × P(food|english) × P(< /s>|food)
=0 .000031
我們可以發現計算得到的數值通常很小,避免數據溢出、提高性能,通常會使用取log後使用加法運算替代乘法運算,即爲:
四、平滑技術
數據平滑是對頻率爲0的n元對進行估計,典型的平滑算法有加法平滑、Good-Turing平滑、Katz平滑、插值平滑,etc.
4.1 Add-one(Laplace) Smoothing
加一平滑法,又稱拉普拉斯定律,其保證每個n-gram在訓練語料中至少出現1次,以bigram爲例子,計算方法如下:
4.2 Good-Turing Smoothing
該方法首先我們假設在統計元組的過程中,發生c次N元組類別的數目爲
一個例子:
訓練集合:T={< s>what is it what is small?}|T|=8;
驗證集合:V={what is it small ? < s> flying birds are a bird.}, |V|=12;
在訓練集合上,我們得到:p(< s>)=p(it)=p(small)=p(?)=0.125, p(what)=p(is)=0.25,其他爲0;
如果不經過平滑處理,則驗證集上兩句子的概率分別爲:p(what is it?)=(0.25^2)(0.125^2)≈0.001 p(it is flying.)=0.125*0.25(0*2)=0;
現在用古德-圖靈算法進行平滑處理,如下:
首先計算,各發生c次N元組類別的數目,依次爲N(0)=6,N(1)=4,N(2)=2,N(i)=0 ,i>2:
其次,重新估計各概率值。
①對於發生0次的事件概率:Pr(.)=p(flying)=p(birds)=p(are)=p(bird)=p(a)=(0+1)*N(0+1)/(8*N(0))=1*4/(8*6)≈0.083
②對於發生1次的時間概率:Pr(it)=p(< s>)=p(small)=p(?)=(1+1)*N(1+1)/(8*N(1))=2*2/(8*4)=0.125
③對於發生兩次的時間概率:Pr(what)=Pr(is)=(2+1)*N(2+1)/(8*N(2))=3*0/(8*2)=0: 保持原值0.25
歸一化處理,6*P0+4*P1+2*P2=1.5。
所以,歸一化處理後:
p(it)=p(< s>)=p(small)=p(?)= 0.125/1.5 ≈0.08,
p(what)=p(is)= 0.25/1.5 ≈0.17
p(.)=p(birds)=p(are)=p(bird)=p(a) = 0.083/1.5 ≈0.06
最終計算得到:
p(what is it?)=(0175^2)*(0.08^2)≈0.0002;
p(it is flying.) ≈ 0.08*0.17*(0.06^2)≈0.00004。
4.3 Interpolation Smoothing
前面兩種平滑技術,對於未出現的n-gramd都進行了一樣的處理,其中肯定存在不合理之處,對於線性插值平滑技術,其基本思想是將高階模型和低階模型作線性組合,利用低元n-gram模型對高元n-gram模型進行線性插值。因爲在沒有足夠的數據對高元n-gram模型進行概率估計時,低元n-gram模型通常可以提供有用的信息。
對於三種數據:Training data、Held-out data和Test data;
然後,根據Training data構造初始的語言模型,並確定初始的λs(如均爲1);
最後,基於EM算法迭代地優化λs,使得Held-out data概率(如下式)最大化。
4.4 Stupid Backoff
五、評價方法
語言模型的評價方法在理論上可以使用困惑度/混亂度(preplexity),其基本思想是給測試集賦予較高概率值的語言模型較好,計算公式如下:
觀察上述公式可得困惑度越小,句子概率越大,則說明訓練得到的語言模型越好。以上即爲傳統中的傳統的語言模型做法。