困惑度(Perplexity)在NLP中是个最流行的评估指标,它用于评估语言模型学的到底有多好.

但是很多炼丹师可能至今对"困惑度"依然感到困惑,这篇就把这个讲清楚.

假设我们要做个对话机器人,它功能很简单,就是你跟它说你冰箱有啥,它告诉你还需要买啥,能一起做出美味佳肴.

例如"鸡肉,胡萝卜",它能够立马给出5~6种购物清单,这就类似用一个NLP模型,去预估和"鸡肉和胡萝卜"共现较多的食材.

但是这样评估并不全面,真实情况是用这个NLP模型可能会产生很多新菜谱,然后按照新菜谱可能可以创造更好的美味佳肴?

那还需要美食家去评价这个模型了.有没有一种指标,它独立于特定的任务,可以评估模型的质量呢?那就是困惑度了,它衡量了模型对自己预估结果的不确定性.

低困惑度说明模型对自己很自信,但是不一定准确,但是又和最后任务的表现紧密相关.然后它又计算起来非常简单,用概率分布就可以计算.

困惑度如何算?

举个简单的例子,训练上述对话机器人的样本如下:

1. 鸡肉,黄油,梨

2.鸡肉,黄油,辣椒

3.柠檬,梨,虾

4.辣椒,虾,柠檬

这些句子,有6个word,我们学个模型就是给一个词,预估其他词和它一起共现的概率.最简单的模型就是unigram模型了,每个word都是独立分布的,因为每个词都出现了两次,所以所有词出现的概率都是一样的:

这明显是个非常差的模型,无论你告诉这个模型你有啥,它都会随机给你挑选剩余食材.回到困惑度,我们希望有个评估指标,模型预估概率为1,评估指标能接近0,预估概率为0,评估指标接近∞,这表示模型有多"自信",很明显!那就是log函数了:

上述unigram模型用上式计算-log(0.16) = 2.64. 上式让我们联想到了信息熵, unigram的熵就是6 * (1/6 * 2.64) = 2.64:

知道上式困惑度就很好算了,就是熵的指数:

最终我们算出困惑度约等于6.这不就是我们vocabulary的大小吗?这就是你在句子中每个位置可以选择的可能单词的数量。

perplexity不得不知的事!

低困惑度不能保证模型更好.首先,正如我们在计算部分所看到的,模型最糟糕的困惑度是由语言的词汇量决定的。这意味着您可以大大降低模型的复杂度,例如,只需从单词级模型(可能很容易具有50000多个单词的词汇量)切换到字符级模型(词汇量约为26),而不管字符级模型是否真的更准确。其他变量,如训练数据集的大小或模型的上下文长度,也会对模型的复杂性产生不成比例的影响。第二,也是更重要的一点,困惑和所有内部评估一样,不提供任何形式的理智检查,同困惑度的模型也是有好有坏的。

困惑度应用

当使用“困惑”来评估在真实世界数据集(如one billion word benchmark)上训练的模型时,可以看到类似的问题。这个语料库是由2011年发表的数千篇在线新闻文章组成的,所有这些文章都被分解成了句子。它被设计成一个标准化的测试数据集,允许研究人员直接比较在不同数据上训练的不同模型,而困惑度就是一个最普遍的基准选择。

不幸的是工作表明,模型的困惑很容易受到与模型质量无关的因素的影响。在三个不同的新闻数据集上训练相同的模型时,困惑度波动很大.由于“困惑度”可以有效地衡量模型模仿其所测试的数据集风格的准确程度,因此基于与基准数据集相同时期的新闻训练的模型由于词汇相似性而具有不公平的优势。

总结

优点:

  • 计算速度快,允许研究人员在昂贵/耗时的真实世界能快速淘汰不太可能表现良好的模型.
  • 有助于估算模型的不确定性/信息密度

缺点:

  • 不适合最终评估,因为它只是测量模型的可信度,而不是准确性
  • 很难在不同上下文长度、词汇大小、基于单词与基于字符的模型等的数据集之间进行比较。

