CoOp:学习用于视觉语言模型的Prompt
原文:Zhou, Kaiyang, Jingkang Yang, Chen Change Loy and Ziwei Liu. “Learning to Prompt for Vision-Language Models.” ArXiv abs/2109.01134 (2021).
1. Abstract
视觉语言预训练是一种很有前途的表示学习方法。它从传统的使用图像和标签来学习一组固定的权重(视觉概念),转变为为两个独立的编码器对齐图像和原始文本。这种范式受益于更广泛的监督来源,并允许zero-shot迁移到下游任务上,因为视觉概念可以直接从自然语言生成,即提示(prompt)。在本文中,我们发现在实践中部署此类模型的一个主要挑战是prompt工程。这是因为设计适当的prompt,特别是针对类名周围的上下文单词,需要领域专业知识,并且通常需要花费大量时间来调整单词,因为措辞上的细微变化可能会对模型性能产生巨大影响。此外,不同的下游任务需要特定的prompt设计,这进一步阻碍了部署的效率。为了克服这一挑战,我们提出了一种名为上下文优化(Context Optimization,CoOp)的新方法。其主要思想是使用连续表示在prompt中建模上下文,并在保持预训练参数不变的情况下进行端到端学习。这样,任务相关的prompt的设计就可以完全自动化。在11个数据集上进行的实验表明,CoOp有效地将预训练好的视觉语言模型转变为数据高效的视觉学习者,只需要一两个shots就能击败手工制作的prompt,并获得可观的增益,并且在使用更多shots时能够获得显著的改进。CoOp还对分布偏移表现出强大鲁的棒性。
2. Method, Experiment and Result

图1. Prompt工程和上下文优化方法(CoOp)。在这些示例中,CoOp仅使用16个shots进行学习。

图2. 上下文优化方法(CoOp)的概述。

图3. 在11个数据集上的few-shot学习的结果。总的来说,CoOp有效地将CLIP转变为一个强大的few-shot学习者,与zero-shot的CLIP相比实现了显著的提高,并且优于线性探测的CLIP。M表示上下文长度。“end”或“mid”表示将类别token放在末尾或中间。CSC表示特定于类的上下文。

图4. CoOp+CLIP与Zero-Shot CLIP(使用手工制作的prompt)的比较。

表1. 对分布偏移鲁棒性的评估。M表示CoOp的上下文长度。

表2. CoOp与prompt engineering、prompt ensembling的比较。

表3. 随机初始化和手动初始化的对比。

图5. 对CoOp的上下文长度和各种视觉backbones的研究。

表4. CoOp学习的16个上下文向量中每个向量最近的单词,括号中显示了它们的距离。N/A表示非拉丁字符。
3. Conclusion / Discussion
我们提出了CoOp,一种专注于连续prompt学习的方法,以促进在下游数据集上部署预训练的视觉语言模型。在11个数据集上的结果有力地证明了CoOp在数据高效学习方面的有效性。学习到的prompt比手工制作的prompt更具任务相关性,这反映在模型性能的巨大改进上,以及对分布偏移的强鲁棒性上。就限制而言,CoOp需要显式地访问预训练模型的参数,当只提供预训练模型的API时,这些参数可能是不可用的。因此,未来一个有趣的方向是研究“黑箱”prompt学习。
关注“多模态人工智能”公众号,一起进步!
更多推荐


所有评论(0)