对于带有时序属性的大规模事件数据,需要动态更新的知识图谱来保存知识图谱中关系的时序信息(每条边包含时间属性)。本文提出了 Know-Evolve 这种基于神经网络的动态知识图谱来学习实体在不同时刻的非线性表示。在动态知识图谱中,事件由四元组表示,相比于普通的三元组,增加了时间信息,因此在动态知识图谱中,实体之间的可能通过多个相同的关系连接,但是这些关系会关联到不同的时序信息。Know-Evolve 中,使用时间点过程(temporal point process)来描述时间点的影响。

前言

事件的发生,重现都伴随着时间的变化而变化,例如下图,时序知识图谱中每条边都有与之相关的时间属性。而静态知识图谱忽略了时间概念,无法具有对事件的推理能力。因此,大多数工作都关注于实体-关系的表示,学习现有的知识推断未知的事实。但这些方法缺乏利用时序知识图谱表示的底层数据中丰富的时序动态的能力,除了关系(结构)依赖之外,有效地捕获跨事件的时间依赖性有助于提高对实体行为的理解,以及它们如何随着时间的推移对事件的生成做出贡献。

时间点过程

在时间点过程中,某一时刻发生某事件的概率可以表示为

f(t)=λ(t)s(t)f(t) = \lambda (t) s(t)

其中

s(tT)=exp(tntλ(τ)dτ)s(t|T) = exp(-\int_{t_n}^{t} \lambda (\tau) d\tau)

时序知识图谱表示

具体而言,Know-Evolve中使用了Rayleigh过程来表示λ(t)\lambda (t),并使用一个神经网络来拟合Rayleigh过程的参数,对于发生在时刻t的四元组,有

λτes,eo(tt)=f(gτes,eo(t))(tt)\lambda_{\tau}^{e^s,e^o}(t|\vec{t}) = f(g_{\tau}^{e^s,e^o}(\vec{t})) * (t - \vec{t})

其中

上式中,V 表示实体对应的向量表示,R 表示关系对应的矩阵,t-1 表示实体在上次被更新后的状态, tˉ\bar{t} 表示头实体或尾实体中最后被更改的时间。

此外,每次将新的四元组加入到动态知识库后,动态知识库中与该四元组相关的实体也会相应地进行更新,更新地过程用一个 RNN 来表示

对于头实体,有

对于尾实体,有

Know-Evolve

上图分别展示了Know-Evolve的结构以及模型

模型的训练通过最大化训练数据中四元组发生概率进行,对应的损失函数为对数损失函数

在损失函数中,后一项需要对头实体,关系,尾实体进行遍历,这个计算量是很大的,本文中使用了采样的方法来近似计算得到这部分的值。

实验

实验使用了GDELT和ICEWS这两个时序知识库,相比于其他的方法,本文的结果均有限制的提升。

论文地址:Know-Evolve: Deep Temporal Reasoning for Dynamic KG

源码地址: https://github.com/lonePatient/Know-Evolve