一种基于周围信息的知识图谱嵌入及回复生成方法

文档序号:31546601发布日期:2022-09-17 01:20阅读:205来源:国知局
一种基于周围信息的知识图谱嵌入及回复生成方法

1.本发明属于自然语言处理领域,涉及一种基于周围信息的知识图谱嵌入及回复生成方法。


背景技术:

2.在众多nlp(自然语言处理)任务中,知识图谱正在发挥着越来越重要的作用。知识图谱(knowledge graph),也称为知识库,是一种特殊的网络结构,它以结构化的形式描述客观世界中概念、实体及其之间的关系,将互联网的信息表达成更接近人类认知世界的形式。知识图谱的应用广泛,包括自然语言理解、问答系统和推荐系统等。作为一种应用技术,知识图谱还支持在许多行业上的具体应用。例如,在医学领域,知识图谱可以为药物分析和疾病诊断提供视觉知识表示。然而,在知识图谱的应用中,随着网络容量的爆炸式增长,传统的图结构通常使得知识图谱难以操作。为了更好的使用知识图谱,将知识图谱中的实体和关系嵌入到连续向量空间的知识图谱嵌入(knowledge graph embedding)技术也得到了很大的关注,它可以高效地计算低维空间中实体之间的语义关系,有效地解决了计算复杂性和数据稀疏性的问题。知识图谱嵌入更是将外部知识图谱引入到回复生成模型的桥梁,知识图谱嵌入的效果与回复生成模型的效果直接相关。
3.目前,知识图谱嵌入技术分为基于平移的学习模型、基于张量分解的学习模型和基于神经网络的学习模型。近年来,随着深度学习的发展,基于神经网络的学习模型得到了越来越多的关注。
4.当前大部分知识图谱嵌入技术往往忽视了知识图谱内部丰富的结构性信息,将三元组当作是相互独立的,而一些引入三元组相互关系的模型结构通常会使用大量的参数,导致模型效率较低。此外,一些基于深度学习的知识图谱嵌入模型由于本身的可解释性比较差,导致对于知识图谱内部节点之间的偏序关系没有明显的限制。


技术实现要素:

5.本发明要解决的技术问题为:克服现有技术的不足,提供一种基于周围信息的知识图谱嵌入及回复生成方法,引入知识图谱中的拓扑结构信息,提高三元组之间的交互性,保留周围三元组中的序列信息,从而提升生成知识图谱嵌入的效果和基于知识图谱的回复生成效果。
6.本发明解决上述技术问题的技术方案之一为:
7.一种基于周围信息的知识图谱嵌入生成方法,包括以下步骤:
8.步骤1:提取知识图谱中的头节点周围三元组n(h),使用非对称周围信息编码机制对 n(h)进行编码,得到头节点周围三元组的编码;
9.具体步骤如下:
10.(11)提取头节点周围三元组n(h)={(hn,rn)|(hn,rn,h)∈g}∪{(tn,r
′n)|(h,rn,tn)∈g} 表示头节点h的周围三元组情况,其中r
′n是为了保证周围三元组的时序关系而基
于周围三元组关系节点rn新建立的关系节点,与周围三元组关系节点rn对应;g表示知识图谱的三元组集合,hn表示周围三元组头节点;n表示周围三元组序号;
11.(12)非对称周围信息编码机制包括lstm序列编码和线性门控机制;
12.lstm序列编码的两个时间步的输入分别为嵌入hi和ri,头节点h的嵌入作为lstm结构的初始细胞状态和隐藏状态参与计算,lstm序列编码的输出为第二个lstm时间步的细胞状态和隐藏状态cell2和hidd2;
13.cell2,hidd2=lstm(h,hi,ri)
14.随后使用线性门控机制对于lstm序列编码的输出cell2和hidd2作进一步的处理,将 cell2和hidd2拼接,然后使用基于sigmoid门控机制分别确定对于cell2和hidd2需要保留的信息c
′1和h
′1以及对于cell2和hidd2需要更新的信息u1,再将得到的向量c
′1,h
′1和u1进行拼接;并使用线性层将拼接后的三个向量c
′1,h
′1和u1映射到知识图谱嵌入所在的维度,映射到知识图谱嵌入所在的维度,w
update
,b
update
,均为可以学习的线性层参数,线性门控机制映射和拼接的计算公式如下:
[0015][0016][0017][0018]
其中:
[0019]
x

update
=tanh(w
update
·
[cell2,hidd2]+b
update
)
[0020][0021]
得到头节点周围三元组的编码ei,其中w和b是可以学习的线性参数。
[0022]
e1=relu(w
·
[h
′1;c
′1;u1]+b)+hidd2+cell2[0023]
头节点周围三元组编码ei所组成的集合记为n

(h),即头节点周围三元组编码集合;
[0024]
然后在头节点周围三元组编码集合n

(h)中添加零向量,通过非对称周围信息编码机制保留周围三元组的序列关系;
[0025]
步骤2、基于步骤1中得到的头节点周围三元组编码集合n

(h),采用线性门控机制对 n

(h)进行降维,得到降维后的头节点周围信息
[0026]
步骤3、采用线性权重注意力机制将三元组中头节点嵌入和降维后的头节点周围信息进行整合,获得引入周围信息的头节点表示h
context

[0027]
步骤4、采用门控注意力机制将三元组中的关系节点与邻居头节点进行整合,计算得到关系节点周围头节点整合信息使用门控注意力机制将关系节点与邻居尾节点进行整合,计算得到关系节点周围尾节点整合信息将和进行聚合,得到引入周围信息的关系节点表示r
context

[0028]
步骤5、使用基于卷积操作和残差网络的主编码结构,对步骤3算得的引入了周围信息的头节点表示h
context
和步骤4算得的引入了周围信息的关系节点r
context
表示进行编码,编码过程中基于输入的交互信息,得到对于尾节点嵌入t的编码拟合t


