基于Transformer的序列生成多标签文本分类
2023-04-06支港钟学燕王欣何山石佳
支港,钟学燕,王欣,何山,石佳
(西南石油大学 计算机科学学院,四川 成都 610500)
0 引言
多标签文本分类已经成为自然语言处理的一项重要的任务,目前被广泛应用于情感分析[1]、安全生产事故分类[2]、在线问诊[3]和许多其他现实场景。多标签文本分类任务中,复杂的语义信息可能隐含在文本中的各个部分,并且一个文本样本对应着多个标签。这些标签不仅和文本信息存在着一定的联系,而且标签与标签之间也存在着复杂的依赖关系。为提高分类效果,现有研究重点关注三个方面[4]:①如何从文本信息中充分捕捉语义信息;②如何从每个文本中提取与对应标签相关的判别信息;③如何准确挖掘标签之间的相关性。
传统的机器学习算法把多标签问题转换为多个相互独立的二分类问题,如Binary Rele⁃vance[5]、ML-KNN[6]等,这类方法虽然简单有效,但没有考虑标签之间的相关性。为了捕获标 签 相 关 性 ,Rank-SVM[7]、Calibrated Label Ranking[8],考虑了标签之间的成对关系,但是难以建立标签高阶相关性。Classifier Chains[9]、Ensemble Classifier Chain[9]利用链式规则和先前分类器的预测结果作为输入来考虑标签之间的高阶相关性,但是在大型数据集上的训练成本很高。
使用基于序列到序列(sequence to se⁃quence, Seq2Seq)[10]的方法将多标签文本分类问题转换为序列生成问题能够很好地建立标签高阶相关性。该方法提出了一个带有decoder结构的序列生成模型,并考虑到以前预测的标签,以先后顺序的方式预测结果。Yang等[11]提出了由Bi-LSTM编码器和基于加性注意力的LSTM解码器组成的序列生成模型(SGM),当模型预测不同的标签时,注意力机制会考虑文本不同部分的贡献,但缺乏对编码阶段提取的信息文本的充分利用。
鉴于Transformer使用多头注意力机制提取多重语义信息且兼具可解释性的特点,本文在Seq2Seq模型中的解码器部分采用Transformer,提出了基于Transformer解码器的序列生成模型。在多层Transformer解码器层中,通过其自注意力机制建立标签之间的高阶相关性,利用其交叉注意力机制自适应地对文本特征进行多头交叉关注,为不同的词汇赋以相应的权重,并聚合与标签相关的关键特征。序列生成Transformer能够在建立标签相关性的同时更全面地考虑文本和标签之间的语义相关性。
本文主要贡献有如下三个方面:
1) 将Transformer解码器用于多标签文本分类任务。可视化实验表明,Transformer解码器中的多头交叉注意力子层可以有选择地关注上下文表征里不同子空间的语义信息来聚合更为全面的判别特征,提高分类性能的同时有着更好的可解释性;
2) 探究了位置编码对模型效果的影响。实验表明,相对于标准Transformer外置的位置编码,将位置编码内嵌进Transformer多头注意力子层可以帮助模型更好地识别不同词汇间的顺序关系;
3) 通过在不同公开数据集上与当前流行的RNN类基线模型进行综合实验对比,验证了序列生成Transformer的有效性和高效性。
1 相关工作
1.1 多标签文本分类
近年来,大量基于深度学习的方法被应用于多标签分类算法研究,如 CNN[12],RNN[13],R-CNN[14],注意力机制[15]等,然而,这些方法仅倾向于提取文本表示,将标签视为一个整体序列进行预测,不但没有考虑文本内容的贡献差异,而且忽略了标签间的相关性。
文本中的一些关键词,通常对分类结果起着决定性作用。例如,“一年一度的首都高校大学生篮球联赛在北京林业大学隆重举行”,它被分为校园和体育两个类别。显然“高校”“大学生”等词与校园的相关性远大于体育,而“篮球联赛”则与体育密切相关。为此,Xiao等[16]提出LSAN方法利用文本和标签信息,借助自注意力和标签注意机制来建立文本内容和标签之间的相关性,虽然取得不错的效果,却忽略了标签之间的相关性。Nam等[10]、Yang等[11]、Qin等[17]使用基于 Seq2Seq的方法来建立标签相关性,并使用注意力机制提取文本信息中的判别特征,然而,传统的单头注意力机制只考虑词汇间单一层面的语义信息,不能全面地捕获上下文信息。
本文将Transformer解码器用于Seq2Seq架构,借助其多头注意力子层关注文本上下文表征里不同子空间的语义信息进而获取更为全面的判别特征,序列生成Transformer模型可以在建立标签相关性的同时,更全面、更深层次地考虑文本信息和标签之间的语义相关性。
1.2 Transformer在多标签文本分类任务中的应用
Transformer最 初 是 作 为 机 器 翻 译[18]的Seq2Seq模型,并广泛应用于计算机视觉任务[19-20]。最近研究表明,Transformer在多标签文本分类领域也有一定进展。
Adhikari等[21]通过对 BERT 进行微调克服了原始BERT的几个限制,并将BERT提炼成更简单的神经模型,从而以更小的计算成本建立多标签文本分类任务。Chang等[22]提出XTransformer模型,通过微调Transformer使得输入文本到标签集有更好的映射。Gong等[23]使用多层Transformer编码器从单词、句子和图形级别的文本当中提取文本表征。Yarullin等[24]提出了序列生成BERT模型(BERT+SGM),首次将Transformer用于多标签分类任务的Seq2Seq架构。Transformer编码器有着强大的表征能力,然而,对于Transformer 解码器在多标签文本分类任务的研究还有待进一步探索。
受上述研究启发,本文认为Transformer解码器可以很好地应用于序列生成多标签分类任务,通过其自注意力机制建立标签之间的高阶相关性,并利用其交叉注意力子层捕获文本序列内各种范围的语义信息,这与大多数现有工作使用Transformer编码器中的自注意力机制来改进文本表示有很大不同。
2 基于Transformer的序列生成多标签文本分类
2.1 多标签文本分类任务描述
假设样本空间X⊆Rd,d表示词向量维度。标签空间 L={λ1,λ2,…,λq}。给定数据集 D=,其中n表示样本总数,假定这些样本独立且同分布在一个未知分布P(X,Y)中。则多标签文本分类任务旨在学习一个决策函数f:X→2L,其中2L为L的子集,使得每一段文本匹配一组标签集合。
2.2 掩蔽自注意力机制
在多标签分类的序列生成模型中,预测阶段解码器输出的标签序列是逐个生成的,要将Transformer解码器应用于Seq2Seq架构中,就得保留解码器中自回归的属性。训练模型时在解码器自注意力子层中添加了掩码向量,以便任何查询都只会与已经生成的标签进行注意力计算。
在掩蔽自注意力机制的实现中,首先通过计算查询Q∈RT1×d和键K∈RT2×d每一行向量的内积,得到相似度矩阵A∈RT1×T2,其中 T1、T2分别为查询和键对应标签向量的数目,At,i表示标签t和标签i之间的注意力强度。为了防止计算得到的内积过大,采用公式(1)平衡计算结果,
为了确保每个标签只考虑该位置之前的所有标签,使用Softmax计算得到归一化注意力权重之前,需要在矩阵A中加入n个标签所对应的掩码向量R mask∈Rn×m。最后将A与值向量V∈Rn×d相乘得到掩蔽自注意力的输出。计算如公式(2)和(3)所示:
2.3 模型框架
如图1所示,序列生成Transformer模型主要是由编码和解码两个阶段组成。首先将输入文本传入编码器提取文本特征,编码器可以是RNN、CNN或Transformer等。解码阶段由两个模块组成:用于更新查询和聚合特征的多层Transformer解码器块,以及将输出扩展到与标签词典大小一样维度的全连接层。
2.3.1 编码阶段
给定单个样本的文本信息W=[w1,w2,…,wK],K 表示文本信息长度。将词 wi通过词嵌入得到向量表示ei∈Rd从而形成嵌入矩 阵 X=[e1,e2,…,eK]∈ RK×d。 然 后 将 X 送 入编码器进行特征提取得到文本特征表示H=[h1,h2,…,hK]∈ RK×d。 为 了验证 Transformer解码器的可行性,本文先后使用Transformer和GRU作为编码器进行实验。
2.3.2 解码阶段
解码阶段每个Transformer解码器层包含了三个子层:掩蔽多头自注意力(Masked Multi-Head Self-Attention)、多头交叉注意力(Multi-Head Cross-Attention)和逐位前馈网络(FFN)。这些子层都被残差连接和紧随的层归一化(Layer Norm)围绕,加速模型收敛的同时,并防止其过拟合。为简洁起见,本文省略了网络层中的残差连接、层归一化以及网络子层的参数,详细参考Transformer原文[17]。
建立标签相关性:输入文本在经过编码器编码提取特征后,使用标签嵌入Q0∈RT×d作为初始查询,并采用掩蔽多头自注意力机制建立标签之间的相关性来更新查询得到标签嵌入,其中T是输入标签的数量。每一个Trans⁃former解码器层l从其前一层的输出Ql−1更新查询,标签嵌入更新如下:
其中,Concat表示拼接每一个头部的注意力输出,波浪上标~表示为原始向量添加位置编码,为可学习参数,dq=dk=dv=d/h,h为注意力头数。
标签预测:假设Transformer解码器共有L层,将在最后一层得到T个注入了标签信息以及文本信息的标签嵌入Ql∈RT×d。将每个标签嵌入 QL,t∈ Rd通过全连接层(Linear)和 Softmax计算得到q个不同标签的预测概率,q为标签空间大小。标签预测计算所下:
其中 Wt∈Rd×p,bt∈ Rp,是全连接层中的权重参数,引入It是为了避免重复预测前一时刻的预测结果。
2.4 损失函数
本文通过最小化交叉熵损失(Cross-Entro⁃py Loss)函数来训练模型,其定义见式(11):
其中,ynt表示第n个样本中标签t的真实值,表示第n个样本中标签t的预测值,N表示样本空间大小,q表示标签空间大小。
3 实验
3.1 训练过程及实验设置
为了检验序列生成Transformer的性能,本文在公开文本数据集AAPD[11]和 SLASH⁃DOT[17]进行了对比实验。AAPD来源于arxiv网站收集的计算机科学领域的论文,SLASH⁃DOT来源于资讯科技网站中的新闻信息。数据集详细信息如表1所示。
文本序列和标签序列可能具有不同的长度,为了提高计算效率,本文对数据集进行了填充操作,AAPD最大长度设置为400,SLASH⁃DOT最大设置长度为120,如果文本序列长度低于阈值,将在末尾添加“
本文使用的评估指标为:Instance-F1、La⁃bel-F1和汉明损失(Hamming-Loss,HL),定义如下所示:
本文使用的基线对比模型如下:
(1) Binary Relevance(BR)[5]:将多标签分类问题分解为多个独立二分类问题,忽略标签之间的相关性。
(2) Classifier Chains(CC)[9]:将多标签分类问题转化为有序的二分类问题,前一分类器预测结果作为后一分类器输入,该方法能考虑到标签之间的相关性。
(3) Ensemble Classifier Chains(ECC)[9]:利用集成学习随机生成多种标签顺序训练模型。
(4) Seq2Seq--GRU[10]:带有 GRU 编码器和基于注意力机制的GRU解码器的Seq2Seq架构,将多标签分类问题转化为多标签序列生成问题。
(5) set--RNN[17]:基于集合概率的原则提出了新的训练目标和预测目标,使得模型能够自适应地发现最佳标签顺序。
3.2 结果和分析
几种方法的对比结果如表2所示,可以看出,本文的方法在Instance-F1和Label-F1上都明显优于其他方法,HL指标表现仅比ECC差,可能的原因是基于Seq2Seq架构的方法在预测阶段受到先前错误预测结果的影响导致了误差累计。对于传统方法,BR忽略了标签之间的相关性,CC建模标签高阶相关性,因此在In⁃stance-F1和Label-F1上都有着更好的表现。
ECC在CC基础上结合了集成学习方法,在各项指标上优于CC。基于深度学习的方法Seq2Seq-GRU相对于传统方法能建立更复杂的标签相关性,在Instance-F1和Label-F1有着突破性的提升。set-RNN避免了Seq2Seq架构对预定义标签顺序依赖的问题,其各项指标均优于Seq2Seq-GRU。为了验证Transformer解码器在Seq2Seq架构中的可行性,本文测试了编码器为GRU和Transformer两种情况下的结果,在AAPD数据上,与传统效果最优的set-RNN相比,Instance-F1分别提高了1.37%和1.44%,La⁃bel-F1分别提高了1.24%和1.83%,HL指标均降低了0.02%。在SLASHDOT数据集上,In⁃stance-F1分别提高了0.94%和1.09%,Label-F1分别提高了0.73%和3.25%,HL指标分别降低了0.07%和0.08%。两种模型不管在AAPD还是SLASHDOT数据集上都有着更好的表现,尤其在Instance-F1和Label-F1指标上都明显优于其他基线。说明序列生成Transformer在建立标签相关性的同时,还能更全面地考虑文本和标签之间的语义相关性。
3.3 注意力权重的可视化
为了进一步验证序列生成Transformer在预测不同的标签时,能够有选择地捕获不同单词的权重,本文从数据集SLASHDOT中取出一篇文本, 计算每个头部注意力权重的平均值,并在图2中可视化了预测不同标签时对应单词的注意力权重。可以看到,在预测两个不同的标签时,模型对文本中单词的关注度是有差别的,颜色深的单词为模型更加关注的关键词汇,预测标签“IT”时模型更加关注单词 “Help Net,networks”等,而预测标签“Security”则更加关 注“protect computer,intruders security,de⁃fense”等。
除此之外,本文还绘制了解码器使用单头注意力时的权重热力图。如图3所示,可以看到预测标签“IT”时两者没有明显差别,可能是由于文本隐含的标签相关的语义信息有限。然而预测标签“Security”时,从全局来看“neverending battle”以及“are deploying a,defense”等词作为上下文语义信息,能更加突出文本的关键特征。而单头注意力却无法准确捕获这些单词的权重。以上实验表明,多头交叉注意力机制能进一步捕获更为全面的判别信息,提高分类性能的同时有着更好的可解释性。
3.4 注意力头数对解码器的影响
为了探究注意力头数对解码器的影响,本文可视化了每个头部单独的注意力权重以及平均注意力权重。如图4所示,不同的头部能够关注文本中不同内容,对于标签“Software”,可以发现Head_1、Head_3、和Head_4分别或者共同关注“An experiment focusing open source tools,Ubuntu Linux,compete Aperture,find worthwhile open source solution,formidable raw processing tools”等,这些信息更像是对文本整体内容进行关于标签“Software”的精简概括。Head_2关注的信息较少,相反Head_5则关注了许多与标签“Software”无关的冗余信息。因此,设置不同的头数影响着解码器从文本中捕获标签相关的语义信息。通过设置不同的注意力头数进行了对比实验,结果如表3所示,在AAPD上设置为10时表现最好,设置为3和15时较差,在SLASHDOT上设置为5时最好,设置为3和15时较差。以上结果说明,在设置注意力头数时,应该根据文本平均长度进行设置,不宜过小或过大。当头数过小时,难以从文本信息中捕获足够的语义信息;头数设置过大效果则没有明显提升,甚至可能因为冗余信息表现更差。实际上,更多的注意力头所带来的模型参数会加大模型训练的开销,因此选择注意力头数时需要在模型性能和计算开销上进行综合考虑。
3.5 位置编码对Transformer的影响
序列生成Transformer中的注意力机制是执行多标签分类的关键部分,并且词序信息对于模型学习句子间的语义关系有着十分重要的影响。然而,注意力机制由于其并行特性丢失了词序信息,需要使用位置编码(positional encod⁃ing, PE)把词序信号加到词汇上帮助模型学习这些信息。本节实验探究了外置PE以及内嵌PE对模型的影响,结果如表4。可以看到,外置PE(和原始Transformer模型一致)效果一般,将可学习的PE或固定的PE内嵌进Transformer的注意力子层对于分类结果都有着显著的提升,即使编码器不加PE其各项指标(尤其是HL)均有着可靠的效果。可能的原因是输入信息在Transformer子层传递的过程中会丢失一定的词序信息,将位置编码内嵌进每个注意力子层可以帮助模型更好地识别不同词汇间的顺序关系。
3.6 算法时间效能对比
为验证序列生成Transformer在模型训练时的高效性,本节实验评估Transformer与RNN在两种数据集上训练的时间损耗对比。如图5所示,其中Totaltime为算法在不同数据集上训练一次所消耗的总时间。可以看到,基于Trans⁃former解码器的序列生成模型耗时更少。而这得益于Transformer自身的并行特性,使得模型训练的解码阶段能够同时处理多个标签达到节省时间开销的目的。
3.7 消融实验
为了进一步验证Transformer解码器的重要性,本节在两个数据集上进行了相应的消融实验,实验结果如表5所示。其中GRU表示仅使用GRU编码器进行文本特征提取,seq2seq-GRU表示编码器解码器均为GRU,GRUTransformer表示编码器使用GRU,解码器使用Transformer。可以看到,仅使用GRU编码器表现最差,基于Seq2Seq架构的方法在Instance-F1和Label-F1指标均有着更好的表现。说明解码器建模标签相关性对提升模型的分类效果起到了很大的作用。并且Transformer解码器在建模标签相关性的同时,能够更深层次地考虑文本和标签之间的语义相关性,帮助解码阶段聚合更为全面的判别特征,提高分类效果。
4 结论
本文提出基于Transformer的序列生成模型来处理多标签文本分类问题。相对于传统的单头注意力机制,Transformer解码器中的多头交叉注意力子层能进一步捕获更为全面的判别特征。将位置编码内嵌进Transformer多头注意力子层可以帮助模型更好地捕获不同词汇间的顺序信息,这也为Transformer解码器应用于多标签文本分类任务提供了可能。
虽然序列生成Transformer模型在捕获文本语义关系上取得了不错的效果,但没有考虑标签间的层级关系;而且基于Seq2Seq架构的方法在预测阶段容易受到先前错误预测结果的影响导致误差累计;同时在SLASHDOT这类有大量标签的数据集上的分类效果还有着很大的提升空间;下一阶段将针对以上问题进行更深一步的研究。