APP下载

基于Transformer编码器的语义相似度算法研究

2021-07-28乔伟涛黄海燕

计算机工程与应用 2021年14期
关键词:注意力语义向量

乔伟涛,黄海燕,王 珊

华东理工大学 信息科学与工程学院,上海200237

随着互联网技术的快速发展,每时每刻有大量的信息以文本的形式产生。如何对文本信息进行分析处理是NLP(自然语言处理)研究的主要内容。其中的语义相似度计算是NLP领域中非常重要的研究方向,该技术可广泛应用于搜索引擎、问答系统中,为系统筛选出更为准确的答案,也可应用在内容去重中,例如对门户网站的标题进行语义相似度计算实现去除重复新闻。

目前,语义相似度的主流计算方法主要分为四类:第一类是传统的基于稀疏特征的统计学方法,第二类是基于语义词典的计算方法,第三类是基于向量空间模型的方法,第四类是基于深度神经网络的方法。传统的统计学的方法是利用句子中的共现词、统计词频等特征来计算相似度。张培颖[1]通过统计句子间的词语距离、结构以及长度差异等特征,通过对不同的特征赋予不同的权重来调节各个特征对于句子相似度的贡献来计算句子间的相似度。基于语义词典的方法是利用外部词汇资源来提取句子文本中的特征,例如中文语义词典HowNet 和英文语义词典的WordNet,Fernando 等人[2]基于WordNet 提取出句子相似关系矩阵相结合来计算句子之间的相似度。朱新华等人[3]在HowNet和同义词词林的相似度检测上重新设计权重计算方法取得较好的结果。在向量空间模型中,用关键词组成的集合来表示文本,关键词在文本中权值可以通过词频-逆文档概率(TF-IDF)方法计算出,将关键词的权值映射为向量中各个元素,则文本可以通过向量的形式来表示,然后再利用向量的余弦相似度来表示句子的语义相似度[4]。句子由词组成,词的不同词性及其在句子中的位置对句子的语义有着重要的影响,以上介绍的传统方法都围绕句子中出现的词语特征进行建模计算,而忽略了句子中词语的顺序和句子的深层语义,容易造成对句子语义的曲解,在具体任务的表现上来看,都不能达到令人满意的效果,例如对“我乘坐北京到上海的高铁”和“我乘坐上海到北京的高铁”两句话容易造成误判断。

基于神经网络模型的方法是利用word2vec[5]等词向量方法将词语转换为词向量,然后输入神经网络语言模型中,得出句子的语义特征表示,然后送入全连接层或使用距离公式进行语义相似度计算。Hu 等人[6]首次使用卷积神经网络(CNN)模型分别对两个句子进行建模,通过抽取出的语义向量计算相似度。Mueller 等人[7]也提出一种基于孪生长短期记忆网络(LSTM)模型的网络结构并结合曼哈顿距离用于计算句子对之间的语义相似度,并取得了较好的效果。纪明宇等人[8]将门控循环网络(GRU)应用在智能客服数据的相似度计算上取得不错的效果。

综上所述,神经网络语言模型在处理语义相似度问题上是较好的解决思路,但是使用LSTM模型存在速度较慢的问题,并且不能充分提取句子间的相似信息。CNN模型由于其池化机制会过滤掉大量和句子底层信息,不能充分地对语义进行编码。因此,针对以上问题,本文在文献[7]研究的基础上,对模型进行改进,首先使用Transformer-encoder 网络取代原来的单向LSTM 网络,使模型能够捕捉语义中的上下文信息,Transformer网络的并行结构可以加快模型计算速度,然后利用交互注意力机制[9],使得模型可以自动地集中注意力在两个句子中相似的语义信息,并且不需要任何额外的知识,增强模型鲁棒性,更好地计算语义相似度,实验表明该模型在语义相似度计算数据集上准确率提升了5%。

1 基于Transformer编码器的语义相似度模型

