论文:Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
简介
本文主要介绍了一种名为Prophet的框架,旨在通过引入答案启发式来激活GPT-3的能力,从而提高知识型视觉问答的性能。具体而言,Prophet通过训练一个基于特定数据集的普通VQA模型来生成两种类型的答案启发式:答案候选项和答案感知示例,然后将这两种答案启发式编码到提示中,以便GPT-3更好地理解任务并增强其能力。实验结果表明,Prophet在两个具有挑战性的知识型VQA数据集上显著优于现有的所有最先进方法,即OK-VQA和A-OKVQA。
背景
- 基于知识的VQA系统需要额外的外部知识(图片以外)来辅助回答问题,与问题无关的知识有时会降低模型效果。目前已经存在一些基于LLM来提供知识以辅助问题回答,但是已有的许多方法并没真正激发LLM的实际能力,主要因为提供给LLM的输入信息太少(input越长越好?)
- 目前对于视觉推理类的任务,各种方法往往表现不佳,引入外部知识是提高其效果的重要方法之一。早期存在一些基于知识的VQA基准测试,其自带KBs(structured knowledge bases),用于注释问题中可能提到的外部知识,而最近的VQA基准测试都不带有KBs,故所有外部知识均可以引入以辅助VQA,本文便是研究如何在VQA中引入开放领域外部知识。
- 以往基于知识增强的VQA:直接从KBs中检索所需的外部知识,随后将(知识,图片,问题)一起送给模型以预测答案。效果不好的两个原因:
- 可能有无法检索到的知识
- 检索到的知识可能会引入大量与问题无关的信息,影响模型效果
- 新的范式:借助LLM的能力,首先将图片转为captions,随后将captions+问题+一些上下文实例送给LLM,让其预测正确答案。不足:
- 生成的caption无法覆盖图片全部信息
- 上下文实例选不好,其对于模型非常重要
贡献
引入了一种新的VL+LLM范式,并提出了新的构造上下文的方法,充分利用了token的长度,有效激发了大模型的能力
模型方法
两阶段的框架
- 训练一个小的VQA模型去生成两种启发式的答案
- 将问题+标题+生成的两种启发答案格式化地填入prompt中,让GPT-3去生成答案
第一阶段
在第一阶段中需要通过一个小VQA模型生成两种答案,该小模型在VQA数据集中进行训练,并执行S-way的答案预测。
具体来说,该小模型分为两个部分:
- 首先是一个Mb(backbone),该部分会将输入和问题两种模型进行结合编码,得到混合特征z,即
- 紧接着是一个Mh(分类头),根据混合特征z去预测多个可能的答案,即
answer candidates
对于一个问题+图片的输入,其表示许多可能的答案,每个答案都与一个置信度分数相关联
上述的y代表一个答案的集合,是Top-K个最符合问题的答案,,其中代表下标(是最常见答案集合的下标),最终答案候选为:
其中Wj是候选答案,yj是相关度分数
此处的W代表数据集中最常出现的答案的集合(所以该模型是在一个答案集合里进行预测?)
answer-aware
对于一个问题+图片的输入,其表示许多上下文示例
对于数据集中的每个(vi,qi),可以利用Mb去计算出一个混合特征Zi,在给定(v,q)的情况下,去找出一些与(v,q)对应z的相似的一些vi(用余弦相似度来衡量相似性),作为answer-aware,具体计算公式如下:
第二阶段
在第二阶段中,利用前面生成的内容去构造出一种增强的prompt,来提高GPT3的能力
构造prompt如下:
与大多数prompt不同,该prompt还包含了相关度分数,这可以帮助GPT-3更好地选出相关性强的候选答案,最终的答案可以和候选答案有关,同时也可以是分布外的答案
为了更好地利用小模型生成的两种内容,文中采用多查询的策略。一共会生成T次答案,每次查询都需要T个答案候选,故一共需要生成N * T个答案候选(实验部分会讨论N和T对于模型效果的影响)
实验
数据集
OK-VQA和A-OKVQA
OK-VQA:是一个基于外部知识的VQA数据集,包含9K和5K个image-question对分别用于训练和测试。每个数据样本都用十个开放式答案进行注释
A-OKVQA:目前最大的基于知识的VQA数据集,17K training, 1K validation, and 7K testing.每个数据样本都用十个开放式答案进行注释,此外还提供了选择题
相关细节
第一阶段模型:使用MCAN-large作为基座模型,并做了一些修改
一阶段模型在VQAv2等数据集中进行预训练,并且剔除了OK-VQA和A-OKVQA中的数据,随后在OK-VQA上进行微调,得到最终的VQA模型,模型的训练只需要在一张3090训练即可
第二阶段模型:text-davinci-002版的GPT-3
标题生成模型:和PICa一样使用OSCAR+
消融实验
一些实验结果
主要结果
样例
由图可知,其中的prompt包含多个问题和对应答案,问题是通过answer-aware选出来的,其中每个问题的候选答案是answer candidates
收获
1.本方法通过训练一个小模型来帮助大模型更好地生成答案,大大降低了训练成本,是一种很有趣的训练范式,尽管如此,还是引入了额外的训练成本。或许可以彻底丢弃训练阶段,将第一阶段的小模型替换为其他类型的视觉大模型
2.由于第一阶段使用了OK-VQA的数据集,所以并非是zero-shot设置下的方法,可以尝试使用LLM在zero-shot情况下做
3.尽管引入了新的上下文,但是对于视觉特征并没有做很好的处理,在caption生成阶段沿用了以前的方法,可以针对问题去生成更多有用的caption