多模态论文:Prophet

354 阅读6分钟

论文:Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering

论文地址:arxiv.org/pdf/2303.01…

简介

本文主要介绍了一种名为Prophet的框架,旨在通过引入答案启发式来激活GPT-3的能力,从而提高知识型视觉问答的性能。具体而言,Prophet通过训练一个基于特定数据集的普通VQA模型来生成两种类型的答案启发式:答案候选项和答案感知示例,然后将这两种答案启发式编码到提示中,以便GPT-3更好地理解任务并增强其能力。实验结果表明,Prophet在两个具有挑战性的知识型VQA数据集上显著优于现有的所有最先进方法,即OK-VQA和A-OKVQA。

背景

  1. 基于知识的VQA系统需要额外的外部知识(图片以外)来辅助回答问题,与问题无关的知识有时会降低模型效果。目前已经存在一些基于LLM来提供知识以辅助问题回答,但是已有的许多方法并没真正激发LLM的实际能力,主要因为提供给LLM的输入信息太少(input越长越好?)
  2. 目前对于视觉推理类的任务,各种方法往往表现不佳,引入外部知识是提高其效果的重要方法之一。早期存在一些基于知识的VQA基准测试,其自带KBs(structured knowledge bases),用于注释问题中可能提到的外部知识,而最近的VQA基准测试都不带有KBs,故所有外部知识均可以引入以辅助VQA,本文便是研究如何在VQA中引入开放领域外部知识。
  3. 以往基于知识增强的VQA:直接从KBs中检索所需的外部知识,随后将(知识,图片,问题)一起送给模型以预测答案。效果不好的两个原因:
  • 可能有无法检索到的知识
  • 检索到的知识可能会引入大量与问题无关的信息,影响模型效果
  1. 新的范式:借助LLM的能力,首先将图片转为captions,随后将captions+问题+一些上下文实例送给LLM,让其预测正确答案。不足:
  • 生成的caption无法覆盖图片全部信息
  • 上下文实例选不好,其对于模型非常重要

贡献

引入了一种新的VL+LLM范式,并提出了新的构造上下文的方法,充分利用了token的长度,有效激发了大模型的能力

模型方法

image.png

两阶段的框架

  1. 训练一个小的VQA模型去生成两种启发式的答案
  2. 将问题+标题+生成的两种启发答案格式化地填入prompt中,让GPT-3去生成答案

image.png

第一阶段

在第一阶段中需要通过一个小VQA模型生成两种答案,该小模型在VQA数据集中进行训练,并执行S-way的答案预测。

具体来说,该小模型分为两个部分:

  • 首先是一个Mb(backbone),该部分会将输入和问题两种模型进行结合编码,得到混合特征z,即z=Mb(v,q)z=M_{b}(v,q)
  • 紧接着是一个Mh(分类头),根据混合特征z去预测多个可能的答案,即y=Mh(z)y=M_{h}(z)

answer candidates

对于一个问题+图片的输入,其表示许多可能的答案,每个答案都与一个置信度分数相关联

上述的y代表一个答案的集合,是Top-K个最符合问题的答案,IAC=argTopKj1,2,3..y[i]I_{AC}=argTopK_{j∈{1,2,3..}}y[i],其中IACI_{AC}代表下标(是最常见答案集合的下标),最终答案候选为:

C={(wj,y[j])jIAC}C=\{(w_{j},y_{[j]}) | j∈I_{AC}\}

其中Wj是候选答案,yj是相关度分数

此处的W代表数据集中最常出现的答案的集合(所以该模型是在一个答案集合里进行预测?)

answer-aware

对于一个问题+图片的输入,其表示许多上下文示例

对于数据集中的每个(vi,qi),可以利用Mb去计算出一个混合特征Zi,在给定(v,q)的情况下,去找出一些与(v,q)对应z的相似的一些vi(用余弦相似度来衡量相似性),作为answer-aware,具体计算公式如下:

IAE=argTopN{i{1,2,3..M}}fcos(zi,z)I_{AE}=argTopN_\{i∈\{1,2,3..M\}\}fcos(zi,z)

ansaware={(vi,qi,ai)iIAE}ansaware=\{(vi,qi,ai)|i∈I_{AE}\}

第二阶段

在第二阶段中,利用前面生成的内容去构造出一种增强的prompt,来提高GPT3的能力

构造prompt如下:

image.png

与大多数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作为基座模型,并做了一些修改

image.png

一阶段模型在VQAv2等数据集中进行预训练,并且剔除了OK-VQA和A-OKVQA中的数据,随后在OK-VQA上进行微调,得到最终的VQA模型,模型的训练只需要在一张3090训练即可

第二阶段模型:text-davinci-002版的GPT-3

标题生成模型:和PICa一样使用OSCAR+

消融实验

一些实验结果

image.png

image.png

image.png

主要结果

image.png

image.png

样例

image.png

由图可知,其中的prompt包含多个问题和对应答案,问题是通过answer-aware选出来的,其中每个问题的候选答案是answer candidates

收获

1.本方法通过训练一个小模型来帮助大模型更好地生成答案,大大降低了训练成本,是一种很有趣的训练范式,尽管如此,还是引入了额外的训练成本。或许可以彻底丢弃训练阶段,将第一阶段的小模型替换为其他类型的视觉大模型

2.由于第一阶段使用了OK-VQA的数据集,所以并非是zero-shot设置下的方法,可以尝试使用LLM在zero-shot情况下做

3.尽管引入了新的上下文,但是对于视觉特征并没有做很好的处理,在caption生成阶段沿用了以前的方法,可以针对问题去生成更多有用的caption