困惑度理解

引子:语言模型简介

所谓语言模型(Language Model,LM),即给定一句话的前k个词,我们希望语言模型可以预测第k+1个词是什么,即给出一个第k+1个词可能出现的概率的分布p(xk+1|x1x2...xk)。

衡量一个语言模型的好坏,最好的方法就是将其应用到具体的问题当中,比如机器翻译、speech recognition、spelling corrector等。然后看这个语言模型在这些任务中的表现(extrinsic evaluation,or in-vivo evaluation)。但是,这种方法一方面难以操作,另一方面可能非常耗时,可能跑一遍evaluation需要一两天。因此,人们就希望找一种intrinsic evaluation的方法。即根据与语言模型自身的一些特性,来设计一种简单易行,而又行之有效的评测指标。于是,人们就发明了perplexity这个指标。

Perplexity定义

Perplexity是一种衡量自然语言处理领域(NLP)中,语言模型的好坏的指标。

简单来说,perplexity就是对于语言模型所估计的一句话出现的概率,用句子长度normalize一下,具体形式如下:

PP(S)===P(w1w2...wN)−1N1p(w1w2...wN)−−−−−−−−−−−−√N∏i=1N1p(wi|w1w2...wi−1)−−−−−−−−−−−−−−−−−−⎷N

对于bigram来讲,就是下面的式子:

PP(S)=∏i=1N1p(wi|wi−1)−−−−−−−−−−−−⎷N


其中,对于第一个词,就是p(w1|w0),w0表示START,是一个占位符,表示句子的起始。

Perplexity越小越好,相应的,就是我们见过的句子出现的概率越大越好

Perplexity直观理解

Perplexity其实表示的是average branch factor,大概可以翻译为平均分支系数。即平均来说,我们预测下一个词时有多少种选择。

举个例子来说,对于一个长度为N的,由0-9这10个数字随机组成的序列。由于这10个数字随机出现,所以每个数字出现的概率是110。也就是,在每个点,我们都有10个等概率的候选答案供我们选择,于是我们的perplexity就是10(有10个合理的答案)。具体计算过程如下:

PP(S)=∏i=1N1110−−−−−⎷N=10

于是,在看到一个语言模型报告其perplexity是109时,我们就可以直观的理解为,平均情况下,这个语言模型预测下一个词时,其认为有109个词等可能地可以作为下一个词的合理选择。

另一种表达形式

另一种常用的perplexity表达形式如下(以unigram为例):

PP(S)=2−1N∑P(wi)


其中,N是句子S的长度,P(wi)是第i个词的概率(如果是bigram就应该是第i个bigram的概率)

这个式子是从交叉熵的角度推导出来,很多地方将perplexity的时候就用的这个式子(但我个人觉得从交叉熵的角度解释很牵强)。由于这个式子没什么直观解释,所以大家记的时候还是按照之前的式子记吧

http://sentiment-mining.blogspot.com/2016/11/perplexity.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值