■ paper :cpt: colorful prompt tuning for pre-trained vision-language models
论文地址:https://arxiv.org/abs/2106.09141
主要作者:yuan yao, ao zhan, zhengyan zhang, zhiyuan liu
github地址:
■ 导语
多模态预训练模型近年来在各种下游任务取得了令人瞩目的成绩,本文作者希望借助其在预训练中获得的多模态理解能力来做视觉定位任务(这里的视觉定位任务主要指rec,referring expression comprehension)。rec任务是指:给定一个自然语言的描述,目标指向理解期望准确地在一张图像中找到描述对应的区域,模型需要对文本和视觉领域来进行联合理解和推理。其实,在之前的多模态预训练模型的工作中,就有借助其在预训练中获得的多模态理解能力来做视觉定位任务的做法,只不过,那些工作的范式是常见的“预训练-微调”这样的流程,这要求在微调时使用大量的人工标注数据进行训练,而本文的作者,希望借助prompt的方式,结合模型的mlm预训练任务,来让多模态预训练模型对rec任务拥有zero-shot和few-shot的能力。overview如下:
简单来说,就是给定一些候选框(这些候选框中有rec任务的最终答案)和rec的表达语句(上图中为the horse watched by woman),然后给每个框内填上不同的颜色(上图中为blue、red、green),然后让多模态模型去做mlm任务,the horse watched by woman is in [mask] color,看[mask]中预测的(blue、red、green)三个单词哪个预测出来的概率最大,就把其对应的框当做rec的输出。
作者的做法使用prompt的方式巧妙地借助了多模态模型的预训练能力,不同于其他常规的“预训练-微调”范式。常规的做法通常是这样的:首先用目标检测器检测出n个框,记为{v1、v2、v3……vn},rec表达式的语句使用tokenizer分割后记为{w1、w2、……wm},将它们一起组合为{[img], v1, v2, . . . , vn, [cls], w1, w2, . . . , wm, [sep]}的形式送入多模态模型的神经网络中,经过transformer层的多模态注意力机制处理之后,输出的隐层向量为 {h[img], hv1, hv2, . . . , hvn , h[cls], hw1, hw2, . . . , hwm , h[sep]},其中{hv1, hv2, . . . , hvn}向量产生之后每一个h向量都会经过一个全连接层,输出一个分数,然后选取分数最高的向量所代表的框作为rec的输出,而微调时的训练目标就是去优化transformer架构和最后的全连接层中的参数。vilbert和uniter都是这样的做法。
■ cpt详述
cpt主要有两部分组成:(1)视觉prompt,主要是在图像相应的框上打上对应的色块(2)文本prompt,主要是将rec表达式和is in [mask] color 联合起来。借助cpt的prompt方法,rec任务就变成了一个多模态完形填空任务,可以有效地利用多模态模型在预训练中获得的mlm能力。
对于视觉prompt,作者建立了一个颜色集合c,c中包含了若干个元组c,c包括两个元素,颜色名称和对应的rgb,如(rgb(255,0,0),“red”)。另外,给相应的框打上颜色有很多种方法,(a)只给框的边缘上色(b)给框内的所有区域上色(c)给对应区域的分割掩码上色,作者经过实验,选择了bc两种方式
对于文本prompt,对于一个rec表达式q,作者建立的模版如下:
给定一组框集合以及对应的rec表达式,计算出i颜色对应的框作为rec输出的概率为
而要用cpt的方式在rec任务上做有监督的训练时,对应的损失函数如下:
作者接下去讨论了关于颜色选择的问题,即颜色集合c中究竟应该选择哪些颜色呢,每个颜色选取其标准色的rgb即是最好的吗(比如红色对应的rgb为(255,0,0))?作者采取的方法是:选择那些在预训练任务中出现得最多的几个颜色,然后在选取对应的rgb时采用了自己提出的cps方法(cross-modal prompt search)。比如作者要选取红色对应的rgb,就用几个备选的红色rgb填满一张图片,(255,0,0)、(255,10,0)、(255,0,10),然后向模型内输入这张图片和一段文本“[cls] a photo in [mask] color [sep]”,然后使用上面的公式
来计算[mask]=red时的分数,最后选取分数最高的rgb来作为red对应的rgb。
■ 实验结果
作者在refcoco相关的数据集上对cpt和baseline进行了对比。cpt需要用到多模态预训练模型的mlm功能,作者选用的多模态backbone为vinvl(即oscar改进版本)。另外,此处baseline的设置为:将vinvl预训练模型按照传统的“预训练-微调”范式进行微调,具体的微调方法前文中有介绍。
从中可以得到的结论为:
1、cpt拥有不俗的zero-shot能力,且相较于传统的“预训练-微调”范式,cpt在few-shot(即只使用少量样本进行训练)的情况下性能更优,这表明cpt在微调多模态模型时可以有效地提升数据利用的效率。
2、分割掩码的方式相较于色块填充的方式取得的结果相对较好。这主要是因为分割掩码是将一个物体的整体轮廓都上了颜色,这在现实世界里更加常见,所以模型可以识别得更好。
3、从表中可以看出cpt标准差相对于传统微调方法更小,说明cpt方法在微调模型时更加稳定,这得益于prompt的方式在微调模型时没有将其与预训练的mlm任务割裂开来。
4、cpt-blk方式在refcoco 的数据集评测上效果不佳,原因是因为refcoco 数据集拥有很多颜色相关的表达式(如the person in red shirt and blue hat),这让纯色块填充的方式会不利于模型分辨物体本来的颜色。
作者接下来对具体的颜色进行了分析,上图中(a)浅色柱状条表示直接选用那些预训练数据中最常出现的颜色且使用它们的标准rgb得到的准确率。(a)深色柱状条则表示使用cps筛选后的颜色和rgb。可以看出cps筛选后的效果更好。
图(b)表示针对同一个颜色,使用标准rgb和cps筛选过的rgb计算出来的额准确率,可以看出cps筛选过的效果更好。
■ 几篇关键的引用文献
[1]tianyu gao, adam fisch, and danqi chen. making pre-trained language models better few-shot learners. in proceedings of acl, 2021.
[2]pengchuan zhang, xiujun li, xiaowei hu, jianwei yang, lei zhang, lijuan wang, yejin choi, and jianfeng gao. vinvl: revisiting visual representations in vision-language models. in proceedings of cvpr, pp. 5579–5588, 2021.
[3] jiasen lu, dhruv batra, devi parikh, and stefan lee. vilbert: pretraining task-agnostic visiolinguistic representations for vision-and-language tasks. proceedings of neurips, 32:13–23, 2019.
[4]yen-chun chen, linjie li, licheng yu, ahmed el kholy, faisal ahmed, zhe gan, yu cheng, and jingjing liu. uniter: universal image-text representation learning. in proceedings of eccv, pp. 104–120. springer, 2020.
[5]junhua mao, jonathan huang, alexander toshev, oana camburu, alan l yuille, and kevin murphy. generation and comprehension of unambiguous object descriptions. in proceedings of cvpr, pp.11–20, 2016.