GNN学习 Knowledge Graph Embedding(更新中)

发布时间 2023-08-19 15:47:49作者: ANewPro

GNN学习 Knowledge Graph Embedding

前面提到的方法都是只有一种边的类型,接下来要扩展到有向,多种边的类型的图上,即异质图(heterogeneous graph)

异质图有这样的几种类型:

  • Relational GCNs
  • Knowledge Graphs
  • Embeddings for KG Completion

一个异质图可以被定义为

\(G=(V,E,R,T)\)

V是带有节点类型的节点\(v_i\in V\)

E是带有关系类型的边\((v_i,r,v_j)\in E\)

T是节点类型\(T(v_i)\)

R是关系类型\(r\in R\)

1.Relational GCNs

RGCN就是把GCN扩展到异质图上

从只有一种边的有向图开始,仅沿着边的方向进行信息的传递

如果一个图有多种关系的类型,那么在信息传递时,我们可以对不同的边的类型使用不同的权重

于是,我们就可以得出RGCN的一般表达

\(h_v^{l+1}=\sigma(\sum_{r\in R}\sum_{u\in N_v^r}\frac1{c_{v,r}}W_r^lh_u^l+W_0^lh_v^l)\)

其中,通过每种关系的节点的度数进行归一化 \(c_{v,r}=|N_v^r|\)

图神经网络可以写成Message+Aggregation的形式

Message:

  • 对于给定关系的所有邻居\(m_{u,r}^l=\frac1{c_{v,r}}W_r^lh_u^l\)
  • 自环传递\(m_v^l=W_0^lh_v^l\)

Aggregation

对邻居和自己传递过来的信息进行求和操作

\(h_v^{l+1}=\sigma(Sum(\{m_{u,r}^l,u\in\{N(v)\cup\{v\}\}\}))\)

RGCN的scalability

每种关系都需要L个权重矩阵\(W_r^1,W_r^2...W_r^L\)

每个权重矩阵的尺寸为\(d^{l+1}\times d^l\),其中\(d^l\)时第l层的嵌入维度

参数量随关系类的数量迅速增长,容易产生过拟合的问题

有两种方式来正则化权重矩阵

  • block diagonal matrices
  • Basis/Dictionary learning

1.block diagonal matrices

使权重矩阵变稀疏,减少非0元素的数量

具体做法是让权重矩阵成为对角块的形式

缺点在于只有相邻神经元可以通过权重矩阵交互,需要多加几层神经网络

2.Basis Learning

在不同关系之间共享权重参数

做法:将特定关系的权重矩阵表示为基础变换的线性组合形式

\(W_r=\sum_{b=1}^Ba_{rb}\cdot V_b\)

\(V_b\)在关系间共享,是基础矩阵

\(a_{rb}\)\(V_b\)的重要性权重

对于每个关系,我们就只需要学习\(\{a_{rb}\}_{b=1}^B\)这B个标量了,其中B是常数

3.应用实例

1.链接预测

在异质图中,将每种关系对应的边都分成training message edges, training supervision edges, validation edges, test edges四类

这样分是因为有些关系的边很少,混一起分可能有些关系类型的边可能分不到四类

假定\((E,r_3,A)\)是training supervision edge,其余的边是Training message edges

pP37Gd0.png

使用RGCN给\((E,r_3,A)\)打分

  • 首先得到最后一层节点E和节点A的输出向量
  • 使用关系专用的打分函数\(f_r:\mathbb{R}^d\times \mathbb{R^d} \rightarrow \mathbb{R}\)
    • 比如\(f_{r_1}(h_E,h_A)=h_E^TW_{r_1}h_A,W_{r1}\in \mathbb{R}^{d\times d}\)

1.训练阶段:用training messages edges预测training supervision edges

  • 1.使用RGCN给\((E,r_3,A)\)打分
  • 2.通过扰乱 supervison edge得到negative edge。比如破坏\((E,r_3,A)\)的尾节点得到\((E,r_3,B)\)\((E,r_3,D)\),negative edge不能属于training messages edges或training supervision edges
  • 用GNN模型给negative edge打分
  • 优化交叉熵损失函数,使在training supervision edge上的得分最大,negative edge上的得分最低

2.测试阶段

用training messages edges和training supervision edges来预测validation edges,\((E,r_3,D)\)的得分应该比所有的negatives edges的得分更高

negative edges就是尾节点不在training messages edges和training supervision edges中的以E为头节点,\(r_3\)为关系的边

具体步骤:

1.计算\((E,r_3,D)\)的得分

2.计算所有negative edge的得分

3.获得\((E,r_3,D)\)的排名RK

4.计算指标

  • Hits@k:RK<=k的次数越高越好
  • Reciprocal rank:\(\frac1{RK}\)越高越好