[0029]
所述基于卷积操作和残差网络的主编码结构的实现过程具体如下:
[0030]
(51)将引入周围信息的头节点表示h
context
和引入周围信息的关系节点r
context
分别扩展至二维,得到h

context
和r

context
,再对h

context
和r

context
进行上下拼接,得到张量 [h

context
||r

context
];
[0031]
(52)采用并行处理的方式使用多个卷积结构分别对张量[h

contex
t||r

context
]进行处理,即分别使用4个核函数尺寸分别为(1
×
1),(3
×
3),(5
×
5),(5
×
5)的卷积结构对于 [h

context
||r

context
]进行处理得到a1-a4,每个卷积结构包含的核函数数量均是32;
[0032]
a1=w1*[h

context
||r

context
]
[0033]
a2=w2*[h

context
||r

context
]
[0034]
a3=w3*[h

context
||r

context
]
[0035]
a4=w4*[h

context
||r

context
]
[0036]
符号*表示卷积化操作,w1、w2、w3、w4表示具有不同核函数尺寸的卷积参数,经过不同卷积结构得出的信息为a1,a2,a3和a4;
[0037]
(53)将编码输入信息[h

context
||r

context
]沿着所在的第三个维度重复多次得到a0,保证 a0和其他经过处理卷积层处理过后的张量ai等维度相同;采用残差神经网络将其他经过处理过后的张量信息ai与未经处理的输入a0进行整合,得到张量a;
[0038][0039]
再对张量a进行拉平操作,并使用线性层将张量a映射到知识图谱嵌入所在的维度,得到对于尾节点嵌入的编码拟合t


[0040]
t

=relu(w
main
(flatten(a))+b
main
)
[0041]
将基于卷积操作和残差网络的主结构编码方法记为:main_encoder,即:t

= main_encoder(h
context
,r
context
);b
main
是线性层的偏置量,w
main
是线性转换矩阵;
[0042]
步骤6:将t

与尾节点嵌入t的点积作为最终的得分函数,定义损失函数并进行训练,得到最终的知识图谱嵌入表示。
[0043]
所述步骤2具体包括以下步骤:
[0044]
(21)为候选更新信息,具体的计算公式如下,其中d为知识图谱嵌入维度,d

<d,表示经过降维后,经过降维的头节点周围信息所在的维度:
[0045][0046]
(22)为更新门,使用sigmoid激活函数将其映射到0和1之间,决定最终更新的信息量占比,
[0047][0048]
(23)将和点乘,即为经过降维后的头节点周围信息
[0049][0050]
随后会计算经过降维的头节点周围信息和头节点嵌入h的交互性作为头节点周围信息的权重,上述降维的过程突出头节点本身嵌入在计算权重步骤中的重要性。
[0051]
所述步骤3具体实现如下:
[0052]
线性权重注意力机制的具体步骤如下:
[0053]
(31)将经过降维后的头节点周围信息与头节点嵌入h进行拼接,并使用线性层和 softmax激活函数计算头节点周围信息的权重;
[0054][0055]
leaky_relu是relu激活函数的一种变体,h指代头节点嵌入,和均为学习的参数,维度分别为r1×
(d+d

)
和r,主要作用是对降维后的头节点周围信息和头节点嵌入进行整合,并计算周围信息与头节点嵌入的相关性作为权重weight;
[0056]
(32)依据上个步骤计算出的权重weight对头节点周围三元组编码集合n

(h)进行整合
[0057]
contexth=weight
×n′
(h)=weight1×
e1+weight2×
e2+weight3×
e3[0058]
contexth为整合后的头节点周围信息表示;
[0059]
(33)使用基于sigmoid门控机制将头节点嵌入与整合后的头节点周围信息contexth进行处理,imp_gateh代表了contexth相对于头节点嵌入的重要程度,相对于头节点嵌入的重要程度,均为能够学习的线性参数;
[0060][0061]
最终引入了周围信息的头节点表示h
context
为:
[0062]hcontext
=imp_gateh⊙
x
context
+h。
[0063]
所述步骤4具体实现如下:
[0064]
所述采用门控注意力机制将三元组中的关系节点与邻居头节点进行计算得到关系节点周围头节点整合信息具体步骤如下:
[0065]
(41)提取关系节点周围的头节点,记为:
[0066]
(42)对周围头节点嵌入使用线性门控机制进行降维,具体公式为:
[0067][0068][0069][0070]
和是在训练中要学习的参数,用来计算更新门线性参数和用来计算候选更新状态更新门决定保留多少比例的候选更新状态到最终的结果中,为经过降维后的关系节点周围头节点嵌入表示;
[0071]
(43)使用门控注意力机制对周围邻居头节点嵌入进行整合,具体计算公式如下:
[0072][0073]
[0074]
即为关系节点周围头节点整合信息,线性转换矩阵和偏置量均为学习参数,用来计算关系节点周围头节点嵌入与关系节点嵌入的相关性;
[0075]
所述使用门控注意力机制将关系节点与邻居尾节点进行整合,计算得到关系节点周围尾节点整合信息具体实现如下:
[0076]
(44)提取关系节点周围的尾节点,记为:
[0077]
(45)对周围尾节点嵌入使用线性门控机制进行降维,公式为:
[0078][0079][0080][0081]
和是在训练中需要学习参数,用来计算更新门线性参数和用来计算候选更新状态更新门决定保留多少比例的候选更新状态到最终的结果中,为经过降维后的关系节点周围尾节点嵌入表示;
[0082]
(46)使用门控注意力机制对周围邻居尾节点嵌入进行整合,具体计算公式如下:
[0083][0084][0085]
即为关系节点周围尾节点整合信息,线性转换矩阵和偏置量均为需要学习参数,用来计算关系节点周围尾节点信息与关系节点嵌入的相关性;
[0086]
所述将和进行聚合,得到充分考虑周围信息的关系节点表示r
context
具体步骤如下:
[0087]
(47)结合关系节点周围头节点整合信息和尾节点整合信息,得到关系节点的周围信息表示contextr,
[0088][0089]
线性参数w
fusion
∈rd×
2d
,b
fusion
∈rd用于融合关系节点周围头节点信息和尾节点信息,得出关系节点的周围信息表示contextr;
[0090]
(48)计算显著性门,决定将多少比例的关系节点的周围信息表示contextr加入关系节点嵌入;
[0091][0092]
和用来计算关系节点周围信息的显著性门,代表关系节点周围信息表示contextr相对于关系节点r本身嵌入信息的重要程度,决定将多少周围信
息引入关系节点;
[0093]
(49)最终引入了周围信息的关系节点表示为:
[0094]rcontext
=imp_gater⊙
contextr+r。
[0095]
所述步骤6中,t

