假设你手里有两个 VQA 模型,在测试集上跑完之后,你把它们生成的答案拿给三个人看,他们一致认为模型 A 的答案质量更高。现在换成自动指标打分:BLEU 说 B 胜出,ROUGE 说 A 胜出,CIDEr 却说 A 胜出——和人类判断一致。同一个句子,为什么在计算机眼里会有这么大的分歧?

这三个指标都是 NLP 领域的老将,常被用来评估图像描述、文本摘要、机器翻译。但它们的核心差异在于:每种指标对"好答案"的定义完全不同。想要知道谁敢跟人类站在一边,得先看看它们的底层逻辑。
先说背景:VQA 的评估标准本身就很特殊。如果答案是有限的候选集,标准做法是精确匹配准确率——答对就 1,答错就 0。但在开放生成式 VQA 中,模型输出的是自由文本,参考答案往往不止一种写法,比如 "the dog is running" 和 "a dog runs" 都可能是正确的。这时就需要一个文本相似度指标,来自动判断模型输出和参考答案有多接近。
| 指标 | 核心思想 | 优点 | 缺点 |
|---|---|---|---|
| BLEU | n-gram 精确率 + 短句惩罚 | 计算简单,机器翻译领域标准 | 只精确不召回,对短答案极其不友好 |
| ROUGE | n-gram 召回率 | 适合摘要,衡量信息覆盖 | 不关心生成质量,命中关键词就算赢 |
| CIDEr | TF-IDF 加权的 n-gram 余弦相似度 | 突出关键内容,弱化常见词 | 依赖参考集统计,不懂同义词 |
BLEU:短句惩罚,审美很直男
BLEU 最初是 Papineni 等人在 2002 年提出的机器翻译指标。它的公式可以拆成两半:先计算候选译文与参考译文的 n-gram 精确率,再进行几何平均;然后乘上一个短句惩罚因子——只要候选长度小于参考长度,分数就被猛砍。
你可能会想,那让模型生成和参考差不多长的答案不就行了?问题是 VQA 的答案天然就短。比如问题 "这朵花是什么颜色?",参考答案是 "the flower is red",模型正确地回答 "red"。在 BLEU 看来,"red" 比 "the flower is red" 短太多,短句惩罚因子会把它压到一个惨不忍睹的分数。反而一个冗长的、包含更多参考词的错误答案能得高分。
我自己就吃过这个亏。有一段时间我用 BLEU 来评估一个 VQA 模型,发现一个只会回答 "yes" 的垃圾模型的 BLEU 分数,竟然比我认真训练过的模型还高。原因很简单:测试集里有很多 yes/no 问题,参考答案就是 "yes"。BLEU 衡量的是字符串重合度,而不是回答质量。
BLEU 论文里隐含的假设是:候选和参考的长度大致接近。这个假设在机器翻译里通常成立,在 VQA 里完全不成立。
ROUGE:只关心你有没有谈到点子上,不关心你怎么谈
ROUGE 是 Lin 在 2004 年提出的,专门用来评估自动摘要。它的核心是召回率:参考摘要中的 n-gram,有多少被候选摘要覆盖到。
在摘要任务里,这个逻辑是对的——摘要必须包含原文最重要的信息,漏掉关键点就是失败。但 VQA 不是摘要。问题问的是单一事实,答案只需要命中要害,不需要覆盖全部信息。比如问题 "图里有几个人?",参考答案是 "there are three people in the picture",模型答 "three people",ROUGE-1 召回率能拿到一个很高的分数。
更麻烦的是,ROUGE 只看覆盖,不管语义逻辑。模型只要把参考答案里的关键词凑出来,哪怕语序混乱、答非所问,分数照样好看。所以用 ROUGE 单独评估 VQA,基本等于给投机分子开绿灯。
ROUGE 论文后来也有了不少变种,ROUGE-L 用最长公共子序列,ROUGE-S 用 skip-bigram,但它们的通病并没有解决:不关心文本的流畅性和相关性,只关心参考文本中出现了哪些词。
CIDEr:给每个词称重,让重点说话
CIDEr(Consensus-based Image Description Evaluation)由 Vedantam 等人提出,2015 年发表在 CVPR 上。它的灵感来自一个朴素的观察:一个词对描述内容的贡献,取决于它的信息量。像 "the"、"a" 这种所有句子都有的功能词,没什么区分度;而 "surfboard"、"tiger" 这种只在特定描述中出现的词,更能代表描述的重点。
具体做法是:先在所有参考描述上统计每个 n-gram 的 TF-IDF 权重——词频高但文档频率也高的词,权重会被压低;出现次数少但只出现在少数描述中的词,权重被抬高。然后,把候选描述和每一条参考描述都表示成带权重的 n-gram 向量,计算余弦相似度,最后取所有参考描述的平均值。
这比 BLEU 和 ROUGE 聪明在哪?余弦相似度同时兼顾了精确率和召回率。更重要的是,TF-IDF 让关键内容主导相似度,而不是被常见词淹没。对 VQA 的短答案来说,"red" 和参考 "a red sports car" 即使 n-gram 重叠很少,但由于 "red" 的权重高,余弦相似度依然能反映它们相关——不会像 BLEU 的短句惩罚那样直接枪毙。
这也是我最初低估 CIDEr 的地方。我一度以为它只是给 BLEU 加了个 TF-IDF 的补丁,后来自己手算了一个例子才发现,这个补丁改变了评估的哲学:从 "有没有原样照搬" 变成了 "有没有说到重点"。
更关键的是,CIDEr 原始论文里做了一个人类相关性实验:在 COCO Captions 数据集上,作者让人类标注者给候选描述打分,再计算各自动指标与人类打分的斯皮尔曼相关系数。结果是 CIDEr 的相关性最高,显著超过 BLEU、ROUGE 和 METEOR。这也是很多人默认它在生成式视觉任务里更靠谱的原因。
一个有趣的巧合:VQA 官方评估也讲"共识"
你可能会问,VQA 评测为什么不用这些指标?其实 VQA 官方挑战赛用的是另一种方案:人类共识准确率。模型生成的答案,只要与至少 3 个标注者给出的参考答案完全匹配,就算对。这个设计的哲学和 CIDEr 如出一辙——重要的不是你写了什么,而是大多数人类觉得对不对。
所以你看,即使是在官方协议里,人类判断的底色是"共识",不是某个固定字符串。CIDEr 的名字里就带着 Consensus,它从一开始就在模仿这种共识机制。
所以,答案是什么?
回到最初的问题:在 CIDEr、BLEU、ROUGE 三个指标中,哪个最接近人类判断?我的答案是 CIDEr。理由有三个:它在图像描述的人类相关性实验里排名第一;它的 TF-IDF 机制对关键内容更敏感;它对短答案比 BLEU 宽容,比 ROUGE 均衡。
但请注意,CIDEr 不是万能的。它依赖参考集计算 TF-IDF,如果参考答案只有一两条,权重统计就会失真;它完全不懂同义词,"automobile" 和 "car" 在两个向量里是不同维度;更重要的是,它和 BLEU、ROUGE 一样,都不看问题本身——一个驴唇不对马嘴的答案,只要和参考答案词面重合度高,照样可能得分很高。
所以我的建议是:在正式评测开放生成式 VQA 时,不要把单一指标当作真理。封闭式问题继续用精确匹配准确率;开放式问题至少同时报告 CIDEr、BLEU、ROUGE,并且抽几百条样本做人工盲评。自动指标的意义是低成本地筛掉最差的模型,而不是给所有模型排一个"最终名次"。
你更可以把这看作一个提醒:所有自动指标,本质上都是把人类价值判断压缩成了数学公式。它们各有偏置,也各有盲区。理解了这一点,下次看到指标打架,你就知道该信谁了。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/495.html