发布于: 2023-10-18最后更新: 2023-11-10字数 00 分钟

type
status
date
slug
summary
tags
category
论文链接
代码链接
Huggingface Demo
😀
CompGCN发表在2020年的ICLR上,它认为过去的GCN-KGE有以下不足: 1)主要关注处理简单的无向图; 2)参数量过大(over-parameterization) 3)仅学习节点的表达,未对关系进行嵌入 因此,CompGCN的发展性表现在: 1)对节点和关系都进行了嵌入; 2)使用了大量实体-关系组合操作,根据关系数量进行尺寸放缩;

📝 1. 知识图谱的视角

1.1 知识图谱是有向图→关系有方向

notion image
CompGCN认为知识图谱应该是一个有向图,关系是有向的。

1.2 知识图谱的实体(节点)和关系(边)都是需要嵌入的→关系有含义

CompGCN认为知识图谱中的关系有含义,当时的GCN方法都只学习了节点的嵌入表达,在诸如连接预测任务中,由于没有关系嵌入,而效果较差。

🤗 2. 方法的视角

  • 现有 GCN 处理关系图的方法参数过多仅学习图中节点表示,忽略关系表示。因此这些方法不适用于关系嵌入向量的下游任务(如链路预测)。
  • 在KGE方法里,节点和关系的表示都需要学习,但局限于使用链接预测目标来学习嵌入。虽然,GCN可以从任务特定的目标(如分类)中学习,但其应用很大程度上局限于非关系图的设置。

💠 3. CompGCN

3.1 多关系图的组成:

notion image

3.1.1 多关系图:

:节点的特征
:关系的特征

3.1.2 (边)的组成部分:

实际数据集存在的边(关系)+ 实际存在关系的逆向关系构成边+ 节点自身自反的关系构成边
相应的,

3.2 基于关系的组合

CompGCN将关系嵌入和节点嵌入联合起来学习,这样可以对多关系图谱进行表征学习并且不会引入过多参数。
CompGCN赋予关系初始特征表征,使用实体-关系组合操作,其中是组合操作。
CompGCN提供了三种组合方式:
  1. subtraction(TransE):(为什么不是es+er?)
  1. multiplication(DistMult):
  1. circular-correlation(HolE):
还有一些可能的参数化操作,比如NTN(Neural Tensor Networks)和ConvE有待探究,可以作为未来的尝试方向(有没有人做?)改进组合操作也是一个值得尝试的方向(有没有人做?)后面还有个RotatE的变体也可以做?

3.3 CompGCN的更新机制

3.3.1 GCN的更新机制:

论文中指出的传统GCN的更新机制如下:

3.3.2 CompGCN的消息更新机制

CompGCN对节点的邻节点和之间的关系采用了组合操作,对节点,更新机制为:
其中,表示节点的特征,表示关系的特征。是特定关系种类的参数矩阵。在具体实现中,,即:
对关系更新机制为:
其中,是可学习的变换矩阵,将所有关系投影到和节点相同的同一嵌入空间。

3.3.3 CompGCN和现有GCN方法消息更新机制的区别和比较:

notion image
论文给出了CompGCN和现有GCN方法更新机制的比较。对Kipf-GCN,相当于把视为,把视为
实际上GCN的更新公式并非3.3.1中给出的更新公式,显然,作者的写法是考虑了以关系为类的邻域的,比较符合RGCN\WGCN的思想,RGCN的消息更新公式为:
对比可看出,作者此时把RGCN考虑self-loop的删掉了。类似的,考虑关系权重,WGCN的消息更新公式为:
其中,是关系的权重,它考虑self-loop的方式也是加上一个
而Kipf-GCN方法,其更新机制应为:
其中,为度矩阵,为邻接矩阵,为对应的单位阵。
可以发现,传统GCN考虑self-loop的方式是加上单位阵,而从RGCN开始,加上自己的方式是直接加上一个
💡
那么为什么论文这儿要把self-loop的去掉呢? 其实区别在于RGCN\WGCN与CompGCN对关系的处理方式不同。 RGCN\WGCN的实现里考虑了逆关系,在处理三元组时除了,还生成了,这种操作可以视为一种数据增强的手段,对于FB15K-237数据集,它的关系种类一般是237*2=474,但是没把self-loop作为关系之一。 CompGCN的实现里考虑了逆关系和self-loop,即这三种关系,对于FB15K-237,关系种类是237*2+1=475,所以它考虑self-loop的方式是把它视作一个关系,而不视为“加上自身”,也就导致了消息更新机制的区别。 在本论文的视角来看,的r应由正关系、逆关系和self-loop三部分组成,所以这儿“考虑资深”的思路已经变了,就没有加上

