基于关键n-grams 和门控循环神经网络的文本分类模型

2021-03-01 09:28刘宗田
关键词:池化层向量神经网络

赵 倩,吴 悦,刘宗田

(上海大学计算机工程与科学学院,上海 200444)

传统的文本分类方法将文本表示为词袋模型(bag of words)或基于n-grams的词袋模型(bag of n-grams)[1-2].词袋模型只能捕获文本的局部语义特征,无法获取句子的组合语义信息,而基于n-grams的词袋模型虽然可以捕获词语顺序关系,表达复杂的语义信息,但参数的指数增长使得模型面临计算复杂度过高、特征爆炸等问题.

近年来,研究者采用以词向量为输入的神经网络作为文本处理模型[3-4].循环神经网络(recurrent neural networks,RNN)是一种对序列输入有强大表征能力的模型,但由于梯度消失和梯度爆炸问题[5],无法处理长序列.RNN 的变体门控循环单元(gated recurrent unit,GRU)则可以通过引入门控单元和隐藏状态来避免这些问题[6].另外一种常用的文本分类模型是卷积神经网络(convolutional neural networks,CNN).CNN 首先应用于图像处理,利用一组滤波器提取图像局部特征.当用于文本时,滤波器则用于获取n-grams 的特征.目前,已有研究将CNN 与RNN 的混合模型应用于文本分类.Abreu 等[7]就提出一种基于CNN 和GRU 的文档分类模型,通过注意力机制有效利用文本的单词和句子的上下文语义信息来提高分类性能.Hsu 等[8]则提出一种结构化无关的门控表示对齐(gated representation alignment,GRA)模型,该模型利用对齐机制将CNN 所捕获的短语(n-grams)信息添加到一组GRU 模型中,取得了较好的句子分类效果;通过在GRU 模型中添加不同的方法(注意力机制和对齐机制)来关注重要的n-grams 信息,而本工作提出的模型则着重于优化卷积神经网络模型,降低模型复杂度.

本工作提出了使用更简单高效的池化层替换卷积层来提取有助于分类的n-grams 特征,并结合双向GRU 模型来提高文本分类性能.首先,使用平均池化层获取n-grams 的分布式表示,然后利用全局最大池化层提取有利于分类的关键n-grams,最后将基于循环神经网络的模型与基于n-grams 的文本表示进行有效结合,从而既弥补了n-grams 模型的全局信息建模能力不足,又使循环神经网络能够得到局部信息的有益补充,建立了适用于变长文本和不同分类问题的模型,提高了最终模型的语义表达能力和文本分类能力.

1 门控循环单元

GRU 是RNN 的一个简单高效的变体.在GRU 中,隐藏状态保存模型的历史信息.在每个时间步中,GRU 是根据当前输入xt和上一个节点传递下来的隐藏状态ht−1,更新当前隐藏节点的输出yt和传递给下一个节点的隐藏状态ht.设输入文本为〈w1,w2,···,wn〉,其中wi是第i 个词向量,n 表示文本长度.矩阵E ∈Rd×|V|存储所有词向量,其中d 为每个词向量的维度,|V|为词汇量大小.假设当前输入单词为xt,则GRU 当前隐藏状态ht计算公式为

式中:σ 为sigmoid 函数;ht−1为最后一步的隐藏状态.处理完所有单词后,最终的隐藏状态hn可以看作是文本的表示.

实验结果表明,当使用单向GRU 网络时,最终状态将更依赖于输入文本中位置偏后的单词.因而,本模型采用双向GRU(见图1).在此设置中,一个GRU 网络以〈w1,w2,···,wn〉为输入,另一个GRU 网络以〈wn,wn−1,···,w1〉为输入,然后将这两个网络的最后一步输出连接起来.设h1和h2为两个网络的最终状态,则文本表示形式为

图1 双向GRUFig.1 Bidirectional GRU

式中:⊕为串联操作.

2 关键n-grams

对于文本分类任务,CNN 通常使用卷积层来提取n-grams 特征,而本工作直接在词向量上使用池化层,这使得模型可以简单高效地获取大多数关键单词和n-grams.

由于单词携带的语义信息较少,不足以提供分类所需的判别信息,因此通常用n-grams 来表示文本.本工作使用多个池化层提取n-grams 特征,具体思路如下:首先以词向量的方式进行文本表示,通过查表操作查询给定词语的词向量;然后利用平均池化层计算文本中每个n-grams 的特征表示;最后使用全局最大池化层来提取重要的n-grams.

设输入文本的n-grams 表示为〈v1,v2,···,vm〉,利用全局最大池化得到每个维度的最大值,最终得到一个与词向量具有相同维度的向量p.令p 为结果向量,