被当作对于真实尾节点嵌入t的估计,将其与尾节点嵌入t的点积作为最终的得分函数,定义损失函数并进行训练,得到最终的知识图谱嵌入表示的具体步骤如下:
[0096]
(61)定义得分函数,并使用sigmoid激活函数将其转化为0和1之间的概率分布:
[0097]
t

=main_encoder(h
context
,r
context
)
[0098]
p(ti|h,r)=sigmoid(t

·
ti)
[0099]hcontext
和r
context
分别为引入了周围信息的头节点和关系节点表示,main_encoder为基于卷积神经网络和残差神经网络的主编码结构;
[0100]
(62)使用负采样和双塔模型策略,基于深度学习框架进行训练:在训练过程中,采用了负采样的方法,将训练任务转化为二分类任务,真实存在的三元组的标签为1,而随机替换头节点或者尾节点生成的伪三元组的标签为0,伪三元组的集合为g

,即:即:
[0101]
损失函数理解为2元交叉熵:
[0102][0103]
其中yi为三元组的标签,yi∈{0,1},如果三元组真实存在,yi=1,否则yi=0,经过训练之后,得到基于周围信息的知识图谱嵌入。
[0104]
本发明的技术解决方案之二,一种基于周围信息的知识图谱嵌入的回复生成方法,包括以下步骤:
[0105]
步骤1、对使用的知识图谱重新学习知识图谱嵌入,利用技术方案之一所述的基于周围信息的知识图谱嵌入方法对conceptnet知识图谱进行嵌入学习,其中选择一个中文知识图谱和一个英文知识图谱,计算得到中文知识图谱和英文的知识图谱的嵌入信息;
[0106]
步骤2、对中文知识图谱和英文知识图谱中的相关三元组进行筛选,构建基于知识图谱的回复生成模型的输入文本序列,为每一个查询消息筛选出一定数量的知识图谱相关三元组;
[0107]
具体如下:给定查询消息x,对于查询消息中的每个单词xi,如果xi∈e,e代表知识图谱中的实体集合,把以xi为头节点或者尾节点的所有三元组集合n(xi)={(xi,r,t)|(xi,r,t)∈ g}∪{(h,r,xi)|(xi,r,t)∈g}作为候选三元组加入候选三元组集合f,候选三元组集合f中包含 l个候选三元组;再将三元组中的头节点、关系节点和尾节点的所述知识图谱的嵌入信息进行拼接,得到候选三元组事实嵌入信息r为实数集;
[0108]de
和dr分别为实体节点和关系节点的知识图谱嵌入维度,在实验中均定为100,l表示候选三元组集合f中的三元组数量;
[0109]
步骤3:基于步骤2得到的候选三元组集合f,构建基于知识图谱的回复生成模型,
[0110]
(1)基于知识图谱的回复生成模型中的训练集s中每个数据由三个元素组成,查询消息x=(x1,x2,x3,...,xn),回复消息y=(y1,y2,y3,...,ym)和候选三元组集合f={f1,...,fl
},回复生成任务的训练目标在于最大化回复消息的后验概率,即为: x1,x2,x3,...,xn表示查询消息中的n个单词;y1,y2,y3,...,ym表示回复消息中的m个单词; f1,...,f
l
表示l个相关三元组;
[0111]
(2)编码阶段中,基于门控循环单元gru的双向编码机制对于查询消息进行编码,如下:
[0112][0113][0114]
其中x
t
表示单词x
t
的词嵌入,将前向gru和反向gru的编码结果的词嵌入,将前向gru和反向gru的编码结果进行拼接作为单词x
t
的编码信息,即为经过双向门控循环单元gru编码之后的查询编码信息为h={h1,h2,h3,...,hn},其中h
t
∈rd; h1,h2,h3,...,hn表示n个查询编码;
[0115]
(3)在解码阶段,使用基于gru的解码器进行解码,解码步骤如下:
[0116]
首先,计算三元组集合f的初始权重z0:
[0117]
z0=softmax(tanh(f

·
wf)
·
tanh(hn·
w+b)
t
)
[0118]hn
表示查询信息中最后一个单词实体基于双向gru的编码表示, w∈rd×
l
,b表示线性转换偏置量,均为可以学习的参数,初始权重z0表示候选三元组集合f 中三元组的初始权重,z0∈r
l
,初始权重z0和f

在加权后应用于解码结构的初始隐藏状态的计算;
[0119]
计算fz、和步骤如下:
[0120]fz
=z0·f′
[0121][0122][0123]fz
为f

