APP下载

采用多级特征的多标签长文本分类算法

2021-08-06王浩镔

计算机工程与应用 2021年15期
关键词:编码器标签卷积

王浩镔,胡 平

1.西安交通大学 软件学院,西安 710000

2.西安交通大学 管理学院,西安 710000

随着互联网产业的变革和移动社交平台的飞速发展,问答社区凭借着良好的交互特性为知识传播提供了新的渠道和平台。与此同时,人们对知识的专业性、时效性以及获取知识的速度有着更高的要求,这些因素的累计推动了问答社区的飞速发展,问答社区的活跃用户数呈爆发式增长,随之增加的是大量的用户交互数据和文本数据。与普通文本相比,这些网络文本数据大都是未经规范化加工编辑的长文本,包含诸多新词以及网络词语,问答社区文本数据的这些特点无疑增加了研究的难度。根据研究目的对文本数据进行分类是数据挖掘的重要手段,目前的分类算法重要集中在二分类和多分类领域,这种分类算法只允许分配一个标签给文本对象,这类算法也被称为单标签分类。由于问答社区文本数据语义丰富,一个回答文本可能涉及多个标签,因此,未经处理编辑的非标准长文本的多标签分类是一个亟待解决的问题。

1 文本多标签分类算法研究综述

随着大数据时代的到来,多标签文本分类(Multilabel Classification)算法引起了更多学者的关注。Zhang等[1]认为有效利用标签相关信息是多标签分类技术成功的关键。现有标签相关性策略可以大致分为三大类:(1)一阶策略,多标签分类任务采用label-by-label 方式处理,从而忽略了其他标签的共存。(2)二阶策略,通过考虑标签之间的成对关系,来解决多标签分类任务。(3)高阶策略,通过考虑标签之间的高阶关系来解决多标签分类任务。Tsoumakas 等[2]从解决问题的角度出发,将多标签分类算法归纳为两类:一类是问题转化,另一类是算法自适应。问题转化方法是转化问题形式,使之适合现有算法。这类算法的代表算法主要包括一阶方法二值相关性[3](Binary Relevance)和高阶方法分类器链[4](Classifier Chains),将多标签学习任务转换为标签排序问题[5](Calibrated Label Ranking),和高阶方法随机k标签集[6](Random K-Label Sets)。总体来说,这类方法有考虑标签之间的联系,但在数据量大或标签较多的数据集上的表现不尽如人意;算法自适应是指更改算法,从而使其能够处理多标签数据,也就是改进算法,适用数据。这类算法通过采用流行的学习技术直接处理多标签数据来解决多标签学习问题。具体代表性的算法有:一阶方法ML-KNN[7]采用惰性学习技术,一阶方法ML-DT[8]采用采用决策树技术,二阶方法Rank-SVM[9]采用核函数,二阶方法CML[10]采用信息论技术。

近年来,神经网络在自然语言领域取得了巨大的成功,一些神经网络模型也在多标签文本分类任务中得到了应用,并取得了重要进展。Zhang等[11]使用了具有两两排序损失函数的全连通神经网络。Kurata 等[12]提出使用卷积神经网络(Convolutional Neural Network,CNN)进行分类。Chen等[13]利用CNN和递归神经网络(RNN)捕捉文本的语义信息。Chen 等[14]提出了注意力机制和递归神经网络(RNN)联合学习模型用于多标签分类。Qin等[15]提出了一种自适应的RNN序列模型。然而,在预测标签时,他们要么忽略了标签之间的相关性,要么没有考虑文本内容贡献的差异。这一领域的一个里程碑是序列到序列(Seq2Seq)模型在多标签文本分类中的应用,Nam 等[16]利用循环神经网络来代替分类器链。Yang 等[17]将多标签分类问题转换为序列生成问题并提出新型解码器结构。Lin等[18]通过多层扩展卷积产生更高层次的语义单位表示并结合注意力机制来进行多标签分类。

2 基于多级特征的多标签长文本分类算法

2.1 模型提出

