文章起源 | 恒源云社区)
原文地址 |【ACL 2022】
原文作者 | Mathor
小编此刻心田 OS:不能怪大佬产出高~是我不致力!
打工人打工魂,站起来,开始搬运!!!
注释开始:
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\in \mathcal{X} \)以及标签 \(y\in \mathcal{Y} \),其中 \(\mathcal{X} \)的特色空间是离散的(例如 One-hot)。以情感剖析(Sentiment Analysis, SA)工作为例,输出句子
标签集 \(\mathcal{Y} \)=\(postive \), \(\text{negative} \)中的标签 \(y=\text{postive} \)为实在标签
定义 \(\phi : \mathcal{X}\to \mathcal{Z} \)为输出句子到高维浓密向量空间的映射,\(f: \mathcal{Z}\to \mathcal{Y} \)为改向量空间到标签空间的映射。给定训练集 \(\mathcal{D} \),咱们能够定义损失函数为 \(\ell: \mathcal{Y}\times \mathcal{Y}\to \mathbb{R}^+ \),并且能够通过以下办法找到最佳的 \(f \)和 \(\phi \):
通常来说,即使分类器 \(f \)很简略,但只有有一个好的特征提取器 \(\phi(x) \),上游工作中的体现就不会差
下面的内容删减自原论文,论文中的形容有些形象,说白了实际上 \(\phi \)能够看作是 BERT,\(f \)就是为了满足不同的上游工作,而接在 BERT 前面的一些层,例如文本分类前面接的就是一个 Linear 层
\(\mathcal{Y} \)-TUNING
咱们定义 \((x,y) \)是一个有标签的训练样本,\(\phi^{\star} \)是在大规模语料上训练好的预训练模型,并且在接下来始终固定 \(\phi^{\star} \)的参数不更新。传统做法是微调特征提取器 \(\phi^{\star} \)的参数,使其靠近实在标签。\(\mathcal{Y} \)-Tuning 的做法是固定 \(\phi^{\star} \)的参数,转而微调标签提取器 \(\psi \)的参数,并且咱们应用 Cross Attention 将 \(\phi^{\star}(x) \)与 \(\psi(\mathcal{Y}) \)的特色进行交融,如下图所示
损失函数为 Triplet Loss,模式如下:
其中,\([x]_+=\max (x, 0) \),\(\alpha \)是一个边界超参数,用于管制正负样本间的间隔。在训练过程中,给定训练集 \(\mathcal{D} \),咱们能够通过如下形式找到最佳的模型参数
在推理阶段,咱们能够应用如下形式取得预测值:
AN IMPLEMENTATION OF $\mathcal{Y}$-TUNING
论文图中的模型架构次要由三个局部组成:
- 用于提取文本特色的 \(\phi \),这个局部个别是 Encoder 类模型,例如 BERT 等
- 用于提取标签特色的 \(\psi \),这个局部个别采纳 Transformer 的 Decoder 构造,因为须要有 Cross-Attention 的局部对标签特色和文本特色进行交互
- 用于预测类别的标签指针(Label Pointer),这个局部比较简单,用一个均匀或者最大池化将高维向量转为低维向量即可
Label Embedding
给定一个标签集 \(\mathcal{Y} \),咱们首先将标签 \(y\in \mathcal{Y} \)映射为一个或多个间断的向量。当然,除了标签外,咱们还须要将工作相干的信息映射为向量,例如情感剖析工作,咱们会在最后面增加一个 SA 标记
这其实有点像 mBART,在做机器翻译的时候将该语言对应的标记(例如 ZH、JP、EN 等)增加到句子后面
因而,初始的标签特色为
其中,\(e_T \) 示意工作相干的 embedding,\(e^{c} \) 示意第 \(c \)个类别的 embedding,\(N \)和 \(D \)别离示意样本数量以及标签的表征的维度。实际上每个标签都能够用多个向量来示意,作者也做了一个比照试验,钻研每个标签用多个向量来示意会对后果产生什么影响
有很多办法将标签 \(y \)映射为一个向量,例如从 Vocabulary、均匀分布、token embedding 中采样等
Self-Attention and Cross-Attention
咱们首先应用 self-attenion 增强不同标签间的信息交互
其中,\(\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} \),如果在 self-attention 中,\(N=M \);如果在 cross-attention 中,\(N \)代表输出句子的长度,\(M \)代表标签输出的长度
在 cross-attention 中
其中,\(\mathbf{X} \)是输出句子通过 PTMs 后的高维向量
Label Pointer
所有计算实现之后,咱们会失去输入向量
其中,\(\mathbf{h}_T \)是工作相干的形容特色,\(\mathbf{h}_c \)是类别为 \(c \)的标签特色。Triplet Loss 的定义如下:
其中,\(c^{\star} \)代表正确标签对应的索引
MODEL ANALYSIS
假如咱们有一个 \(L \)层的预训练模型,它的复杂度为 \(\mathcal{O}(LM^2) \),其中 \(M \)是输出句子长度;一个有着长度为 \(P \)的连续型 Prompt,它的复杂度为 \(\mathcal{O}(L(M+P)^2) \);对于 \(\mathcal{Y} \)-tuning 来说,self-attention 与 cross-attention 的复杂度别离为 \(\mathcal{O}(N^2) \)以及 \(\mathcal{O}(MN) \),其中 \(N \)为标签集的大小。因为在 \(\mathcal{Y} \)-tuning 中咱们是固定预训练模型参数不训练的,因而预训练模型的局部不会占用计算资源(尤其是反向流传过程)
RESULT
从试验后果上来看,成果算是「很有竞争力」,咱们当然不能拿它与传统的 FineTune 相比,毕竟可训练的参数少了那么多,训练所需的算力也不是一个数量级的
集体总结
本文提出的 \(\mathcal{Y} \)-Tuning 思路十分有意思,传统思路是对输出句子进行学习,使其输入向量凑近标签的散布;而这篇文章正好相同,对标签进行学习。让我有些意外的点是,损失函数并不是传统的 CrossEntropyLoss,因为在我看来就间接将输入向量转换维度之后与实在标签进行比照就好了。然而论文应用的损失函数是 Triplet Loss,不晓得为什么作者为什么要这样做