经过初始权重z0整合之后得到的向量表示,w
init
是可以学习的线性转换参数,表示解码阶段的初始隐藏状态,解码阶段采用注意力机制,逐个单词生成答复;解码阶段第t个时间步骤的隐藏状态,表示解码阶段第(t-1)个时间步骤的隐藏状态,1)个时间步骤的隐藏状态,表示第(t-1)时间步骤生成单词的信息,y
t-1
表示上个时间步骤生成单词的词向量信息,表示上个时间步骤生成单词的实体知识图谱嵌入,表示在复制查询单词的情况下,所复制单词对应的编码向量;c
t-1
表示对于查询编码信息h进行注意力聚合之后的向量,c
t-1
采用第(t-1)步骤的隐藏状态与查询编码信息h进行权重计算得到;
[0124]
解码阶段生成三种单词,即词典中的单词、知识图谱实体单词和查询消息中使用复制机制得到的单词;三种单词通过三种概率分布表示,词典中的单词的概率分布p
w,t
,知识图谱实体单词的概率分布z
t
和查询消息中使用复制机制得到的单词的概率分布p
c,t

[0125]
词典中的单词的概率分布p
w,t
的计算过程如公式所示,
[0126][0127]
w1,w2,b1,b2均能够学习的参数,ct是指在第t个时间步骤对于查询编码信息采用注意力机制加权后得到的结果,p
w,t
的维度为rv,v为词典中单词的数量;本发明中使用了elu激活函数;
[0128]
知识图谱实体单词的概率分布z
t
如下,基于知识图谱事实嵌入f和解码阶段的gru隐藏状态来得到相关三元组候选集合上的概率分布,计算过程中,使用线性层和tanh激活函数将知识图谱事实信息和解码阶段当前时间步骤t的gru隐藏状态信息映射到r
l
向量空间,wz, bz,w
yz
和b
yz
都是能够学习的参数,z
t
∈r
l
[0129][0130]
查询消息中使用复制机制得到的单词的概率分布p
c,t
,w
x
,b
x
,w
yx
和b
yx
都是能够学习的线性参数
[0131][0132]
最后将三个概率分布进行整合,采用多层感知机mlp,将和ct中的信息进行整合并使用softmax激活函数将其映射到三维,分别表示从词典、真实图谱和查询信息复制的三个概率分布的权重,具体的权重计算过程和整合的过程如下公式所示:
[0133][0134]
p
t
=γ1⊙
p
w,t
+γ2⊙zt
+γ3⊙
p
c,t
[0135]
得到的p
t
即为最终采用的概率分布。
[0136]
本发明与现有技术相比的优点在于:本发明公开了一种基于周围信息的知识图谱嵌入及回复生成方法,使用非对称周围信息编码机制引入知识图谱节点周围信息,使用基于卷积操作和残差网络的主编码结构计算三元组得分,生成知识图谱嵌入,再应用在基于知识图谱的回复生成模型中。本发明的贡献主要有三个方面:
[0137]
(1)本发明全面引入知识图谱节点周围信息,增强知识图谱三元组之间的交互。但是由于周围信息编码和整合机制主要使用了基于线性门控机制的模型,在保证模型效果的同时,只引入了少量额外参数。此外,在将周围信息与中心头节点或关系节点信息进行整合时,采用了门控结构等方法,保证周围信息相比于中心信息的重要性适当,强化存在语义关系的相关节点知识图谱嵌入的相关性,提高生成知识图谱嵌入的效果。
[0138]
(2)本发明保证周围三元组的序列关系。在引入头节点周围三元组的过程中,非对称周围信息编码机制保证了周围三元组的时序性。因为三元组的时序性直接决定了三元组是否成立,一旦改变时序信息三元组的得分函数会发生很大的变化。最终通过对周围三元组内部节点的序列关系进行捕捉,用比较少的参数对周围三元组实现了相对有效率的信息提取。
[0139]
(3)本发明增强融合周围信息的头节点和关系节点表示的交互性,并使用残差神经网络。当前大部分基于卷积神经网络的知识图谱嵌入模型倾向于将二维输入左右拼接,而基于卷积操作和残差网络的主编码结构将输入当作两个频道进行上下拼接。此外,卷积化操作虽然能够起到提取有效信息的作用,但是不可避免也会丢失一些重要的原始信息,而残差神经网络将原始信息引入到了最终的结果之中能够保证对于头节点和关系节点嵌
入中的原始信息的有效处理。最终充分利用卷积网络和残差网络,增强头节点嵌入和关系节点嵌入之间的交互,更好得对尾节点嵌入进行拟合。
附图说明
[0140]
图1为本发明提出的知识图谱嵌入生成方法整体过程;
[0141]
图2非对称周围信息编码机制示意图;
[0142]
图3周围信息与头节点嵌入整合过程示意图;
[0143]
图4基于卷积操作和残差网络的主编码结构;
[0144]
图5基于知识图谱的回复生成模型。
具体实施方式
[0145]
下面结合附图和实例对本发明进一步说明。
[0146]
给定知识图谱,知识图嵌入旨在将知识图谱中的节点(包括实体节点和关系节点)映射到密集的低特征空间,该空间能够尽可能多的保留图的结构和属性信息,并有助于实体和关系的计算。本发明首先提出一种非对称周围信息编码机制用于对周围三元组进行编码,并保留三元组的时序性,并使用基于卷积操作和残差网络的主编码结构对考虑了周围信息的头节点和关系节点表示进行编码,提高三元组之间的交互性从而提升生成知识图谱嵌入的效果。最终将其应用在中英文回复生成领域。知识图谱的三元组集合g,三元组由头节点h,关系节点r和尾节点t组成。
[0147]
本发明时一种基于周围信息的知识图谱嵌入及回复生成模型,主要分为以下11个步骤。其中,基于周围信息的知识图谱嵌入方法如图1所示,回复生成方法如图5所示。
[0148]
步骤(1)、使用非对称周围信息编码机制对三元组中头节点周围三元组进行编码,具体步骤如下:
[0149]
知识图谱看成是多个三元组的集合:g={(h,r,t)},其中r∈r,h,t∈e。每个三元组看作一个从头节点到关系节点再到尾节点的有向图,并且头节点或者尾节点可能和多个关系节点相连接,因而知识图谱就有了一定的拓扑结构。知识图谱嵌入的目的就是给三元组中的每个节点都学习一个向量化的表示。对于三元组(h,r,t)的头节点h,它不但是该三元组的头节点,同时也可能是其他三元组的头节点和尾节点。n(h)={(hn,rn)|(hn,rn,h)∈g}∪ {(tn,r
′n)|(h,rn,tn)∈g}表示头节点h的周围三元组,其中r
′n是为了保证周围三元组的时序关系而基于周围三元组关系节点rn新建立的关系节点,与周围三元组关系节点rn对应。步骤(1) 使用非对称周围信息编码机制对头节点周围三元组进行编码计算。非对称周围信息编码模型包含两部分:lstm序列编码和门控线性模型。lstm序列编码包含两个时间步骤。如图2 左侧所示。当头节点h是要引入的三元组的尾节点时,例如(h1,r1,h),lstm序列编码的两个时间步的输入分别为嵌入h1和r1,中心头节点h的嵌入作为lstm结构的初始细胞状态和隐藏状态参与计算。而当头节点h是要引入的周围三元组的头节点时,例如(h,r3,h3),实际引入的三元组为(h3,r
′3,h),其中新建立的关系r
′3可以认为是原本关系r3的反向关系,例如关系“包含”和“属于”就互为反向关系,此时,lstm序列编码输入分别为嵌入h3和r
′3,中心头节点h的嵌入仍然作为lstm结构的初始细胞状态和隐藏状态参与计算,通过这种方式保证周围三元组的非对称性。lstm序列编码的输出为第二个lstm时间步的细胞状态
和隐藏状态cell2和hidd2。下面公式以周围三元组(h1,r1,h)为例。
[0150]
cell2,hidd2=lstm(h,h1,r1)
[0151]
随后使用线性门控机制对于lstm序列编码的输出cell2和hidd2做进一步的处理,如图 2中的右侧所示。首先将二者拼接之后,会使用基于sigmoid门控机制分别确定对于cell2和 hidd2要保留的信息c
′1和h
′1以及对于cell2和hidd2要更新的信息u1,随后将得到的向量c
′1,h
′1和u1进行拼接,并使用线性层将其映射到知识图谱嵌入所在的维度,进行拼接,并使用线性层将其映射到知识图谱嵌入所在的维度,w
update
,b
update
,均为可以学习的线性层参数。具体计算过程如下公式所示:
[0152][0153][0154]
x

