APP下载

基于XLNet+BiGRU+Att (Label)的文本分类模型*

2023-01-12刘柏霆管卫利李陶深

广西科学院学报 2022年4期
关键词:注意力标签向量

刘柏霆,管卫利,2**,李陶深,2

(1.广西大学计算机与电子信息学院,广西南宁 530004;2.南宁学院数字经济学院,广西南宁 530299)

文本分类[1]是自然语言处理中的一项基本任务,被广泛应用在垃圾邮件识别、情感分析、文档主题分类等场景,提高其分类准确率是人们研究的重点。在文本分类任务中,词向量是深度学习模型中词语的基本表达形式,词向量语义的精确度直接影响文本最终的分类准确率。此外,注意力机制是深度学习模型中常用的特征选择工具,注意力打分的质量会决定模型的侧重点,从而影响分类的准确率。因此,本文拟从词向量与注意力机制出发,改进文本分类模型中的词嵌入模型与注意力机制,使模型的分类准确率提高,对于提高文本检测与分类任务的性能具有一定的现实意义。

对于现有的词嵌入模型,其生成的词向量分为静态与动态两种形式,静态的词向量训练模型有Word2Vec (Word to Vector)[2]、GloVe (Global Vectors)[3]等。如方炯焜等[4]提出GloVe-GRU的模型结构,用GloVe作为词嵌入模型,生成GloVe的全局静态词向量并降低向量空间维度,这种词嵌入方式产生的静态词向量并不能处理一词多义的问题。动态的词向量嵌入模型是指模型生成的词向量是动态变化的,如果上下文改变,那么词向量也会跟着改变,同一个单词在语境中具有不同的词向量表达。常用的动态词向量嵌入模型有ELMo(Embedding from Language Model)[5]、BERT[6]等。赵亚欧等[7]把ELMo与Transformer结合起来,将ELMo作为词嵌入模型,输出词向量到Transformer[8]模型中做文本分类,但是ELMo内部采用长短期记忆网络(Long Short-Term Memory,LSTM)[9]结构来提取特征信息,LSTM结构在提取特征的能力上较弱,相比于具有注意力机制的Transformer结构存在差距。除此之外,ELMo模型内部只是将特征双向地拼接在一起,这种拼接方式未能很好地融合文本的语义信息。后来人们开始用BERT[10]作为词向量预训练模型,如黄泽民等[11]用BERT作为词向量嵌入模型,将静态词向量输入到BERT中,利用BERT进一步优化静态词向量,赋予其动态词向量的特征,但是BERT也存在一些缺陷,如BERT在其训练阶段会随机遮掩掉一些词,而在下游任务的微调中却看不到这些被遮掩的词,导致两阶段差异,致使BERT的性能有一定程度的下降。XLNet[12]针对BERT现有的问题进行了改进,采用XLNet能够生成动态的词向量,同时也能生成比BERT更精准的词向量,因此本文采用XLNet作为词嵌入模型。

注意力机制[13]是文本分类任务常用的方法,其能够有效地根据文本信息的重要程度为文本分配权重。现有的文本分类模型所使用的注意力机制没能利用好标签词所蕴含的语义信息,如杨兴锐等[14]在BiLSTM-CNN混合模型的基础上加入残差连接与注意力机制,对卷积输出的向量计算注意力得分。叶瀚等[15]融合注意力机制与句向量,将首句子向量作为查询向量Query,将其余各句子向量作为待查向量Key。对BERT模型输出的CLS向量进行注意力点乘计算,通过注意力分数得出的权重系数对各CLS向量序列求和再平均来达到压缩编码的目的。梁顺攀等[16]提出一种基于混合神经网络的文本分类方法,对传统的卷积神经网络进行改进,增强对文本局部特征的提取能力,采用普通的自注意力机制对最终的文本向量分配权重。以上模型在做注意力计算时,均未利用标签词提取特征。若能很好地利用标签词,在注意力权重分配上就会更有目的性。如在新闻文本分类任务中,以“军事”为标签词样本,文本里就会出现“坦克”“军演”等词语;在情感分类任务中,以“积极”为标签词样本,文本中就会出现“开心”“高兴”等词语。利用标签词对比文本中的内容,找出文本中与标签词语义相近的部分并给其分配较高的权重,在分类层中使模型更关注这些重点部分,最后就能够得到更准确的分类预测。

