NLP中的Perplexity是什么?

Perplexity,翻译为中文的意思为:困惑、混乱。在NLP中,表示语言模型的困惑度,是交叉熵的指数形式,可以作为语言模型的评价指标。Perplexity越低,说明模型拟合效果越好。Perplexity 计算公式如下:
P e r p l e x i t y ( S ) = p ( w 1 , w 2 , w 3 , . . . , w m ) − 1 / m = ∏ i = 2 m 1 p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) m Perplexity(S) = p(w_1, w_2, w_3,...,w_m)^{-1/m}\\ = \sqrt[m]{\prod_{i=2}^m \frac{1}{ p(w_i|w_1, w_2, w_3,...,w_{i-1})}} Perplexity(S)=p(w1,w2,w3,...,wm)1/m=mi=2mp(wiw1,w2,w3,...,wi1)1
简单来说,perplexity刻画的是语言模型预测一个语言样本的能力,比如已经知道了 ( w 1 , w 2 , w 3 , . . . , w m ) (w_1, w_2, w_3,...,w_m) (w1,w2,w3,...,wm)这句话会出现在语料库之中,那么通过语言模型计算得到这句话的概率越高,说明语言模型对这个语料库拟合的越好。

在语言模型的训练中,通常采用perplexity的对数表达形式:

log ( p e r p l e x i t y ( S ) ) = − 1 m ∑ i = 2 m p ( w 1 , w 2 , w 3 , . . . , w m ) \text{log}(perplexity(S)) =-\frac{1}{m} \sum_{i=2}^{m} p(w_1, w_2, w_3,...,w_m) log(perplexity(S))=m1i=2mp(w1,w2,w3,...,wm)

在数学上,log perplexity 可以看作真实分布与预测分布之间的交叉熵 Cross Entropy, 交叉熵描述了两个概率分布之间的一种距离,假设 x x x 是一个离散变量, u ( x ) u(x) u(x) v ( x ) v(x) v(x) 是两个与 x x x 相关的概率分布,那么 u , v u, v u,v 之间的交叉熵的定义是分布 u u u − log ( v ( x ) ) -\text{log}(v(x)) log(v(x)) 的期望值:
H ( u , v ) = E u [ − l o g ( v ( x ) ] = − ∑ x u ( x ) l o g ( v ( x ) ) H(u, v) = E_u[-log(v(x)]=-\sum_x{u(x)log(v(x))} H(u,v)=Eu[log(v(x)]=xu(x)log(v(x))

我们把 x x x 看作是单词, u ( x ) u(x) u(x) 表示每个位置上单词的真实分布,
u ( x ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) = { 1 x = w i 0 x ≠ w i u(x|w_1, w_2, w_3,...,w_{i-1}) = \begin{cases} 1& \textstyle{x=w_i}\\ 0& \textstyle{x\neq w_i} \end{cases} u(xw1,w2,w3,...,wi1)={10x=wix=wi

v ( x ) v(x) v(x)是模型的预测分布 p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) p(w_i|w_1, w_2, w_3,...,w_{i-1}) p(wiw1,w2,w3,...,wi1) ,那么即有
H ( u , v ) = − ∑ x u ( x ) l o g ( v ( x ) ) = − 1 m ∑ i = 2 m ( ∑ x u ( x ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) ) = − 1 m ∑ i = 2 m ( 1 × p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) + ∑ x ≠ w i 0 × p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) ) = − 1 m ∑ i = 2 m p ( w i ∣ w 1 , w 2 , w 3 , . . . , w i − 1 ) = log ( p e r p l e x i t y ( S ) ) H(u, v) =-\sum_x{u(x)log(v(x))}\\ =-\frac{1}{m} \sum_{i=2}^{m} (\sum_xu(x|w_1, w_2, w_3,...,w_{i-1})p(w_i|w_1, w_2, w_3,...,w_{i-1}))\\ =-\frac{1}{m} \sum_{i=2}^{m} (1\times p(w_i|w_1, w_2, w_3,...,w_{i-1}) + \sum_{x\neq w_i} 0\times p(w_i|w_1, w_2, w_3,...,w_{i-1}))\\ =-\frac{1}{m} \sum_{i=2}^{m} p(w_i|w_1, w_2, w_3,...,w_{i-1})\\ = \text{log}(perplexity(S)) H(u,v)=xu(x)log(v(x))=m1i=2m(xu(xw1,w2,w3,...,wi1)p(wiw1,w2,w3,...,wi1))=m1i=2m(1×p(wiw1,w2,w3,...,wi1)+x=wi0×p(wiw1,w2,w3,...,wi1))=m1i=2mp(wiw1,w2,w3,...,wi1)=log(perplexity(S))

可以看出, log ( p e r p l e x i t y ( S ) ) \text{log}(perplexity(S)) log(perplexity(S))和交叉熵是等价的。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP_wendi

谢谢您的支持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值