通过进一步探究神经网络的更多应用,本文发现Seq2Seq 模型[19-21],全称Sequence to Sequence,可以将一个源序列转化成一个不定长度的目标序列,源序列和目标序列往往没有相同的长度。因此,本文考虑使Seq2Seq模型来生成目标序列,也就是文本的多标签,以此来解决多标签分类问题。

本文受Seq2Seq 模型在机器翻译领域取得巨大成功的启发,提出一种基于Seq2Seq模型框架的新型编解码器结构的多标签分类算法,本文把它称为基于多级特征和混合注意力机制的多标签分类算法模型,所提出的模型由一个编码器和一个解码器组成,编码器将输入序列编码成固定维度的向量,然后解码器从固定维度的向量中解码出相应的输出向量。由于在文本分类领域中Seq2Seq模型的应用很少,所以本文主要参考机器翻译领域对Seq2Seq模型的改进策略,来提高模型的准确率。

本文基于Encoder-Decoder 结构来解决序列到序列的问题,在Encoder结构中,本文分别从词语层面和语义层面两个维度来提取信息。针对语义层面的特征,本文首先采用两层Bi-LSTM 结构来对输入的文本进行编码,可以更好地捕捉双向的语义依赖,并且参照谷歌神经翻译系统[22](GNMT)的网络架构,以堆栈的方式,后接两层LSTM 结构,以捕获输入和输出之间的细微差别。针对词语层面的特征,本文采用空洞卷积[23]结构来进行特征的提取,采用三层空洞卷积,通过增加感受野的大小来捕获多尺度上下文信息。由于Seq2Seq 的核心是其解码部分,大部分改进基于此,所以在Decoder结构中,采用两层Stack LSTM[24],通过LSTM结构处理标签序列依赖关系来考虑标签之间的相关性,本文对于基础解码方法Greedy Search(贪心搜索)进行了改进,采用了Beam Search(束集搜索)方法,此外,引入Attention机制使得解码时,每一句都有针对性地关注当前有关的编码结果,从而减少了编码器输出表示的学习难度,由于有来自两个方向的语义向量,因此,本文引入混合注意力机制来处理两个层次的信息。

2.2 模型实现

基于多级特征和混合注意力机制的多标签分类算法包含四个部分:第一部分主要是编码器(Encoder)层,第二部分主要是解码器(Decoder)层,第三部分是Attention 模块,第四部分是序列选择模块,以下针对各部分进行详细介绍。改进后的基于多级特征和混合注意力机制的多标签分类算法的具体步骤如下所示:

2.2.1 编码器(Encoder)层

本文首先按照单词出现次数的降序,将序列中前50 000 个单词采用one-hot 编码表示,每个单词都有其对应的one-hot 编码,由于one-hot 编码向量的稀疏性和高维度,需要通过嵌入矩阵把这个单词表示成一个低维度的连续值,也就是稠密的嵌入向量xi,因此,xi就是这个单词的向量表示。本文使用Bi-LSTM 从正、反两个方向读取文本序列x,同时计算正、反两个方向上的隐藏状态h1和h2,将两个方向上的隐藏状态合并可以得到最终隐藏状态-hi。Bi-LSTM从正、反两个方向上读取输入文本的向量序列,在训练结束后,级联两个输出序列的特征向量,从而优化了LSTM的信息抽取能力。

由于RNN 模型及其变型在前向传播的过程中,随着处理文本长度的增加,会出现梯度消失问题。因此,本文采用了堆叠式LSTM,也称用于序列分类的栈式LSTM,本文发现深层LSTM 的各项指标明显优于浅层LSTM,通过添加网络的深度,提高训练的效率,获得更高的准确性。本文将两个LSTM堆叠在一起,使得模型能够学习更高层次的特征表示。堆叠LSTM 是挑战序列预测问题的稳定技术,可以定义为由多个LSTM层组成的LSTM模型,上面的LSTM层提供序列输出而不是单个值输出到下面的LSTM 层。本文将两个LSTM 堆叠到一起,使得模型能够学习更高层次的特征表示。第一层LSTM 返回其所有输出序列,同时也作为第二层LSTM的输入序列,而第二层LSTM只返回输出序列的最后一步结果,从而使其维度降低。

