
摘要
大规模预训练视觉语言模型(VLMs)在下游任务中展现出出色的零样本能力,通常依赖于人工设计的提示(prompt)。为进一步提升VLMs在特定下游任务中的适应性,研究者提出了软提示(soft prompt)机制,以替代人工设计的提示,并基于特定领域数据进行微调。以往的提示学习方法主要从训练样本中学习固定提示或残差提示,然而这些方法所学习到的提示缺乏多样性,且未能有效利用未见领域(unseen domains)的信息。本文从生成式视角重新构建提示学习框架,提出一种简单而高效的领域泛化(Domain Generalization, DG)方法——软提示生成(Soft Prompt Generation, SPG)。具体而言,SPG包含两个训练阶段和一个推理阶段。在训练阶段,为每个领域引入软提示标签,旨在将生成模型所蕴含的领域知识融入提示学习过程;在推理阶段,利用生成模型中的生成器,为未见目标领域生成具有实例特性的软提示。在三个领域泛化任务的五个基准测试上进行的大量实验表明,SPG在性能上达到当前最优水平。相关代码已开源,地址为:https://github.com/renytek13/Soft-Prompt-Generation-with-CGAN。
代码仓库
renytek13/soft-prompt-generation-with-cgan
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| domain-generalization-on-domainnet | SPG (CLIP, ViT-B/16) | Average Accuracy: 60.1 |
| domain-generalization-on-domainnet | SPG (CLIP, ResNet-50) | Average Accuracy: 50.1 |
| domain-generalization-on-office-home | SPG (CLIP, ResNet-50) | Average Accuracy: 73.8 |
| domain-generalization-on-office-home | SPG (CLIP, ViT-B/16) | Average Accuracy: 83.6 |
| domain-generalization-on-pacs-2 | SPG (CLIP, ViT-B/16) | Average Accuracy: 97.0 |
| domain-generalization-on-pacs-2 | SPG (CLIP, ResNet-50) | Average Accuracy: 92.8 |
| domain-generalization-on-terraincognita | SPG (CLIP, ViT-B/16) | Average Accuracy: 50.2 |
| domain-generalization-on-vlcs | SPG (CLIP, ResNet-50) | Average Accuracy: 84.0 |
| domain-generalization-on-vlcs | SPG (CLIP, ViT-B/16) | Average Accuracy: 82.4 |