深度学习之Image captioning的评分指标篇(BLEU、CIDEr)

BLEU

参考:https://www.cnblogs.com/by-dream/p/7679284.html
BLEU 采用一种N-gram的匹配规则+召回率+惩罚因子组合方式。

N-gram

当N=1时,一般用来判断文字生成的准确性,234用来判断生成文本的流畅性。

原文:今天天气不错
机器译文:It is a nice day today
人工译文:Today is a nice day
如果用1-gram匹配的话:
深度学习之Image captioning的评分指标篇(BLEU、CIDEr)_第1张图片
可以看到机器译文一共6个词,有5个词语都命中的了参考译文,那么它1-gram的匹配度为 5/6 。
如果用3-gram匹配的话:
深度学习之Image captioning的评分指标篇(BLEU、CIDEr)_第2张图片
可以看到机器译文一共可以分为四个3-gram的词组,其中有两个可以命中参考译文,那么它3-gram的匹配度为 2/4 。

召回率

上述方法没有考虑到召回率,举一个例子说明其缺点

原文:猫站在地上
机器译文:the the the the
人工译文:The cat is standing on the ground
在计算1-gram的时候,the 都出现在译文中,因此匹配度为4/4 ,但是很明显 the 在人工译文中最多出现的次数只有2次,因此BLEU算法修正了这个值的算法,首先会计算该n-gram在译文中可能出现的最大次数:
在这里插入图片描述
Count是N-gram在机器翻译译文中的出现次数,Max_Ref_Count是该N-gram在一个参考译文中最大的出现次数,最终统计结果取两者中的较小值。然后在把这个匹配结果除以机器翻译译文的N-gram个数。因此对于上面的例子来说,修正后的1-gram的统计结果就是2/4。

各阶N-gram的精度计算公式为:
深度学习之Image captioning的评分指标篇(BLEU、CIDEr)_第3张图片

c i c_i ci表示对于图片i生成的机器译文
s i = s i 1 , . . . s i m s_i=s_{i1},...s_{im} si=si1,...sim表示对于图片i的m个人工译文(一般数据集一个图片的参考有很多)
h k ( c i ) h_k(c_i) hk(ci) 表示 w k w_k wk翻译选译文 c i c_i ci中出现的次数
h k ( s i j ) h_k(s_{ij}) hk(sij) 表示 w k w_k wk在标准答案 S i j S_ij Sij中出现的次数
w k w_k wk表示句子中的第k个n-gram词组,比如”I come from china”,第1个2-gram为:I come; 第2个2-gram为:come from; 第3个2-gram为:from china;
m a x j ∈ m h k ( s i j ) max_{j∈m}h_k(s_{ij}) maxjmhk(sij)表示当前计算的n-gram在多个人工译文中出现最多的次数

惩罚因子

上面的算法已经足够可以有效的翻译评估了,然而N-gram的匹配度可能会随着句子长度的变短而变好,因此会存在这样一个问题:一个翻译引擎只翻译出了句子中部分句子且翻译的比较准确,那么它的匹配度依然会很高。为了避免这种评分的偏向性,BLEU在最后的评分结果中引入了长度惩罚因子(Brevity Penalty)。

在这里插入图片描述
BP的计算公式如上。lc代表表示机器翻译译文的长度,ls表示参考答案的有效长度,当存在多个参考译文时,选取和翻译译文最接近的长度。当翻译译文长度大于参考译文的长度时,惩罚系数为1,意味着不惩罚,只有机器翻译译文长度小于参考答案才会计算惩罚因子。

综合

由于各N-gram统计量的精度随着阶数的升高而呈指数形式递减,所以为了平衡各阶统计量的作用,对其采用几何平均形式求平均值然后加权,再乘以长度惩罚因子,得到最后的评价公式:
在这里插入图片描述
BLEU的原型系统采用的是均匀加权,即Wn=1/N 。N的上限取值为4,即最多只统计4-gram的精度。

举例

机器译文:Going to play basketball this afternoon ?
人工译文:Going to play basketball in the afternoon ?
1-gram来说,p1 = 6/7 'this’没有
2-gram来说,p2 = 4/6 'basketball this/this afternoon’没有
依次类推:P2 = 4/6 、P3 = 2/5 、P4 = 1/4
再计算∑logPn和为-2.8622 ;再乘以Wn,也就是除以4为 0.7156
BP = e^(1-8/7) 约等于 0.867
BLEU = 0.867 * e^((P1 + P2 + P3 + P4)/4) = 0.867*0.4889 = 0.4238

CIDEr

CIDEr采用一种TF-IDF+余弦相似度的组合

TF-IDF

参考:https://blog.csdn.net/bvl10101111/article/details/78861853

  • TF-IDF是什么

1.tf-idf 作为一种权重经常被用作信息检索和文本挖掘领域
2.这样一种权重时通过统计计算得出的。来衡量 在一个语料库或者文本集中, 一个term 或者 word对于一个文档的重要性。(比如,有k个文档,其中一个文档d种有一个词w,衡量 w对于k中的d的重要性)
3.直观上看,tf-idf的大小与word在文档中出现频率成正比,与在语料中出现的频率成反比
4.可以用来表达一个文档,比如有k个文档,这个语料库共V个word,那么每一篇文档就由一个V维向量表达,每一维时对应word的tf-idf值。sklearn已有中有具体实现。

  • 如何计算指定word的TF-IDF

1.TF:特定的word在文档中出现的次数,除以文档长度
2.IDF:log(语料库中总共的文档数,除以包含有特定的word的文档数)

  • 举例

一个文档有100个word,其中cat出现了3次,那么tf(cat)=3/100=0.03.
现有我们又10,000,000个文档,其中1000个文档出现了cat,那么idf(cat)=log(10,000,000/1000)=4,那么最后cat的tf-idf权重为0.03*4=0.12

CIDEr算法

参考:CIDEr详解

  • 公式

深度学习之Image captioning的评分指标篇(BLEU、CIDEr)_第4张图片

  • 举例
    深度学习之Image captioning的评分指标篇(BLEU、CIDEr)_第5张图片

你可能感兴趣的:(深度学习)