0%

论文阅读[粗读]-Exploring Universal Intrinsic Task Subspace via Prompt Tuning

这一篇文章可以看做对Intrinsic Dimension的又一个推广,用了比LoRA更强的假设。通过在多任务间找到统一的子空间表示,证明了任务间的相关性,提升了prompt tuning的稳定性和效果

作者是THUNLP实验室

介绍

这篇文章主要是探讨这个问题:

已有研究发现预训练可以降低下游任务的Intrinsic Dimension,也就是模型可以压缩下游任务的表征

那么不同的下游任务需要的空间是否是关联或者统一的呢?

由此作者进行了一系列的探索,发现竟然可以只用250个参数统一子空间上就能在100个可见任务和250个不可见任务上达到FT的97%和83%的效果

全文的实验设计很复杂,对比也很多,我感觉文章的组织形式和结论更像是一种探索、分析性的文章

方法

具体怎么实现统一的子空间呢?作者分为了两个步骤:

  • Multi-task Subspace Finding (MSF)
  • Intrinsic Subspace Tuning (IST)

Multi-task Subspace Finding (MSF)

这个过程实际上就是在寻找任务统一的子空间,首先要确定“任务”是什么意思:

对于一个任务而言,就是一个$<X,Y>$的集合,其中X是输入语句,Y是一个类别(分类任务)或者一些句子(生成任务)。

所谓的PT就是在任务输入X前面加上一个可学习的prompt,实际模型是这样的:
$$
\mathcal{L}{PT} = -\frac{1}{|\mathcal{Y}|} \prod{j=1}^{|\mathcal{Y}|} P(y_j | p_1,p_2,…,p_n,x_1,x_2,…,x_{|\mathcal{X}|}, y_1,…,y_{j-1})
$$
保持只有$p_1,…,p_n$是可学习的,别的参数都锁定,然后参数p是从某个分布采样来进行初始化的

作者首先找到了120个已有任务,把他们随机分成了100个可见任务和20个不可见任务

由此可见,PT正常的搜索空间是$D = n\times d(\text{model dimension})$的,对于不同的任务,模型可以加上不同的prompt来进行表示。对于100个任务,一共有100组prompt(在每个任务的训练集上训练得来的)

那么怎么找到统一的表示空间呢?

可以先把D维降到d维,再来一个反向变换变换回D维。如果锁定矩阵的话,中间的d维就是所谓的统一表示空间,矩阵就是空间的变换矩阵。在具体执行中,使用重建loss进行学习:
$$
\begin{aligned}
P_i^* & = \text{Proj}b(\text{Proj}(P_i)) \
\mathcal{L}^i
{AE} & = || P_i^* - P_i ||^2_2 \
\mathcal{L}^{MSF}{\theta{proj}} & = \frac{1}{|\mathcal{T}{train}|} \sum{i=1}^{|\mathcal{T}{train}|} (\mathcal{L}{PT}(P_i^*) + \alpha \mathcal{L}^i_{AE})
\end{aligned}
$$
通过这公式,可以学习到前后的变换模型的参数。实验中,变换模型就是简单的MLP

Intrinsic Subspace Tuning (IST)

一旦学习好变换矩阵$Proj,Proj_b$以后,对于新的任务,我们就可以只保留$Proj_b$矩阵,然后从统一的子空间采样prompt
$$
\mathcal{L}^{IST}{\theta{d}} = \mathcal{L}_{PT} (\text{Proj}_b(V_i))
$$
其中,只有d维变量$V_i \in \mathbb{R}^d$是可学习的

实验

这一部分作者做了各种实验来佐证文章的观点

作者找到了120个任务,随机分成100个可见任务和20个不可见任务;也可以按是否生成任务来分

可见任务是指训练proj时用到的prompt的任务

首先所有实验是用BART执行,然后所有任务都报告了相比于直接prompt tuning/fine tuning的结果的相对值,分类任务用F1,生成任务用BLEU。