通过以上对现有文本分类模型的分析,本文提出一种基于XLNet+BiGRU+Att (Label)的文本分类模型。首先,用XLNet代替BERT、GloVe、Word2Vec等模型作为预训练模型;然后,将标签词与注意力机制相结合,充分利用标签词的语义信息匹配出文本向量中的重点部分,以提高模型的分类性能。

1 方法描述

1.1 XLNet+BiGRU+Att (Label)模型

XLNet+BiGRU+Att (Label)模型可大致分为文本预处理层、XLNet层、双向门控循环单元(BiGRU)层、注意力(Attention)层、全连接层(Linear)+Softmax层。XLNet+BiGRU+Att (Label)模型结构如图1所示。模型的总体设计思想是采用XLNet生成文本序列与标签词序列的动态词向量表达;用BiGRU进一步提取出文本向量的全局特征;根据全局特征选出当前文本的倾向标签词;在注意力机制的基础上,根据倾向标签词针对性地对文本的全局特征向量进行重点划分。

图1 XLNet+BiGRU+Att (Label)模型结构Fig.1 Structrue of XLNet+BiGRU+Att (Label) model

模型处理的步骤大致如下。

步骤1:进行数据预处理操作,将每个训练样本裁剪或填充为统一长度,对文本数据进行噪声去除并调用Tokenizer工具分词,经过处理后的文本连同标签词输入到XLNet模型中。

步骤2:XLNet处理输入的文本和标签词序列,生成动态词向量的文本与标签词序列,输入的文本长度为512,输出的向量维度为768。将文本向量输入BiGRU中。

步骤3:BiGRU将根据文本的上下文提取语义特征,将BiGRU最后时刻的隐藏层堆叠作为当前文本的总结向量H,即考虑了文本里每个单词语义的总结向量。将BiGRU的最后一层输出拆分为前向输出与反向输出,并将其相加作为文本的内容向量V。

步骤4:将总结向量H输入到Linear+Softmax中,预测出当前文本的倾向标签词。将倾向标签词与内容向量V输入Attention层,计算出内容向量对应倾向标签词的注意力权重,根据注意力权重更新文本的内容向量。

步骤5:根据更新后的内容向量C得出文本的预测结果。

1.2 词嵌入层(XLNet)

1.2.1 排列语言模型

自回归语言(Autoregressive Language,AR)[17]模型只能实现单向的预测,典型的代表就是生成式预训练模型(Generative Pre-Train Model,GPT)。自编码语言(Autoencoder Language,AE)模型虽然实现了对文本的双向预测,但是其引入的MASK机制导致模型在预训练与微调阶段存在不一致的问题。针对以上两个问题,Yang等[12]在XLNet中引进了两个新的概念:排列语言模型(Permutation Language Model,PLM)与双流自注意力机制(Two-Stream Self-Attention)。

PLM的编码思想是把自回归语言模型和自编码语言模型结合起来,在中间加入一个称之为“排列(Permutation)”的步骤,该步骤使模型能够对文本进行双向预测,具体实现方法是把文本序列打乱,然后将末尾若干个词给遮掩掉。Yang等[12]通过对比实验发现掩盖掉的词数接近文本的15%时效果最好,这恰恰对应了BERT的15%掩盖率。在计算时,将词按照打乱后的排列顺序,采用自回归的方式逐个预测。如图2所示,假设原序列初始为[1,2,3,4],将该序列打乱后的排序方式为[2,4,3,1]与[4,3,1,2]。图2(a)中,如果预测3,则根据排列顺序在3前面的2和4来预测,预测3的概率为p(3)=p(2)×p(2|4)×p(3|4,2)。同理预测图2(b)中3的概率为p(3)=p(3|4)。由此可见,简单的打乱排序方式使得同一序列从同样的方向预测却同时考虑到了前文与后文,这样的处理方式保留了序列的上下文信息,也避免了采用[MASK]标记位,解决了以往模型只能单向预测的问题。PLM的打乱方式不是真正的将文本序列的排序打乱,而是生成一个掩码矩阵,如图3[12]中Attention Masks所示,在Transformer中的Attention计算时把不需要的信息掩盖掉,相当于在预测时有意地让一些词发挥作用或不发挥作用,来达到打乱顺序的目的。

图2 不同排列顺序的预测过程Fig.2 Prediction process of different order

