多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第1张图片

©作者 | 吉雅太

单位 | 清华大学

研究方向 | 多模态研究

7ed42bd9f3d18a1e8d8776811630787f.png

CLIP

最近 NLP 中第四范式 prompt 比较火,就是不再是生硬地从预训练直接过渡到微调任务,而是用 prompt(提示)的方式,把微调任务做一个转换,接近预训练任务。比如用 MLM 预训练一个语言模型,后续要做一个文本情感分类,不再是提取出全句的表征后做分类,而是在这段文本后面加一个 prompt(提示),比如说 it is __,然后要补全空缺,相当于还是 MLM。看着很麻烦,但在预训练数据充足、微调数据不足情况下,是比较有效的。

多模态作为一个大杂烩的领域,NLP、CV 中的创新都可以用进来,所以多模态的 prompt 文章就也出现了。本文先介绍 clip: Learning Transferable Visual Models From Natural Language Supervision。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第2张图片

论文标题:

Learning Transferable Visual Models From Natural Language Supervision

论文链接:

https://arxiv.org/pdf/2103.00020.pdf

代码链接:

https://github.com/OpenAI/CLIP

作者先指明 motivation,现在的视觉模型只能在预定义好的物体类别范围内进行预测,而在推理时遇到未标注过的数据,泛化性能较弱。而从带有描述的图片进行训练可以让模型有更广泛的监督,从而在下游的小样本学习、零样本学习中获得好的表现。作者提出 CLIP:Contrastive Language-Image Pre-training。通过对比学习用文本监督图片表征,在零样本学习上的表现可以与有监督的模型相媲美。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第3张图片

1.1 具体方法

将语言作为监督信息训练图片的表征,与用于图像分类的众包生成标签相比,扩展自然语言监督要容易得多,可以方便从互联网上的大量文本中学习。从自然语言中学习还有一个重要的优势,因为它不仅学习表征,而且还将表征与语言连接起来,从而实现灵活的零样本迁移。

创建一个有效的大数据集,结合 MSCOCO、VG、YFCC100M,清理,生成大量图片-文本对,并从网上也抓取了大量数据,生成一个数据集 webimagetext。

预训练方法的选择:先使用一种类似 image caption 的预训练任务,如蓝线,学习效率很低,达到同样精度要使用很多图片数据。黄线是基本的训练方法,即预测图片的描述文本的单词。这两种方法试图预测每幅图片所附文字的准确单词,但由于种类繁多,这么做是很困难的。而对比学习能较好地学习表征,以文本整体和图片的配对作为一个目标,进一步提高了效率。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第4张图片

对比学习:一个 batch 有 N 个图片文本对,计算相似度矩阵,对角线上的 N 对为正样本,另外 对为负样本。最大化正样本相似度,最小化负样本相似度,使用一个对称交叉熵损失优化。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第5张图片

▲ 伪代码,值得注意的是在计算交叉熵时传入的是 label 数值,在函数里变成 one-hot 向量

模型选择和训练:图像编码器使用了两种:resnet(用带有注意力的池化得到整张图的全局表征),ViT。文本编码器使用 transformer,在文本编码器中使用了掩蔽自我注意,以保留使用预训练的语言模型进行初始化的能力。

在零样本学习中,以分类任务为例,使用 prompt 的方法,将分类任务转换为图片、文本的匹配问题。即将标签单词和提示语构成候选句子,再把图片编码成特征向量,分别计算相似度,找到可能性最高的类别。

1.2 实验

实验先和其他的零样本学习模型对比,在 Visual N-Grams 相比,CLIP 在三个图片分类数据集上的准确率都有很大提升。

作者用实验证明 prompt 的必要性,一个词经常会具有多义性,而将词带入到特定的上下文提示语中,就可以有更清晰的意义,有助于分类。另一方面可以减小和预训练任务之间的 gap。实验证明使用 prompt 要更有效。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第6张图片

▲ 蓝线是在(微调和)测试时只使用 label 的文本,绿线是使用了 prompt 和 ensemble,prompt 即给 label 加一段提示语,ensemble 指同时用多个不同的上下文 prompt 语句,对于一个 label 生成多个句子 embedding 再集成

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第7张图片

▲ 在 27 个分类数据集上零样本学习 clip 与全监督训练的 resnet50 效果对比

实验部分这些是比较好懂的,arxiv上原文光实验部分就有大概二十页,不过 dblp 上有简约版的。

f24e54de099d674595b8849c806a3662.png


CoOp

模型 CoOp,主要的思想是自动设计提示文本,先保持预训练参数不变,然后利用少量数据去学习合适的 prompt,这样的 prompt 比人工设计的提示文本在测试时更有效。值得注意的是,学习合适的 prompt,只是学到适合这个任务的一组词向量,并不一定是找到了一组真实的词(意思是说学到的词向量可能映射到乱七八糟的词上去,但就是这些词最适合做这个任务的提示语,这和语义空间的连续性有关)。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第8张图片

论文标题:

Learning to Prompt for Vision-Language Models

论文链接:

https://arxiv.org/pdf/2109.01134.pdf

代码链接:

