基于图神经网络的汉语依存分析和语义组合计算联合模型
2022-09-05刘明童张玉洁陈圆梦徐金安陈钰枫
汪 凯,刘明童,张玉洁,陈圆梦,徐金安,陈钰枫
(北京交通大学 计算机与信息技术学院,北京 100044)
0 引言
深度神经网络技术为自然语言处理发展带来崭新建模方式和性能上的巨大提升,成为主流的研究方法,其中语义表示是研究热点之一。已有研究表明有效的语义组合计算模型,如LSTM、CNN、Tree-LSTM等神经网络模型,可以提升自然语言处理应用的性能,如机器翻译[1]、情感分析[2]、复述识别[3]、自然语言推理[4]等。
基于序列化结构的语义组合计算方法简单有效而被广泛采用[5],但是,这种方法没有考虑句法结构信息,难以捕获词序完全相同但句法结构不同的句子之间的差异。比如句子“放弃美丽的女人让人心碎。”,可以有两种句法结构,如图1(a)所示。在图1(a)的句法结构中,“美丽”作为形容词修饰“女人”,“放弃”的对象是“美丽的女人”;在图1(b)的句法结构中,“美丽”作为名词,“放弃”的对象是“美丽”。由此可见,句法结构决定句子语义,句子的语义表示应该考虑其句法结构。
图1 相同句子的不同依存句法结构
随后,研究人员开始关注基于句法结构的语义组合计算方法[2,4,6]。组合原则表明句子的语义由其构成成分的语义按照一定规则组合而成,由此根据句法结构进行语义组合计算一直是一个重要的探索方向。在基于句法结构的语义组合计算方法中,采用树结构的组合计算方法最具有代表性,其中最为著名的是Kai[2]提出的Tree-LSTM。此类方法在给定的一棵句法树上,从叶子节点开始,语义信息自底向上传递,最终在树的根节点获得句子的语义表示。树结构的语义组合方法虽然建模了单词在句法结构上的语义修饰关系,但和序列化方法相比,模型受句法树规定的语义组合顺序的限制,无法并行计算以支持批处理。另外,由于需要额外的句法分析器,模型处理繁琐且计算效率低,难以大规模应用到自然语言处理的各项任务中。
为了解决上述问题,本文主要针对基于句法结构的语义组合计算方法展开研究,提出一种基于图的依存句法分析和利用图神经网络语义组合计算的联合模型。考虑到依存结构描述了反映单词间语义修饰关系的依存关系,本文采用依存结构信息指导语义组合计算。我们设计基于图的依存句法分析方法,用于生成带有概率的依存关系结构图,包含所有单词对间的有向依存弧的概率。然后,我们使用依存关系概率作为图神经网络中信息传递的权值,一方面使得语义组合计算可以按照单词间修饰关系概率结合所有单词的语义;另一方面,基于图神经网络的语义组合计算可以实现并行处理,支持训练和预测阶段的批处理,提升计算效率。本文模型与已有方法的对比如图2所示。其中,图2(a)是基于序列化结构的组合方法,图2(b)是基于树结构的语义组合方法,图2(c)是本文提出的基于图结构的语义组合方法。我们以复述识别作为语义组合计算的目标任务,在公开汉语复述识别数据集LCQMC[7]上的实验结果表明,本文提出的模型优于已有序列结构的语义组合计算方法,可以有效改进复述识别性能。同时,本文提出的语义组合方式支持批处理操作,在预测阶段速度是Tree-LSTM的30倍,同时能保持较高的精度。
图2 不同的语义组合计算方法对比
本文的主要贡献如下:
(1) 提出一种基于图的依存句法分析和语义组合计算的联合框架;
(2) 提出一种基于图神经网络的语义组合方法,可以实现并行处理,支持训练和预测阶段的批处理,提升计算效率。
1 相关工作
语义组合计算方法主要分为基于序列化的语义组合计算方法和基于句法结构的语义组合计算方法。在序列化的语义组合计算中,如图2(a)所示,模型从左到右依次读入单词,如LSTM、RNN等[5,8]。这些方法的优点是可以表示任意长度句子的上下文信息,其语义信息从左向右积累,最终将最后时刻的隐状态向量视为整个句子的语义表示。Kim[9]利用卷积神经网络获得句子的语义表示,具体做法是使用卷积核在输入句上从左到右滑动,每次滑动捕捉句子局部区域的特征,使得CNN更能捕获n-gram特征,最后通过最大池化获得句子的语义表示。基于序列化的方法为了追求运算效率,直接对句子的文本序列进行语义组合计算,未对结构信息加以利用,难以对结构不同带来的语义差异加以区分。
近年来有许多工作[2,10-11]试图引入句法结构进行语义组合计算,并在情感分类[2]、自然语言推理[4,12]等任务中验证了比序列化模型更好的性能。Kai[2]使用了树结构进行语义组合计算,从树的叶子节点开始将语义信息从底向上传递,最后在树的根节点获得句子表示。Chen[6]设计了增强树结构表示,利用短语结构树进行语义组合计算。但是这些方法受自底向上的组合顺序的限制无法实现并行计算,难以支持训练和预测阶段的批处理,导致计算时间过长,难以满足实际需求。Mou[4]提出了树结构的卷积操作,通过对每个节点的孩子节点进行卷积操作获得该节点的语义表示,最后对所有节点使用最大池化操作获得句子语义表示,并在自然语言推理任务上验证其有效性。该方法虽然可以实现并行计算,但只计算了直接孩子的语义信息,没有考虑子孙节点的语义。
本文提出的基于图的依存分析模型和图神经网络语义组合计算联合框架,使用带有概率的依存关系结构图进行语义组合计算,一方面可以实现并行处理,另一方面可以考虑所有节点的语义信息。
2 基于图神经网络的依存分析和语义组合计算联合模型
我们采用依存句法树作为句法结构指导语义组合计算,提出了基于图的依存句法分析和语义组合计算的联合框架,模型架构如图3所示。模型接收句对P={p0,p1,…,pN}和Q={q0,q1,…,qN}。首先经依存句法分析分别得到带有概率的依存关系结构图,并从中得到依存树,然后经语义组合计算利用该图得到句子的语义表示,并送入复述识别分类器进行判断。在模型训练阶段,我们联合依存分析和复述识别任务的两个目标共同学习模型参数。
图3 本文提出的联合模型整体框架
2.1 依存句法分析
本文采用基于图的依存句法分析方法[13],该方法可以考虑全局信息进行依存分析决策,最近研究显示该方法在性能上超过了基于转移的依存分析方法[14]。下面,我们以句子P={p0,p1,…,pN}为例,详细介绍依存句法分析模块。按照通常做法,我们在每个句子的开头加入根节点的标识“
首先将输入的单词序列转化为数值向量表示,我们采用预训练词向量、随机初始化词向量和词性标签向量三部分构成输入词向量。我们用e(pi)∈d表示预训练词向量,e′(pi)∈d表示随机初始化词向量,e(posi)∈dpos表示词性标签向量,dpos为词性的嵌入维度,三部分的表示在训练中被更新。最终,每个单词的表示由式(1)计算得出,其中“⊕”为拼接操作。
为了捕捉句子长距离的上下文信息,我们采用深层双向LSTM(BiLSTM)学习句子中的词表示。其中,第i时刻(对应第i个单词)的隐藏状态表示如式(2)所示。
本文使用图G=(V,E)表示句子P的依存关系图,其中V={p0,p1,…,pN}是句子中单词节点集合,E是依存关系边集合。序列P中每个词与图上的节点对应,使用pj→pi表示核心词(head)pj与依存词(dep)pi之间存在依存关系。由于句子中任意两个单词之间存在两种依存关系pj→pi和pi→pj,需要为每个单词计算其作为核心词或依存词的向量表示。为此,我们为每个单词设置两个向量表示,一个是单词作为依存词的表示,另一个是单词作为核心词的表示。对于这两种表示的计算,我们分别采用多层感知器对BiLSTM的输出hi进行计算,如式(3)和式(4)所示[13]。在此基础上,可以为所有单词对中的两种依存关系计算得分,具体的我们采用双仿射注意力机制进行计算,计算过程如式(5)所示。其中,sij表示pj→pi的得分,得分越大表示构成pj→pi的可能性越大。
其中,U表示权重矩阵,u表示偏置项。
si=[si0,…,sij,…,siN](j∈{0,1,…,N}),sij是pj→pi依存关系的得分,其中si0用于衡量第i单词成为根ROOT的可能性。随后采用公式(6)进行归一化操作得到概率分布αi,由αi(i∈{0,1,…,N})构成依存关系概率矩阵α。最后采用最大生成树算法解码获得句子的依存结构。在训练阶段,我们使用交叉熵作为损失函数,如式(7)所示。
2.2 语义组合计算
我们提出一种基于图神经网络的语义组合计算方法,通过利用上一节的依存分析提供的依存关系的概率矩阵α进行语义组合计算,以支持批处理大幅提升计算速度。根据句法分析,αij表示单词pj是pi核心词的概率,我们将依存句法分析学习到的权重αij视为依存关系pj→pi的语义相关性权重,同时将hi视为图上节点pi的语义表示,然后在此图基础上进行语义组合计算。
本文采用图信息传递机制[15-16]建模图中每个节点的语义信息,首先节点pi从邻节点收集语义信息,我们设计了两种收集语义信息的方式(如图4所示)。
图4 基于图神经网络使用结构信息的两种方式
第一种收集方式利用依存关系概率矩阵α直接作为权重结合邻节点的语义表示,计算公式如式(8)所示,我们称这种方式为软结构信息,示意图如图4(a)所示。第二种收集语义信息的方式依据依存结构结合具有依存关系节点的语义信息[16-17],首先修改依存关系概率矩阵α,对于单词pi设置概率最大的核心词的概率为1,其他单词的概率设置为0,具体修改方式如式(9)所示,然后再按式(8)进行语义信息的收集,我们称这种方式为硬结构信息,示意图如图4(b)所示。得到邻节点语义信息Mi后,根据式(10)更新当前节点的语义表示。
其中,Mi∈d是节点pi从邻节点获得的语义信息,hi∈d表示节点pi原始的语义表示,ηpi∈是节点pi的语义更新权重,控制应保留pi多少原来的语义信息,(1-ηpi)用于控制节点pi接收到多少邻节点的语义信息。最后,使用平均池化获得句子的语义表示。句子语义表示定义为:
其中,Np是句子P中单词节点下标的集合,|Np|是句子P中单词的个数。vp即为句子P的语义表示。同理,对于句子Q,我们可以获得其语义表示vq。
为了检验本文基于图神经网络的语义组合计算方法能更好地学习句子的语义表示,我们联合了复述识别任务。给定句对P和Q,预测两个句子是否具有相同的语义。首先基于语义组合计算模块,为句对中的每个句子生成语义表示vp和vq。然后,使用这两个句子的语义表示(vp和vq)构造特征向量d[4],如式(12)所示。然后将此特征向量d送入复述识别分类器。
其中,“⊙”表示按元素乘积操作,“⊕”表示向量拼接操作,d∈4d是构造的特征向量,复述识别分类器我们采用多层感知机的方式,如式(13)所示。
在训练阶段我们使用交叉熵作为损失函数,定义为:
2.3 联合学习
本文提出的联合模型涉及两个任务——依存句法分析和语义组合计算,我们采用复述识别验证语义组合计算。由此,模型需要同时学习和优化多个学习目标。在传统的联合学习中,通常对各个任务的损失进行线性加权求和,如式(15)所示,该方法权重较难设定。为了解决多目标联合学习问题,我们采用Kendall[18]设计的自学习多目标权重方法。该方法根据噪声方差作为模型收敛程度的评估,进行比重调整。其目标函数设计如式(16)所示。
其中σ1,σ2∈为学习的参数,跟随训练过程被更新,Ldep为依存分析的损失函数,Lpair为复述识别的损失函数。
3 实验
3.1 数据集介绍和超参数设置
本文使用公开汉语复述识别数据集LCQMC[7]作为实验数据。我们采用高精度的哈工大语言技术平台ltp3.4.0(1)http://ltp.ai/download.html获取分词、词性和依存句法标注[9],我们将依存句法标注视为ground truth。表1给出了LCQMC数据集的统计信息。
表1 实验数据集的统计信息
实验中采用预训练的Word2Vec词向量[20],预训练词向量为200维。词性标签向量设置100维,设置所有LSTM结构的隐藏层为400维,层数为3。对与MLP(dep)和MLP(head)设置层数都为1,隐藏层维度分别为100和500,采用leakyrelu激活函数,α设置为0.1。对于MLP(clf)设置层数为2,隐藏层维度分别为800和400,采用相同的激活函数。我们采用Adam[21]优化算法,设置初始学习率大小为2e-3,β1为0.9,β2为0.9。在每一轮迭代中,学习率以0.95的频率衰减。训练batch的大小为128。为了防止过拟合,我们使用了 dropout。设置词向量输入层的drop率为0.33,leakyrelu层输出层的drop率为0.33。与已有工作一致,我们采用无标记依存正确率UAS和带标记依存正确率LAS作为依存分析评价指标,采用Accuracy和融合Precision和Recall的综合指标F1值作为复述识别的评价指标。
3.2 基于自学习多目标权重的实验结果
如果按照式(15)计算损失函数,为了找到合理的ω需要多次实验,实验结果如表2所示。表2显示了不同权重ω对依存分析和复述识别任务性能的影响结果。当ω较小时,复述识别性能较好,但是依存分析精度较低;当ω较大时,依存分析精度较好但是复述识别性能较低。当ω设置为0.9时,依存分析的结果达到最好,带标记正确率达到94.37%,但复述识别的Accuracy只有75.37%。当ω设置为0.5时,能共同得到较好的性能,复述识别Accuracy为76.31%,依存分析LAS为93.99%。
表2 不同ω下联合模型在开发集中两个任务上的性能
如果按照公式(16),采用Kendall[18]设计的多目标损失函数,复述识别Accuracy达到76.77%,依存分析LAS为92.70%。与公式(15)中ω=0.5时的最好结果相比,其复述识别的准确率提高0.46个百分点,显示该方法优于线性加权的损失函数。随后实验中我们采用Kendall[18]设计的多目标函数方法。
3.3 语义组合次数实验结果
2.2节介绍了每个节点结合邻近节点语义信息更新自身语义表示的组合计算方法,使得每个节点包含了直接核心词的语义信息。如果在此基础上再进行一次语义组合计算,将使每个节点获得间接核心词的语义信息。为了分析语义组合次数的影响,我们分别进行了基于0次、1次、2次和3次语义组合计算的评测,实验结果如表 3所示。n=0表示没有利用结构信息,n=1,2,3表示以不同语义组合计算次数利用结构信息。与n=0相比,n=1的模型在测试集上,复述识别在F1和Accuracy分别提高了1.96和1.97个百分点,说明句法结构指导语义组合计算上的有效性。
表3 语义组合次数在不同任务上的性能,n=0表示没有利用句法结构信息
与n=2,3相比,n=1的模型在复述识别任务上均优于n=2,3的模型。实验结果表明继续增加组合次数并没有提升性能。同时,随着组合次数的增加,模型的复杂度也会增加,随后实验中我们选择一次语义组合计算。另外,我们注意到联合模型并未给依存分析带来性能上的提升,一方面,由于本文的重点放在语义组合计算上,还没有找到同时提升依存分析精度的有效联合方法;另一方面,本文使用的依存结构标注并非人工标注,我们分析由于存在一定错误,因此难以给出依存分析模型的正确评测结果。
3.4 模型对比实验
我们与基于序列化和树结构的5种语义组合计算方法进行比较,对比模型分为以下几类:
Baseline: 上一节中n=0的模型,即包含序列信息无结构信息。
MeanVector: 将词表示的平均池化作为句子的语义表示,其中词表示的计算方法如式(1)所示,该方式既无序列信息,也无句法结构信息。
CNN: 基于卷积神经网络的语义组合计算方法Kim[9]和Liu[7],该方式包含序列信息无结构信息。
BiLSTM: 使用前向LSTM和后向LSTM最后时刻的隐状态向量拼接作为句子表示[5,7],该方式包含序列信息,无结构信息。
Tree-LSTM: 使用Kai[2]提出的Child-Sum Tree-LSTM,利用依存结构树进行语义组合计算,将根节点获得的隐状态向量视为句子的表示,该方式包含结构信息。
在复述识别任务上,我们的模型与5种模型在测试集上的评测结果如表4所示。
表4 在复述识别上与已有序列化和树结构语义组合方式的比较结果
从表4的结果可以看出,在无结构信息的4种方法中,本文设计的Baseline取得了最好的结果,其F1和Accuracy达到79.88%和77.57%。分析其原因在于本文的模型中使用了图神经网络,当处理较长的句子时,每个节点能从较远节点收集语义信息更新自身表示,能捕捉较长句子的上下文信息。与未利用结构信息的模型中最好精度的Baseline相比,本文的模型在Baseline的基础上加入依存结构优化目标,在F1和Accuracy上分别提高了1.96和1.97个百分点。实验结果表明利用句法结构信息进行语义组合计算的有效性。与利用结构信息的Tree-LSTM相比,本文模型在F1和Accuracy低于Tree-LSTM 0.18和0.68个百分点。分析其原因是Tree-LSTM直接使用了我们视为ground truth的依存标签,而本文模型使用的是依存标签训练之后依存句法分析模块产生的依存结构,其依存分析精度没有ground truth高。
已有的基于结构的Tree-LSTM每次只能处理一个句对,本文采用基于图的依存分析和图网络语义组合方法,可以实现对多个句对的批处理,从而解决已有模型预测速度慢的问题。我们在不同长度的句子上对模型的预测速度进行评测,并与Tree-LSTM进行对比,评测结果如图5所示。句长在 1~5和6~10时我们模型的预测速度是Tree-LSTM 的30倍;在句长为11~15时,速度是Tree-LSTM的20倍。这些结果显示本文提出的模型在预测速度上较Tree-LSTM有显著优势。
图 5 句长对模型预测速度的影响
以上分析结果显示,本文提出的基于依存句法分析和复述识别的联合模型,采用基于图神经网络的语义组合方法,可以有效利用句法结构信息改进语义组合计算,提高复述识别系统的精度和计算速度。
3.5 结构信息有效性分析
我们分析了模型中结构信息对最终复述识别精度的影响,实验结果展示在表5中。从表5的实验结果可以看出,基于图神经网络引入依存结构信息,有效改进了复述识别的性能。模型(1)没有使用结构信息,仅使用了复述识别的目标函数进行优化,未考虑句子的句法结构,复述识别的Accuracy达到77.57%。模型(2)引入了句法目标训练模型参数,采用了本文提出的硬结构信息,复述识别Accuracy达到79.15%,对比没有结构信息提高了1.58个百分点,这表明引入句法结构对语义组合的有效性。模型(3)采用了软结构信息,Accuracy达到79.54%,进一步改进了复述识别的性能,同时,实验表明本文提出的软结构依存信息在性能上优于硬结构的方法。最终,实验结果表明,本文提出的基于句法结构进行语义组合计算的方法,可以有效学习句子的语义表示,提高了复述识别系统的精度。
表5 模型融入依存结构信息有效性分析结果
3.6 实例分析
我们在LCQMC的测试集中挑选了一些句对进行进一步分析。使用1-gram计算句子P与句子Q的Bleu值,对于复述识别来说,Bleu很高的非复述句对和Bleu很低的复述句对,都是很难的任务,基于浅层信息的方法很难正确识别,需要深层语义理解才可解决。我们特地选择这样的句对评测我们模型的效果,分析结果如表6所示。
表6 一些复杂的例子在本文模型和Baseline上的表现,“T”表示是复述关系,“F”表示非复述关系。
示例A~B为Bleu较低的复述句对,因此,容易识别为非复述关系。但是本文模型能够正确识别为复述关系,而Baseline错误地识别为非复述关系。这一对比结果表明本文利用句法结构进行语义组合计算的方法可以捕捉句对之间深层的语义相关性,实现正确判断。
示例C~D为Bleu较高的非复述句对,因此,容易识别为复述关系。但是本文模型能够正确识别为非复述关系,而Baseline错误地将其识别为复述关系。这一对比结果表明句法结构更易于解决涉及结构复杂表达的语义理解。
示例E~F是Baseline和本文模型都产生错误的情况。E为Bleu较低的复述句对。我们分析预测错误的原因是句子的表达比较口语化,利用句法分析很难进行正确分析。F为Bleu较高的非复述句对,其中含有相似的词语“语文”和“语文题”,我们分析预测错误的原因是词的语义表示不能有效地区分二者,这使模型错误地认为它们是复述的关系。对于更复杂的情况,句子的语义表示依旧面临很多的问题,例如歧义性以及口语表达。模型可能需要更多的推理信息来区分这些关系并做出正确的决定,例如结合外部知识模型更好地理解词汇和短语语义。
4 总结与展望
本文提出一种依存句法分析和语义组合计算的联合框架,设计了基于图的依存句法分析模型和基于图神经网络语义组合计算模型,利用依存分析给出的带有概率的依存关系结构图,实现软结构的语义组合计算方法。一方面,图模型中的并行计算能够支持训练和预测阶段的批处理,极大地提高计算速度;另一方面,两个任务的联合学习可使语义表示同时学习句法结构和语义的上下文信息,提高复述识别精度。
今后,我们考虑结合预训练模型,如ELMO、BERT,以改进模型性能。同时,探索联合模型中提升依存分析精度的方法,从而进一步提升语义组合计算的精度。