NLP中对困惑度感到困惑?相关推荐

  1. 【干货】NLP中对困惑度感到困惑?

    视学算法推荐 作者:时晴 来自:炼丹笔记 困惑度(Perplexity)在NLP中是个最流行的评估指标,它用于评估语言模型学的到底有多好.但是很多炼丹师可能至今对"困惑度"依然感到 ...

  2. nlp中文本相似度计算问题

    文章的目的:文本相似度计算一直是nlp中常见的问题,本文的目标是总结并对比文本相似度计算方法.当然文本的相似度计算会有进一步的应用,比如文本的分类.聚类等. 文章结构:本文先介绍最直接的字面距离相似度 ...

  3. nlp中文本相似度匹配

    项目中有用到NLP,博主在网上直接找了开源的 SimHash 上手效果不错(亲自实验)博主对比了余弦跟SimHash最后用了 SimHash 这个是开源代码 simHash package com.m ...

  4. perplexity 衡量指标_困惑度(perplexity)的基本概念及多种模型下的计算(N-gram, 主题模型, 神经网络)...

    让人困惑的困惑度 发现网络上流传的关于困惑度(perplexity)大多数都是利用了N-gram或者主题模型的例子来阐述的.但是现在这个年代来学习这个指标的人多半都是想研究神经网络的,而两者对困惑度 ...

  5. 困惑度 (perplexity)

    困惑度 (perplexity) 在自然语言处理中,对于一个语言模型,一般用困惑度来衡量它的好坏,困惑度越低,说明语言模型面对一句话感到困惑的程度越低,语言模型就越好. 对于LDA模型,最常用的两个评 ...

  6. LDA主题模型困惑度计算

    对于LDA模型,最常用的两个评价方法困惑度(Perplexity).相似度(Corre). 其中困惑度可以理解为对于一篇文章d,所训练出来的模型对文档d属于哪个主题有多不确定,这个不确定成都就是困惑度 ...

  7. lda主题模型困惑度_r语言lda主题模型代码 lda主题模型 案例分析

    r语言做灰色预测模型代码为什么会出错? 我正在MATLAB下编写一个Grey system的函数库, 我想其他的网友也做过类似的工作吧. 灰色模型的MATLAB求解代码应该很容易找到吧.如果不想用MA ...

  8. 从0到1,了解NLP中的文本相似度

    本文由云+社区发表 作者:netkiddy 导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是, ...

  9. 从0到1,了解NLP中的文本相似度 1

    导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是,AI并不一定最懂你,客户对于AI写出来的文章 ...

最新文章

  1. 你所知道的Java单例模式并不是单例模式
  2. GROMACS运行参数之md.mdp文件详解
  3. linux docker中gdb调试断点不停
  4. 【转】“根级别上的数据无效”问题的解决
  5. Burpsuite工具的使用
  6. Django 2 零基础 - 待办清单网站
  7. Java多线程之死锁编码及定位分析
  8. dedecms首页怎么调用公司简介的内容
  9. iPhone X Web 设计
  10. Android百度云推送接入,附完整代码
  11. matlabrobert锐化_基于Matlab的图像锐化的研究
  12. URL.createObjectURL图片预览
  13. python常量变量和对象_Python学习笔记——变量和常量
  14. Delphi【变体记录及存储方式】
  15. 药一点门诊收费管理系统
  16. Xpose实例分析-变色龙
  17. 造梦无双服务器维护12月17日,《造梦无双》12月31日V0.82版本更新公告:迎战北王,寻斗天君...
  18. 谷歌hosts laod
  19. 微信提现报证书已过期
  20. 看板的作用是什么?任务看板如何跟进

热门文章

  1. 射频与微波测量之S参数
  2. Python之路【第七篇】:初识Socket
  3. HDU 3397 Sequence operation
  4. ACE前摄器Proactor模式
  5. Altium Designer 的使用笔记
  6. 倩女手游服务器维护,倩女手游7月28日服务器在线维护公告
  7. Verilog | HDL 音乐流水灯(代码类)
  8. 软件项目管理的75条建议
  9. mysql 创建端口号_MySQL命令行 不同端口登录 执行SQL文件 创建用户 赋予权限 修改root密码...
  10. 用python做逻辑回归梯度上升_机器学习实例---4.1、Logistic回归基础篇之梯度上升算法...