所有任务都是few-shot场景下的:

  • 生成任务用32条数据
  • 分类任务用16条数据

其中模型用到的指标的解释如下:

  • $\mathcal{T}_{\text{train}}(\text{MSF})$: 在100个任务上训完$Proj,Proj_b$,然后直接报告重建的prompt的表现
  • $\mathcal{T}_{\text{test}}(\text{MSF})$: 在20个不可见的任务上直接报告重建的prompt的表现(用不可见任务的训练集先做PT训练,把出来的prompt跑一遍重建)
  • $\mathcal{T}^{\text{same}}_{\text{train}}(\text{IST})$:拿训好的$Proj_b$,在可见任务上从零开始做d维的 IST PT
  • $\mathcal{T}^{\text{diff}}_{\text{train}}(\text{IST})$:unseen-data challenge,对于可见任务在保持测试集不变的情况下,换用另外的训练集(和之前训正常prompt不一样的训练集)做IST PT
  • $\mathcal{T}_{\text{test}}(\text{IST})$:在20个不可见任务上做 IST PT
  • $\mathcal{T}^{in}{\text{test}}(\text{MSF}),\mathcal{T}^{out}{\text{test}}(\text{MSF})$:如果用是否用CLS划分任务的话,测试loss分为两组(就是生成和非生成任务)

实验结果如下:

这个结果其实能说明很多问题,作者用了两页来讲这个结果,大致有以下几个关键点:

Do PLMs really reparameterize various task adaptations into a universal task subspace?

首先就是主试验的结果,发现$\mathcal{T}^{\text{diff}}{\text{train}}(\text{IST})$和$\mathcal{T}{\text{test}}(\text{IST})$效果都很好,这说明用一个统一的subspace确实可以得到很不错的效果,有力佐证了共同子空间假说

What limits IPT?

作者进一步分析IPT效果的提升空间

  • $\mathcal{T}{\text{train}}(\text{MSF})$和$\mathcal{T}{\text{test}}(\text{MSF})$之间的差距不小,说明模型对于不可见任务的泛化能力弱小,这可能和变换模型的结构有关系
  • $\mathcal{T}{\text{train}}(\text{MSF})$和$\mathcal{T}^{\text{same}}{\text{train}}(\text{IST})$的差距,说明模型从统一子空间学习的能力没有在高位空间学习强
  • 受限于prompt tuning方法本身的限制。这一点作者做了用adpter找统一子空间的实验IST Adapter和用随机参数找子空间的实验(fine-tune相当于这个的d推广到所有参数),发现adpter的方法确实比pt更好

How is the influence of task types?

对比$\mathcal{T}^{in}{\text{test}}(\text{MSF}),\mathcal{T}^{out}{\text{test}}(\text{MSF})$可以说是惨不忍睹,说明生成任务和理解任务的差距还是非常远的

附实验

作者尝试增加训练集中的数据量,发现基本上就是数据越多,效果越好。当d小的时候增长更为明显

也探索了选用的可见任务多少带来的影响,说明可见任务越多,统一子空间的表征能力越强,或者说变换矩阵越准确

最后作者对比了稳定性,就是连续跑10次不可见任务每次score的方差:

  • fine-tune的方差还行
  • 直接做PT结果不稳定,或者说训练不好训
  • IPT是指先用IPT PT跑出来一个soft prompt,然后作为起始点来进行真正的PT,这样结果最稳定。同时效果比单纯PT更强(103.4% $E_{rel}^{PT}$)

因此从统一子空间出发更有利于PT训练的稳定性

我的思考

  • 实验设计很精妙,想想作者的几个观点和对应的实验方法
  • 所谓的统一子空间,有没有可能就是token空间?不知道是不是up sample出来的结果更接近于模型本身的某个word embedding
  • 能不能结合预训练任务?比如说用预训练任务做proj, proj_b的训练,看看在下游任务能不能更好的进行低维表征