基于Transformer 编码器的语义相似度模型TEAM主要包括以下五部分:词向量嵌入表示,Transformer 编码层,交互注意力层,特征融合层,输出层。图1是本文提出的TEAM 模型框架图,输入句子1 和输入句子2 首先通过预处理层,进行文本清洗、去除停用词和数字化等操作,接着经过词嵌入层将句子中的词映射为对应的词向量,转化后分别得到S1=(a1,a2,…,al),S2=(b1,b2,…,bl),其中ai表示句子1 中第i个词的词向量,bi表示句子2 中第i个词的词向量,然后经过Transformer编码层得到句子的全局语义特征,同时将重新编码的词向量经过交互注意力层,得到两个句子的局部相似特征,最终将以上的特征通过拼接融合并输入到全连接层进行语义相似度计算。

图1 TEAM模型框架

TEAM 模型充分利用Transformer 模型的上下文语义编码能力提取句子内的语义信息,对句子进行深层语义编码,并通过引入交互注意力机制,在编码两个句子时利用交互注意力机制提取两个句子之间关联的相似特征,使模型更擅长捕捉句子内部重要的语义信息,本章接下来将会对模型各个部分进行详细介绍。

1.1 词嵌入技术

词是构成句子的最小单位,要使计算机能处理自然语言,将词转化为数字是必不可少的第一步。传统的表示方法是采用One-hot表示法,这种表示方法存在“维度灾难”的问题,也无法表示词与词之间的语义关系。Bengio等[10]最先提出神经网络语言模型,使用这种模型可以实现词的分布式表示,将单词转化为低维的稠密向量。

Mikolov 等[5]提出了被广泛使用的word2vec 模型,它包括CBOW(Continues Bag-of-Words)和Skip-gram两种不同的结构,可以在大量的无监督文本集上进行训练,使用该模型训练出来的词向量可以让相似的词语在向量空间内具有相似的位置,斯坦福NLP团队在2014年提出了基于词共现矩阵的Glove 模型[11],在一些任务上的表现超过word2vec 模型,可见词向量的好坏对实验结果会产生直接的影响。根据Lai等[12]在词向量训练实验结果可知,好的词向量与训练语料的大小紧密相关,因此本文采用由腾讯在海量数据上训练的800 万词向量[13],该词向量具有语料大、覆盖范围广等特点。

1.2 Transformer编码器模型

传统的循环神经网络如LSTM、GRU在编码句子时无法进行并行计算,尤其在层数深时模型计算速度严重下降。2017年Vaswani等[14]提出一种基于自注意力机制的序列编码模型Transformer,该模型包括编码器和解码器两个部分。本文使用的是其中的编码器部分,编码器包含6 层叠加的Transformer-block,每个Transformerblock 的结构如图2 所示,主要包含多头注意力机制、残差连接、层归一化、全连接网络四个部分,输入为句子词汇的词向量编码和位置编码之和,位置编码的目的是区分句子中词的位置关系,计算公式如下:

图2 Transformerblock结构图

其中,pos表示词语在句子中的位置,i表示词向量的位置,dmodel表示词向量的维度。多头注意力的计算公式如下:

其中,xi表示输入矩阵x的第i维,m和σ分别表示输入x的均值和方差,α、β是引入的待学习的参数,弥补归一化的过程中损失掉的信息,ϵ 是防止除数等于0设置的无穷小的数。层归一化的作用在于加快模型的收敛速度,提高训练效率。全连接层计算公式如下:

其中,W1、W2为全连接层的权重矩阵,b1,b2为全连接层的偏置。

1.3 交互注意力机制

注意力机制最近取得了广泛的应用在深度学习领域,例如常见的问答系统、机器翻译、语音识别和图像识别等任务[15-16]。注意力机制最早出现在图像领域,例如对于一张图片,人们会选择性地关注所有信息的一部分,同时忽略其他部分信息。在自然语言处理领域,例如机器翻译中的Encoder-Decoder框架[17],注意力机制可以使模型翻译当前词的时候重点关注与当前词语境相关的词汇,显著地提高了机器翻译的性能。

对于语义相似度计算问题,两个句子间的关联相似特征是重要的判断标准之一,而不是单纯地将两个句子表示为独立的向量,然后计算匹配值。例如对于下面的句子对:

句子a:下周有哪些好产品?

句子b:元月份有什么理财产品?

