时间:2024-05-04
于碧辉,王加存
(中国科学院大学,北京 100049)
(中国科学院 沈阳计算技术研究所,沈阳 110168)
基于自然语言理解的问答系统在过去几年的人工智能中一直是一个热门话题,而问答系统的基本任务,通常被认为是语义匹配任务,该任务的目标是从现有的数据库中搜索与输入问题具有相似意图的问题,语义匹配任务通常可以被视为二元分类问题,其输入是问题Q和候选答案A,系统被要求判断两个句子是否表达相同的含义.
1990年Bromley和LeCun提出孪生(Siamese)[1]神经网络模型用于解决公钥数字签名的验证问题.Siamese 神经网络是指结构相似或者结果相同的两个神经网络,模型的特点为:在训练过程中,两个结构相同的神经网络会被分开训练,然而,神经网络模型的参数权重是共享的,最后将两个神经网络的输出连接起来,将拼接结果输入到一个全连接层或其他层,最后连接一个全连接层或者其他层.孪生神经网络在人脸识别等相似度问题中,效果非常好,而句子与句子之间的语义匹配问题在本质上和图像领域中的人脸识别比较相似,所以在语义匹配任务中,应用孪生网络来计算句子相似度也是可行的.
为了训练孪生神经网络模型,需要定义模型的目标函数,由于语义匹配不是常规的分类问题,因此,常用的目标函数并不适合孪生神经网络模型.目前,孪生神经网络常用的损失函数为对比损失函数(Contrastive Loss),令句子S1和句子S2 为孪生神经网络的输入,Y为指示 S1 和 S2 是否匹配的标签,其中Y⊂0,1.如果句子S1 和 S2是匹配的,则Y=1,如果句子S1和S2是不匹配的,则Y=0.对比损失函数如公式(1)所示.
(1)
其中Dw为孪生神经网络输出的两个特征向量的距离,即Dw(s1,s2)=‖Gw(s1)-Gw(s2)‖.由Gw表示孪生神经网络对输入向量编码之后的输出的特征向量,m代表对于Gw的惩罚的边界值,只有距离Dw小于m的负样本才会被加入到损失函数中.所有样本的损失函数如公式(2)所示.
(2)
图1表示的就是损失函数值与样本特征的欧式距离之间的关系,其中虚线表示的是相似样本的损失值,实线表示的不相似样本的损失值.从图1可以看出目标函数很好的表现出文本的匹配程序,但是其有一个缺点,由于采用欧式距离,因此分类边界比较宽泛,因此,在语义匹配任务中,对比代价损失函数是有缺点的.
图1 代价交叉熵Fig. 1 Cost cross entropy
在语义匹配模型中,除了需要考虑分类的正确性,还需要考虑答案的排序性,所以在使用交叉熵和对比代价损失函数的时候,其分类限制比较宽泛,导致相近的一些在边界存在误差,对于这种问题,其解决方法为margin loss,常见的改进的margin loss有L-softmax,A-softmax、AM-softmax等等,由于AM-softmax对损失边界误差的限制,使得类间的边界更加清晰,因此,在本文中,使用am-softmax替换代价损失函数应用到孪生网络来进行短文本语义匹配.
目前,已经有很多研究者探索关于孪生神经网络的语义匹配模型.一个最早的将孪生神经网络应用到文本匹配的模型是深度语义结构模型(Deep Struc-tured Semantic Model,DSSM)[2],该模型建模对象是查询内容和文档之间的相似度,每个文档对象和查询内容都是分别通过5层神经网络进行向量化编码,然后将输出结果拼接输入到一个全连接层中,计算查询内容和文档之间的相似度.Tan等人[3]尝试将CNN和LSTM等模型应用到孪生神经网络中,实验结果证明,在孪生神经网络模型中应用LSTM网络要比CNN网络效果更好.为了进一步提供孪生神经网络的匹配能力,有一些研究者[4,5]将注意力机制引入到孪生神经网络模型中,并证明了注意力机制的有效性.深度模型中存在有限记忆的瓶颈问题,而注意力机制可以通过引入额外的权重参数来矫正两个向量序列之间的相关性.Santos等人将注意力应用到孪生神经网络模型模型中,提出Attentive Pooling-Convolutional Neural Network(AP-CNN)和 AP-BiLSTM 模型,这是一种双向注意力模型,模型通过在两个句子编码的表示层后面加上注意力池化层,使得聚合层能够感知到两个输入句子之间的相互依存关系,这样能够加深两个句子间的联系,可以影响彼此的表示计算.Wang[5]等人提出了“匹配融合”结构,首先在表示层使用BiLSTM层对输入的句子向量进行编码,然后对两个编码向量进行匹配运算,最后将运算结果通过BiLSTM进行聚合运算,将匹配结果聚合成向量.模型最大的特点是采用了双向多角度匹配,这种结构可以在多个角度捕捉两个句子之间的交互信息.Yichen Gong[6]等人提出Densely Interactive Inference Network (DIIN)模型,DIIN模型和其他匹配模型的结构都很接近,也是采用CNN与LSTM来做特征提取,但是在其输入层,作者提出了很多想法,同时采用了词向量、字向量,并且添加了一些额外的特征例如词性等,其本意在于能额外输入一些句法特征,CNN部分也采用了DenseNet的结构,实验表明DIIN具有比所有其他模型更好的性能,并且集合得分也比较高.Seonhoon Kim[7]提出了,Densely-Connected Co-attentive Recurrent Neural Network(DRCN),DRCN模型和DIIN的结构十分相似,包括输入层与特征提取层,DRCN在特征提取阶段结合了DenseNet的连接策略与Attention机制,在interaction阶段,也采取了更加多样化的交互策略,论文的主要创新点有两点:1.借鉴ResNet和DenseNet,运用到stack RNN中;2. 利用AutoEncoder来压缩向量,减少参数迅速增加的压力.实验结果证明,DRCN比DIIN有小幅度的提升.
孪生神经网络在人脸识别领域除了修改网络结构之外,损失函数的改进也会对结果有很大的提升,传统的softmax损失函数会将整个分类超空间,按照类别个数进行划分,确保类别是分开的,然而,对于每个类别的类间距离和类内距离不做要求.对于损失函数的优化,Sun[8]等人提出了双约束loss function,该损失函数的优化目标是希望同一类别的类内距离尽可能小,不同类别的类间距离大于margin,Schroff[9]等人提出了Triple Loss,在模型的输入层输入 三元组(a,p,n),在模型的最后一层去除softmax,该模型的优化目标是不同类别的类间距离要比相同类别的类间距离大于margin,这样能够获得类内距离紧凑和类间距离分离的效果.Liu[10]等人开创性的提出一种新的损失函数-large softmax,L-softmax加强分类条件,强制让对应类别的W和x夹角增加到原来的m倍,L-softmax用乘性margin使不同类别更加分离,特征相似度采用cos距离,由于此loss函数会导致loss很难收敛,因此需要在实际训练过程中使用退火方法来加速收敛.Wang[11]等人基于L-softmax损失函数,使用乘性margin距离替换加性margin距离,即使用cosθ-m替换cos(mθ),并同时对权重W和特征F做归一化,采用固定尺度因子s=30,实验结果证明,与L-softmax相比,模型的性能有所提升,此方法最大的特点是训练难度比L-softmax低,收敛速度也快.
在语义匹配的任务里面,我们期望每个匹配的句子对,都是一个类别,也就是匹配的句子对,相似度尽可能的大,不匹配的句子对,相似度尽可能的小.所以代价损失函数和am-softmax损失函数比原始的softmax损失函数更适合.在本论文中,我们以孪生神经网络为基础,引入注意力机制和am-softmax损失函数,将其应用在语义匹配任务上.
基本的孪生神经网络模型,由以下几部分构成:
3.1.1 预处理
通过预处理获得包含上下文信息的句子S1和句子S2的表示,句子中的每个词语都将得到一个词向量表示.
3.1.2 共享神经网络
在得到句子的向量表示后,首先会经过一个LSTM层,通过LSTM可以得到句子向量的编码信息,这里使用标准的LSTM,其公式如下所示.
(3)
词语在句子的位置不同,其重要程度也不一样,而每个句子在文档的位置和表达的语义不同,重要程度也不同.除此之外,相同的词语和句子在不同的文本语境中的重要性也不相同.因此在改进模型的LSTM层后面,加入了注意力机制. 权值共享的孪生神经网络包含上面的LSTM层以及注意力机制层.
3.1.3 信息聚合
经过注意力机制层之后的两个句子信息,需要进行信息融合,常用的融合方法有前馈神经网络的全连接,两个向量的欧式距离以及余弦相似度.
在本论文中,改进的Siamese network如图2所示.
图2 模型结构图Fig.2 Model structure diagram
考虑到中文语言本身的特性,中文的单个字也蕴含了大量的语义信息,因此在输入层,不只是单单使用句子的词向量,同时也需要考虑句子的字向量,句子的词向量包含了句子的粗粒度的语义信息,句子的字向量包含了与子的细粒度语义信息.
在传统的循环网络模型中,隐藏层的状态是从上一时刻向下一时刻传递的,是单向传递的.然而,实际上,隐藏层当前时刻的输出不但和上一时刻的状态有关联,也和下一时刻的状态有关联.因此,使用单向的循环神经网络,会只编码单向的信息,忽略了反向的信息,因此,为了更好的编码信息,可以使用双向RNN(Bi-RNN)来解决此问题.Bi-RNN是由前向RNN和后向RNN组成的,在每个t时刻,输入信息xt分别输入到前向RNN和后向RNN中,而输出信息这是由两个RNN共同编码组成.因此在本论文中的改进模型里面,我们在使用双向LSTM(BiLSTM)替换单向的LSTM.
BiLSTM层编码的在一定程度上可以有效地涵盖文本语义信息,但是由于这种办法很难将输入文本的所有信息编码在一个固定长度的向量中,降低了文本信息中重要词汇的贡献度,因此在本文中,我们在BiLSTM层后面加入注意力(Attention)机制,用Attention机制来提取对句子含义重要的词的信息,对BiLSTM输出结果重新编码.
孪生神经网络常用的损失函数是对比代价函数,而在对比代价损失函数中,需要定义距离函数,常见的有:曼哈顿距离、欧式距离和余弦相似度.在本文的模型中,我们将使用am-softmax来替换对比代价损失函数.Am-softmax公式如下所示.
(4)
(5)
其中θi代表z和ci的夹角,z是样本,ci是分类的类别,s是缩放因子,m是margin.
所以,在本实验中,模型改进的地方有以下几点:
1)字向量加词向量的输入表示;
2)使用Bi-LSTM替换单向LSTM;
3)修改损失函数,用am-softmax损失函数代替对比代价损失函数.
本文的实验采用的数据集是哈尔滨工业大学在自然语言处理国际顶会COLING2018 构建的中文问题语义匹配数据集(LCQMC)[12],此数据集用搜索引擎收集来自不同领域的高频词相关的大规模问题对,然后通过Wasserstein距离过滤不相关的问题对,最后通过手工验证,因此是一个高质量的数据集.数据集的大小为260068,其中包含238766个问题对的训练集和12500个问题对的测试集.
在本论文中,既用到词向量又用到字向量,因此,我们使用整个语料库来自行训练词向量和字向量.虽然每个句子长度不相同,但是基本上比较接近,在实验中,我们设置句子的词语的个数为40,句子的字的个数为100,孪生网络中的LSTM和Bi-LSTM的输出维度均设置为128,在LSTM后面加入dropout,学习方法使用Adam,学习率设置为0.001,在实验中,使用EarlyStop来防止过拟合.
在本实验中,我们采用准确率,召回率以及精确率以及F1值,为将本文模型与其它模型效果进行对比实验,所有模型均采用LCQMC数据集,模型用到的词向量用W表示,字向量用C表示,实验结果如表1所示.
表1 Test resultTable 1 Test result
·连续词汇(CBOW)模型[13]:首先用词向量来表示一个句子中的每个字符或单词.词向量使用原始句子预先训练的.其次,每个句子表示为词向量的总和.最后,将两个句子的输出连接表示送到softmax分类器来预测输出.
·卷积神经网络(CNN)[14]:每个句子都表示为一个词向量矩阵,该矩阵经过一个卷积神经网络. 在本实验中,两个句子向量矩阵共享相同的卷积层权重.
·双向长期短期记忆(BiLSTM)[15]:首先,两个句子经过相同的LSTM单元,并使用LSTM编码器在向前和向后方向编码为句子向量. 其次,连接两个句子的向量表示,使用softmax进行分类.
·双边多视角匹配(BiMPM)[16]:BiMPM在其输入表示层使用基于字符的LSTM,BiLSTM层用于计算上下文信息,4种不同类型的多视角匹配层,附加到BiLSTM聚合层,然后输入两层前馈网络进行预测.
以上4种模型相比,本文提出的方法在准确率上达到86.8%,精确率为81.3%,召回率为94.1%,F1值达到87.2%,均高于其他3个模型.本文的模型与以上3个模型相比,在Embedding层面,联合使用词向量与字向量,与CNN模型相比,本文神经网络结果采用双向LSTM,比CNN更能捕获具有长期依赖的信息,更适合文本序列,与BiLSTM模型相比,本文在BiLSTM层后面加入了Attention机制,进一步提高了模型的特征表达能力.与BiMPM模型相比,本文采用am-softmax损失函数,与contrastive loss函数和softmax函数相比,am-softmax对分类边界限制更严格,收敛速度更快,通过实验验证,本文方法进一步提高了文本匹配的准确度.
本文从现有的孪生神经网络出发,基于基础的孪生神经网络,使用词向量与字向量联合表示输入,并使用Bi-LSTM对文本进行建模,同时为了提升模型的准确度,引入am-softmax损失函数替换contrastive loss函数,在公共评测语料上的实验结果证明该方法相较于其他深度学习模型性能有进一步提升.未来的工作可考虑如何进一步修改网络结构,以及尝试其他更好的损失函数应用到模型上.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!