$\mathcal{Y}$-Tuning: 通过对标签表征进行微调的深度学习新范式

ACL2022有一篇名为 Y \mathcal{Y} Y-Tuning: An Efficient Tuning Paradigm for Large-Scale Pre-Trained Models via Label Representation Learning》的投稿,从标题上就吸引了我的注意,不同于Fine-Tuning、Adapter-Tuning、Prompt-Tuning,这篇文章的创新之处在于,不调整输入文本特征与大规模预训练模型的参数,仅通过学习标签的特征,以往很少见到论文去学习标签的特征。虽然最终效果可能仍无法与微调相比,但它在节省计算成本方面有很大的优势,并有可能通过后续研究进一步提高性能

Preliminaries of Tuning PTMs

对于NLP任务来说,通常都含有输入文本 x ∈ X x\in \mathcal{X} xX以及标签 y ∈ Y y\in \mathcal{Y} yY,其中 X \mathcal{X} X的特征空间是离散的(例如One-hot)。以情感分析(Sentiment Analysis, SA)任务为例,输入句子
x = I love this movie x = \text{I love this movie} x=I love this movie
标签集 Y = { postive , negative } \mathcal{Y}=\{\text{postive}, \text{negative}\} Y={postive,negative}中的标签 y = postive y=\text{postive} y=postive为真实标签

定义 ϕ : X → Z \phi : \mathcal{X}\to \mathcal{Z} ϕ:XZ为输入句子到高维稠密向量空间的映射, f : Z → Y f: \mathcal{Z}\to \mathcal{Y} f:ZY为该向量空间到标签空间的映射。给定训练集 D \mathcal{D} D,我们可以定义损失函数为 ℓ : Y × Y → R + \ell: \mathcal{Y}\times \mathcal{Y}\to \mathbb{R}^+ :Y×YR+,并且可以通过以下方法找到最佳的 f f f ϕ \phi ϕ
ϕ , f = arg ⁡ min ⁡ ∑ ( x , y ) ∈ D ℓ ( f ( ϕ ( x ) ) , y ) (1) \phi, f = \mathop{\arg \min} \sum_{(x,y)\in \mathcal{D}} \ell (f(\phi (x)), y)\tag{1} ϕ,f=argmin(x,y)D(f(ϕ(x)),y)(1)
通常来说,即便分类器 f f f很简单,但只要有一个好的特征提取器 ϕ ( x ) \phi(x) ϕ(x),下游任务中的表现就不会差

上面的内容删减自原论文,论文中的描述有些抽象,说白了实际上 ϕ \phi ϕ可以看作是BERT, f f f就是为了满足不同的下游任务,而接在BERT后面的一些层,例如文本分类后面接的就是一个Linear层

Y \mathcal{Y} Y-Tuning

我们定义 ( x , y ) (x,y) (x,y)是一个有标签的训练样本, ϕ ⋆ \phi^{\star} ϕ是在大规模语料上训练好的预训练模型,并且在接下来始终固定 ϕ ⋆ \phi^{\star} ϕ的参数不更新。传统做法是微调特征提取器 ϕ ⋆ \phi^{\star} ϕ的参数,使其接近真实标签。 Y \mathcal{Y} Y-Tuning的做法是固定 ϕ ⋆ \phi^{\star} ϕ的参数,转而微调标签提取器 ψ \psi ψ的参数,并且我们使用Cross Attention将 ϕ ⋆ ( x ) \phi^{\star}(x) ϕ(x) ψ ( Y ) \psi(\mathcal{Y}) ψ(Y)的特征进行融合,如下图所示

!!!


PTMs代表φ

!!!

损失函数为Triplet Loss,形式如下:
L ψ , f ( x , y ) = ∑ y ′ ∈ Y y ′ ≠ y [ f ( ϕ ⋆ ( x ) , ψ ( y ′ ) ) − f ( ϕ ⋆ ( x ) , ψ ( y ) ) + α ] + (2) \begin{aligned} \mathcal{L}_{\psi,f}(x,y) = &\sum_{y' \in \mathcal{Y}\atop y'\neq y}[f(\phi^{\star}(x), \psi(y^{\prime}))\\ &-f(\phi^{\star}(x), \psi(y)) + \alpha]_{+} \end{aligned}\tag{2} Lψ,f(x,y)=y=yyY[f(ϕ(x),ψ(y))f(ϕ(x),ψ(y))+α]+(2)
其中, [ x ] + = max ⁡ ( x , 0 ) [x]_+=\max (x, 0) [x]+=max(x,0) α \alpha α是一个边界超参数,用于控制正负样本间的距离。在训练过程中,给定训练集 D \mathcal{D} D,我们可以通过如下方式找到最佳的模型参数
ψ , f = arg ⁡ min ⁡ ∑ ( x , y ) ∈ D L ψ , f ( x , y ) (3) \psi, f = \arg \min \sum_{(x,y)\in \mathcal{D}} \mathcal{L}_{\psi, f}(x,y)\tag{3} ψ,f=argmin(x,y)DLψ,f(x,y)(3)
在推理阶段,我们可以使用如下方式获得预测值:
y ^ = arg ⁡ max ⁡ y ∈ Y   f ( ϕ ⋆ ( x ) , ψ ( y ) ) (4) \hat{y} = \mathop{\arg \max}_{y\in \mathcal{Y}}\ f(\phi^{\star}(x), \psi(y))\tag{4} y^=argmaxyY f(ϕ(x),ψ(y))(4)

An Implementation of Y \mathcal{Y} Y-Tuning