从语义层面看这两句话,可以看出两句话的语义有明显的差别,但是通过结构对比发现在句子a 和句子b中有较多相似的成分,例如“下周”和“元月份”都表示时间状语,“有哪些”和“有什么”是相似的疑问词,“产品”和“理财产品”在语义中同属于询问对象,这些语义相似的句子成分对于语义的相似程度具有重要影响,并且只有通过联系另一句话的语义,才能提取出两个句子中相似的语义单元。因此,本文提出使用交互注意力来提取句子间的相似特征。

本文的交互注意力机制设计思路为,首先计算相似度矩阵得到两个句子中词汇之间的相似度,然后利用注意力机制分别对每个句子的词汇进行重新编码,具体计算公式如下:

其中,E为两个句子的相似度矩阵,为句子1 经过Transformer编码后的全局语义特征的转置,T2为句子2的语义特征,eij是矩阵E中第i行第j列的元素,表示句子1 中第i个词和句子2 中第j个词的相似度,s1是利用注意力机制提取句子2 中与句子1 的相似信息,s2是利用注意力机制提取句子1 中与句子2 的相似信息,s1和s2是模型用于预测的重要特征。

1.4 特征融合及输出

Transformer 层编码了输入句子全局的语义特征t1、t2,其中t1表示句子1的语义特征,t2表示句子2的语义特征,交互注意力层提取了每个句子中的局部相似特征s1、s2,其中s1表示句子1 的相似特征,s2表示句子2 的相似特征,特征融合层根据公式(14)将两部分特征进行融合:

其中,t1-t2、s1-s2是向量的相减操作,目的是为了获取差异特征,最后通过向量拼接的方式,得到最终的特征融合向量m。输出层采用全连接网络对特征进行权重调整及softmax 函数进行预测分类结果y,输入为融合的特征融合向量m,计算过程如公式(15)、(16)所示,经过实验证明采用全连接层作为输出效果好于使用欧式距离或余弦相似度作为输出:

模型的损失函数采用交叉熵损失函数如下:

其中ri∈ℜm是以one-hot 编码的标签真实值,yi∈ℜm是由softmax 函数预测的每个类别的概率,k是类别的个数,λ是L2 正则的超参数,本文同时使用L2 正则和dropout[18]来防止模型过拟合,模型的详细参数将会在2.3节介绍。

2 实验分析

2.1 实验数据

为了验证模型的有效性,本文采用两个公开数据集进行实验,中文数据集采用智能客服数据(2018 全国知识图谱与语义计算大会智能客服问句匹配大赛),英文数据集采用SICK(Sentences Involving Compositional Knowledge)数据集[19],其中智能客服数据为分类任务,判断两个句子语义相似或不相似,SICK 数据集的标签为两个句子的相似度分数,分数区间为1~5,5分表示完全相似,1 分表示完全不相似。表1 列出了两个数据集的统计信息,表2列出了数据集样例。

表1 实验数据集统计信息

表2 数据集样例

2.2 实验评价指标

对于智能客服数据,本实验采用准确率(accuracy)和F1 值(F1-score)指标作为评价指标,对于SICK数据集,采用皮尔逊系数作为评价指标。具体计算公式如下:

其中,TP表示正例预测为正例的个数,FP表示负例预测为正例的个数,FN表示正例预测为负例的个数,TN表示负例预测为负例的个数,X为实际值,Y为预测值。

2.3 实验设置

本文实验基于Google 开源的TensorFlow 1.14.0 深度学习框架实现,中文的词向量采用的是腾讯开源的800 万词向量[13],并且使用哈工大分词工具包pyltp0.2.0进行中文分词,英文词向量的采用的是由斯坦福大学预训练的glove[11]词向量,未登陆词通过高斯分布随机初始化,所有的参数包括词向量都随训练过程更新,序列的最大长度根据实验语料长度覆盖率95%以上进行选取,为防止训练过程抖动,优化方法采用Adam算法[20],实验采用earlystopping 防止过模型拟合,表3 列出了实验具体的超参数。

表3 实验超参数设置

2.4 实验结果及分析

