方法简介
方法很简单,作者通过实验发现prompt拥有一个良好的初始化是VPT的关键,于是作者就通过在MAE/MoCo进行预训练来得到一个良好的prompt的初始化来提供微调阶段的prompt。
这么简单的方法是怎么催成一篇顶会的呢?值得我们去学习!
论文思路
主要的挑战
我们总结了下面列出的主要挑战。
提示初始化:现有的基于提示的方法,如VPT (Jia et al ., 2022)、GateVPT (Yoo et al ., 2023),采用随机初始化提示(如均匀或正常)的策略,然后在调优过程中更新提示,类似于传统神经网络的参数优化。然而,插入的提示令牌的不同初始化技术会显著影响准确性,如VPT及其变体的原始论文所示。
提示长度 :与完全微调相比,唯一需要调整的额外超参数是插入的提示令牌的数量。虽然现有方法的消融研究表明,VPT及其变体通常对插入提示符的数量敏感。
自监督预训练的性能欠佳 :最近的研究(Yoo et al ., 2023)证明了VPT及其变体在自监督预训练下的性能明显差于在监督预训练下的性能,阻碍了其在具有大量未标记数据的各种场景中的应用。
一个度量方式NMI和发现
一个中心问题集中在优化插入的提示令牌的训练上。我们首先进行一个简单的实验,观察随着VPT的收敛,提示令牌的分布如何变化。一个直观的策略包括使用补丁令牌作为引用。因此,我们引入了标准化互信息 (NMI (Estevez et al ', 2009))作为量化关系的度量。设 π ( p i − 1 , e i − 1 ) \pi(\textbf p_{i-1},\textbf e_{i-1}) π(pi−1,ei−1)为第 i i i个transformer块的prompt牌和token牌的联合分布。我们用 p i − 1 \textbf p_{i-1} pi−1和 E i − 1 \textbf E_{i-1} Ei−1上的sigmoid-normalized交叉注意近似 π \pi π为:
其中 σ \sigma σ是sigmoid运算。我们进一步沿 j j j坍缩得到 p i − 1 \textbf p_{i-1} pi−1的边际分布为 π ( p i − 1 ) = ∑ j = 1 N e π ( p i − 1 k , e i − 1 j ) \pi(\textbf p_{i-1})=\sum^{N_e}{j=1}\pi(\textbf p^k{i-1},\textbf e^j_{i-1}) π(pi−1)=∑j=1Neπ(pi−1k,ei−1j)。 e i − 1 \textbf e_{i-1} ei−1的边际分布遵循 π ( e i − 1 ) = ∑ k = 1 N p π ( p i − 1 k , e i − 1 j ) \pi(\textbf e_{i-1})=\sum^{N_p}{k=1}\pi(\textbf p^k{i-1},\textbf e^j_{i-1}) π(ei−1)=∑k=1Npπ(pi−1k,ei−1j)的相同原则。因此,定义归一化互信息为:
其中 I ( ; ) I(;) I(;)表示标准互信息, H ( ⋅ ) H(\cdot) H(⋅)表示熵。我们可以很容易地用联合分布 π ( p i − 1 k , e i − 1 j ) \pi(\textbf p^k_{i-1},\textbf e^j_{i-1}) π(pi−1k,ei−1j)和边际分布来计算它们。
为了探索提示令牌的注意力崩溃程度,我们测量了四个规范数据集(CUB-200-2011 (Wah等人,2011)、Caltech-101 (Wah等人,2011)、Patch Camelyon (Veeling等人,2018)、Clevrcount (Johnson等人,2017))的归一化互信息。从图2中可以看出,视觉提示调优的训练过程(如四个子图中的蓝色曲线)逐渐得到了较高的归一化互信息值。考虑到NMI本身的定义,我们的发现如下:
图2。VPT呈现提示符和补丁令牌之间的规格化互信息(NMI (Estevez et al ', 2009))在微调期间逐渐增加的行为。SPT的初始NMI较大,有利于快速收敛,获得更先进的结果。
发现:
随着训练水平的提高,下游语境化提示的分布逐渐向patch token的分布收敛,具体表现为归一化互信息值的增加。回想一下,我们在第3.1节讨论了应用视觉提示调优的好处和挑战。鉴于上述发现,我们推测具有高度共享信息的初始提示令牌**(训练起点处的高NMI值)可能有利于调优过程(提高收敛速度和准确性),从而促进更稳定的训练** 。然后将问题转移到构造具有高度规范化互信息的提示初始化(之后就开始讲简单的预训练初始化了)。
提出的方法
构造具有高度共享信息的提示的直观方法**(个人感觉:方法与发现其实是没有什么衔接的,或者说作者对这个衔接没有讲清楚)** 是使用目标数据集上推断的令牌原型初始化提示令牌。对于目标数据集,我们将第 i i i层补丁嵌入的前向结果表示为 E i ∗ = { e i j ∈ R D ∣ j ∈ N , 1 ≤ j ≤ N e ∗ N } \textbf E^*_i=\{e^j_i\in \mathbb{R}^D|j\in \mathbb{N},1\le j\le N_e*N\} Ei∗={eij∈RD∣j∈N,1≤j≤Ne∗N}。 N N N是整个目标数据集的总数。假设 C i = { c i j ∈ R D ∣ j ∈ N , 1 ≤ j ≤ N p } \textbf{C}_i=\{c^j_i\in \mathbb{R}^D|j\in \mathbb{N},1\le j\le N_p\} Ci={cij∈RD∣j∈N,1≤j≤Np}是第 i i i层的原型,我们通过最小化惯性将 E i ∗ \textbf E^*_i Ei∗聚为具有K-means的 N p N_p Np原型:
与视觉提示调优类似,我们使用原型 C i \textbf{C}_i Ci构造提示令牌。我们将这种方法称为自提示调优S elfP rompt T uning (SPT)。在VPT示例之后,我们根据所涉及的transformer块的数量定义了SPT-Shallow 和SPT-Deep。
接下来就跟VPT一样的操作了,只不过**用预训练出来的原型C i \textbf{C}_i Ci作为微调时候的prompt的初始化**;
SPT-Shallow
SPT-Deep
优化提示的预训练
表1。构建提示过程的时间成本。我们在CUB-200-2011上采用了四种策略(K-Means, Max pooling, Mean pooling, Random sample),以vitb为骨干。(注:"d"表示天,"s"表示秒。)
前面介绍的SPT将令牌原型视为初始提示,它可以近似地表示训练数据和/或中间令牌的总体分布。但是,候选令牌的数量通常远远超过提示的长度。聚类过程极其缓慢(见表1和图3 (a)),甚至时间成本明显超过模型微调的时间。为了缓解这个问题,我们提出了两个更实用的策略****(me:提出了预训练速度更快但效果略微有所下降的办法)。
Mean (max) pooling 我们对随机选择的批标记 E i ∗ = { e i j ∈ R D ∣ j ∈ N , 1 ≤ j ≤ N e ∗ B } \textbf E^*_i=\{e^j_i\in \mathbb{R}^D|j\in \mathbb{N},1\le j\le N_e*B\} Ei∗={eij∈RD∣j∈N,1≤j≤Ne∗B}执行均值池化或最大池化,输出 N p N_p Np个标记 。对于非重叠采样,窗口核大小为 ⌊ N e ∗ B N p ⌋ \lfloor \frac{N_e*B}{N_p}\rfloor ⌊NpNe∗B⌋。 ⌊ ⋅ ⌋ \lfloor \cdot \rfloor ⌊⋅⌋指向下取值操作。 B B B是批大小。
Random sample 对于简化的替代方案,我们甚至在随机批处理中随机抽样 N p N_p Np个令牌。例如,我们在第 i i i层随机选择一个前向批结果作为 E i ′ ∗ \textbf E'^{*}_i Ei′∗。最终的 N p Np Np初始标记从 N e ∗ B N_e*B Ne∗B标记中均匀抽样。
备注:建议的改进程序对下游任务更实用。我们从两个方面对计算成本进行了简要的评估。
相关实验
在MAE和MoCo-V3上的实验。
四种提示优化策略,总体来说K-mean最好,但效率低
参考资料
论文下载(ICML(CCF A), Spotlight, 2024)
https://arxiv.org/pdf/2402.02382