通过Bi-LSTM和堆叠式LSTM结合的方式,本文从源文本中提取到了语义层面的信息,通过分析发现,语义层面的信息不能充分代表文本的特征,为了更全面地获取文本的特征,需要引入其他的特征提取方法,从不同维度对源文本进行特征的联合抽取。由于卷积神经网络(CNN)在静态特征抽取方面的不俗表现,本文将其引入到模型的Encoder中,在卷积策略上,本文采用空洞卷积(Dilated Convolution)。空洞卷积可以在不增加参数的前提下,仅仅通过添加空洞,就能以指数级的速度来扩大卷积核的感受野,从而无需下采样。因此,空洞卷积更有可能捕获长期依赖。此外,本文采用不同扩张率(Dilation Rate)的空洞卷积,因为相同的扩张率或具有相同公因数的扩张率会导致网格化效应(Gridding Effects),这种错误会损失信息的连续性,为了避免网格化效应,扩张率只能有一个公因数。在本文的模型中,采用了三层空洞卷积且三层的扩张率不同,其中卷积核大小为3×3,扩张率为1、2、3(扩张率只有一个公因数),步长为1,这种参数设置可以有效避免网格化效应,并且在不损失覆盖范围的前提下允许访问更长距离的信息。由于本文要在源文本中捕获词语层面的特征,而不是更高层次的单词表示,所以在卷积操作中不需要使用填充(Padding)。采用三层空洞卷积,既可以通过小扩张率捕获单词之间的短语级信息(局部相关关系),又可以通过大扩张率捕获句子级信息(长期依赖关系)。

编码器处理序列输入并压缩信息到一个固定长度的上下文向量(Context Vector)中,而上下文向量被当作是输入序列的语义概要。随着句子的长度逐渐变长,上下文向量c的表达能力会逐渐下降,因为它没法完全保留输入序列的大部分信息。因此,本文引入注意力机制。

2.2.2 Attention模块

固定长度上下文向量具有一个致命的缺点,即无法记忆长句子,一旦完成编码器输入序列的处理,就会遗忘开始的部分。此外,当模型预测不同的标签时,并不是文本中的所有字(单词)都对于标签有相同的贡献。因此,本文引入注意力机制。

通过实验对比和分析几种主流的注意力机制,本文发现Luong[20]提出局部注意力模型和全局注意力模型能够很好地应用到本文网络架构中。局部注意力模型首先预测当前目标单词的大致对齐位置,然后引入窗口概念,在窗口中心位置应用窗口计算上下文向量,即每次计算上下文向量时不再考虑Decoder 的全部隐藏状态,只考虑输入序列隐藏状态中的一个子集。而全局注意力模型每次均考虑先前Decoder所有的隐藏状态。经过实验对比并综合考虑之后,为了更好地保留所有隐藏层状态,本文决定采用全局注意力机制,虽然会增加计算成本,但是对比性能有明显的提升。此外,注意力机制绕开了长距离编码器的编码,直接向解码器提供了上下文信息,缩短了信息的传递距离,在解码的每一步都可以直接访问源文本的信息,从而减轻了在Encoder-Decoder框架下由于一个时间步上过深的计算图而导致梯度消失。

全局注意力模型在计算上下文向量ct时,会考虑Encoder 的所有隐藏状态,则每个时间步所对应的权重向量at的计算公式如公式(1)所示:

其中,ht表示Decoder 第t个时间步的隐藏状态,-hi表示Encoder第i个时间步的隐藏状态。采用Concat模式来进行权重计算,如公式(2)所示:

上式中的Wa为参数权重。在计算完权重向量at后,将其对Encoder 的隐藏状态进行加权平均得到此刻的上下文向量ct,如公式(3)所示:

在t时刻,全局注意力模型的计算路径是ht→at→ct,模型最终输出t时刻的上下文向量ct。

