KgCoOp
KgCoOp
CoOp提出使用一个可学习到Context token获取特定下游任务的Prompt,但是学到的textual token在分类任务unseen class中并没有很好的泛化能力。本文的motivation在于如何尽量减少训练Prompt时间的同时提高Context token的泛化能力,基本思想是要求learned prompt和手工prompt尽量一致,这是通过构建对比损失实现
Prompt Learning vs Generalization
CoOp/CoCoOp希望根据downstream task设计task-specific的prompt,这类prompt通常包含task-specific knowledge。为了学习到这类knowledge,往往需要借助few-shot adaptation
本文基于一个观察:CLIP利用hand-crafted prompt增加对unseen class做zero-shot adaptation效果好于基于CoOp学到的prompt做迁移得到的结果,从prompt嵌入空间的角度上看,两种prompt(hand-crafted/learnable)差异越大,泛化性能下降越明显
这里提到的Adaptation有两种类型,一种是希望Text/Image Encoder输出的结果可以在多种下游任务上Adaptation
Method(Knowledge-guided Context Optimization)
基本思想上Prompt Engineer得到的Prompt比较有泛化性,尽管通过Prompt Learning学到的Learned Prompt可以在训练集上获得较好的结果,但是缺乏语义信息导致不能在unseen class上泛化
在一个数据集上通过Prompt Engineer和KgCoOp得到的prompt embedding被记作
代表第i类class的prompt描述,要求两者尽量相似
和CoOp损失函数加权即可训练Prompt
Summary
这篇工作是Domain Specific Prompt和Learned Prompt之间的Tradeoff,提供了一种基于领域相关Domain做进一步优化的Prompt Learning范式