RE-NET

《Recurrent Event Network: Autoregressive Structure Inference over Temporal Knowledge Graphs》论文解读
RGCN
Wr(l)是某一个特定的关系r(如弹劾,主动建交等)在第l层GCN中的权重矩阵,每一个不同的关系r对应其对应的权重矩阵,比如r1对应W1这样
ho(l)是某一个特定的客体(object)在第l层GCN中的隐藏表示/特征向量(hidden state/embedding),也就是当前s实体所指向的那个o客体,hs(l)同理
Wo(l)是自环权重矩阵,意思就是它会与节点s自身的特征一直相乘然后更新到下一层再继续相乘
Nt(s,r)表示在时间戳t(timestamp)这个时间下的节点s通过关系r的邻居节点集合(Neighborhood),Nt(s)同理
cs是归一化常数,体现在公式里就是:num(o) * num(r),就是当前t的实体s对应的客体o的个数乘上当前t这个s对应的关系r的个数,包含了多少个邻居的信息就平均掉。简单来说,就是当前t的实体s的所有邻居个数
RGCN聚合器的作用在于:聚合节点s的邻居节点的信息。结合公式解读一下就是:对于节点s,RGCN在更新节点特征同时考虑节点自身的特征和其邻居节点的特征
,以及它们之间的关系类型(指不同关系对应不同权重矩阵)。
RGCN模块代码如下:
1 | class RGCNLayer(nn.Module): |
结合代码来看公式,是
1 | ''' |
是
1 | def msg_func(self, edges, reverse): |
RGCN捕捉多跳邻居的信息:通过多次应用图卷积操作实现
- 在第一次迭代中,每个节点聚合来自其直接邻居的信息
- 在第二次迭代中,每个节点合来自其邻居的邻居(即第二跳邻居)的信息
RE-Net架构图解读
任务:预测时间戳t中的三元组
已知:过去几个时间步的图(架构图举例为3个时间步)
RE-Net_global对整个知识图谱(能观察到的图,架构图中整个图谱为3个时间步的图)进行编码,给出全局嵌入表示(global_emb)。在预测时给出预测时间戳t的主体、客体分布以及更新后的全局嵌入表示
RE-Net(train):将可观察到的局部图中的s,r和global_emb等放入Aggregator聚合器(RGCN)当中,聚合器的输出结果为两个序列s_packed_input,s_packed_input_r分别放入encoder,encoder_r中,编码实体表示和关系表示,RE-Net类的self.encoder被定义为nn.GRU,最后分别送入线性层self.linear,self.linear_r(nn.linear)和dropout层预测客体和关系并分别计算损失
RE-Net(valid,test):RE-Net_global预测时间戳t的主体,客体分布后采样前self.num_k个,更新(主体和客体的列表、索引、历史交互缓存),构建新的时间点的图,更新图字典(graph_dict)和全局嵌入表示(global_emb)。再重复以上操作↑
- Title: RE-NET
- Author: YuDou
- Created at : 2024-11-01 10:13:44
- Updated at : 2024-11-25 12:15:33
- Link: https://sweetyudou.github.io/2024/11/01/RE-Net/
- License: All Rights Reserved © YuDou