由于要处理语义层面(LSTM编码器)的特征向量,和词语层面(CNN编码器)的特征向量,因此,本文采用混合注意力机制。首先,通过CNN 编码器和注意力机制生成词语层面新的表示outputc;其次,将outputc和LSTM 编码器生成的特征向量一起作为全局注意力的源输入,并得到语义层面新的表示outputt,以便通过词语层面的指导从源文本中提取语义层面的信息。最后,采用加和策略将二者进行融合,如公式(4)所示:

2.2.3 解码器(Decoder)层

注意力机制允许解码器在每一个时间步t处考虑整个编码器输出的隐藏状态序列h1,h2,…,ht,从而将编码器更多的信息分散地保存在所有隐藏状态向量中,而解码器在使用这些隐藏向量时,就能决定对哪些向量更关心。在前两个模块中,编码器结合注意力机制将整个输入序列的信息编码成了上下文向量ct,而解码器则需要根据上下文向量输出序列y1,y2,…,yt。解码器在每个时间步上的输出,不仅需要处理RNN 编码器的语义表示,也要处理CNN编码器的词语表示。Decoder在第t时刻的隐藏状态ht计算如式(5)所示:

其中,ht-1表示t-1 时刻的隐藏状态,ct表示t时刻的上下文向量,b(yt-1)表示在yt-1的分布下采用束集搜索(Beam Search)搜索概率最高的k个标签嵌入,yt-1表示标签空间在t-1 个时间步下的概率分布,本文自定义输出层来计算输出序列的概率分布,如式(6)、式(7)所示:

其中,Wb、Wc、Wd表示参数权重,引入Ht表示前t-1个时间步的标签预测情况,以此来避免标签的重复预测。

2.2.4 序列选择模块

当完成前面的工作后,需要使用模型生成新的序列,也就是本文所需要的标签集。在解码器阶段,嵌入向量b(yt-1)在式(5)中表示的是在yt-1的分布下概率最高的标签嵌入,利用GreedySearch(贪心搜索)来最大价值利用yt-1分布,即每一次解码都选取概率最大的那个值,该方法虽然奏效,但由于检索空间太小,无法保证最优解,显然不是最优的。因为如果在时间步t上的预测是错误的,在后续的预测过程中,可能会得到一系列错误的预测标签,也称为Exposure Bias。Exposure Bias的不断累积会造成解码误差累积问题,其根源在于序列解码的实现过程。

Beam Search(束集搜索)在一定程度上缓解了这一问题,本文采用了束集搜索解码方式,例如指定Beam Size 为5,则该方法的本质是在解码的各个阶段保留5个候选句子,最后再选择概率最大的序列。针对不同的数据集,本文选取合适的Beam Size。通过考虑多个标签的概率,该模型能减少由于先前时间步的错误预测而造成的损失并且增加输出的准确率。

3 实验结果与分析

3.1 实验数据介绍

(1)知乎回答文本(Zhihu)

该数据集是自行收集并制作的,本文从知乎问答社区收集了英语学习话题下的60 383 条回答,覆盖13 个类别,是一个中文多标签数据集。

(2)Reuters Corpus Volume I(RCV1-V2)

该数据集由Lewis等[25]提供,是一个公开数据集,包括80多万篇由路透社有限公司为文本多标签分类提供的新闻专题故事,每个新闻专题故事都可以分配多个主题,总共有103个主题。

(3)Arxiv Academic Paper Dataset(AAPD)

该数据集由Yang 等[17]提供,是一个公开数据集,它包括55 840篇计算机科学领域的论文摘要,每篇摘要可以分配多个学科,总共有54个学科。

本文将每个数据集按照训练集∶测试集∶验证集=8∶1∶1的比例分配,统计结果如表1所示。

表1 数据集统计Table 1 Dataset statistics

3.2 实验评估指标

本文采用汉明损失(−)、准确率(+)、召回率(+)和F1 值(+)来评估算法的有效性。需要注意的是,(−)表示越小越好,(+)表示越大越好。

