zoukankan      html  css  js  c++  java
  • 0-4评价一个语言模型Evaluating Language Models:Perplexity

    有了一个语言模型,就要判断这个模型的好坏。

    现在假设:

    • 我们有一些测试数据,test data.测试数据中有m个句子;s1,s2,s3…,sm

    我们可以查看在某个模型下面的概率:image

    我们也知道,如果计算相乘是非常麻烦的,可以在此基础上,以另一种形式来计算模型的好坏程度。

    在相乘的基础上,运用Log,来把乘法转换成加法来计算。

    image

     

    补充一下,在这里的p(Si)其实就等于我们前面所介绍的q(the|*,*)*q(dog|*,the)*q(…)…

    有了上面的式子,评价一个模型是否好坏的原理在于:

    a good model should assign as high probability as possible to these test data sentences.

    image,this value as being a measure of how well the alleviate to make sth less painful or difficult to deal with language model predict these test data sentences.

    The higher the better.

    上面的意思也就是说,如果image的值越大,那么这个模型就越好。

    • 实际上,普遍的评价的指标是perplexity

    image

    其中,M的值是测试数据test data中的所有的数量。

    那么从公式当中查看,可以知道。perplexity的值越小越好。

    为了更好的理解perplexity,看下面这个例子:

    • 我们现在有一个单词集V,N=|V|+1

    image

    有了上面的条件,可以很容易的计算出:

    image

    Perplexity是测试branching factor的数值。

    branching factor又是什么呢?有的翻译为分叉率。如果branching factor高,计算起来代价会越大。也可以理解成,分叉率越高,可能性就越多,需要计算的量就越大。

    上面的例子q=1/N只是一个举例,再看看下面这些真实的数据:

    • Goodman的结果,其中|V|=50000,在trigram model的image中,Perplexity=74
    • 在bigram model中,image,Perplexity=137
    • 在unigram model中,image,perplexity=955

    在这里也看到了,几个模型的perplexity的值是不同的,这也就表明了三元模型一般是性能良好的。

  • 相关阅读:
    前端面试官如何从笔试中选拔人才
    webapp应用--模拟电子书翻页效果
    用webpack实现前端自动化构建
    webpack3中文版使用参考文档--全面解析webpack.config.js
    300行代码揭密轮播插件核心代码的实现过程
    免费视频播放器videojs中文教程
    微信小程序开发初体验
    前端工程自动化构建总结
    细说前端自动化打包工具--webpack
    H5程序员如何利用cordova开发跨平台应用
  • 原文地址:https://www.cnblogs.com/createMoMo/p/3190393.html
Copyright © 2011-2022 走看看