前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >$\mathcal{Y}$-Tuning: 通过对标签表征进行微调的深度学习新范式

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

作者头像
mathor
发布2021-12-14 13:46:41
6720
发布2021-12-14 13:46:41
举报
文章被收录于专栏:mathormathor

ACL2022有一篇名为《\mathcal{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)任务为例,输入句子

x = \text{I love this movie}

标签集\mathcal{Y}=\{\text{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

\phi, f = \mathop{\arg \min} \sum_{(x,y)\in \mathcal{D}} \ell (f(\phi (x)), y)\tag{1}

通常来说,即便分类器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})的特征进行融合,如下图所示

PTMs代表φ

损失函数为Triplet Loss,形式如下:

$$ \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} $$

其中,[x]_+=\max (x, 0)\alpha是一个边界超参数,用于控制正负样本间的距离。在训练过程中,给定训练集\mathcal{D},我们可以通过如下方式找到最佳的模型参数

\psi, f = \arg \min \sum_{(x,y)\in \mathcal{D}} \mathcal{L}_{\psi, f}(x,y)\tag{3}

在推理阶段,我们可以使用如下方式获得预测值:

\hat{y} = \mathop{\arg \max}_{y\in \mathcal{Y}}\ f(\phi^{\star}(x), \psi(y))\tag{4}

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

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

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

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

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

因此,初始的标签特征为

\mathbf{Y} = [e_T; e_1^{(1)};···;e_1^{(c)}] \in \mathbb{R}^{N\times D}\tag{5}

其中,e_T表示任务相关的embedding,e^{(c)}表示第c个类别的embedding,ND分别表示样本数量以及标签的表征的维度。实际上每个标签都可以用多个向量来表示,作者也做了一个对比实验,研究每个标签用多个向量来表示会对结果产生什么影响

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

Self-Attention and Cross-Attention

我们首先使用self-attenion加强不同标签间的信息交互

\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}

其中,\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{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} $$

其中,\mathbf{X}是输入句子通过PTMs后的高维向量

Label Pointer

所有计算完成之后,我们会得到输出向量

\mathbf{h} = [\mathbf{h}_T, \mathbf{h}_1, ···,\mathbf{h}_C]\tag{7}

其中,\mathbf{h}_T是任务相关的描述特征,\mathbf{h}_c是类别为c的标签特征。Triplet Loss的定义如下:

\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}

其中,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,不知道为什么作者为什么要这样做

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Preliminaries of Tuning PTMs
  • $\mathcal{Y}$-Tuning
  • An Implementation of $\mathcal{Y}$-Tuning
    • Label Embedding
      • Self-Attention and Cross-Attention
        • Label Pointer
        • Model Analysis
        • Result
        • 个人总结
        相关产品与服务
        机器翻译
        机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档