R-GCN: Modeling Relational Data with Graph Convolutional Networks


本文前置知识:

Modeling Relational Data with Graph Convolutional Networks

本文是论文Modeling Relational Data with Graph Convolutional Networks的阅读笔记和个人理解.

Basic Idea

大规模知识图谱仍然不完整, 并且知识图谱中还没有针对图结构建模的方法, 而节点缺失的信息经常可以由邻居编码而来.

在KG中, 经常以Entity Classification和Link Prediction作为任务来衡量模型对KG补全的能力:

图中红色字体为缺失信息, 对应着实体类型和关系.

在大规模知识图谱中, 多关系数据特性十分显著, 作者希望针对多关系数据, 提出一种基于图的方法处理知识图谱补全问题.

R - GCN

有向且有标签的多图被表示为$G=(\mathcal{V, E, R})$, 其中节点$v_i \in \mathcal{V}$, 边$(v_i, r, v_j) \in \mathcal{E}$, 关系类型$r \in \mathcal{R}$.

Relational Graph Conovlutional Network

R - GCN是一种GCN的扩展形式, GCN能够聚合周围邻居的信息.

GCN遵循消息传递机制:

$$
h_{i}^{(l+1)}=\sigma\left(\sum_{m \in \mathcal{M}_{i}} g_{m}\left(h_{i}^{(l)}, h_{j}^{(l)}\right)\right)
$$

其中$h_{i}^{(l)}$ 是节点$v_i$ 第$l$ 层的隐藏状态, $\mathcal{M_i}$ 为节点$v_i$ 的入边. $\sigma$ 为非线性激活函数, 例如$\operatorname{ReLU}$.

$g_m(\cdot, \cdot)$ 为邻居节点的聚合方式, 一般只用简单的线性变换作为替代, 即$g_m(h_i, h_j) = Wh_j$.

这部分有问题请参见图神经网络入门中的GCN和消息传递部分.

R - GCN针对不同种类的关系进行了特化处理, 即针对不同的关系采用不同的聚合方式, 在这里是使用了不同的线性变换矩阵$W_r$. 其更新方程为:
$$
h_{i}^{(l+1)}=\sigma\left(\sum_{r \in \mathcal{R}} \sum_{j \in \mathcal{N}_{i}^{r}} \frac{1}{c_{i, r}} W_{r}^{(l)} h_{j}^{(l)}+W_{0}^{(l)} h_{i}^{(l)}\right)
$$

其中$c_{i, r}$ 代表归一化因子, 可以由学习得来, 或规定$c_{i, r} = |\mathcal{N}_i^r|$. $W_0$ 代表节点自身闭环所对应的变换矩阵.

针对节点$v_i$ 及其所有邻居$\mathcal{N_i}$, 分别考虑$v_i$ 与邻居$v_j$ 二者之间的关系$r$, 施加以不同的关系变换$W_r$, 再将它们求和并归一化, 加上自身的闭环影响, 在激活函数的影响下获得下一层的节点表示.

对于有向异质图(有向多关系图), R - GCN每个节点表示的更新方式大致可以由下图描述:

蓝色块对应着不同关系下蓝色的不同邻居对红色中心节点的影响, 每种关系分别经过变换求和得到绿色块, 对所有关系的绿色块求和并激活, 得到红色中心节点的新表示.

同一类型关系的不同指向被视为不同关系(同关系下的出入被视为是不同的).

对于关系非常多的图, 每一种关系都对应着一个独特的变换矩阵, 参数量将是巨大的, 增加了潜在的过拟合风险.

Regularization

针对上小节图神经网络过参数化的问题, 作者提出两种减少参数从而减轻过拟合的方法. 分别是基函数分解对角块分解.

Basic Decomposition

基函数分解将所有关系的权重矩阵视为不同系数和基的线性组合:

$$
W_{r}^{(l)}=\sum_{b=1}^{B} a_{r b}^{(l)} V_{b}^{(l)}
$$

其中$B$ 为基的数量, $a_{rb}$ 是不同关系$r$ 下的系数, $V_b$ 是线性基.

这种表示方法可以被视为是不同关系下的权重共享, 对于少关系的情况能够缓解过拟合现象, 因为关系之间的基是相互共享的, 基总会被其他关系所频繁更新.

Block - Diagonal Decomposition

对角块分解将变换矩阵$W_r$ 拆分为$B$ 个大小相同的块:
$$
W_{r}^{(l)}=\bigoplus_{b=1}^{B} Q_{b r}^{(l)}
$$

其中$Q_{b r}^{(l)} \in \mathbb{R}^{\left(d^{(l+1)} / B\right) \times\left(d^{(l)} / B\right)}$, $\bigoplus$ 为生成对角阵的操作$\operatorname{diag}$.

对角块分解又可以视为是一种$W_r$ 的一种稀疏性约束, 除去块的位置其余位置都是0, 与未分解时相比更为稀疏. 而且由于分块的影响, 在每个块内部, 隐特征的联系将比块与块之间更加紧密.

至此, R - GCN已经能够作为一个单独的层, 按照层级结构堆叠获得$L$ 层的多层输出. 如果没有节点的初始特征, 可以采用Embedding的方式获取.

