赞
踩
PPL是用在自然语言处理领域(NLP)中,衡量语言模型好坏的指标。它主要是根据每个词来估计一句话出现的概率,并用句子长度作normalize,公式为N
P
P
(
S
)
=
P
(
w
1
w
2
.
.
.
w
N
)
−
1
N
=
1
p
(
w
1
w
2
.
.
.
w
N
)
N
=
∏
i
=
0
N
1
p
(
w
i
∣
w
1
w
2
.
.
.
w
i
−
1
)
N
PP(S) = P(w_1w_2...w_N)^{-\frac{1}{N}} \\ = \sqrt[N]{\frac{1}{p(w_1w_2...w_N)}} \\ = \sqrt[N]{\prod_{i=0}^N\frac{1}{p(w_i|w_1w_2...w_{i-1})}}
PP(S)=P(w1w2...wN)−N1=Np(w1w2...wN)1
=Ni=0∏Np(wi∣w1w2...wi−1)1
S代表sentence,N是句子长度,p(wi)是第i个词的概率。第一个词就是 p(w1|w0),而w0是START,表示句子的起始,是个占位符。
这个式子可以这样理解,PPL越小,p(wi)则越大,一句我们期望的sentence出现的概率就越高。
还有人说,Perplexity可以认为是average branch factor(平均分支系数),即预测下一个词时可以有多少种选择。别人在作报告时说模型的PPL下降到90,可以直观地理解为,在模型生成一句话时下一个词有90个合理选择,可选词数越少,我们大致认为模型越准确。这样也能解释,为什么PPL越小,模型越好。
Perplexity另一种表达
P
P
(
S
)
=
2
−
1
N
∑
l
o
g
(
p
(
w
i
)
)
PP(S)=2^{-\frac{1}{N}\sum{log(p(w_i))}}
PP(S)=2−N1∑log(p(wi))
好像在讲到unigram时,常常用到PPL的这种形式,从表达式上看和前面的意义是一样的,只不过wi不再是单个词,它表示第i个bigram或其他单位量。
这些是听报告了解的:
训练数据集越大,PPL会下降得更低,1billion dataset和10万dataset训练效果是很不一样的;
数据中的标点会对模型的PPL产生很大影响,一个句号能让PPL波动几十,标点的预测总是不稳定;
预测语句中的“的,了”等词也对PPL有很大影响,可能“我借你的书”比“我借你书”的指标值小几十,但从语义上分析有没有这些停用词并不能完全代表句子生成的好坏。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。