3.4 对关系数量增多的处理

类似于RGCN,采用关系基分解的方式减少因关系增多导致的参数两增加。关系被视为一组际关系的线性组合。即:
其中,是一组可学习的基向量,是关系和基特定的可学习权重。
与RGCN的基正则化不同的是,RGCN使用的基是基矩阵,每层有独立的基矩阵,CompGCN是用的是基向量,并且仅仅对初始层设置了基向量,后面的层通过3.3.2中的关系更新机制共享关系基向量。

🧐 4. 实验

论文给了三大实验:Link prediction,Node classification和Graph classification。所有实验均与RGCN,DGCN和WGCN(SACN)做了比较,其他各实验采用了相应的baselines。

4.1 模型连接预测效果

notion image

4.2 组合操作对模型效果的影响

如前述,CompGCN提供三种组合操作:sub,mult和corr,论文描述是分别受到TransE,DistMult和HolE的启发,但真要细究起来其实每一种都对应不上:

4.2.1 subtraction(TransE):(为什么不是es+er?)

TransE受word2vec平移不变性的启发,希望,使用negative sampling,随机替换头或尾实体,相对负例来说,正例的打分要更高,损失函数设计为:
✍️
这儿有一个让我比较疑惑的小问题,既然它是按着TransE来设计的,为什么这儿的操作是,而不是? 个人理解是在这个视角下,+或者-其实是一样的,本质上都是将交互起来,且需要注意的是,代码视线里,此处为+。

4.2.2 multiplication(DistMult):

DistMult把每一个输入的实体变成一个高维向量(可以是one-hot索引向量或者n-hot特征向量,论文写的是one-hot),经过第一层的投影表示,学习到实体表示:
DistMult对关系的表示反映在打分函数里,打分函数通常被定义为线性、双线性或二者组合的转换函数,论文只考虑最基本的双线性打分函数,将限制为对角矩阵:
✍️
DistMult对关系的表示是,这个关系矩阵是可训练的对角阵,因此此处并非完全对应的,此处的multiplication应该是向量对应位置相乘,其实和distmult没有直接的关系。

4.2.3 circular-correlation(HolE):

HolE将学习任务视为一个监督表示学习的问题:
其中,是circular-correlation算子,将实体对表示成一个组合向量。
notion image

4.2.4 组合对实验结果影响

notion image
论文里有个寻找最佳模型的实验,因为GCN方法的scoring function有TransE,DistMult和ConvE等,CompGCN的组合操作有Sub,Mult和Corr等。为了找到最佳模型组合,在FB15K-237上进行了link prediction实验。
结果表明,使用distmult作为解码器,multiplication组合操作可以获得最优结果,而使用convE作为解码器时,采用circular-correlation组合操作可取得最优效果。总体来说,使用circular-correlation作为组合方式可以获得更优的效果,因为它的交互更加复杂。

4.3 CompGCN 的可扩展性研究

通过保留top-m个最高频关系,设置了FB15K-237的子集,,使用ConvE+CompGCN(Corr)进行可扩展性研究实验。

4.3.1 基关系向量变化的影响

notion image
时,模型的性能可与所有关系都有各自嵌入的情况相似。在设为50时,所有分数函数中表现最好的模型的结果。

4.3.2 关系数量变化的影响

notion image
CompGCN与所有关系均有各自嵌入向量的CompGCN在关系数量变化时的MRR比较。结果表明,COMPGCN 的参数效率变体随着关系数量的增加而增加。

4.3.3 与RGCN的比较

notion image

4.4 节点和图分类任务评估

notion image
Message Passing
where : denotes a differentiable, permutation invariant function, *e.g.*, sum, mean or max, and denote differentiable functions such as MLPs.
📎 参考文章
 
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~

2021-NBFNet论文精读
2021-NBFNet论文精读