Image Caption评估指标深入理解

embedded/2024/9/25 15:59:50/

前言:刚开始做图像描述的任务就整理了这些评估指标,时间久远有点记不清怎么具体实现原理了,结果面试的时候就问了这个问题,没答上来,郁闷了很久,还是基础不扎实,浅浅记录一下

文章目录

  • BLEU
  • ROUGE
  • METEOR
  • CIDEr
  • 参考

BLEU

BLEU(Biligual Evaluation understudy):是一种用来评估机器翻译的评价指标,广泛出现在文本生成的论文当中,是一种基于单词精确度的度量方式。
BLEU采用一种 N-Gram 的匹配规则,具体来说就是比较 生成文本 和 真实文本 之间的 N组词 的相似度
举个栗子:
有如下两个句子:
其中,真实值是you are a good man,预测值是good man is you

  • 当使用1-Gram匹配时:
    在这里插入图片描述
    在不考虑语序的情况下,预测值4个词命中了真实文本的5个词,所以Score(1-gram)=4/5
  • 当使用3-Gram匹配时:
    在这里插入图片描述
    可以看到预测值中有1个三元词汇命中了真实文本中的3个三元词汇,于是Score(3-gram)=1/3

BLEU还有许多变种。根据n-gram可以划分成多种评价指标,常见的指标有BLEU-1、BLEU-2、BLEU-3、BLEU-4四种,其中n-gram指的是连续的单词个数为n。BLEU-1衡量的是单词级别的准确性,更高阶的bleu可以衡量句子的流畅性

BLEU的优点:

  • (1)速度快、成本低廉
  • (2)容易理解
  • (3)不受语种限制
  • (4)运用广泛
    BLEU的缺点

BLEU的缺点:

  • (1)忽略同义词
  • (2)N-gram的机制会导致某项分数特别低
  • (3)BLEU不考虑意义
  • (4)BLEU不考虑句子的结构,很多时候,只要单词相同BLEU就会给出很高的分数
  • (5)BLEU不能够很好地处理形态丰富的语言
  • (6)BLEU与人类的判断并不相符合

ROUGE

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)也是评估自动文摘以及机器翻译的一组指标。ROUGE基于摘要中n元词(n-gram)的共现信息来评价摘要,是一种面向n元词召回率的评价方法。

基本思想:将模型生成的文本与人工生成的真实文本相对比,通过统计二者之间重叠的基本单元(n元语法、词序列和词对)的数目,来评价生成文本的质量。

举个栗子:
机器生成的自动摘要:
the cat was found under the bed
人工生成的标准摘要:
the cat was under the bed
ROUGE-1的值可以很容易计算出来,生成的六个词六个词都是匹配的,所以score(ROUGE-1)=6/6,
这个值与召回率是一样的,也就是recall = 6/6,percision=6/7

ROUGE-2该如何计算?
自动摘要的Bigrams:
the cat, cat was, was found, found under, under the, the bed
标准摘要的Bigrams:
the cat, cat was, was under, under the, the bed
生成的十个词有八个(两个一组)是匹配的,故score(ROUGE-2)=4/5,也就是recall = 4/5。此时percision = 4/6

  • ROUGE-N优点:直观,简洁,能反映词序。
  • ROUGE-N缺点:区分度不高,且当N>3时,ROUGE-N值通常很小。

ROUGE准则由一系列的评价方法组成,包括ROUGE-N(N是n-gram中n,取值有1,2,3,4),ROUGE-L,ROUGE-S, ROUGE-W,ROUGE-SU等。在自动文摘相关研究中,一般根据自己的具体研究内容选择合适的ROUGE方法。

METEOR

METEOR是一种用于评估文本生成任务,最初是为机器翻译而开发的,现在广泛用于图像描述任务中。它基于单词级别准确率和召回率,以及对词序的惩罚,来计算候选文本和参考文本之间的相似度。