假设采用p-grams,考虑词序及模型复杂度,本工作采用两种方法来获得文本表示.第一种方法不考虑词序,即只有一个词向量矩阵E.设E 是保存所有单词的词向量矩阵.对于输入文本〈w1,w2,···,wn〉,首先查找单词在矩阵E 中第i 个p-grams 为〈wi,wi+1,···,wi+p−1〉,对应词向量为〈ei,ei+1,···,ei+p−1〉,最后对p 个词向量的每个维度求平均值得到p-grams的特征值.第二种方法与第一种方法的区别在于,模型添加了p-grams 的词序信息,即采用多个词向量矩阵〈E1,E2,···,En〉.通过从Ek+1查找wi+k的词向量,第i 个p-grams〈wi,wi+1,···,wi+p−1〉 的词向量为〈ei,ei+1,···,ei+p−1〉.同样地,采用平均池化层得到pgrams 的特征值.在获得每个p-grams 的词向量之后,全局最大池化层决定哪一组p-grams 最重要.两种方法的体系结构如图2 所示.

图2 获取关键单词或n-gramsFig.2 Get important words or n-grams

由图2 可见,对于输入〈w1,w2,···,wn〉获取重要单词和n-grams 的方法如下:(1) wi表示第i 个单词(以3-grams 为例),每个词向量矩阵均存有所有词的词向量;(2) 词序无序,从词向量矩阵随机提取3 个词向量w1,w2,w3,取平均值得到〈w1,w2,w3〉的特征值;(3)词序有序,3 个维度相同的词向量矩阵,从第一个矩阵取w1的词向量,第二个矩阵取w2的词向量,第三个矩阵取w3的词向量,取平均值得到〈w1,w2,w3〉的特征值,依此类推.

3 分类模型

在第1,2 节中,本工作用不同方法获得了文本表示,其中dgru表示双向GRU 推导的文本表示,dpooling表示池化操作推导的文本表示,将这两个向量使用连接操作得到一个新的文本表示,即

最后一层是softmax 层,以d 为输入,计算每个类别的概率,

式中:Ws为m×k 矩阵,其中m 为dgru和dpooling的维数之和,k 为类数;b 为偏置项;softmax函数为

如图3 所示,对于输入文本〈w1,w2,···,wn〉,分别用双向GRU 网络和池化网络进行处理,可以从这两个网络中得到两个输出向量,并将这两个向量串联起来,形成所需的文档表示形式.然后,利用带有softmax 激活函数的全连接层进行整合,得到每个类别的分布.

图3 文本分类的最终模型Fig.3 Final model for text classification

4 实 验

4.1 数据集

Rotton Tomatoes:该数据集共包含10 662 条影评[9].

互联网电影数据库(internet movie database,IMDB):该数据集包含50 000 条已标记的和50 000 条未标记的评论,每条评论被标为正面或负面,并将所有评论分为数量相等、类别均衡的训练集和测试集[10].

电子产品评论数据集(electronics,ELEC):该数据集包含来自Amazon 的关于电子产品的评论,训练集和测试集的数量与IMDB 相同[11-12].

20newsgroup:该数据集是新闻话题分类数据集,包含20 个新闻类,共18 846 条新闻,其中训练集有11 314 条新闻,测试集有7 532 条新闻[13].

表1 列出了这些数据集的详细统计信息.

表1 数据集Table 1 Datasets

4.2 基线模型

