假设你给 AI 看一张照片,问它 "这是什么?",它回答 "一只戴帽子的柯基犬"。你再问 "这是狗吗?",它回答 "是"。如果你只关心答案对不对,两次都算答对了。但在视觉问答(VQA, Visual Question Answering)领域,这两种问题被严格区分成两个名字:开放式 VQA 和二元 VQA。它们不是同一个能力的不同难度,而是两种数学形式完全不同的任务。

让我先说结论:二元 VQA 考的是判别边界,开放式 VQA 考的是生成能力。前者要你在两个符号之间做选择,后者要你在整个自然语言空间里找一条正确的输出。这带来的差异,从模型架构、训练目标、评测方式到模型作弊的方式,全都不同。
判断题和问答题,底层逻辑不一样
二元 VQA 的答案空间只有两个符号:是 / 否。模型不需要生成一句话,它只需要在 "是" 和 "否" 之间做二选一。早期实现里,这通常是给模型接一个二分类头,输出两个 logits,再过一个 softmax。损失函数是交叉熵,评估指标是准确率,机器学习里最简单的那一套。
开放式 VQA 完全不是这个概念。"这是什么" 的合法回答有无限多个——"狗"、"柯基"、"一只有斑纹的动物"、"在草地上打滚的柯基犬"——全是正确答案。所以模型要么从标注数据里提炼一个固定大小的高频答案集,把开放题强行压成多选题;要么像后来的 Transformer 模型那样,把答案当作文本生成任务,一个词一个词地吐出来。前者受限但可控,后者自由但容易胡编。
| 对比维度 | 二元 VQA | 开放式 VQA |
|---|---|---|
| 典型问题 | 这个人是男性吗? | 这个人手里拿着什么? |
| 答案空间 | 是 / 否 | 理论上无限的自然语言序列 |
| 模型常见形态 | 二分类头 / 受限生成 | 压缩成固定答案集,或自回归生成 |
| 评测难度 | 低,可字符串精确匹配 | 高,需多个答案或语义相似度 |
| 常见翻车方式 | 语言先验、答案偏置 | 幻觉、同义不同形被扣分 |
"是"字背后藏着一个统计陷阱
我最早以为二元 VQA 是开放式 VQA 的一个平凡子集——能回答 "那是什么" 的模型,难道还不会回答 "是不是" 吗?后来我在一个测试集上看到,模型把 "图中有没有人?" 答成 "有",而图中空无一人。那一刻我意识到它根本没在看图。
这不是模型故意偷懒,而是优化目标让它找到了更省力的解。在 VQA v1 数据集里,"有没有 / 是不是 / 能不能" 这类问题的答案分布是严重偏斜的,很多问题的正确答案恰好就是 "是"。于是模型只需要记住语言模式:看到问题里有 "有没有",预测 "有",就能在训练集上获得很高的准确率。它不需要提取任何视觉特征,就能把损失降到最低。这正是 Agrawal 等人在 Analyzing the Behavior of Visual Question Answering Models 里发现的:模型在 yes/no 问题上的表现很大程度来自语言先验,而不是视觉理解。
后来的 VQA v2 就是为了拆穿这个把戏。Goyal 等人在 Making the V in VQA Matter 这篇论文里的核心做法是:收集互补的图像,使每个问题都对应一对相似但答案不同的图片。比如 "这个人是男性吗" 这个问题,会同时出现在一个男性和一个女性的图片上。这样一来,只靠语言模式猜答案的模型,在这两个互补样本上必然错一个,总分被打回原形。VQA 任务最初由 Antol et al. 2015 提出,当时的评估脚本就暴露了二元答案的不平衡,只是到了 v2 才用数据平衡的方式系统性弥补。
这件事让我想通了一个道理:模型不是在 "理解" 后回答问题,它只是在最小化损失函数。只要数据集里存在统计捷径,模型就会毫不犹豫地走上去。二元问题由于输出空间小,这种捷径尤其多。
考核标准决定了模型的偏科
在 VQA 官方评估中,二元问题和开放式问题用的是同一把尺子:预测答案与人工标注完全匹配。但相同尺子量出的分数,含义完全不同。二元问题如果类别均衡,随机猜也有 50% 的正确率;一个只回答 "是" 的垃圾模型,在 yes 占比高的数据集上也能拿到高分。而开放式问题,比如回答 "那是什么",正确答案的集合可能有一大串合法表述,模型哪怕真的认出了物体,只要用词和人工标注不完全一致——比如说了 "犬" 而人类写的都是 "狗"——就会被判错。换句话说:二元 VQA 的分数被语言先验灌了水,开放式 VQA 的分数则被匹配规则拖了后腿。
这也是为什么后来出现了很多针对开放式的评估改进,比如把答案做归一化、用多个标注者投票、或者直接改用 CIDEr 和 BLEU 这类文本生成指标。可无论怎么改,开放式的终极难题始终存在:怎么判断一个 "语义等价但表述不同" 的答案是对的?这个问题到今天依然没有公认的满分答案。
大模型时代,这个区别被表面抹平了
到了 GPT-4V、LLaVA 这类大规模多模态模型的时代,模型不再区分 "开放式" 和 "二元"——所有问题都被同一个 Transformer 解码器当作文本生成来处理。在输出端,二元问题只是恰好被约束成生成 "是" 或 "否"。从工程接口上看,差异确实被抹平了。
但从任务本质看,差异并没有消失。二元的 "是/否" 决策仍然是一个二分类,只是这个分类被隐藏在生成概率里。当模型说 "是" 的时候,它只是在采样时选了概率最高的 token,这个 token 同样可能被语言先验和上下文偏见带偏。而开放式 VQA 的幻觉问题在生成式框架下更加严重——自由度越大,越容易编造一个语法通顺但视觉上没有任何依据的答案。你看那些多模态模型一本正经地描述一张不存在的照片,本质就是这个老问题的放大版。
你可能还会混淆的三个问题
为什么很多 VQA 论文要把 yes/no 问题单独拿出来分析?
因为二元问题太容易被语言先验污染。如果不单独看,二元问题的高分会把模型在开放问题上的低分掩盖掉,平均分既不能说明视觉理解,也不能说明生成能力。
现在的大模型是不是已经不需要区分这两个任务了?
模型层面确实用一套生成框架解决了,但评估和风险控制仍然需要分开。生成式模型在二元问题上依然可能因为概率采样输出相反的答案;在开放问题上则会一本正经地编造,两种失败模式完全不同,产品里需要不同的兜底策略。
我能不能用同一个准确率指标去对比两种 VQA?
不能。前者很容易刷到高准确率,后者即使模型表现不错也可能被同义词和长尾答案压分。跨任务比分数毫无意义。
所以回到标题里的两个问题:"这是什么" 和 "这个人是男性吗" 看似在测同一种能力,其实一个在考生成式推理,一个在考判别式选择。二元 VQA 的高分不代表模型真的理解了画面,开放式 VQA 的低分也不代表模型一无所知。下次你看到 VQA 的评测表,别被一个总分骗了——先问一句:这个分数是按什么题型、用什么指标算出来的?
如果让我对实际系统给一条建议:业务里能用判断题解决的需求,就不要开放给模型自由发挥。二元的限制能帮你拦截绝大部分不可控输出;只有在确实需要解释、描述、推理的场合,才放它去做问答题。你需要的不是最强的模型,而是最清楚的答案空间。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/453.html