图3 双流自注意力机制实现图[12]Fig.3 Implementation diagram of two-stream self attention[12]

对于长度为T的输入序列,其排列方式总共有T!种。如输入长度为5的序列,那么就会有5!共120种排列方式,当序列过长时,就会导致模型的计算过于复杂。因此Yang等[12]通过式(1)对序列的各排列方式进行挑选。

(1)

其中,ZT为输入序列的所有排列方式;T为输入序列的长度;z为ZT中的排列方式之一;zt为在t位置上z对应的值;Ez~ZT为对所有排列方式求期望;

pθ(xzt|XZ

基于式(1)对序列的所有排列方式求期望,根据期望值来选取模型中最优的排列序列、去除不合适的排列序列,以降低模型的计算复杂度。

1.2.2 双流自注意力机制

PLM的计算过程存在一个问题,即由于输入词的顺序被打乱,模型无法知道所预测词对应原始序列的位置。传统的注意力机制把位置信息编码在Token里,如果用传统的注意力机制计算PLM,则模型就无法看到被遮掩的词的位置信息。基于此,Yang等[12]提出一种双流自注意力机制,将位置信息gθ加入AR模型的目标函数中,如式(2)所示。

pθ(Xzt=

(2)

其中,x表示当前要预测的词,X表示预测词序列;e(x)T是当前输入的词向量的转置;gθ(xz

“双流”即Query stream和Content stream。Query stream可以看到当前词的位置信息,不能看到其内容信息,而Content stream既可以看到当前词的内容信息也可以看到其位置信息。“双流”的更新公式如(3)和(4)所示。

(3)

(4)

其中,g为查询隐状态;h为内容隐状态;m为XLNet的层数;Q为查询向量Query;K为待查向量Key;V为内容向量Value。Q、K、V通过Linear得到其对应的矩阵。完整的双流自注意力机制实现原理如图3所示。输入序列是(x1,x2,x3,x4),采样顺序是3→2→4→1。图3右边Attention masks为掩码矩阵,在注意力计算中有意让某些值“看不见”,以此来实现MASK的目的。如图3所示,模型从下往上计算,h初始化为e(xi),g初始化为w,然后根据掩码矩阵进行Content stream计算,预测x1时可以看到全部词的信息,预测x2时只能看到x2、x3的信息,依此类推。

1.3 双向门控循环单元(BiGRU)

图4 BiGRU模型网络结构Fig.4 Network structure of BiGRU model

zt=σ(Wz·[ht-1,xt]),

(5)

rt=σ(Wr·[ht-1,xt]),

(6)

其中,Wz和Wr为可学习矩阵,xt为t时刻的输入。

(7)

其中,tanh为激活函数,W为权重矩阵。由重置门决定ht-1中有多少信息能留下,再结合当前输入x计算出本时间步的待定集合。当前时间步的状态信息计算公式如下:

(8)

由于网络采用的是双向的GRU,XLNet模型的输出会从两个方向输入到BiGRU中,所以BiGRU会有两个方向相反的输出ht。将BiGRU正向的最后时刻输出与反向的最初时刻输出拼接起来,作为当前文本的总结向量H,利用该总结向量即可计算出当前文本的倾向标签词。向量拼接的公式如下:

(9)

将当前文本的BiGRU输出值拆分为前向输出和反向输出,再将二者相加作为文本的内容向量V,输入注意力层。

1.4 结合标签词的注意力机制

结合标签词的注意力机制的目标是将标签词与注意力机制结合,选出文本的倾向标签词,计算倾向标签词与文本向量的注意力得分,根据注意力得分更新文本向量。具体的处理过程如下。

步骤1根据BiGRU的总结向量H挑选出当前文本的倾向标签词,挑选的公式为

label_index=argmax(softmax(Linear(H))),

(10)

label=lables[label_index],

(11)

其中,Linear为全连接层,argmax函数的作用是返回当前集合的最大值下标,softmax为归一化函数。将文本的总结向量输入到Linear,得到当前文本对应各标签词的分数;再将该分数集输入到softmax函数中,得到各标签词的概率,通过argmax函数返回最大概率的标签词下标。式(11)中的labels为标签词序列,序列长度为标签词个数,如果是五分类任务,那么标签词个数就为5。将式(10)得出的标签词下标索引出其标签词向量,将该标签词向量作为当前文本的倾向标签词。

本文采用基于Scaled dot-product attention[8]的注意力机制,注意力a计算公式为

(12)

其中,Q为查询向量,K为待查向量,d为归一化参数。

步骤2将当前文本的倾向标签词作为查询向量Q,将BiGRU层的输出向量作为待查向量K。将输入的文本与倾向标签词进行点乘运算,计算出文本向量对应标签词语义的分值集合,将该分值集合通过softmax函数归一化得到文本向量内容的注意力得分,根据注意力得分更新文本的内容向量,更新的公式如下:

C=A⊗V,

(13)

其中,A为batch_size的注意力得分矩阵,V为batch_size的内容向量,⊗为矩阵相乘符号,C为经过注意力权重更新后的内容向量。将C输入至网络的下一层进一步分类输出。结合标签词的注意力机制如图5所示。

图5 结合标签词的注意力机制Fig.5 Attention mechanism of combined label words

2 实验与分析

2.1 实验环境

本实验在PC设备上进行,系统为Windows 10,GPU为RTX 2060 6 G,CPU为2.90 GHz,内存为16 GB,硬盘为500 GB固态硬盘。实验开发平台为Pycharm,所用框架为Pytorch。

2.2 数据集

在英文数据集bbc以及IMdb数据集上进行实验。bbc数据集总共有2 225条新闻样本,共分为5个类别,标签分别为“Business”“Technology”“Politics”“Entertainment”“Sport”,每个类别各有445条样本,在每个类别中挑选245条样本作为训练集,200条样本作为测试集,设置每条样本长度为510。IMdb为二分类的影评数据集,标签为“Positive”和“Negative”。从IMdb数据集中随机选取5 000条样本作为训练集,选出1 000条样本作为测试集,其中正、负标签的样本个数相等,设置每条样本长度为510。

2.3 参数设置

本文模型为XLNet+BiGRU+Att (Label),设置对比实验模型为Glove+BiGRU+Att、BERT+BiGRU+Att、XLNet+BiGRU+Att,其中BERT与XLNet均来自Huggingface。各模型在bbc数据集和IMdb数据集中的参数设置见表1。

表1 模型参数设置Table 1 Model parameter settings

2.4 结果与分析

采用准确率作为评价指标,对比实验的结果见表2。由表2可知,与XLNet+BiGRU+Att模型相比,本文模型在bbc数据集和IMdb数据集上的准确率分别提高0.7%和2.64%,说明结合标签词的注意力机制,能够根据标签词更有目的性地挑选出文本向量中的重要部分,给予重要文本内容较高的注意力得分。在bbc数据集和IMdb数据集上,本文模型的准确率比BERT+BiGRU+Att模型分别提高1.04%与4.02%,XLNet+BiGRU+Att的准确率比BERT+BiGRU+Att分别提高0.34%与1.38%,说明XLNet作为词嵌入模型在性能上优于BERT。这是由于XLNet中的编码方式能有效缓解BERT模型存在的缺陷,不仅实现了对文本的双向预测,还解决了模型在预训练与下游任务之间的差异性,因此能产生比BERT更精确的词向量。各模型的准确率均比GloVe+BiGRU+Att高,说明在文本分类任务中,动态词向量比静态词向量拥有更精确的语义表达。根据语境的不同生成不同的词向量表达,将XLNet作为预训练语言模型更适合文本分类任务。

表2 各模型在bbc与IMdb数据集上的准确率(%)Table 2 Accuracy of each model on bbc and IMdb dataset (%)

3 结论

本文提出了一种基于XLNet+BiGRU+Att(Label)的文本分类模型。研究结果表明,使用XLNet作为词嵌入模型能够解决静态词向量存在的问题,XLNet利用PLM实现对词序列的双向预测,在注意力计算时引入双流机制实现位置编码的嵌入,克服了以往模型只能单向预测的缺点,因此生成的词向量也就更精确。将标签词与注意力机制结合起来,能够更精确地给文本向量分配权重,突出重点部分,从而提高模型分类的性能。本文的局限在于标签词融于注意力机制,对某些分类任务不适用,如医学疼痛等级分类、在线评论情感分级,在这些分类任务中标签词与文本语义没有关联,发挥不出本文模型的优势。下一步工作将继续研究在语义层面如何利用标签词进一步提升模型的分类性能。

猜你喜欢

注意力标签向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
标签化伤害了谁
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线