Motivation
提示工程,即手动设计提示,是获得有意义的提示以适应 VLM 的直接方法。然而,它不可避免地引入了人为偏见,并需要耗费大量时间找到合适的提示。在多任务学习的背景下,并非所有任务之间的知识都相互受益,将其与 Prompt 结合起来的时候,对所有 Task 都用相同的提示或者为每个 Task 设置自己的提示效果都不如对其进行结合的结果。
本文探究了如何通过 Prompt 同时将一个 VLM 应用到多个任务上。
文中发现任务共享提示可以显著地补充为每个任务单独设计 (或学习) 的提示。单个任务 (手工制作) 提示捕获每个任务的细粒度内容。任务共享 (手工制作) 提示符表示跨任务的一般内容。任务共享和任务单独提示的组合可以包含多粒度的内容,以增强识别。
虽然相似的任务可以通过共享知识来促进彼此,但我们不能假设所有提供的任务都可以从一起训练中受益。任务之间的显著差异可能导致表现不佳,也被称为负迁移。另一方面,即使在理想的情况下,即在所有任务中存在相同的有益提示,仅学习全局 (粗粒度) 任务共享提示会忽略在一些细粒度任务中的信息。
Method
Learning Individual and Shared Knowledge
作者认为,任务独立的 Prompt 会出现过拟合的情况,而完全共享相同的 Prompt 则忽略了一部分的细粒度信息,因此同时学习任务共享和独立的 Prompt,同时提供总体和相关的内容来有效发挥 VLM 的效果。
Hierarchical Prompt Learning
HiPro 首先根据任务对的梯度方向估计任务间的affinity。在给定affinity的情况下,采用分层聚类的方法构造分层任务树。然后,HiPro 独立学习每个节点捕获相应任务组上迁移信息的提示。最后,对于每个目标任务,通过平均由任务相关提示 (由包含目标任务的任务组学习) 生成的权重来获得融合分类器权重。
Inter-Task Affinity
任务间affinity量化了两个任务的相似性,即两个任务可以从一起训练中获益的程度。现有的 MTL 研究表明,梯度冲突是联合训练导致性能下降的关键原因。因此通过两个任务在共享提示上的梯度的相似性来度量它们的affinity。
具体来说,给定所有目标任务的全局任务共享提示符,则第 i i i 个任务与第 j j j 个任务之间的亲和度可计算为如下点积:
Hierarchical Task Clustering and Prompt Learning
给定任务间的affinity d τ i , d τ j d_{\tau_i}, d_{\tau_j} dτi,dτj,利用层次聚类构建层次任务树,从而发现任务间共享的较细粒度的知识。每个任务都被视为一个初始集群,迭代地找出两个最相似的簇,并将它们合并成一个新的簇。