update
=tanh(w
update
·
[cell2,hidd2]+b
update
)
[0155][0156][0157]
e1=relu(w
·
[h
′1;c
′1;u1]+b)+hidd2+cell2[0158]
σ表示sigmoid激活函数,w
update
,,b
update
,均为可以学习的参数,d为知识图谱嵌入维度。线性参数和用来计算对于cell2的遗忘门c
gate
。c
gate
中的元素范围在0 和1之间,表示在细胞状态cell2中要保留的信息占比,c
′1表示在向量cell2中最终要保留的部分信息,符号

表示将向量中对应位置元素逐个相乘。同样的,线性参数和用来计算对于hidd2的遗忘门h
gate
。x

update
表示要更新添加的候选信息,在经过门控机制处理之后,u1表示最终要更新的部分信息。在进行拼接和线性整合之后,e1是对头节点周围三元组(h1,r1,h)的编码表示,其中w和b是可以学习的线性参数。在门控线性模型中也参考了残差网络结构,将门控线性结构的输入直接整合到了输出上。头节点周围三元组编码ei所组成的集合记为n

(h),即头节点周围三元组编码集合。
[0159]
步骤(2)、使用线性门控机制对周围信息进行降维,防止在后续与中心节点信息进行整合时淹没中心头节的信息,具体步骤如下:
[0160]
为了保证在大型知识图谱中海量的周围信息不会淹没头节点h本身的嵌入信息,在本章节中尝试了多种方法在向量整合时在一定程度上降低周围节点的影响。首先会使用线性门控机制对头节点周围的三元组编码嵌入信息n

(h)再进行一次筛选和降维,如图3中的左侧所示,通过tanh激活函数和sigmoid激活函数分别计算要更新的信息量和最终更新的信息量占比;
[0161][0162]
[0163][0164]
其中d为知识图谱嵌入维度,d

<d,表示经过降维后,头节点周围信息表示所在的维度。分别是用来计算候选更新向量和更新门随后使用注意力机制计算头节点周围三元组的权重,为经过降维的头节点周围信息。
[0165]
步骤(3)、使用线性权重注意力机制将头节点嵌入和经过降维的头节点周围信息进行整合,在整合的过程中同样会特别注意周围信息和头节点的重要性占比,具体步骤如下:
[0166]
将经过降维的头节点周围信息与头节点嵌入h进行拼接,并使用线性层与softmax激活函数计算周围三元组权重,如图3中的右侧所示,并根据计算出的权重对周围信息编码进行整合。
[0167][0168]
contexth=weight
×n′
(h)=weight1×
e1+weight2×
e2+weight3×
e3[0169]
leaky_relu是relu激活函数的一种变体,h指代头节点嵌入,和均为可以学习的参数,维度分别为r1×
(d+d

)
和r,主要作用是对经过降维的头节点周围信息和头节点嵌入进行整合,并计算相关性。使用经过softmax激活函数产生的权重对于头节点周围三元组编码集合n