https://github.com/KaiyangZhou/CoOp

作者的 motivation 在于观察到 prompt 的选择对测试结果影响很大。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第9张图片

2.1 主要方法

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第10张图片

预训练过程和 CLIP 相同,也是使用对比学习。CLIP 在预训练之后,会直接进行 zero-shot inference(零样本推理),使用 prompt 的方法,把 K 个 label 分别结合到提示语句,然后得到对应的 K 个表征,分别和图像计算相似度。

本文的方法 CoOp(context optimization),可以避免人为地设计提示语,把输入 prompt 设计成如下格式:

3592224f110193dee026d13ffb9e5c95.png

其中 是随机初始化的词向量,也是 512 维。注意这里上下文词向量对于不同类别是共享的。在训练阶段,把 t 前向传播,和图像特征计算相似度,计算出对应每一类的概率 ,再用交叉熵优化,学到合适的 (这个上下文提示是 task-relevant)。

prompt 有一些其他的变种,一种是改变 CLASS 的位置,把 [CLASS] 放在句子中间,这样可以学习到更灵活的上下文;另一种是每种 CLASS 学习一组上下文提示语句,即不同类别对应的语句不同,作者发现这样的方法对一些细粒度的分类很有效。

2.2 实验

使用 11 个分类数据集做小样本学习,涉及到的分类有物体、动作、场景等。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第11张图片

▲ 图中的星点是 zero-shot clip,即 clip 直接推理的结果,对于实线,M 是  prompt 长度,end、mid 表示 CLASS 位置,CSC 表示 class-specific 的提示,虚线是 clip 也做了微调,用一个随机初始化的线性层计算相似度(?不知道这里 linear probe 啥意思),横坐标是训练的每类小样本数目

从平均结果看,coop 在小样本学习中效果更好,并且当增加用 16 个样本训练时,准确率可以提高 17 个点。

对于数据分布变化的鲁棒性,如表 1,target 数据集是一些 imagenet 数据集变体,在 source 上做小样本训练,在 target 测试,发现 M 越小鲁棒性、泛化性能越好。表 2 表示 coop 比 clip 里 prompt ensemble 效果还要好。表 3 对比了随机初始化和人为设定 prompt 两种情况直接测试的准确率,表明即便随机初始化一个 prompt,测试效果与人为设定也差不多,当然,如果再使用小样本微调一下随机的 prompt,效果就更好了。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第12张图片

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第13张图片

上图,左边是 prompt 长度 M 和 class 位置的消融实验;右边是不同视觉 backbone 的影响。

下表就是把学到的词向量通过欧氏距离找到的词表中最近的词,可以看到可解释性很差,但对于模型来说就是有效。这就是“隐式学习”吧,不知道模型学了个啥。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第14张图片

2.3 总结

虽然效果上看 coop 使用自动生成 prompt 要好过 clip,但一个主要的区别在于 coop 也需要少量的数据学习 prompt,即少样本学习,而 clip 由于直接使用人为设计的提示语句,可以进行零样本学习(不过实验部分也看到 coop 直接用随机的 prompt 也能做零样本学习,就是差点)。

b02691648935e6fc85f2b5c8afcceedc.png


CLIP-adapter

CLIP 和 COOP 分别在今年 3 月份、9 月份挂载 arxiv 上,十月份又挂了一篇:CLIP-adapter。coop 和 CLIP-adapter 都是在 clip 基础上增量式的工作,clip 使用一个人为设定好的 prompt 直接进行零样本推理,而 coop 和 CLIP-adapter 都是使用小样本学习,coop 是初始化一个随机的 prompt,在小样本中学习合适的 prompt,从而更适应这个任务;adapter 是在模型中间插入一个随机的可学习的模块,通过更新这个模块来更适应下游任务。

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第15张图片

论文标题:

CLIP-Adapter: Better Vision-Language Models with Feature Adapters

论文链接:

https://arxiv.org/abs/2110.04544

代码链接:

https://github.com/gaopengcuhk/clip-adapter

3.1 模型

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第16张图片

最下面就是 adapter 的结构,在小样本学习时,在两个分支上各加入一个可学习的层。小样本训练时,其他部分冻结参数(如果更新整个大模型,由于数据太少很容易过拟合)。并且为了更好地结合微调的知识和原始的知识,又加入一个残差连接结构,见图。

3.2 实验

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第17张图片

在 11 个数据集上进行小样本学习,可以看到 clip 零样本推理的结果,clip 小样本微调的结果,coop 小样本学习的结果,adapter 小样本学习的结果。

从左上角平均结果的图可以看出,adpater 小样本学习的效果最好。对于 clip,小样本学习的初始阶段甚至弱于零样本学习,所以人为设定的 prompt 只是我们看上去合理的提示语句,对于模型来说可能并不是一个好的初始化。

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第18张图片

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第19张图片

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第20张图片

94463068afdf979f4c8a2daf4da368ef.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter_第21张图片

△长按添加PaperWeekly小编

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

5703fb98e575b3c0be923be17d56e318.png

你可能感兴趣的:(python,机器学习,人工智能,深度学习,计算机视觉)