Plug-and-Play VQA: Zero-shot VQA by Conjoining Large Pretrained Models with Zero Training
论文链接 : arxiv.org/abs/2210.08...
github : github.com/salesforce/...
背景
1.近年来自然语言在零样本任务中取得了不俗的进展,这是由于1.模型规模变大和2.训练数据的增加,受次启发,作者希望利用PLMs的能力来提高零样本设置下VQA任务的效果
2.zero-shot的VQA仍然是一个具有挑战性的任务,因为其需要模型具有很强的推理能力
3.目前利用PLM进行VQA的方法往往需要对模型结构或者训练目标做一些调整,如在原有模型的基础上增加新的网络层。在零样本条件下,会设置一些新的预训练目标等。作者希望改变这些范式,设计出一种无需对模型进行更改or重新预训练的方法(只需要简单地重新组合模型),来实现VQA的效果
贡献
1.设计出了一种只需要简单组合PLM的可执行zero-shot的VQA方法,在无需修改模型结构等工作的前提下,实现了zero-shot的STOA,除此之外,随着PLM的越来越好,该方法的效果也会随之变好
2.利用network interpretation作为PLM和PVLM之间的接口,利用该技术,对于图片,生成了与问题非常相关的图片描述
相关工作
Some Large-scale image-text pretraining methods(大规模的图文预训练)
1.image-conditioned language modeling
2.masked language modeling
3.prefix language modeling
4.image-text matching
Adapting PLMs for zero-shot VQA(对预训练模型做调整)
most existing methods perform additional vision-language training on image-text data(同样需要在PLM上进行额外的训练)
1.Trains the vision encoder while keeping the PLM frozen to retain its knowledge in question answering. The output from the vision encoder is prepended to the text as prompts
2.distills multimodal knowledge to PLM by using CLIP as the teacher model during finetuning
3.adds additional layers to both the pretrained vision model and the PLM and trains the new layers on billions of image-text pairs
similar to our method(与本文相似的一些工作)
1.converts an image to a single caption and adopts GPT-3 for zero-shot VQA(经典的PICa)
2 train the VLMs on synthetic VQA examples generated from captions
Natural language as an intermediate representation or interface between different models or multiple steps of reasoning is an emerging machine learning strategy(将自然语言作为不同模型的接口)
1.prompt a PLM to generate subproblem descriptions for a complex problem, and feed the subproblems back to the PLM to solve hierarchically(通过PLM将复杂问题分解,再利用PLM来解决分解后的子问题)
2.The work shows that language-conjoined LM and VLM successfully perform captioning and retrieval but do not evaluate their models on VQA.
模型
整个模型主要分为三个模块
-
图像-问题匹配模块
-
图像描述生成模块
-
问题回答模块
1.图片-问题匹配模块
简介:通常的问题往往只与图片中的部分区域有关,所以作者希望通过该模块,去让模型为图片特定区域生成与问题有关的描述,而不是为图片生成通用的描述,最后利用上述两个值去计算一个rel(i):用于度量第i个patch与问题的相关程度
方法 :首先利用BLIP去计算一个sim(v,t)(图片和问题的相似度分数) ,此外会计算问题和图片的交叉注意力分数,问题作为Q ,图像为K和V,最终得到一个注意力分数矩阵
对于每一个注意力头的分数的计算,经过QKV矩阵运算后,Q:(文本token数量,d) K和V:(图片patch数量,d)
最终A:(文本tokens数量,图片patches数量),Ai,j表示问题中第i个token分配给第j个patch的注意力分数

M:问题tokens数量 H:注意力的头的数量
根据计算得出的rel(i)去采样K'个与问题相关的patches

由图可知,以问题为引导的图片patch采样更有助于提高模型效果
2.图片标题生成
简介:尽管得到了与问题相关的特定图片区域,但是对于特定patches的描述可能有很多种,所以该模块是为了尽量生成多样的captions以最大可能去覆盖问题对应的答案
利用BLIP结合top-k采样,对于选中的K'个image patches,为每个图片生成N个captions,且会避免重复
stochastic top-k sampling?具体怎么做的?
3.问题回答模块
简介 :该模块用的模型是一个encoder-decoder架构,由文本进行预训练,只能够处理文本信息,将问题+captions作为输入
为了处理长输入,提出了FiD策略(Fusion-in-Decoder),并将其与Fusion-in-Encoder进行了对比
FiE:将所有captions和question连接起来,作为编码器的输入
FID:分别将caption和question结合起来作为输入,得到多个编码器输出后再经过一个交叉注意力机制,得到解码器的输入

实验
1.数据集和评估
数据:数据集采用的是VQAv2、OK-VQA和GQA-balanced中的测试集数据
评估:通过开放式生成获得答案,并根据精确匹配进行评估。对于VQAv2和OK-VQA用soft-accuracy评估,对于GQA采用准确率来评估
2.一些细节
在图片-问题匹配模块中使用的是BLIP,其在COCO上经过微调,但是COCO中包含了一些VQAv2和OKVQA的数据,故该论文中重新进行了微调,剔除了一些重复的数据
每个问题总共使用了 100 个captions
3.与其他STOA的比较
目前常见的zero-shot工作主要分为两类
1.视通过觉编码器(VE)将图像嵌入到密集矩阵中,并将其提供给预先训练的语言模型(PLM),在此基础上可以对VEorPLM进行非VQA任务的微调(端到端的方式)
2.第二种方法并未使用VE和PLM进行联合训练的方式,而是使用自然语言形式作为图像的中间表示(本文方法就是)
两种方法的对比:
结果表明:本文方法开创了一种新的VQA的范式,即无需训练,直接使用10亿级别的大语言模型
分析
提出了三个问题,分别也对应着模型的三个模块,讨论了其作用与好的效果(相比于其他方法)
1.Are PNP-VQA captions informative?
作者讨论了AHR(answer hit rate)和ACC的关系,以及captions数量与AHR的关系,如图:

结论:
1.Among the three techniques, question-guided sampling produces captions with the highest AHR
2.the presence of the answer in the captions facilitates the generation of the correct answer
2.How sensitive is PNP-VQA to the caption decoding method?
对比了一些标题(caption)生成的方法效果

3.Can PNP-VQA work with other textual QA models?
对比了不同PLM的效果,说明了最后的回答模块中的PLM的选择很重要

不足
PNP-VQA的效果很大程度上取决于选用的预训练模型,且由于没有训练成本,只是模型简单的组合使用,导致了推理成本的有所增加
收获
在第二个模块中,需要根据选中的patches去生成captions,而captions是否包含答案对于最终模型效果十分重要,故如何生成更加有效的captions十分重要。在生成captions过程中,可以加入问题{设计更好的prompt}或者有关图片的全局信息,而并非只是利用被选出的patches作为输入