(h)进行整合,得到整合后的头节点周围信息表示contexth。在上述步骤中,值得注意的是,虽然softmax激活函数会保证生成的周围三元组权重weight的和为1,但是在实际操作中,对于n

(h),除了包含头节点周围的三元组编码之外,还会添加零向量。因此,实际上注意力模型可以根据情况的需要给n

(h)中的零向量分配比较大的权重,使得实际上有效权重之和小于1,这样做有助于模型在训练中调整周围信息的重要性,避免在周围三元组数量过多的条件下加入过量无效噪声,影响模型效果。随后使用基于sigmoid门控机制将头节点信息与整合后的头节点周围信息表示contexth进行整合,imp_gateh代表了 contexth相对于头节点嵌入的重要程度。均为可以学习的线性参数。
[0170][0171]
最终引入了周围信息的头节点表示h
context
为,见图1中的h
context

[0172]hcontext
=imp_gateh⊙
x
context
+h
[0173]
步骤(4)、在对关系节点周围信息提取整合中,使用门控注意力机制将关系节点与邻居头节点进行整合,具体步骤如下:
[0174]
通常,关系节点r同时是很多三元组的关系节点,将关系节点周围的头节点和尾节点分别进行整合,可以得到关于关系节点的一些性质信息。首先对周围头节点嵌入使用线性门控机制进行降维,关系节点周围的头节点集合记为:
[0175]
[0176][0177][0178]
和是在训练中要学习的参数,用来计算更新门线性参数和用来计算候选更新状态用来计算候选更新状态为经过降维后的关系节点周围头节点嵌入表示。随后使用与整合头节点周围信息类似的注意力机制,对关系节点周围头节点信息进行整合。
[0179][0180][0181]
即为关系节点周围头节点整合信息,线性转换矩阵和偏置量均为可以学习的参数,被用来计算周围头节点信息与关系节点嵌入的相关性。
[0182]
步骤(5)、在对关系节点周围信息提取整合中,使用门控注意力机制将关系节点与邻居尾节点进行整合,具体步骤如下:
[0183]
与步骤(4)相同,首先对关系节点周围尾节点信息使用线性门控机制进行降维,关系节点周围尾节点集合记为:随后使用注意力机制,对关系节点周围尾节点信息进行整合。即为关系节点周围尾节点整合信息。
[0184]
步骤(6)、在对关系节点周围信息提取整合中,结合关系节点周围头节点整合信息和尾节点整合信息,计算引入了周围信息的关系节点表示,具体步骤如下:
[0185][0186][0187]
线性参数w
fusion
∈rd×
2d
,b
fusion
∈rd融合关系节点周围头节点信息和尾节点信息,得出关系节点的周围信息表示contextr;
[0188]
最终充分引入了周围信息的关系节点表示为,见图1中的r
context

[0189]rcontext
=imp_gater⊙
contextr+r
[0190]
与引入头节点周围信息相同,同样采用了基于sigmoid门控机制的方式保证周围节点编码信息相对于关系节点嵌入的重要性程度。和用来计算关系节点周围信息的显著性门,代表关系节点周围信息表示contextr相对于关系节点r本身嵌入信息的重要程度,决定将多少周围信息引入中心关系节点。最终r
context
为引入了周围信息的关系节点表示。
[0191]
步骤(7)、在对引入了周围信息的头节点和关系节点表示进行编码时,使用了基于卷积操作和残差网络的主编码结构进行编码,具体步骤如下:
[0192]
将引入周围信息的头节点表示h
context
和引入周围信息的关系节点r
context
分别扩展到二维再进行上下拼接。例如,如果嵌入的维度d为200,首先将h
context
和r
context
的嵌入均变
形为(10
×
20
×
1)的张量h

context
和r

context
,最后两个张量在第三个维度上进行拼接,得到尺寸为(10
×
20
×
2)的张量。这样做的好处在于在进行卷积化操作时,无论核函数窗口移动到哪里都能够计算头节点嵌入和关系节点嵌入的交互信息。主编码机制对h

context
和r

context
进行编码处理得到t

来对尾节点嵌入t进行拟合,三元组的得分函数为t

与t的点积。
[0193]
该结构采用并行处理的方式使用多个卷积层分别对上下拼接h

context
和r

context
得到的张量[h

context
||r

context
]进行处理,之后再将处理过后的结果进行拼接。具体来说分别使用了4 个核函数尺寸分别为(1
×
1),(3
×
3),(5
×
5),(5
×
5)的卷积结构对于[h

context
||r

context
]进行处理,每个卷积结构包含的核函数数量都是32。如此之外,还会采用类似残差神经网络的结构,将编码结构输入和其他处理后所得的结果整合在一起。
[0194]
a1=w1*[h

context
||r

context
]
[0195]
a2=w2*[h

context
||r

context
]
[0196]
a3=w3*[h

context
||r

context
]
[0197]
a4=w4*[h

context
||r

context
]
[0198]
符号*表示卷积化操作,wi表示具有不同核函数尺寸的卷积化操作,经过不同卷积层得出的信息为a1,a2,a3和a4。除此之外,将编码输入信息[h

context
||r

context
]沿着频道所在的维度重复多次得到a0,保证a0和其他经过处理卷积层处理过后的张量ai等维度相同且重要性上相当。在这里采用了残差神经网络机制,将其他经过处理过后的张量信息ai与未经处理原始信息a0进行整合。
[0199][0200]
随后会对张量a进行拉平操作,并使用线性层将其映射到知识图谱嵌入所在的维度。整体过程如图4所示。
[0201]
t

=relu(w
main
(flatten(a))+b
main
)
[0202]
t

会被当作对于真实尾节点嵌入t的估计,随后会将其与尾节点嵌入t的点积作为最终的得分函数。在这里把基于卷积神经网络和残差网络的编码方法记为:main_encoder,即: t

