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的值是不同的,这也就表明了三元模型一般是性能良好的。

  • 相关阅读:
    57. 插入区间
    1117. H2O 生成
    1114. 按序打印
    185. 部门工资前三高的所有员工
    453. 最小移动次数使数组元素相等
    简单中缀算数表达式求值
    悬停显示title-获取日期时间
    v-pre&v-cloak&v-once添加属性-禁止值改变 v-once
    v-html & v-text普通命令
    过滤器串联执行-加参数
  • 原文地址:https://www.cnblogs.com/createMoMo/p/3190393.html
Copyright © 2011-2022 走看看