想象一下幼儿园的“看图说话”课:老师举起一张照片,五六岁的小明看了几眼,脱口而出:“一只小狗在草地上玩耍。”这个瞬间,小明的眼睛快速扫过画面,认出小狗、草地,大脑把这些视觉信息翻译成一句通顺的话。图像描述生成(Image Captioning)要教 AI 做的事,正是这个——给出一张图片,让模型自动生成一段自然的文字描述。整个过程就像训练一个“看图讲故事的孩子”:先用眼睛看懂画面(编码器),再组织语言逐词说出来(解码器),说到某个物体时还会抬眼再看一下图确认细节(注意力机制),最后由老师和家长用统一标准打分(BLEU、CIDEr 评测),平时则要积累大量带答案的“绘本”来练习(主流数据集),学成之后还要站上真实舞台,在有限时间里把话讲得又快又好(部署优化)。
对 AI 从业者来说,图像描述生成是理解“视觉-语言”跨模态任务的最佳入口,掌握它可以帮助你快速上手无障碍辅助、相册自动配文、智能内容审核等真实业务,是视觉算法工程师与多模态算法工程师的核心技能之一。
可视化演示
展示RSA非对称加密的完整流程:密钥生成、公钥加密和私钥解密,直观呈现非对称密码体制的核心机制。
本节配有交互动效(进入视口后自动加载,约 3KB)。
'+captions.keygen+'
看图写话任务
幼儿园的“看图说话”课是每个孩子都要经历的训练:老师举起一张照片,孩子要说出“图上有什么、在干什么”。表面看这是一件毫不费力的小事,但小明的脑海里其实完成了两个步骤——先“看懂”画面里的物体和关系,再把视觉印象“翻译”成一句符合语法的中文。AI 的图像描述生成任务,就是让计算机模仿这个“看懂再说话”的过程。
从技术上看,图像描述生成是一个跨模态的生成式任务:输入是一张图像,输出是一段自然语言句子。模型要学习的是“在给定图像画面 I 的条件下,输出句子 S”的概率。由于句子由一个个词按顺序组成,这个概率可以按链式法则拆解成每一步生成一个词的条件概率的乘积。这也决定了模型的整体框架:一个视觉编码器负责“看”,一个语言解码器负责“写”。
明白了这个任务框架,后面的编码器、解码器、注意力机制,都是围绕这个公式中的各个部件展开的。就像小明要学会看图说话,他必须先练好“眼睛”和“嘴巴”,再学会“边看边想”。
- 句子的表示输出句子由 T 个词按顺序组成,记为 S=(w_1,…,w_T),就像孩子说出的一串话。
- 图像条件每个词 w_t 的生成都以图像 I 为条件,表示“看着图说话”。
- 历史条件第 t 个词还依赖前面已经生成的词 w_1 到 w_{t-1},保证句子连贯。
- 链式连乘整个句子出现的概率等于每个词条件概率连乘,任何一步“卡壳”都会让整句概率变低。
图像编码器
小明的眼睛是怎么工作的?他扫一眼照片,视网膜上落下的只是一堆颜色和明暗,但大脑皮层能把它组织成“小狗”“草地”“太阳”这些概念。图像编码器就是 AI 的“眼睛”:它把一张由数百万个像素点组成的图片,压缩成一个包含语义信息的特征向量,让后续的语言模块“看得懂”。
早期图像描述模型采用的是全局特征:把整张图喂给一个卷积神经网络(CNN),比如 VGG 或 ResNet,取最后一个全连接层或池化层的输出,得到一个固定长度的向量 v。这个向量描述了“整张图大概长什么样”。但全局特征有个问题——它把小狗和草地揉成一团,语言模型想说“小狗在草地上玩”时,缺少了物体在空间上的位置关系。
所以后来主流方案改用区域特征:先用目标检测器(如 Faster R-CNN)在图片中框出若干可能包含物体的区域,然后对每个检测框做 RoI 池化,提取一个单独的特征向量。这样,一张图就被表示成一组向量 {v_1, v_2, …, v_K},每个向量对应图中一个局部区域——这正是注意力机制能“指哪看哪”的前提。
总结一下,编码器把“眼睛看到的画面”变成了“一组语义丰富的数字向量”。但光有特征还不够,小明还得把这些“看懂的”内容一字一句地说出来——那就轮到语言解码器登场了。
- 输入图像I 是原始图片,在计算机里是一个 H×W×3 的三维矩阵,代表高度、宽度和 RGB 三个颜色通道。
- 区域定位region_i 表示第 i 个候选区域,由目标检测器给出一个包含物体边界的最小矩形框。
- CNN 前向计算f_CNN 是卷积神经网络,它通过逐层卷积从像素中提取边缘、纹理、部件、物体等层级特征。
- 区域特征输出v_i 是第 i 个区域的特征向量(如 2048 维),把该区域的视觉信息压缩成一串数字。
语言解码器
小明看图之后开口说“一只小狗在草地上玩耍”,他不是一口气把整句话喊出来的,而是一个词一个词地往外蹦:先“一只”,再“小狗”,再“在”……每说一个词,他都会根据前面已经说出的话和眼前的画面,决定下一个词该说什么。语言解码器扮演的就是“嘴巴 + 临时记忆”的角色。
在经典模型中,解码器通常是一个 LSTM(长短期记忆网络)。LSTM 内部有一个隐状态 h_t,相当于孩子的“短时记忆”,他会记住自己刚才说过哪些词。每一步的输入有三样东西:上一个词对应的词向量 E(w_{t-1})、上一步的记忆状态 h_{t-1}、以及从图像那边传过来的上下文向量 c_t(注意力机制的产品,下一节细讲)。LSTM 消化这些输入后,输出一个新的隐状态,再通过一个线性映射和 softmax 函数,得到词表上每个词的概率。
训练的时候,人们常用“教师强制”策略——直接给解码器看真实的词;而推理时,为了让整句概率最大,常用束搜索(beam search)保留 Top-K 条候选句子,最终选出整体最通顺的一句。小明的嘴巴于是学会了“连词成句”,但他还有一个重要的习惯:说到“小狗”时,他会抬眼再看一眼图中的小狗位置——这就是注意力机制。
- 上一步记忆h_{t-1} 记录了到第 t-1 步为止模型对句子的理解,是“我已经说了什么”的编码。
- 词嵌入E(w_{t-1}) 把上一个词映射成稠密词向量,让模型能利用词的语义信息。
- 上下文向量c_t 是注意力机制提供的图像信息,告诉模型“当前该重点关注图中的哪个区域”。
- 词表概率分布softmax 将隐状态映射为词表上每个词的概率,取 argmax 就是当前步生成的字。
注意力机制
细心观察小明说话的表情会发现:他说“小狗”时,目光会落在照片里小狗的位置;说“草地上”时,视线又移到绿色区域。他不是把整张图平均地看一遍,而是根据当前要表达的意思,把“注意力”集中在最相关的局部。这是人类说话的天然习惯,也是注意力机制想模仿的行为。
没有注意力的模型,解码器每一步都只能看到整张图的全局特征,相当于“闭着眼把脑子里的模糊印象念出来”。有了注意力,解码器在每一步 t 都会做三件事:先计算隐状态 h_{t-1} 与每个区域特征 v_i 的相关性得分 e_{ti};再用 softmax 把得分变成权重 α_{ti}(所有权重之和为 1);最后按权重把 K 个区域特征加权求和,得到这一步专属的上下文向量 c_t。
注意力机制不仅显著提升了描述质量,还带来了一个副产品:可解释性。把注意力权重还原到图片上,就能看到模型在说某个词时“在看哪里”。这让工程师能够直观地检查模型是否抓住了重点——比如描述“狗”时,注意力确实集中在狗身上,而不是背景的树上。
- 相关性打分e_{ti} 是“当前描述状态与第 i 个图像区域匹配程度”的分数,由可学习的矩阵 W_a、U_a 计算。
- tanh 非线性tanh 把线性组合的结果压到 [-1,1] 区间,增强模型的表达能力。
- softmax 归一化把 K 个分数变成和为 1 的概率权重,表示“这次把注意力放在哪几个区域上”。
- 加权求和所有区域特征按权重混合,得到当前步的视觉上下文,注意力权重大的区域在向量里占主导。
BLEU评测
小明练了一个月看图说话,老师说该考试了。问题是:小明的答案和标准答案很少一字不差,比如标准答案说“小狗在绿色的草地上玩耍”,小明说“一只狗在草地上玩玩具”。老师该怎么打分?最朴素的思路是:数一数小明的话里有多少个词组和标准答案重合——重合越多,说明“背得越接近”。机器翻译领域经典的 BLEU 指标,用的就是这套逻辑。
BLEU 的核心是 n-gram 精确率:把候选句子和参考句子都切成一个个“n 元词组”(n=1 是单词,n=2 是相邻两个字,以此类推),统计候选句的 n-gram 有多少出现在参考句里。为了防止模型把“的的的”这种重复词刷满,还要做截断计数(Count_clip):某个 n-gram 在候选句中出现次数不能超过它在参考句中出现的最大次数。最后,把不同 n 的精确率做几何平均,再乘上一个简短惩罚(BP)——候选句如果比参考句短很多,分数会被打折,防止模型只输出“狗”一个字来蒙混过关。
不过 BLEU 有一个明显短板:它只认字面,不认语义。如果小明说“一只小狗在草地上开心地跑”,参考句是“小狗奔跑于绿色草坪”,字面重合很少,BLEU 分会给得很低,但人类会认为这两句意思几乎一样。于是,一个更懂“意思”的评委出现了——CIDEr。
- n-gram 切分把句子切成连续的 n 个词的小块,n=2 时“一只小狗”被切成[“一只”,“小狗”]两个二元组。
- 截断计数候选句中每个 n-gram 的计数值截断为不超过参考句中该 n-gram 的最大出现次数。
- 几何平均把 n=1 到 N 的精确率取对数再平均,保证任何一个 n 得分低都会拉低总分。
- 简短惩罚BP 在候选句比参考句短时小于 1,句子越短惩罚越狠,鼓励模型把话说完整。
CIDEr评测
既然 BLEU 老师只懂“字面照搬”,那谁来当真正理解语义的阅卷人?CIDEr(CIDEr-D)就是专为图像描述设计的裁判。它的思路像一位语文老师:不会因为孩子用了不同词汇就判错,而是先判断哪些词是这句话的“关键词”,再看两句话在这些关键词上的意思是否接近。比如“小狗”“草地”这类名词承载着主要信息,权重应该高一些;而“一只”“在”这类常见虚词,到处都有,权重就应该低一些。
CIDEr 的具体做法分四步:先把句子拆成 n-gram,然后对句子里的每个 n-gram 做 TF-IDF 加权——TF 衡量它在当前句子中出现的频率(越重要加权越高),IDF 衡量它在整个语料库中的稀有度(越是到处都有的常见词权重越低)。于是每个句子都变成一个高维稀疏向量,向量的每个维度对应一个 n-gram 的加权值。最后,计算候选句向量和参考句向量的余弦相似度,对多个人工参考句子取平均。
实验表明,CIDEr 与人工评分的相关性比 BLEU 更高,因此在图像描述领域已成为最重要的指标之一。但别高兴太早——再好的裁判也需要“标准卷”。要让小明真正学会看图说话,老师得准备一大批“带标准答案”的图片,这就是我们接下来要说的主流数据集。
- TF 频率项某个 n-gram 在句子中出现的次数越多,说明它越能代表这句话的内容,TF 越大。
- IDF 稀有度项语料库中越少出现的 n-gram,IDF 越大,给予更高权重;像“在”“的”这种高频词会被压低。
- 余弦相似度两个向量夹角的余弦值,cos=1 表示方向完全一致,cos=0 表示完全无关。
- 多参考平均m 句人工描述逐一与候选句比较,取 m 个余弦相似度的平均值,降低个别参考句的偶然性。
主流数据集
要想让小明学会看图说话,光靠一两张照片可不够。老师准备了一屋子“绘本”:每张照片背后都写着几句人工标注的句子,孩子看一部分图训练,再用另一部分图考试。AI 的训练也是同样的逻辑——需要大量“图片-描述”配对的标注数据,数据集就是孩子的“课本”和“考卷”。
图像描述领域最主流的数据集是微软的 COCO Caption。COCO 包含 32.8 万张日常场景图片,其中约 11.8 万张被选为图像描述的训练集,每张图片都配有 5 句由人工撰写的描述句。之所以要 5 句而不是 1 句,是因为同一张图可以有多种合理说法——“一只狗在草地上”和“草地上有一只棕色的小狗”都正确,多句参考可以让评测更公平。此外还有规模较小的 Flickr8k(约 8000 张)和 Flickr30k(约 31000 张),常用于学术研究和快速实验。为了方便不同论文公平对比,大家普遍采用 Karpathy 划分方式:从训练集中切出独立的验证集和测试集,保证所有模型在同一份“考卷”上比拼。
有了一批高质量的“课本考卷”,小明就能扎实地学会看图说话了。但是,当他从教室走向真实的街头——比如给视障人士实时描述眼前的场景——他必须更快、更轻、更稳。这就进入了部署优化的环节。
- 训练集规模Karpathy 划分下 COCO 训练集有约 11.3 万张图,模型在这里“做练习册”。
- 验证集规模5000 张图用于在训练过程中监控模型效果、调节超参数,相当于“模拟考”。
- 测试集规模另外 5000 张图用于最终评测,只在模型训练完成后“揭开答案”,防止泄露。
- 每图 5 句描述每张图有 5 句人工参考句,因此总描述句数为图片数的 5 倍。
部署优化
小明在课堂上能慢悠悠地看图、思考、组织语言,每个词想两秒也没人催他。但真实世界的舞台是严酷的:视障用户举起手机拍一张街景,系统必须在一两秒内把描述读出来;云相册高峰期每秒要处理成百上千张照片。从实验室到生产环境,部署优化的目标就是让模型“少费电、少等待、还能把话说完整”。
优化的第一刀砍向编码器。CNN 前向计算占了单图推理的大头,把 ResNet-101 换成 MobileNet 这类轻量化网络,编码耗时可以降到原来的十分之一。第二刀是特征缓存:在相册配文这类场景中,图片是离线批量处理的,可以用大模型离线预提取特征并存入向量库,在线阶段只跑轻量解码器,速度大幅提升。第三刀是控制束搜索的 beam size:beam 越大句子越优,但计算量线性增长,生产环境常用 beam=3 或 5 作为性价比平衡点。每一处优化都可以拆到下面的总延迟公式里逐项衡量。
回顾这一路,我们从一个“看图说话”的生活场景出发,看到了编码器如何让 AI 拥有一双会提取特征的“眼睛”,解码器如何让它长出逐词表达的“嘴巴”,注意力机制如何让它学会“边看边说”,BLEU 和 CIDEr 又是如何扮演“阅卷老师”的角色,数据集的规模与质量如何为这一切提供养分,最后部署优化让模型真正站上生产环境的大舞台。这就是图像描述生成的全部旅程。
- 预处理耗时T_pre 包括图片解码、缩放、归一化等操作,输出固定尺寸的张量。
- 编码器耗时T_enc 是 CNN 提取图像特征的一次前向传播时间,通常占最大比重。
- 解码器耗时LSTM 是串行生成的,每生成一个词要一次前向计算,总耗时等于单步耗时乘句子长度 L。
- 后处理耗时T_post 包括词表过滤、标点修正和文本格式化等收尾工作。
AI 应用场景
无障碍辅助:让视障人士“听”见世界
阶段:推理部署阶段
解决的问题:视障人士无法通过视觉获取图片内容,需要一种实时把图片“翻译”成语音的方式。传统方案依赖人工描述,无法覆盖海量图片和实时场景。AI 图像描述生成可以自动将照片转化为自然语言,再交给 TTS 语音合成朗读出来,帮助视障用户理解眼前的世界。
具体案例:视障用户举起手机拍下桌面,APP 立即生成“桌上一盘水果,旁边有一杯咖啡”的描述,并通过读屏软件播报。结合 OCR 还能进一步识别商品标签文字,实现购物辅助。
相册自动配文:给照片写一句“回忆录”
阶段:离线批量处理阶段
解决的问题:云相册里积攒了成千上万张照片,手动一张张添加文字描述和标签极其耗时。AI 图像描述生成可以离线批量处理,为每张照片生成标题或描述,提升检索效率和分享体验。
具体案例:手机相册的“回忆”功能按时间、地点聚类后,为每张照片生成“午后公园遛狗”“山间栈道徒步”等描述文字,用户搜索“狗狗”时能快速召回相关照片。这里可以用特征缓存优化:先用大模型离线预提取特征存入向量库,在线只跑解码器。
内容审核:快速理解图片在“说什么”
阶段:批量推理与业务集成阶段
解决的问题:内容平台每天上传海量图片,审核系统需要快速判断图片内容是否违规。图描述模型可以用一句话概括图片内容,辅助审核人员快速预筛——比如“一个人站在马路中间”这类危险行为描述,可以优先送入人工复核队列。
具体案例:电商平台用图像描述模型为商品主图生成描述,再与违规关键词做匹配;社交平台则将描述结果与文本审核模型串联,识别广告导流、低俗内容等风险。这种场景对延迟要求中等,对吞吐量要求高,适合批处理 + 轻量化解码器。
Python 演示
import mathfrom collections import Counter def tokenize(text): return text.lower().split() def ngrams(words, n): return [tuple(words[i:i + n]) for i in range(len(words) - n + 1)] def clip_count(cand, refs, n): cand_ngs = ngrams(cand, n) if not cand_ngs: return 0, 0 ref_counter = Counter() for ref in refs: ref_counter.update(ngrams(ref, n)) hits = sum(min(ref_counter[ng], cand_ngs.count(ng)) for ng in set(cand_ngs)) return hits, len(cand_ngs) def brevity_penalty(cand, refs): if not cand: return 0.0 best_ref = min(refs, key=lambda ref: abs(len(ref) - len(cand))) return 1.0 if len(cand) >= len(best_ref) else math.exp(1 - len(best_ref) / len(cand)) def bleu_score(candidate, references, max_n=4): cand, refs = tokenize(candidate), [tokenize(r) for r in references] bp = brevity_penalty(cand, refs) precisions = [] for n in range(1, max_n + 1): hits, total = clip_count(cand, refs, n) precisions.append(hits / total if total > 0 else 0.0) if any(p == 0.0 for p in precisions): return 0.0 return bp * math.exp(sum(math.log(p) for p in precisions) / max_n) def tfidf_vectors(sentences): df = Counter() for s in sentences: df.update(set(tokenize(s))) vecs = [] for s in sentences: words = tokenize(s) freq = Counter(words) vec = {} for w in set(words): tf = freq[w] / len(words) idf = math.log(len(sentences) / (1 + df[w])) vec[w] = tf * idf vecs.append(vec) return vecs def cosine_similarity(vec_a, vec_b): denom = math.sqrt(sum(v * v for v in vec_a.values())) * math.sqrt(sum(v * v for v in vec_b.values())) if denom == 0: return 0.0 return sum(vec_a[w] * vec_b[w] for w in set(vec_a) & set(vec_b)) / denom def cider_score(candidate, references): sentences = [candidate] + references vecs = tfidf_vectors(sentences) return sum(cosine_similarity(vecs[0], vec) for vec in vecs[1:]) / len(references) if __name__ == "__main__": cand = "a dog is playing on the grass" refs = [ "the little dog plays on the green lawn", "a puppy is running on the grass happily", ] print("BLEU-4:", round(bleu_score(cand, refs), 4)) print("CIDEr(1-gram):", round(cider_score(cand, refs), 4))
clip_count(cand, refs, n)实现截断计数:候选句 n-gram 出现次数不能超过参考句中的最大次数,防止机器用重复词刷分。brevity_penalty(cand, refs)计算简短惩罚:候选句比参考句短时返回小于 1 的系数,惩罚“只输出几个关键词”的取巧行为。bleu_score(candidate, references, max_n=4)把 1~4 元精确率做对数平均,再乘 BP,得到 BLEU-4 分数。tfidf_vectors(sentences)对语料集合中的每个句子构建 TF-IDF 加权向量:当前句中出现多、全局少见的高频词获得更高权重。cosine_similarity(vec_a, vec_b)计算两个句向量夹角的余弦值,衡量候选句与参考句的语义方向接近程度。cider_score(candidate, references)对多句人工参考描述逐一计算余弦相似度后取平均,得到 CIDEr 分数。
常见误区
误区
正解
误区
正解
误区
正解
误区
正解
误区
正解
面试题
Q1. 图像描述任务(Image Captioning)的输入与输出分别是什么?
- A.输入文本,输出图像
- B.输入图像,输出自然语言句子← 正确答案
- C.输入音频,输出图像字幕
- D.输入视频,输出逐帧标签
答案:B。图像描述是典型的多模态生成任务,输入是图像,输出是一段自然语言描述。选项 A 是文生图任务,D 是视频理解任务,C 与图像描述无关。记忆点:看图说话,看的图进,说的话出。
Q2. 经典图像描述模型中,负责提取图像特征的部分通常叫做什么?
- A.解码器
- B.编码器← 正确答案
- C.判别器
- D.生成器
答案:B。编码器(Encoder)负责把图像映射为特征向量,解码器(Decoder)负责逐词生成句子。判别器是 GAN 中的概念,生成器在文本生成中指解码器。可以用“眼睛管看、嘴巴管说”来记忆。
Q3. 训练解码器时,把真实词依次喂给模型的做法叫什么?
- A.束搜索
- B.教师强制← 正确答案
- C.梯度裁剪
- D.弱监督
答案:B。教师强制(Teacher Forcing)就是在训练时用上一步的真实词作为当前步输入,让模型学得更快更稳。束搜索是推理时的策略,梯度裁剪是训练技巧,弱监督是另一种数据范式。好比“老师带着孩子逐句模仿,而不是让孩子自己自由发挥”。
Q4. 以下哪些指标属于图像描述任务的常用评测指标?
- A.BLEU← 正确答案
- B.CIDEr← 正确答案
- C.IoU
- D.PSNR
答案:AB。图像描述是文本生成任务,常用 BLEU、CIDEr、METEOR、SPICE 等文本评测指标。IoU 用于目标检测/分割,PSNR 用于图像质量评估,都不属于文本描述评测。候选人选答案时可以抓住“描述输出的是句子”这个关键点。
Q5. 注意力机制中,符号 αti 表示的含义是什么?
- A.第 t 步生成词对第 i 个图像区域的关注权重← 正确答案
- B.第 t 步生成词的概率
- C.图像区域的总数量
- D.隐状态向量的维度
答案:A。αti 是解码第 t 步时分配给第 i 个图像区域的注意力权重,所有权重之和为 1。它决定当前词“重点看哪里”。B 选项是 softmax 输出全词表后才得到的,不是 αti。
Q6. 关于 BLEU 指标,下列说法正确的是哪些?
- A.它基于 n-gram 精确匹配← 正确答案
- B.它包含简短惩罚防止候选句过短← 正确答案
- C.它对同义改写评分非常友好
- D.它把多个 n 的精确率做几何平均← 正确答案
答案:ABD。BLEU 用 n-gram 精确率衡量字面重合,用 BP 惩罚短句,并将 n=1~4 的精确率做几何平均(对数平均)。它只认字面,对同义改写极不友好,C 错误。可以理解为“严格对照字词的背题机器”。
Q7. CIDEr 相比 BLEU,在哪一点上做出了关键改进?
- A.用 TF-IDF 加权和余弦相似度衡量语义接近度← 正确答案
- B.计算速度大幅提升
- C.不再需要人工参考描述
- D.只比较 1-gram
答案:A。CIDEr 的核心改进是利用 TF-IDF 加权突出关键词,再用余弦相似度衡量候选句与参考句的语义方向接近程度,B 不是它设计目标,C 错误(仍需参考句),D 错误(CIDEr 综合多阶 n-gram)。它更像“看意思”的阅卷老师。
Q8. 关于 COCO Caption 数据集,下列说法正确的有哪些?
- A.每张图片配有 5 句人工描述← 正确答案
- B.训练集约 11.8 万张图片← 正确答案
- C.只包含人物不包含动物和物体
- D.是图像描述领域最常用的数据集之一← 正确答案
答案:ABD。COCO Caption 每张图 5 句人工标注,Karpathy 划分下训练集约 113287 张,内容涵盖人、动物、交通工具、生活用品等多种类别,C 错误。它在图像描述中的地位就像 ImageNet 在分类任务中的地位一样。
Q9. 将图像描述模型部署到线上服务时,哪一项优化对降低端到端延迟最直接?
- A.把 CNN 编码器换成 MobileNet 等轻量化网络← 正确答案
- B.无限增大 beam size
- C.去掉所有图像预处理
- D.将训练数据随机增广
答案:A。CNN 编码器前向计算通常占单图推理的主要时间,换成轻量化网络能直接压缩延迟。增大 beam size 反而增加计算量;图像预处理不能去掉;数据增广是训练期的手段。优化思路要对准延迟公式里的瓶颈环节。
Q10. 当模型输出的描述与人工参考句高度同义但字面 n-gram 重合很少时,会出现什么现象?
- A.BLEU 分数偏低← 正确答案
- B.CIDEr 分数通常比 BLEU 更能反映语义← 正确答案
- C.BLEU 分数会高于人工评分
- D.CIDEr 一定给出满分
答案:AB。BLEU 依赖字面 n-gram 重合,同义改写会让分很低;CIDEr 通过 TF-IDF 加权和余弦相似度对同义表达更宽容,因此与人工评分相关性更高,但它不会“一定给满分”。理解两者的差异,才不会被单一指标误导。