论文图中的模型架构主要由三个部分组成:

  1. 用于提取文本特征的 ϕ \phi ϕ,这个部分一般是Encoder类模型,例如BERT等
  2. 用于提取标签特征的 ψ \psi ψ,这个部分一般采用Transformer的Decoder结构,因为需要有Cross-Attention的部分对标签特征和文本特征进行交互
  3. 用于预测类别的标签指针(Label Pointer),这个部分比较简单,用一个平均或者最大池化将高维向量转为低维向量即可
Label Embedding

给定一个标签集 Y \mathcal{Y} Y,我们首先将标签 y ∈ Y y\in \mathcal{Y} yY映射为一个或多个连续的向量。当然,除了标签外,我们还需要将任务相关的信息映射为向量,例如情感分析任务,我们会在最前面添加一个SA标志

这其实有点像mBART,在做机器翻译的时候将该语言对应的标志(例如ZH、JP、EN等)添加到句子前面

因此,初始的标签特征为
Y = [ e T ; e 1 ( 1 ) ; ⋅ ⋅ ⋅ ; e 1 ( c ) ] ∈ R N × D (5) \mathbf{Y} = [e_T; e_1^{(1)};···;e_1^{(c)}] \in \mathbb{R}^{N\times D}\tag{5} Y=[eT;e1(1);⋅⋅⋅;e1(c)]RN×D(5)
其中, e T e_T eT表示任务相关的embedding, e ( c ) e^{(c)} e(c)表示第 c c c个类别的embedding, N N N D D D分别表示样本数量以及标签的表征的维度。实际上每个标签都可以用多个向量来表示,作者也做了一个对比实验,研究每个标签用多个向量来表示会对结果产生什么影响

有很多方法将标签 y y y映射为一个向量,例如从Vocabulary、均匀分布、token embedding中采样等

Self-Attention and Cross-Attention

我们首先使用self-attenion加强不同标签间的信息交互
Att ( Q , K , V ) = Softmax ( Q K ⊤ D k ) V (6) \text{Att}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Softmax}\left(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{D_k}}\right)\mathbf{V}\tag{6} Att(Q,K,V)=Softmax(Dk QK)V(6)
其中, Q ∈ R N × D k , K ∈ R M × D k , V ∈ R M × D v \mathbf{Q}\in \mathbb{R}^{N\times D_k}, \mathbf{K}\in \mathbb{R}^{M\times D_k}, \mathbf{V}\in \mathbb{R}^{M\times D_v} QRN×Dk,KRM×Dk,VRM×Dv,如果在self-attention中, N = M N=M N=M;如果在cross-attention中, N N N代表输入句子的长度, M M M代表标签输入的长度

在cross-attention中
Q = Y W q ∈ R N × D K = X W k ∈ R M × D V = X W v ∈ R M × D \mathbf{Q}=\mathbf{Y}\mathbf{W}_q\in \mathbb{R}^{N\times D}\\ \mathbf{K}=\mathbf{X}\mathbf{W}_k\in \mathbb{R}^{M\times D}\\ \mathbf{V}=\mathbf{X}\mathbf{W}_v\in \mathbb{R}^{M\times D} Q=YWqRN×DK=XWkRM×DV=XWvRM×D
其中, X \mathbf{X} X是输入句子通过PTMs后的高维向量

Label Pointer

所有计算完成之后,我们会得到输出向量
h = [ h T , h 1 , ⋅ ⋅ ⋅ , h C ] (7) \mathbf{h} = [\mathbf{h}_T, \mathbf{h}_1, ···,\mathbf{h}_C]\tag{7} h=[hT,h1,⋅⋅⋅,hC](7)
其中, h T \mathbf{h}_T hT是任务相关的描述特征, h c \mathbf{h}_c hc是类别为 c c c的标签特征。Triplet Loss的定义如下:
L ( x , y ) = ∑ c = 1 C [ h T ⊤ h c − h T ⊤ h c ⋆ + α ] + (8) \mathcal{L}(x,y) = \sum_{c=1}^C [\mathbf{h}_T^{\top}\mathbf{h}_c - \mathbf{h}_{T}^{\top}\mathbf{h}_{c^{\star}} + \alpha]_{+}\tag{8} L(x,y)=c=1C[hThchThc+α]+(8)
其中, c ⋆ c^{\star} c代表正确标签对应的索引

Model Analysis

假设我们有一个 L L L层的预训练模型,它的复杂度为 O ( L M 2 ) \mathcal{O}(LM^2) O(LM2),其中 M M M是输入句子长度;一个有着长度为 P P P的连续型Prompt,它的复杂度为 O ( L ( M + P ) 2 ) \mathcal{O}(L(M+P)^2) O(L(M+P)2);对于 Y \mathcal{Y} Y-tuning来说,self-attention与cross-attention的复杂度分别为 O ( N 2 ) \mathcal{O}(N^2) O(N2)以及 O ( M N ) \mathcal{O}(MN) O(MN),其中 N N N为标签集的大小。因为在 Y \mathcal{Y} Y-tuning中我们是固定预训练模型参数不训练的,因此预训练模型的部分不会占用计算资源(尤其是反向传播过程)

Result

从实验结果上来看,效果算是「很有竞争力」,我们当然不能拿它与传统的FineTune相比,毕竟可训练的参数少了那么多,训练所需的算力也不是一个数量级的

个人总结

本文提出的 Y \mathcal{Y} Y-Tuning思路非常有意思,传统思路是对输入句子进行学习,使其输出向量靠近标签的分布;而这篇文章正好相反,对标签进行学习。让我有些意外的点是,损失函数并不是传统的CrossEntropyLoss,因为在我看来就直接将输出向量转换维度之后与真实标签进行对比就好了。但是论文使用的损失函数是Triplet Loss,不知道为什么作者为什么要这样做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数学家是我理想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值