栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

NLP中的Perplexity是什么?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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=2∏m​p(wi​∣w1​,w2​,w3​,...,wi−1​)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))=−m1​i=2∑m​p(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)]=−x∑​u(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{xneq w_i} end{cases} u(x∣w1​,w2​,w3​,...,wi−1​)={10​x=wi​x​=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(wi​∣w1​,w2​,w3​,...,wi−1​) ,那么即有
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} (1times p(w_i|w_1, w_2, w_3,...,w_{i-1}) + sum_{xneq w_i} 0times 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)=−x∑​u(x)log(v(x))=−m1​i=2∑m​(x∑​u(x∣w1​,w2​,w3​,...,wi−1​)p(wi​∣w1​,w2​,w3​,...,wi−1​))=−m1​i=2∑m​(1×p(wi​∣w1​,w2​,w3​,...,wi−1​)+x​=wi​∑​0×p(wi​∣w1​,w2​,w3​,...,wi−1​))=−m1​i=2∑m​p(wi​∣w1​,w2​,w3​,...,wi−1​)=log(perplexity(S))

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号