为了验证本文方法的有效性,同时为了比较不同的深度学习模型的效果,本文加入了Siamese-CNN、Siamese-LSTM 以及Siamese-LSTM-Att 模型进行对比,另外也加入了传统TF-IDF 方法进行对比,本文提出的模型为TEAM,实验采用五折交叉验证的方式选取评价指标的平均值作为结果。

2.4.1 智能客服数据实验分析

智能客服数据上的实验结果如表4所示。

通过实验结果可以看出传统的TF-IDF方法通过浅层词汇匹配只能达到70.2%的准确率,本文提出的TEAM 模型比传统模型在准确率上提升了24.5 个百分点,比其他深度学习模型平均提升了15 个百分点。通过表4 可以看出深度学习模型较传统模型性能提升很多。基于卷积神经网络编码的Siamese-CNN 只能达到74.4%的准确率,这是由于卷积神经网络只能提取每个句子的局部特征,不能获得全局的语义编码。Siamese-LSTM 模型的准确率比Siamese-CNN 提升了15 个百分点,证明循环神经网络对语义的编码能力比卷积神经网络表现得更好,加入了注意力机制的Siamese-LSTM-Att模型相比Siamese-LSTM 模型准确率只提升了0.9 个百分点,F1 值提升了0.5个百分点,可以看出局部注意力并没有对模型表现带来很大的提升。此外,TEAM模型相比Siamese-LSTM模型提升了5.1个百分点,较Siamese-CNN 模型提升了20.3 个百分点,可以看出基于Transformer 的模型比传统的CNN,LSTM 模型性能提升很多,证明Transformer网络的语义编码能力更强。

表4 智能客服测试数据集结果 %

实验过程对比曲线如图3所示。

图3 智能客服数据准确率变化曲线

由图3 可知,TEAM 模型只用了2 个epoch 达到了90%的准确率,并在第8个epoch开始提升缓慢,模型接近收敛点,证明TEAM 模型的收敛速度明显快于其他模型。

2.4.2 SICK数据实验分析

不同模型在SICK 数据集上的表现如表5 所示,由实验结果可以看出,TEAM 模型的表现好于其他模型,比其他模型皮尔逊相关系数平均提升了0.3,证明TEAM模型在英文数据集上的有效性,但相比Siamese-LSTMAtt模型皮尔逊相关系数仅提升了0.052,效果提升不明显。由图4可知,由于SICK数据集数据较小,TEAM模型在训练过程中出现了过拟合的现象,证明基于Transformer的模型在数据集较小的数据上性能还有待提升。

表5 SICK测试数据集结果

图4 SICK数据皮尔逊系数变化曲线

2.4.3 交互注意力机制的有效性分析

为了进步一验证模型有效性,引入将TEAM模型去除交互注意力机制的模型TEM,分别在两个数据集上进行对比实验,验证加入句子间交互注意力对模型的影响。表6 为实验的结果,图5 是模型在两个实验数据上的训练过程,由表6 实验结果可知,交互注意力对模型提升效果明显,在智能客服数据上TEAM 比TEM 准确率提升2.7个百分点,在SICK数据上皮尔逊相关系数提升0.05,证明交互注意力使模型充分学习到句子间的相似特征,进而对相似度进行更准确的预测。其次,实验结果同时证明句子间的交互信息对于相似度计算问题具有重要作用。由训练对比曲线可知,TEAM模型由于可以捕捉到句子的交互特征,使得模型的收敛更快。

表6 TEAM和TEM结果对比

图5 TEAM和TEM训练曲线

3 结束语

本文提出了一种基于Transformer 编码器的语义相似度计算模型,并引入了交互注意力机制提取句子间的相似特征,综合考虑了相似度计算问题中的全局语义编码和局部相似特征编码,在不同数据集上的实验结果证明本文模型在中文英文数据上比基准模型有显著的改善,并且证明了交互注意力机制的有效性。目前的实验数据及模型对象都是针对短文本语料,且数据分布均衡,长文本面临着计算时间长以及注意力分散的问题,在后序的工作中,将开展长文本相似度计算方法的研究和优化,增强模型的泛化能力。

猜你喜欢

注意力语义向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
语言与语义
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
“上”与“下”语义的不对称性及其认知阐释
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
认知范畴模糊与语义模糊