=main_encoder(h
context
,r
context
),b
main
是线性层的偏置量,w
main
是线性转换矩阵;。
[0203]
步骤(8)、定义基于周围信息的知识图谱嵌入学习模型的损失函数并进行训练,具体步骤如下:
[0204]
在训练过程中,采用了负采样的方法,将训练任务转化为二分类任务,真实存在的三元组的标签为1,而随机替换头节点或者尾节点生成的伪三元组的标签为0,伪三元组的集合为g

,即:,即:
[0205]
g为真实三元组集合。在训练过程中,针对知识图谱g中的每个三元组,都会生成1000 个伪三元组。需要注意的是,由于知识图谱中存在1-n型的关系,在生成伪三元组时不能够完全随机替换,而是要剔除掉那些存在于g中的三元组。主编码函数在对h
context
和r
context
进行编码得到t

之后会计算与真实尾节点嵌入t的点积,并使用sigmoid激活函数将其转化为 0到1之间的概率分布。模型的损失函数理解为2元交叉熵:
[0206][0207]
其中yi为三元组的标签,yi∈{0,1},如果三元组真实存在,那么yi=1,否则yi=0, n=1001,代表对于g中每个真实存在的三元组都生成了1000个伪三元组进行辅助训练。 p(ti|h,r)表示三元组(h,r,ti)为真实存在三元组的概率:
[0208]
t

=main_encoder(h
context
,r
context
)
[0209]
p(ti|h,r)=sigmoid(t

·
ti)
[0210]hcontex
t和r
context
分别为引入了周围信息的头节点和关系节点表示,main_encoder为基于卷积操作和残差神经网络的主编码结构。在这里也很容易看出,模型采用了双塔结构,编码结构只对(h,r)进行处理,(h,r)与ti的交互主要体现在点积和二元概率分布的计算上。虽然双塔结构模型限制了三元组节点之间的交互性,但是大大提高了计算效率,可以分别对(h,r) 和ti单独进行处理。
[0211]
步骤(9)、对使用的知识图谱重新学习知识图谱嵌入,利用权利要求1所述的基于周围信息的知识图谱嵌入方法对conceptnet知识图谱进行嵌入学习,其中选择一个中文知识图谱和一个英文知识图谱,计算得到中文知识图谱和英文的知识图谱的嵌入信息;
[0212]
步骤(10)、对中文知识图谱和英文知识图谱中的相关三元组进行筛选,构建基于知识图谱的回复生成模型的输入文本序列,为每一个查询消息筛选出一定数量的知识图谱相关三元组,
[0213]
具体如下:给定查询消息x,对于查询消息中的每个单词xi,如果xi∈e,e代表知识图谱中的实体集合,把以xi为头节点或者尾节点的所有三元组集合n(xi)={(xi,r,t)|(xi,r,t)∈ g}∪{(h,r,xi)|(xi,r,t)∈g}作为候选三元组加入候选三元组集合f,候选三元组集合f中包含 l个候选三元组;再将三元组中的头节点、关系节点和尾节点的所述知识图谱的嵌入信息进行拼接,得到候选三元组事实嵌入信息r为实数集;
[0214]de
和dr分别为实体节点和关系节点的知识图谱嵌入维度,在实验中均定为100,l表示三元组集合f中的三元组数量;
[0215]
步骤(11):基于步骤2得到的候选三元组集合f,构建基于知识图谱的回复生成模型,
[0216]
(1)基于知识图谱的回复生成模型中的训练集s中每个数据由三个元素组成,查询消息x=(x1,x2,x3,...,xn),回复消息y=(y1,y2,y3,...,ym)和候选三元组集合f={f1,...,f
l
},回复生成任务的训练目标在于最大化回复消息的后验概率,即为: x1,x2,x3,...,xn表示查询消息中的n个单词;y1,y2,y3,...,ym表示回复消息中的m个单词; f1,...,f
l
表示l个相关三元组;
[0217]
(2)编码阶段中,基于gru(门控循环单元)的双向编码机制对于查询消息进行编码,如下:
[0218][0219]
[0220]
其中x
t
表示单词x
t
的词嵌入,将前向gru和反向gru的编码结果的词嵌入,将前向gru和反向gru的编码结果进行拼接作为单词x
t
的编码信息,即为经过双向 gru(门控循环单元)编码之后的查询编码信息为h={h1,h2,h3,...,hn},其中h
t
∈rd; h1,h2,h3,...,hn表示n个查询编码;
[0221]
(3)在解码阶段,使用基于gru的解码器进行解码,解码步骤如下:
[0222]
首先,计算三元组集合f的初始权重z0:
[0223]
z0=softmax(tanh(f

·
wf)
·
tanh(hn·
w+b)
t
)
[0224]hn
表示查询信息中最后一个单词实体基于双向gru的编码表示, w∈rd×
l
,b表示线性转换偏置量,均为可以学习的参数,初始权重z0表示候选三元组集合f 中三元组的初始权重,z0∈r
l
,初始权重z0和f

在加权后应用于解码结构的初始隐藏状态的计算;
[0225]
计算fz、和步骤如下
[0226]fz
=z0·f′
[0227][0228][0229]fz
为f