3.3 损失函数曲线图

基于多级特征的多标签长文本分类算法模型在Zhihu 数据集训练中得到的损失函数图如图1 所示,其中,纵坐标表示损失函数的函数值,横坐标表示模型的迭代次数。

图1 基于Zhihu数据集的损失函数图Fig.1 Loss function graph based on Zhihu dataset

从图1中可以看出,在刚开始训练的时候,损失函数呈现大幅度下降,表明模型在朝着正确收敛的方向进行。随着迭代步数的增加,损失函数的下降速度变慢,模型开始呈现出收敛的态势。在模型收敛的过程中,损失函数会出现波动,这是因为本文在计算交叉熵损失函数(CrossEntropyLoss)的过程中采用了自适应矩估计(Adam)优化器,引入了自适应学习率,从而使损失函数出现波动。随着时间推移,可以看到损失函数波动变小且趋于平稳,并且损失函数值趋于0.003,最终模型收敛。

3.4 实验结果对比与分析

表2 给出了在Zhihu 数据集上,本文提出的模型与FastText、TextCNN、HAN、SGM和SGM+GE等相关算法比较的结果,可以看出在基于Zhihu中文长文本数据集下,本文所提出的模型在四个评估维度上都有优异的表现。

表2 Zhihu实验结果对比Table 2 Comparison of Zhihu experiment results

表3给出了在公开数据集RCV1-V2上,本文提出的模型与基于该数据集的相关算法的比较结果,可以看出在基于标注的公开数据集上,本文提出的模型在汉明损失、召回率和F1值这三个方面有着更优异的表现。

表3 RCV1-V2实验结果对比Table 3 Comparison of RCV1-V2 experiment results

表4给出了在公开数据集AAPD上,本文提出的模型与基于该数据集的相关算法的比较结果,可以看出在基于标注的公开数据集上,本文提出的模型在汉明损失和F1值这两个方面有着更优异的表现。

表4 AAPD实验结果对比Table 4 Comparison of AAPD experiment results

从表2~4中可以看出,算法在三个数据集四个评价指标下的结果有很大差异。首先,不同的对比算法在同一个数据集下的结果比较相近,没有出现较大差异。其次,同一个算法在不同数据集下的结果也出现了这种差异。综上所述,算法结果的差异在于数据集自身,而数据集的差异主要体现在以下三点:(1)中/英数据集;(2)标签综述与文本总数的差异;(3)文本平均字数的差异。

3.5 消融实验

本文在编码器层、Attention 模块、解码器层和序列选择模块分别进行了改进,为了验证模块改进的有效性,在Zhihu数据集下进行了消融实验,实验结果如表5所示。

表5 消融实验结果对比Table 5 Comparison of ablation experiment results

其中,NoDC 表示编码器层没有采用空洞卷积,仅使用LSTM 编码器获取语义层面特征的模型,Additive表示在Attention 模块仅仅将两个层面的特征向量进行加和的模型,GreedySearch表示在序列选择模块采用贪心搜索方法的模型。

4 结束语

本文从深度学习网络模型出发,提出基于多级特征和混合注意力机制的多标签分类算法,并且从编码器(Encoder)层、Attention 模块、解码器(Decoder)层、序列选择模块四部分对原始的基于Seq2Seq 模型框架的编解码结构模型进行改进。为了验证本文所提出算法的优劣,除了自己收集的知乎数据集(Zhihu)外,还增加了RCV1-V2、AAPD 两个公开数据集,经过三个数据集的算法验证,本文所提出的算法在F1、召回率和汉明损失这三个评价指标上均领先于其他同类算法。

猜你喜欢

编码器标签卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
无惧标签 Alfa Romeo Giulia 200HP
基于FPGA的同步机轴角编码器
不害怕撕掉标签的人,都活出了真正的漂亮
基于傅里叶域卷积表示的目标跟踪算法
基于双增量码道的绝对式编码器设计
标签化伤害了谁
JESD204B接口协议中的8B10B编码器设计
科学家的标签