视觉语言预训练最近成为特征学习的一种非常有潜力的替代方法。它从使用图像和离散标签来学习一组固定权重的传统学习方法,转向了使用两个独立的编码器来对齐图像和原始文本。这种训练范式能够受益于更广泛的监督来源(不仅仅是image-label对),并允许zero-shot(即不需要fine-tuning)转移到下游任务,因为视觉概念可以从自然语言中生成。
论文地址:
https://arxiv.org/abs/2109.01134
代码地址:
https://github.com/KaiyangZhou/CoOp(未开源)
一、前言
在本文中,作者意识到在实践中部署这种模型的主要挑战是prompt engineering(提示符工程,即如何手工设计一个更好的prompt)。这是因为设计一个适当的提示符,特别是对于围绕类名的上下文单词,需要领域的专业知识,并且通常需要大量的时间来调优单词,因为提示符的轻微变化可能会对性能产生巨大的影响。此外,不同的下游任务需要特定的提示符设计,这进一步阻碍了部署的效率。为了克服这一挑战,作者提出了一种名为上下文优化(context optimization,CoOp)的方法。其主要思想是使用continuous representation在提示符中建模上下文,并在保持预训练学习的参数固定的同时从数据中进行端到端学习优化。这样,与任务相关的提示符设计就可以完全自动化了。在11个数据集上进行的实验表明,CoOp有效地将预训练的视觉语言模型转化为数据高效的视觉任务学习模型,只需少量样本微调就能击败手工设计的提示符,并且在使用更多样本微调时能够获得显著的性能提升(16 shots的平均涨幅约为17%,最高涨幅达到超过50%)。
这篇文章主要介绍的是如何端到端的训练让网络学习更好Prompt。因此,在介绍这篇文章之前,我们先来介绍一些Prompt的相关知识。
基于预训练语言模型的研究思路通常是“pre-train, fine-tune ”,即将PLM(预训练语言模型)应用到下游任务上,在预训练阶段和微调阶段根据下游任务设计训练对象并对PLM本体进行调整。“pre-train, fine-tune”范式最典型的例子就是BERT。
但是,随着PLM体量的不断增大,对其进行fine-tune的硬件要求、数据需求和实际代价也在不断上涨。除此之外,丰富多样的下游任务也使得预训练和微调阶段的设计变得繁琐复杂,因此研究者们希望探索出更小巧轻量、更普适高效的方法,Prompt就是一个沿着此方向的尝试。
Prompt的新模式大致可以归纳成“pre-train, prompt, and predict ”,在该模式中,下游任务被重新调整成类似预训练任务的形式。例如,通常的预训练任务有Masked Language Model, 在文本情感分类任务中,对于"I love this movie."这句输入,可以在后面加上prompt"The movie is ___"这样的形式,然后让PLM用表示情感的答案填空如 "great"、"fantastic" 等等,最后再将该答案转化成情感分类的标签,这样一 来,通过选取合适的prompt,我们可以控制模型预测输出,从而一个完全无监督训练的PLM可以被用来解决各种各样的下游任务。
因此,合适的prompt对于模型的效果至关重要。大量研究表明,prompt的微小差别,可能会造成效果的巨大差异。而本文的目的就是让网络学习更好的prompt,以进一步提升预训练模型在下游任务上的性能 。
论文地址:https://zhuanlan.zhihu.com/p/399295895
二、Motivation
传统的视觉表示学习方法训练视觉模型,是使用离散标签来预测一组固定的对象类别。然而,这种方法将视觉识别模型限制在训练过程中预定义的封闭视觉概念范围上,这使得它们一旦部署在目标环境中就无法处理新的类别,因为学习新的分类器需要额外的数据(即模型的迁移能力比较差)。最近,视觉语言预训练,如CLIP[1]和ALIGN[2]已成为一个非常不错的替代方案。视觉语言预训练主要的思想是使用两个独立的编码器来对齐图像和原始文本。通过大规模的预训练,视觉语言模型可以学习开放集的视觉概念,并可以很容易地转移到下游任务中。对于每一个新的分类任务,我们可以将描述文本输入到编码器来合成分类权值,并将它们与图像编码器产生的图像特征进行比较。
作者观察到,对于预训练的视觉语言模型,prompt(提示符)在下游数据集中起着关键作用。设计正确的提示符是一项重要并且不简单的任务,这通常需要大量的时间来进行单词微调——因为提示符的轻微变化可能会在性能上产生巨大的影响。例如,对于Caltech101(上图(a))的第2个和第3个提示,在class token之前添加“a”,准确率提高了超过5%。此外,提示工程还需要了解关于任务的专业知识和理想的语言模型的底层机制。图1(b-d)说明了这个问题,添加任务相关的上下文可以导致性能的显著改进,即上图(b)的“flower”、上图(c)的“texture”和上图(d)的“satellite”。调整句子结构可以带来进一步的性能改进。如上图(b)在提示的后面加上 “a type of flower”就能提升性能,图(c)只保留“texture”就能提升性能,图(d)加上一个单词“centered”就能提升性能。然而,即使有大量的调优,最终的提示也不能保证是下游任务的最佳选择。
受NLP中prompt learning研究的启发,作者提出了上下文优化(context optimization,CoOp)来实现自动化提示工程,以允许预训练的视觉语言模型更高效进行下游任务的迁移。具体来说,作者使用连续表示来对提示符的上下文进行建模,而连续表示本质上是用与单词embedding维度相同的随机向量初始化的(如上图所示)。上下文可以在所有类之间共享,也可以设计为特定于类的。在训练过程中,对可学习上下文向量使用交叉熵损失来最小化预测误差,同时保持预训练的参数不变。梯度可以通过文本编码器进行反向传播,从而学习与任务相关的上下文。
为了证明CoOp的有效性,作者在11个基准数据集上进行了测试,这些数据集涵盖了一系列不同的视觉识别任务,包括对一般对象、场景、动作和细粒度类别的分类,以及识别纹理和卫星图像等特殊任务。结果表明,CoOp可以有效地将预训练的视觉语言模型转化为高效的视觉模型,只需one shot或者two shot就能击败手工设计的提示。使用更多的shot也可以进一步提高性能(16 shots的平均涨幅约为17%,最高涨幅达到超过50%)。此外,CoOp对分布迁移具有更强的鲁棒性。
三、方法
3.1视觉语言预训练
由于本文的CoOp建立在CLIP之上,下面就对CLIP进行简要的介绍。
Models
CLIP由两个编码器组成,一个用于图像,另一个用于文本。该图像编码器旨在将高维的图像映射到一个低维的embedding空间中,结构就类似于ResNet或者ViT。另一方面,文本编码器建立在Transformer的基础上,旨在从自然语言中生成文本表示。
Training
CLIP的训练目标是对齐图像和文本的embedding空间。具体来说,学习目标函数被表述为一种对比学习的损失函数。给定一个Batch的图像-文本对,CLIP使匹配对的余弦相似性最大化,同时使所有其他不匹配对的余弦相似性最小化。为了学习可迁移到下游任务中的各种视觉概念,CLIP的团队收集了一个由4亿对图像-文本对组成的大型训练数据集。
Zero-Shot Inference
由于CLIP是预训练的,以预测图像是否与文本描述匹配,因此它自然地适合zero-shot识别。设f是由图像编码器为图像x提取的图像特征, 是由文本编码器生成的一组权重向量。K表示类的数量,每个 都来自于一个具有“a photo of a [CLASS].”形式的提示符。其中,class token可以被特定的类名称所取代,如“cat”、“dog”、“car”等等。然后计算预测概率为:
其中τ为CLIP学习的温度参数, 表示余弦相似度。
3.2上下文优化(CoOp)
本文提出了上下文优化( context optimization,CoOp),它通过使用从数据中端到端学习的连续向量,建模上下文词来避免手动提示调优。算法的结构如上图所示。
具体来说,作者用以下形式设计了给文本编码器 的提示符:
其中,每个 [V]ₘ(m∈1, ......, M) 一个与单词embedding维度相同的向量(即CLIP为512),而M是一个指定上下文token数量的超参数。这里的上下文是在所有类之间共享的,被称为统一上下文,当然也可以采用特定于类的上下文,后面会介绍。
通过将提示符 输入到文本编码器 ,我们就可以得到一个代表视觉概念的分类权重向量。预测概率计算为:
其中,每个提示 中的class token被第i个类名对应的单词embedding向量所取代。
模型基于交叉熵进行训练,以最小化标准分类损失,并通过文本编码器 反向传播梯度来优化上下文。
其他变体
除了把class token放在序列的末尾之外,我们也可以把它放在中间:
这在理论上增加了学习的灵活性,提示符可以用来补充后面的描述,也可以使用终止符提前终止句子。
上面的设计中的上下文都是在所有类之间共享的。另一种选择是设计特定于类的上下文(class-specific context,CSC),其中上下文向量独立于每个类:
其中 ,作者发现CSC对于一些细粒度的分类任务特别有用。
四、实验
4.1 Few-Shot LearningComparison with Hand-Crafted Prompts
上图展示了在11个数据集上的zero-shot Learning的结果。
上图对CoOp在16 shot获得的绝对性能提升进行了排序,最多能有50%的性能提升。
4.2 Roboustness To Distribution Shift
CLIP+CoOp比zero-shot CLIP对分布偏移表现出更强的鲁棒性,这表明学习到的提示也是可迁移的。
4.3 Further AnalysisComparison with Prompt Ensembling
上表给出了提示工程(即使用单一的手工提示)、提示集成和CoOp的结果,证实了CoOp仍然是性能最好的方法。
Context Length
上图表明拥有更多的上下文token会产生更好的性能,并且将class token定位在中间会随着更长的上下文长度,获得更多的性能增长。
Vision Backbone
上图总结了使用基于CNN和ViT的各种Backbone的在11个数据集的结果。预期的结果是:Backbone越先进,性能就越好。
Initialization
上表比较了随机初始化和用“a photo of a”作为初始化的结果。“a photo of a”作为初始化能带来了微弱的性能提升。
五、总结
在本文中,作者提出了CoOp,能够学习更好的提示(prompt)以促进在下游数据集中部署预训练的视觉语言模型。对11个数据集的研究结果表明,CoOp学习到的提示比手工设计的提示与任务更相关,这反映在性能的巨大改进上,以及对数据分布迁移的更强的鲁棒性上。在限制方面,CoOp需要能够明确访问预训练的模型参数,当只有提供预训练模型的API时是不可用的。
参考文献:
[1] Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, et al. Learning transferable visual models from natural language supervision. In ICML, 2021.
[2] Chao Jia, Yinfei Yang, Ye Xia, Yi-Ting Chen, Zarana Parekh, Hieu Pham, Quoc V Le, Yunhsuan Sung, Zhen Li, and Tom Duerig. Scaling up visual and vision-language representation learning with noisy text supervision. In ICML, 2021.
Illustrastion by Tatiana Vinogradova from Icons8
-The End-
“AI技术流”原创投稿计划
TechBeat是由将门创投建立的AI学习社区(www.techbeat.net)。社区上线330+期talk视频,900+篇技术干货文章,方向覆盖CV/NLP/ML/Robotis等;每月定期举办顶会及其他线上交流活动,不定期举办技术人线下聚会交流活动。我们正在努力成为AI人才喜爱的高质量、知识型交流平台,希望为AI人才打造更专业的服务和体验,加速并陪伴其成长。
投稿内容
// 最新技术解读/系统性知识分享 //
// 前沿资讯解说/心得经历讲述 //
投稿须知
稿件需要为原创文章,并标明作者信息。
我们会选择部分在深度技术解析及科研心得方向,
对用户启发更大的文章,做原创性内容奖励。
投稿方式
发送邮件到
chenhongyuan@thejiangmen.com
>> 投稿请添加工作人员微信!
扫码观看!
本周上新!
关于我“门”
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com
点击右上角,把文章分享到朋友圈
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.