Language Model
語言模型用來判斷:是否一句話從語法上通順
- LM—Obgective(目標(biāo)=) : Compute the probability of a sentence or sequence of words.
- P(s) = P(w1,w2,w3,w4,w5...wn)
方式:給定一個句子,計算該句子在當(dāng)前LM下的概率。重點是LM的訓(xùn)練。
Noisy Channel Model
P(text | source) ∝ P(source | text)* P(text)
∝:proportional 等同于
此公式考慮貝葉斯公式
-
應(yīng)用場景:語音識別、機器翻譯、拼寫糾正、OCR、密碼破解
- 共同點:給定一個信號,將其轉(zhuǎn)換成一個文本
給定一個 source 要轉(zhuǎn)換成指定text
由于source是指定的,因此P(source)不受text影響,可看做常量
Recap:Chain Rule
-
P(A,B,C,D) =P(A)* P(B|A)* P(C|A,B)*P(D|A,B,C) ——chain rule
- 把包含4個隨機變量的聯(lián)合分布,拆分成3個條件分布和1個P(A)
- P(A,B) = P(A|B)* P(B) = P(B|A)*P(A)
P(w1,w2,w3,w4,w5...wn) = P(w1)* P(w2|w1)* P(w3|w1w2)* P(w4|w1,w2,w3)* P(w5|w1,w2,w3,w4)...P(wn|w1,w2...wn-1) ————chain rule
Chain Rule for Language Model
條件若包含很多單詞,會有稀疏問題
Markov Assumption(馬爾可夫假設(shè) )
有些情況概率很難計算,此時考慮markov assumption估計概率
- first order markov assumption
- p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2)...p(Wn|Wn-1)
- secod order
- p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2,w1)...p(Wn|Wn-2,Wn-1)
- third order
- ...
Unigram, Bigram, N-gram
Language Model:Unigram
- P(w1,w2,w3,w4...Wn) = P(w1) * P(w2)* P(w3)...P(Wn)
Language Model:Bigram
<=> first order markov assumption
- p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2,w1)...p(Wn|Wn-2,Wn-1)
Language Model: N-gram
<=> Higher order (n>2)
Estimating Probability of Language Model (估計語言模型的概率)
Unigram:Estimating Probability
P(Wn) = 詞匯Wn出現(xiàn)次數(shù) / 語料庫所有詞匯數(shù)量V
Bigram:Estimating Probability
p(w1,w2,w3,w4...wn) = p(w1)* p(w2|w1)* p(w3|w2,w1)...p(Wn|Wn-2,Wn-1)
- P(Wn/Wn-2,Wn-1) = 出現(xiàn)Wn的同時也出現(xiàn)詞匯Wn-1,Wn-2的次數(shù) / 詞匯Wn出現(xiàn)次數(shù)
對于其中一項概率為0,可以作平滑處理
N-gram:Estimating Probability
同理Bigram estimating probability
Evaluation of Language Model(評估語言模型)
Perplexity
Perplexity = 2^(-x) ,
x : average log likelihood
將訓(xùn)練好的 LM 放入 語料庫,計算 likelihood。
likelihood 的越大,x越大,2^(-x) 越小,Perplexity越小,越小越好!!
(可以畫圖像更生動展示變化曲線)Perplexity 尤其適用 unsupervised 文本的情況
Perplexity計算
Perplexity = 2^(-x) ,
x : average log likelihood (平均 對數(shù) 似然)
計算X 的過程:
- likelihood : 計算P(Wn)
- log likelihood: 計算logP(Wn)
- average log likelihood: x = (logP(W1)+...+logP(Wn))/n
最后將x帶入Perplexity公式。
一般情況下,N-gram LM 效果更好
Smoothing(平滑處理)
Add-one Smoothing 方法(Laplace Smoothing 方法)
若不考慮Smoothing,通常計算的是PMLE,
- PMLE(Wi | Wi-1) = c((Wi , Wi-1)) / c(Wi )
但是此方法可能出現(xiàn)P(Wn)為0的情況而導(dǎo)致無法評估,因此引入Smoothing方法。
- PAdd-1(Wi | Wi-1) = c((Wi , Wi-1)) + 1 / c(Wi ) + V
- V是詞典的大?。o重復(fù)詞)
- 在分母中加V,會使得所有P()的總和為1
Add-K Smoothing(Laplace Smoothing)
- PAdd-1(Wi | Wi-1) = c((Wi , Wi-1)) + k / c(Wi ) + kV
- k=1時, 是Add-one Smoothing
如何選擇K
- K = 1,2,3...n ,一個一個計算對比找到最合適的 k
- 優(yōu)化 f(k) ,此時Perplexity = f(k),故 Minperplexity= Minf(k) => k= argmink f(k)
Interpolation 方法
背景:現(xiàn)在不出現(xiàn)的概率,不代表未來數(shù)據(jù)更多anyway還不出現(xiàn)
- 核心思路:在計算Trigram概率時同時Unigram,Bigram,Trigram出現(xiàn)的頻次
- P(Wn|Wn-1,Wn-2) = λ1P(Wn|Wn-1,Wn-2)+ λ2P(Wn|Wn-1)+ λ3P(Wn) , λ1+λ2+λ3 =1
上面公式 <=> Tri-gram = λ1Trigram+ λ2 Bigram+ λ3Unigram
對各方法加權(quán)平均,好的方法權(quán)重大些,加權(quán)平均的和為1
Good-Turning Smoothing
背景:在訓(xùn)練數(shù)據(jù)里沒有見過的怎么處理?
- Nc : 出現(xiàn)c次的單詞的個數(shù)
沒有出現(xiàn)過的單詞,未來出現(xiàn)的概率
- PMLE=0
PMLE 方法: 在歷史數(shù)據(jù)中看到過什么,依據(jù)此來給出概率結(jié)果
- PGT=N1 / N
通過N1 / N來計算。通過出現(xiàn)過1次的情況來預(yù)測未來的這種小概率事件
出現(xiàn)過的單詞,未來出現(xiàn)的概率
- PMLE= c / N
- PGT=(c+1)Nc+1 / Nc*N
通常,PGT小于PMLE ,因為考慮到了新的情況(未出現(xiàn)),相當(dāng)于把一些概率已經(jīng)給到了新事件
缺點?如何解決?
- 計算Ni-1,需要Ni,很多情況會有Nn的缺失
- 解決:根據(jù)現(xiàn)有Nn的情況作一條曲線(機器學(xué)習(xí)的方法擬合)來估計缺失值
Use Language Model to Generate Sentence(利用語言模型生成句子)
LM是生成模型:一旦模型訓(xùn)練好,該模型可以生成新的數(shù)據(jù)
- ungram model是最簡單的,不考慮語言邏輯
- Bigram model在隨機的基礎(chǔ)上,會大概率選取關(guān)聯(lián)概率最大的單詞,因此優(yōu)于unigram
- N-gram,在有大量的語料庫的基礎(chǔ)上,可以訓(xùn)練