从GCN到RGCN,从同构图到异构图
图算法模型种类繁多,以图结构分类可以分为同构与异构图两大类。其中
1.同构图: 点类型 + 边类型=2(也就是不区分点与边类型)
2.异构图:点类型 + 边类型>2
从同构图模型到异构图模型,这其中的差别就是多关系,点多类型的差别。像GCN,GAT,GraphSAGE都是以同构图进行研究,沿着这个同构图模型的思想出发,大胆假设一下,将异构图分成多个含单一关系的同构图,那么会发现,其实只需要解决不同关系之间的交互,就可以套用同构图的思想解决异构图的问题。
于是RGCN就来了(其实RGCN就是这么想的。)
1.同构图GCN
GCN比较好理解,前面有写过详细解析,可以看看这里 图卷积:从GCN到GAT、GraphSAGE
在这就不重复写了,核心原理公式就是 H^{l+1}=\sigma(D^{-1/2}AD^{-1/2}H^{l}W^{l})
同时 H^{l}、H^{l+1} 分别是第l层、第l+1的节点,D为度矩阵,A为邻接矩阵,如下图。
GCN计算方式上很好理解,本质上跟CNN卷积过程一样,是一个加权求和的过程,就是将邻居点通过度矩阵及其邻接矩阵,计算出各边的权重,然后加权求和。
2.多关系异构图RGCN
RGCN应该说是GCN在多关系图场景上的一个简单尝试。从同构图到异构图,RGCN要解决的核心问题就一个,就是多关系间怎么交互。
RGCN的结构图很简单,画的也很清楚,每一种关系下(可理解为就是同构图),指向内与指向外的都作为它的邻居点,同时加自循环特征,进行特征融合,参与更新中心节点。
公式也很简洁,R为关系结合,N为邻居点集合,c为一个常量(正则化系数)。
双层循环遍历,遍历每一种关系下,叠加每一个点的邻居点的特征进行融合,最后加上一层的中心节点特征,经过一个激活函数输出作为中心节点的输出特征,其中W为维度转换矩阵,也就是模型参数。
对比一下GCN, H^{l+1}=\sigma(D^{-1/2}AD^{-1/2}H^{l}W^{l}) ,看得到,W在两边皆为模型待学参数,而GCN是采用度矩阵D及邻接矩阵A作为一个加权求和的特征融合,而RGCN的参数都在模型参数 W_r 中,它没有用度矩阵D及邻接矩阵A作为边的权重的,而是在模型中参数自学。
2.1 接着看RGCN中W矩阵的定义
文章中表示多关系会导致参数剧增,从而给出了两个W矩阵规则化定义:1.Bias-decomposition(共享转换矩阵参数),2.Block-diagonal-decomposition(权重矩阵W由基础小矩阵拼接得到,保证W的稀疏性)
1. Basis-decomposition(基数分解):
2. Block-diagonal-decomposition(块对角分解):
公式3中B表示分解block个数(常量), V_b 为分解的参数关系矩阵,与因子 a_{rb} 组成一对相关系数,都与关系类型r相关,这里不同关系是共享 V_b 参数的。
公式4中不同关系的 W_r 为一系列低维矩阵 Q_{br} 求和。
同时结合PyG里的 RGCN接口实现,看下这两公式, V_b、Q_{br} 皆为模型定义参数。
2.2 RGCN的任务
在通过RGCN作为encode,聚合得到node embedding后,节点分类任务比较好理解,就是拿着encode得到的node embedding后接一个逻辑回归或linear层,结合Cross-Entropy做一个分类任务。
而关系预测任务,在encode得到node embedding后,则是类似于TransE,计算三元组(s,r,o),得到一个score。(文中采用的是DistMult,原理差不多)
而边的label是为0或1(存在 or 不存在),score为一个概率分布,label为一个概率分布,结合Cross-Entropy即可得到loss function,判断这个pair是不是匹配的。
3.小结一下
RGCN主要创新点:
- 提出了一个异构图中多关系融合的一个方式(就是不同关系分别做融合,然后叠加处理,得到node表示)
- 降低多关系引起的参数剧增,提出了因子分解以及多关系参数共享的方式。
对比一下GCN,GCN是采用度矩阵D及邻接矩阵A作为一个加权求和的特征融合,RGCN并没有用度矩阵D及邻接矩阵A作为边的权重的,而是把这部分都放在模型中参数自学。
RGCN是作为一个异构图的关系融合的一个简单方法,提供了一个多关系处理的方法。现在来看,RGCN肯定是不够看了,起码能想到优化的点就是,你都把权重都放参数里了,那你得有个attention是不是更好呢? 说到这,那HAN就来了,下回就看看HAN。
已更新,可以看看这里。
- HAN:加了Attention的异构图模型
- 图卷积:从GCN到GAT、GraphSAGE
- 异构图multi-relationship模型--GATNE
- 怎么搭好一个GCN?只需这四步