经过初始权重z0整合之后得到的向量表示,w
init
是可以学习的线性转换参数,表示解码阶段的初始隐藏状态,解码阶段采用注意力机制,逐个单词生成答复;解码阶段第t个时间步骤的隐藏状态,表示解码阶段第(t-1)个时间步骤的隐藏状态,1)个时间步骤的隐藏状态,表示第(t-1)时间步骤生成单词的信息,y
t-1
表示上个时间步骤生成单词的词向量信息,表示上个时间步骤生成单词的实体知识图谱嵌入,表示在复制查询单词的情况下,所复制单词对应的编码向量;c
t-1
表示对于查询编码信息h进行注意力聚合之后的向量,c
t-1
采用第(t-1)步骤的隐藏状态与查询编码信息h进行权重计算得到;
[0230]
解码阶段生成三种单词,即词典中的单词、知识图谱实体单词和查询消息中使用复制机制得到的单词;三种单词通过三种概率分布表示,词典中的单词的概率分布p
w,t
,知识图谱实体单词的概率分布z
t
和查询消息中使用复制机制得到的单词的概率分布p
c,t

[0231]
词典中的单词的概率分布p
w,t
的计算过程如公式所示,
[0232][0233]
w1,w2,b1,b2均能够学习的参数,c
t
是指在第t个时间步骤对于查询编码信息采用注意力机制加权后得到的结果,p
w,t
的维度为rv,v为词典中单词的数量;本发明中使用了elu激活函数;
[0234]
知识图谱实体单词的概率分布z
t
如下,基于知识图谱事实嵌入f和解码阶段的gru隐藏状态来得到相关三元组候选集合上的概率分布,计算过程中,使用线性层和tanh激活函数将知识图谱事实信息和解码阶段当前时间步骤t的gru隐藏状态信息映射到r
l
向量空
间,wz, bz,w
yz
和b
yz
都是能够学习的参数,z
t
∈r
l

[0235][0236]
查询消息中使用复制机制得到的单词的概率分布p
c,t
,w
x
,b
x
,w
yx
和b
yx
都是能够学习的参数:
[0237][0238]
最后将三个概率分布进行整合,采用多层感知机mlp,将和ct中的信息进行整合并使用softmax激活函数将其映射到三维,分别表示从词典、真实图谱和查询信息复制的三个概率分布的权重,具体的权重计算过程和整合的过程如下公式所示:
[0239][0240]
p
t
=γ1⊙
p
w,t
+γ2⊙zt
+γ3⊙
p
c,t
[0241]
得到的p
t
即为最终采用的概率分布。回复生成整体模型如图5所示。
[0242]
本发明中的知识图谱学习方法命名为asymmetric context aware representation forknowledge graph embedding(acare)。
[0243]
将本发明提出的知识图谱嵌入学习方法在常用知识图谱数据集wn18rr和fb15k-237 进行实验,并与相应数据集上的方法进行了对比。表1、表2分别展示了在wn18rr和fb15k
‑ꢀ
237上的实验结果,从表2中可以看出本发明的知识图谱嵌入学习方法在数据集fb15k-237 上超过了很多现有的方法,达到了很有竞争力的效果,对比的嵌入学习方法不但包含了基础方法,还有一些近几年新提出的常用的方法。特别是对比于一些基于卷积神经网络的方法,如convr和conve,效果的提升证明了本发明采用的知识图谱嵌入学习方法的有效性。对于数据集wn18rr,本发明提出得方法的效果不如在数据集fb15k-237中的结果,但是相对于其他方法,仍然是比较有竞争力的结果。对于在数据集wn18rr结果相对较差的原因主要有以下几个:一是相对于数据集fb15k-237,wn18rr知识图谱包含的三元组数量相对较少,因而知识图谱结构更加简单,在引入周围信息的过程中效果提升的不多。除此之外,由于训练集比较小,引入周围信息的机制可能也得不到充分的训练。二是相对于包含有237 种关系节点的数据集fb15k-237,wn18rr知识图谱只包含有11种关系,知识图谱结构相对更单一,在引入关系节点周围的信息时能起到的提升效果有限。本发明还对知识图谱嵌入学习方法的参数使用量进行了对比,实验中提出的学习方法虽然全面引入了周围信息,但是由于主要使用线性门控机制和轻量化的非对称周围信息编码结构引入周围信息,所使用的参数仍比较少。在表3中,本发明方法与conve的参数数量最接近,但是在知识图谱嵌入的生成效果上,要远远优于同样使用了卷积神经网络的conve。这证明了acare方法在参数使用效率上比较高,在保证生成知识图谱嵌入效果的同时,保证了运行效率,由于使用参数较少,可以较为高效的对大型知识图谱进行处理。
[0244]
本发明将提出的基于知识图谱的回复生成方法与同样使用conceptnet知识图谱的回复生成方法进行对比,这些回复生成方法主要使用了基于transe的知识图谱嵌入学习机制,包括ccm,conkadi和gends。同时也和一些没有使用知识图谱的基础回复生成方法进行了对比包括seq2seq和添加了对于查询编码注意力的版本ats2s。在中文weibo数据集上的实验结果如表4所示,在英文reddit数据集上的实验结果如表5所示,所采用的回复生成
方法与conkadi类似,但是在英文数据集中,bleu-2和bleu-3指标上超过了conkadi。在中文数据集中,bleu-3指标同样超过了conkadi,bleu-2指标也非常接近,无论是在中文数据集还是在英文数据集上都达到了有竞争力的效果。这说明在对知识图谱的应用中,本发明所采用的知识图谱嵌入学习机制更为合理,无论是在中文知识图谱中还是在英文知识图谱中,学习知识图谱嵌入阶段充分考虑时序性周围信息都能够使得下游任务的效果更好。
[0245]
表1嵌入学习方法在wn18rr上的表现
[0246][0247]
表2嵌入学习方法在fb15k-237上的表现
[0248][0249]
表3常见知识图谱嵌入方法参数数量
[0250]
[0251][0252]
表4 weibo数据集实验结果比较
[0253][0254]
表5 reddit数据集实验结果比较
[0255][0256]
以上虽然描述了本发明的具体实施方法,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明原理和实现的前提下,可以对这些实施方案做出多种变更或修改,因此,本发明的保护范围由所附权利要求书限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1