困惑度(perplexity)的基本概念及比较多种模型下的计算(N-gram, 主题模型/LDA, 神经网络/RNN)

发现网络上流传的关于困惑度(perplexity)大多数都是利用了N-gram或者主题模型的例子来阐述的。但是现在这个年代来学习这个指标的人多半都是想研究神经网络的,而两者的对困惑度的计算方法又很不同,这就不能不让人对“困惑度”感到“困惑”了。本人虽然才疏学浅,还是斗胆在这里尝试写一篇文章,试图用简洁的方式来梳理清楚其中的困惑。

困惑度的基本定义

首先,困惑度是用来评价语言模型好坏的指标。语言模型是衡量句子好坏的模型,本质上是计算句子的概率:

对于句子s(词语w的序列):
在这里插入图片描述

它的概率为:【公式1】
在这里插入图片描述
困惑度与测试集上的句子概率相关,其基本思想是:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好[1],公式如下:

在这里插入图片描述
这里想补充一下参考资料里没有强调的一些点

  • 根号内是句子概率的倒数,所以显然 句子越好(概率大),困惑度越小,也就是模型对句子越不困惑。 这样我们也就理解了这个指标的名字。
  • 开N次根号(N为句子长度)意味着几何平均数(把句子概率拆成词语概率的连乘)
    • 需要平均的原因是,因为每个字符的概率必然小于1,所以越长的句子的概率在连乘的情况下必然越小,所以为了对长短句公平,需要平均一下
    • 几何平均的原因,是因为几何平均数的特点是,如果有其中的一个概率是很小的,那么最终的结果就不可能很大,从而要求好的句子的每个字符都要有基本让人满意的概率 [2]
      • 机器翻译常用指标BLEU也使用了几何平均,还有机器学习常用的F score使用的调和平均数 ,也有类似的效果

在不同具体模型下的计算

不同模型的困惑度计算的差别,实际上都是来源于对句子概率的计算方式的不同,所以主要围绕句子概率展开:

N-gram(uni-gram, bi-gram, tri-gram)

网络上常见的例子:

对uni-gram语言模型(一元语言模型),其采用了单个词语概率独立的简化假设。

词袋模型(Bag Of Words)这个名字来解释它可能更形象。把一个词语看做一种颜色的小球,句子的产生就是从一个装有所有词语的袋子里面有放回地抽出小球的过程。每类小球(词语)的概率互相独立。

故句子的概率不使用【公式1】,而是用每个词语(uni-gram)的概率相乘:【公式2】

在这里插入图片描述
对于bi-gram语言模型(二元语言模型),其采用马尔科夫假设:一个词的出现仅依赖于它前面出现的一个词。

故句子的概率就是每个词语(bi-gram)的概率相乘:

  • 21
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值