METEOR的特点是它不仅考虑了单词的精确匹配,还考虑了词干、同义词和其他语言变体的匹配。 它还使用了一个调和平均数来平衡准确率和召回率,以及一个罚分因子来惩罚不流畅或不连贯的文本。
计算公式:
在这里插入图片描述
在这里插入图片描述
其中P是准确率,R是召回率,Fmean是单元词组 对齐 后的准确率和召回率的调和平均,Pen是碎片度惩罚,计算如下:
在这里插入图片描述
m是生成文本中能够被匹配的一元词组的数量,ch是chunk 的数量,怎么理解这个chunk呢,看下面的例子:
在这里插入图片描述
预测值的一元词组数量 m = 5,,按照匹配度被分成了三个 chunk,即 ch = 3
如果超参数 γ = 1,β = 2,那 Pen = 1*(3/5)^2 = 0.36
召回率: P = 匹配的单词数 / 真实文本的单词数 = 4 / 5 = 0.8
精确率: R = 匹配的单词数 / 预测文本的单词数 = 4 / 5 = 0.8
假设超参数 α = 0.5,则 Fmean = 0.8 * 0.8 / ( 0.5 * 0.8+0.5 * 0.8 ) = 0.8
所以,最终的 METEOR =(1 - 0.36 )*0.8 = 0.512

CIDEr

CIDEr是专门用于评价图像描述(image caption)任务的评价指标。相较于常用于文本翻译的评价指标BLEU、ROUGE来说,CIDEr更接近人类去判断两个句子是否相近的原理,因为它利用了TF-IDF来对不同n-gram去赋予不同的权重,直观的来说,即经常出现的词组的权重具有更低的权重,而不常出现的词组则更特殊(具有更大的权重),人们会更注意这些特殊的单词。

CIDEr是利用TF-IDF来给不同长度的n-gram赋予不同的权重,然后计算候选句子和参考句子的n-gram的余弦相似度,再取平均得到最终的评分,计算公式如下:
在这里插入图片描述
其中, c_i是候选句子, s_i 是参考句子集合,m是参考句子的数量,n是n-gram的长度, g_n( c_i)和 g_n( s_i) 是候选句子和参考句子的TF-IDF向量

参考

  • VQA自动评价指标——METEOR
  • METEOR机器翻译指标 灵活的单字准确度、召回率、碎片化综合指标
  • VQA的自动评价指标——CIDEr

http://www.ppmy.cn/embedded/87948.html

相关文章

正则表达式-将一段话隔开为两个list,其中一个为标签list,一个为文本list,然后组成json

import redef extract_labels_and_contents(text):# 构建正则表达式模式pattern re.compile(r(\[FAC\]|\[ADV\]|\[SUP\]|\[RES\]|\[ANA\]|\[EXP\])(.*?)(?\[FAC\]|\[ADV\]|\[SUP\]|\[RES\]|\[ANA\]|\[EXP\]|\Z), re.DOTALL)# 查找所有匹配的标签和内容matches pattern.find…

编程新手指南:从入门到精通

编程小白如何成为大神?大学新生的最佳入门攻略 编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱&…

【vue3】template标签的一些理解(提了一嘴component标签)

1、模板语法 Vue 框架使用了一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。 因此,vue给我们提供模板语法书写h…

2、Flink 在 DataStream 和 Table 之间进行转换

1.概述 Table API 和 DataStream API 都可以处理有界流和无界流。 DataStream API 提供了流处理的基础(时间、状态和数据流管理);Table API 抽象了许多内部内容,并提供了一个结构化和声明性的 API;在处理历史数据时,需要管理有边界的流;无边界流出现在实时处理场景中,…

【计算机网络】三次握手、四次挥手

问:三次握手 四次挥手 TCP 连接过程是 3 次握手,终止过程是 4 次挥手 3次握手 第一步:客户端向服务器发送一个带有 SYN(同步)标志的包,指示客户端要建立连接。 第二步:服务器收到客户端的请求…

打卡第22天------回溯算法

开始学习了,希望我可以尽快成功上岸! 一、回溯理论基础 什么是回溯法?回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率回溯法的本质是穷举,穷举所有可能,然后找出我们想要的答案。如果想让回溯法高效一些,可…

【QT】无法打开QT的ui文件,出现闪退情况

打开qt的ui文件出现闪退的情况: 解决办法:点击扩展-Qt VS Tools-Options 找到Qt General中的Qt Designer 的Run in detached window改为True。

Mysql按照范围区间创建分区表

定义 每一个分区仅包含在指定范围内的数据列。这样的分区方式就是范围分区。在Mysql的范围分区表定义中,分区范围需要连续并且不会有覆盖。定义范围分区表时,使用VALUES LESS THAN操作符。在PARTITION BY RANGE语法中,建立分区表指定分区时&…