考虑如下两种模型:非神经网络模型和神经网络模型.对于非神经网络模型,使用支持向量机(support vector machine,SVM)作为分类器,以bag of words 或bag of n-grams 作为输入.输入向量可以是词频向量、tf-idf 向量或对数词频向量.近年来,基于朴素贝叶斯(naive Bayes,NB)权重的bag of words 或bag of n-grams 特征被证明对分类器有一定的帮助,且与复杂的神经模型相比,具有较优的性能.因此,本工作使用SVMlight(http://svmlight.joachims.org/)来训练SVM 分类器.

对于神经网络模型,用CNN 和长短时记忆(long short term memory,LSTM)网络训练所有数据集.CNN 架构采用标准卷积提取n-grams 特征,然后使用全局最大池化来获得文档表示.LSTM 已成功用于各种模型,并且性能通常优于基本的RNN.本工作用Glove 词向量初始化这些模型的词向量.

4.3 预处理和训练

对于所有数据集,本工作首先将所有字符转换为小写,然后将文本切分为单词.本模型只考虑所有数据集中最常见的30 000 单词,而Rotton Tomatoes 是15 000,不在词汇表中的单词被替换为一个特殊的〈unk〉标记.对于Rotton Tomatoes 数据集,将每个句子的长度设置为50 个单词,对于其他3 个数据集,将长度设置为500 个单词.那些较长或较短的文本会被截断或填充以符合定义的长度.

对于GRU 网络,使用预先训练好的300 维Glove 单词向量初始化词向量(https://nlp.stanford.edu/projects/glove/),并在训练过程中保持初始值不变.对于池化层,使用随机初始化的词向量,其维数是根据验证集来选择的.选取重要的单词和n-grams 是模型的重要组成部分,n-grams 的大小根据验证集上的模型性能进行优化.本工作使用Adam 算法对模型进行训练,学习率为0.001[14],同时采用dropout 在输入端实现模型正则化.本模型将dropout 设为p,p 是通过验证集选取的,这意味着每个单词都有机会以1 −p 的概率留在输入中.这一技巧可以使模型得到更多不同的输入序列,以缓解过拟合.

由于Rotton Tomatoes 数据集没有标准的验证集和测试集的分割,因此本实验通过交叉验证来选择超参数.另外3 个数据集具有训练/测试分割,则在交叉验证的训练集上选择超参数,然后在测试集上应用这些设置.

5 结果分析

5.1 模型性能

表2 展示了各模型在提取特征的有效性和准确性方面的性能,表中NBSVM 代表朴素贝叶斯(NB)和支持向量机(support vector machines,SVM)的结合体.通过对比发现,在双向GRU 网络中加入n-grams 信息,性能总是会得到提高,这也印证了基于RNN 的模型可以利用局部信息提高性能.另一个观察结果是,在n-grams 中考虑词序是有用的,这说明本工作提出的模型可以有效地利用词序信息进行分类.对于有序和无序的n-grams 设置,实验表明使用3-grams 对所有这些数据集都能达到最佳的性能.此外,与Abreu 等[7]提出的基于分层注意力机制的混合神经网络(hierarchical attentional hybrid neural networks,HAHNN)模型相比,本模型的分类准确率更高.相比于HAHNN 在GRU 网络中分别从字符级和句子级使用注意力机制筛选n-grams 信息,本模型直接利用池化层选择关键n-grams 信息,明显降低了模型复杂度.最后,本模型得到了比其他所有基线模型更高的准确性.

表2 各模型在不同数据集下的准确率Table 2 Accuracy of each model in different datasets %

5.2 模型分析

在实验中使用预训练的词向量通常可以提高神经网络模型的性能.对于本模型,当使用预先训练的Glove 向量初始化GRU 网络,同时随机初始化池化部分的词向量时,模型的性能确实得到了提高.但是通过实验发现,当GRU 的词向量是“static”时,模型性能最好.为了进行对比,使用不同的GRU 词向量初始化和训练方法对IMDB 数据集进行实验,结果如表3 所示,其中“random”表示随机初始化词向量,“static ”是指用Glove 向量初始化词向量,并在训练过程中保持不变,“fine tune”是指用Glove 向量初始化词向量,并在训练过程中使词向量按照梯度方向进行微调.通过对比发现,随机初始化词向量时,本模型对文本长度和训练算法较敏感,性能也较差,这表明无监督词向量的有效性.

表3 在IMDB 数据集上以不同方法初始化GRU 网络词向量对模型的影响Table 3 Affection to model with different ways to initialize word embedding of GRU network on IMDB dataset %

池化层通过选择特征显著的n-grams 进行分类,因此可以认为所选n-grams 具有最大的类别显著性.对于情感分类任务,池化层所提取的n-grams 应该具有较为强烈的情感倾向.为了验证这一点,将IMDB 训练集中的n-grams 全部放入训练好的模型中,计算每个n-grams 的情感得分.得分越接近1,则该n-grams 越倾向于负向情感,得分越接近–1,则该n-grams 越倾向于正向情感.这样就可以得到模型认为对分类有帮助的最重要的n-grams.表4 给出了正向和负向情感倾向最高的3-grams.可以看到,本工作所提出的模型可以正确地选择情感倾向明显的n-grams.因此,池化层可以帮助GRU 网络捕获局部语义信息,并提高最终的性能.

表4 影响IMDB 数据集最重要的3-gramsTable 4 Most important 3-grams affect IMDB dataset

6 结束语

本工作提出了一种新的基于循环神经网络和n-grams 信息的文本分类模型,使用简单高效的池化操作直接通过词向量或n-grams 向量获取重要的n-grams,并使用双向GRU 捕获上下文序列的全局依赖特征,通过全局特征与局部关键n-grams 特征的结合提高文本分类的性能.本工作在4 个公开数据集上对本模型进行评估,由表2 可以看出,本模型在分类准确性上获得了比单一神经网络和复杂神经模型更好的性能,且与基线模型LSTM 相比,准确率提高约5.7%.下一步的工作将考虑如何在字符级模型上对无标签的数据进行无监督特征提取.

猜你喜欢
池化层向量神经网络
基于递归模糊神经网络的风电平滑控制策略
向量的分解
卷积神经网络模型研究分析*
聚焦“向量与三角”创新题
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
基于全卷积神经网络的SAR图像目标分类*
基于Q-Learning算法和神经网络的飞艇控制