原文中说的独热 + 单层线性变换获取的稠密表示实际上就是Embedding.

Entity Classification

对于实体分类问题, R - GCN能直接将堆叠过后最后一层的节点输出作为Logits, 预测实体类别:

将最后一层的激活函数更换为$\operatorname{softmax}$, 接着最小化多分类交叉熵即可:

$$
\mathcal{L}=-\sum_{i \in \mathcal{Y}} \sum_{k=1}^{K} t_{i k} \ln h_{i k}^{(L)}
$$

其中$\mathcal{Y}$ 为有标签的节点集合, $K$ 为类别总数.

对于链接预测问题, 通常在三元组$(s, r, o)$ 上(也就是边$\mathcal{E}$) 预测缺失的尾实体$o$. 但R - GCN只能根据某节点不同关系的邻居获得自身的表示, 并不能结合关系信息做尾实体的预测.

因此, 作者将R - GCN集成进Auto Encoder的框架, 将R - GCN视为一个获取所有节点编码的Encoder, 再用其他的KGE模型对节点(实体)表示打分, 以完成链接预测任务:

在这里, 作者选用DistMult作为Decoder. 其打分函数如下:

$$
f(s, r, o)=e_{s}^{T} R_{r} e_{o}
$$

DistMult是基于语义匹配的模型, 对每个不同的关系, DistMult都有不同的对角矩阵$R_r$ 来变换头实体$e_s$, 然后与尾实体$e_o$ 做相似度匹配. 所有的Embedding, $e_s, e_o$ 都来源于R - GCN.

DistMult虽然也对关系做了特化处理, 但只靠对角矩阵做变换显然是无法应对多元化关系的.

所以R - GCN的在链接预测上的性能可能受到了约束.

然后用BCE作为损失函数优化:
$$
\mathcal{L}=-\frac{1}{(1+\omega)|\hat{\mathcal{E}}|} \sum_{(s, r, o, y) \in \mathcal{T}} y \log l(f(s, r, o))+
(1-y) \log (1-l(f(s, r, o)))
$$

其中$\omega$ 代表每个正样本采样多少个负样本. $l$ 为$\operatorname{sigmoid}$ 函数.

Experiments

详细的超参数设置和Trick请参照原论文.

Entity Classification Experiments

作者分别在四个实体分类数据集AIFB, MUTAG, BGS, AM上进行了实体分类任务, 数据集的统计信息如下:

实验结果如下:

在AIFB和AM上的效果都要高于其他模型, 而MUTAG和BGS是特定领域的数据集, 与其他两个数据集都不太一样, 导致了R - GCN的性能差距.

作者提到, 对所有邻居都采用相同权重的归一化方式可能会有损性能, 一种潜在的解决方案是采用注意力机制, 通过学习分配给周围邻居不同的权重.

其实就是同年10月份提出的GAT, 而R - GCN发布于同年3月份.

作者主要在FB15k, WN18, FB15k - 237上做了链接预测的实验.

同样是针对关系特化的模型, 作者做出了在FB15k的验证集中不同度对MRR的影响曲线:

作者认为R - GCN在度比较高, 即上下文信息比较多时处理很占优势, 而DistMult在度比较低时占优势.

可能也只是作者的一个推测, DistMult在度比较低的时候并没有比R - GCN好特别多.

观察到R - GCN和DistMult上的互补优势, 作者尝试将两种模型融合, 仍然采用DistMult的打分函数, 但Embedding分别来自于已经训练好的不同模型:
$$
f(s, r, t)_{\mathrm{R}-\mathrm{GCN}+}=\alpha f(s, r, t)_{\mathrm{R}-\mathrm{GCN}}+(1-\alpha) f(s, r, t)_{\text {DistMult }}
$$
$\alpha$ 为选择模型得分的权重. 在FB15k中设置为$\alpha=0.4$, 即来自DistMult的打分要多一些, R - GCN少一些, 因为作者不希望改进后的模型性能显著高于纯R - GCN.

在FB15k, WN18上结果如下:

在关系比较少的WN18上, R - GCN并不占优势, 但在FB15k上的表现十分不错. DistMult作为关系特化的模型也在FB15k上显示出一些优势, 但仍不及能够对对称, 反对称, 逆关系同时建模的ComplEx.

在FB15k - 237上结果如下:

R - GCN比其他方法效果要好特别多, 因为把DistMult也塞进去了, 所以比DistMult也显著的好.

Summary

R - GCN是一篇比较早的GNN论文, 已经作为一种KGE中常用的图方法Baseline出现, 也正是R - GCN使得大家对图方法在KG上的应用提起了注意.

R - GCN在GCN的基础上对多关系进行特化, 并针对图神经网络的过拟合问题提出了两种可替代的解决方法, 基函数分解对角块分解. 也提出了图神经网络在处理Entity Classification和Link Prediction问题上的框架, 其实主要还是把R - GCN的输出作为一种Node Embedding的方法来使用.

作者在文中还提出了两种可以优化的地方:

  1. Decoder还可以替换为任意的KGE模型, 例如能对更多关系建模的ComplEx.
  2. 对邻居节点的权重分配可以通过Attention学习得来.

文章作者: DaNing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 DaNing !
评论
  目录