概率语言模型
目标:给定词串
W
=
w
1
,
w
2
,
w
3
,
.
.
.
,
w
n
W=w_1,w_2,w_3,...,w_n
W=w1,w2,w3,...,wn
计算概率 P(W)
语言模型定义:广义上讲,用于计算 p(W)或 p(wn|w1 , …, wn-1 ) 的模型均可以称为语言模型
链式法则:
p
(
w
1
,
w
2
,
w
3
,
.
.
,
w
n
)
=
p
(
w
1
)
∗
p
(
w
2
,
w
3
,
.
.
.
,
w
n
∣
w
1
)
p(w_1,w_2,w_3,..,w_n) = p(w_1)*p(w_2,w_3,...,w_n|w_1)
p(w1,w2,w3,..,wn)=p(w1)∗p(w2,w3,...,wn∣w1)
求概率的方式:MLE:极大似然估计
公式如下:
p
(
w
m
∣
w
1
,
.
.
w
m
−
1
)
=
C
(
w
1
,
.
.
.
,
w
m
)
C
(
w
1
,
.
.
.
,
w
m
−
1
)
p(w_m|w_1,..w_{m-1}) = \frac{C(w_1,...,w_m)}{C(w_1,...,w_{m-1})}
p(wm∣w1,..wm−1)=C(w1,...,wm−1)C(w1,...,wm)
n-gram 模型
马尔可夫假设:位于某个特定状态的概率取决于前 n-1 个状态。
1-gram 语言模型(unigram)
p
(
w
1
,
w
2
,
w
3
,
.
.
,
w
n
)
=
p
(
w
1
)
p
(
w
2
)
.
.
.
p
(
w
n
)
p(w1,w2,w3,..,w_n) = p(w1)p(w2)...p(w_n)
p(w1,w2,w3,..,wn)=p(w1)p(w2)...p(wn)
2-gram 语言模型(bigrams):
p
(
w
1
,
w
2
,
w
3
,
.
.
.
,
w
n
)
≈
p
(
w
1
)
p
(
w
2
∣
w
1
)
p
(
w
3
∣
w
2
)
.
.
.
p
(
w
n
∣
w
n
−
1
)
p(w1 ,w2 ,w3 , ...,w_n ) ≈ p(w1 ) p(w2|w1 ) p(w3|w2 ) ...p(w_n|w_{n-1} )
p(w1,w2,w3,...,wn)≈p(w1)p(w2∣w1)p(w3∣w2)...p(wn∣wn−1)
3-gram 语言模型(trigrams):
p
(
w
1
,
w
2
,
w
3
,
.
.
.
,
w
n
)
≈
p
(
w
1
)
p
(
w
2
∣
w
1
)
p
(
w
3
∣
w
1
,
w
2
)
.
.
.
p
(
w
n
∣
w
n
−
2
,
w
n
−
1
)
p(w1, w2 ,w3 , ...,w_n ) ≈ p(w1 ) p(w2|w1 ) p(w3|w1 , w2 )...p(w_n|w_{n-2} , w_{n-1} )
p(w1,w2,w3,...,wn)≈p(w1)p(w2∣w1)p(w3∣w1,w2)...p(wn∣wn−2,wn−1)
应用(PPT 例题)
应用 -1:音字转换问题
CString = {踏实研究生物的, 他实验救生物的,他是 研究生物的, 他使烟酒生雾的,… …}
如果使用 2-gram:
p(CString1) =p(踏实|)×p(研究|踏实)× p(生物|研究)×p(的|生物)×p(|的)
p(CString2) =p(他|)×p(实验|他)×p(救|实验)× p(生物|救)×p(的|生物)×p(|的)
…
最大概率的字串就是音字转化的字符串。
应用 -2:汉语分词问题
给定汉字串:他是研究生物的。
可能的汉字串:
- 他|是|研究生|物|的
- 他|是|研究|生物|的
如果采用 2 元文法:
p(Seg1) =p(他|)×p(是|他)×p(研究生|是)× p(物|研究生)×p(的|物)×p(|的)
p(Seg2) = p(他|)×p(是|他)×p(研究|是)× p(生物|研究)×p(的|生物)× p(|的)
…
数据稀疏及平滑
数据稀疏: - 一些词 or 词组高频/低频
- 一些词 or 词组在 dataset 中未知
解决办法: - 扩大训练语料
- 平滑
- 回退(不考)
平滑
重新估计零概率及低值概率, 赋予它们一个非零值
Add-one (Laplace Smoothing)
公式如下:
P ( w i ∣ w 1 . . . w i − 1 ) = c ( w 1 . . . w i ) + δ c ( w 1.. w i − 1 ) + ∣ V ∣ δ P(w_i|w_1...w_{i-1}) = \frac{c(w_1...w_i)+\delta}{c(w1..w_{i-1})+|V|\delta} P(wi∣w1...wi−1)=c(w1..wi−1)+∣V∣δc(w1...wi)+δ
其中 c(…)为…在语料出现的次数,|V|为词表大小
当 \delta = 1 时,即为 Laplace 平滑,下面举例说明:
unigram:
P L a p l a c e ( w i ) = c ( w i ) + 1 N + ∣ V ∣ P_{Laplace}(w_i) = \frac{c(w_i)+1}{N+|V|} PLaplace(wi)=N+∣V∣c(wi)+1
bigram:
P ( w i ∣ w i − 1 ) = c ( w i − 1 w i ) + 1 c ( w i − 1 ) + ∣ V ∣ P(w_i|w_{i-1}) = \frac{c(w_{i-1}w_i)+1}{c(w_{i-1})+|V|} P(wi∣wi−1)=c(wi−1)+∣V∣c(wi−1wi)+1
Good-Turing
根据仅出现一次的 unigram 的个数,来确定那些未见 unigram 的概率,公式如下:
N c = ∑ w . c o u n t ( w ) = c 1 N_c = \sum_{w.count(w)=c}1 Nc=w.count(w)=c∑1
p c = ( c + 1 ) N c + 1 N c N p_c = \frac{(c+1)N_{c+1}}{N_cN} pc=NcN(c+1)Nc+1
c 表示:出现 c 次;
模型质量评估
困惑度(Perplexity PP)
P(W)的几何平均值的倒数:
以 bigram 为例:
P P ( W ) = P ( W ) − 1 N = [ ∏ i = 1 N P ( w i ∣ w i − 1 ) ] − 1 N PP(W)= P(W)^{-\frac{1}{N}} = [\prod \limits^N_{i=1} P(w_i|w_{i-1})]^{-\frac{1}{N}} PP(W)=P(W)−N1=[i=1∏NP(wi∣wi−1)]−N1
PP 值越小,LM 越好: - 若 W 中都是正确的句子,则 P(W)应该具有较高 的概率(较小的 PP 值)
- 直观上来讲:PP 指在每次预测时可能的候选词 的平均个数 – PP 越大,则表明该语言的不可预测性越高
信息熵
一个词串 W=w1,w2,…,wn 的消息熵为:
H ( W ) = − ∑ q ( w 1.. w n ) l o g 2 q ( w 1... w n ) H(W) = - \sum q(w1..wn)log_2q(w1...wn) H(W)=−∑q(w1..wn)log2q(w1...wn)
平均信息熵:
H ( W ) = − 1 N ∑ q ( w 1.. w n ) l o g 2 q ( w 1... w n ) H(W) = - \frac{1}{N}\sum q(w1..wn)log_2q(w1...wn) H(W)=−N1∑q(w1..wn)log2q(w1...wn)
在 n-gram 模型中,用 p(w1…wn)代替 q(…),得到如下公式:
H ( W ) = − 1 N ∑ l o g 2 p ( w 1... w n ) H(W) = - \frac{1}{N}\sum log_2p(w1...wn) H(W)=−N1∑log2p(w1...wn)
则 PP 和平均信息熵的关系为:
P P ( W ) = 2 H ( W ) PP(W) = 2^{H(W)} PP(W)=2H(W)
神经网络
前向传播网络
h = g ( V x + v ) h = g(Vx+v) h=g(Vx+v)
y ^ = W h + b \hat{y} = Wh + b y^=Wh+b
模拟一个 bnigram 模型的神经网络
模拟一个 trigram 模型的神经网络: