论文地址:https://arxiv.org/abs/1911.06455
实现代码地址:https://github.com/ seongjunyun/Graph_Transformer_Networks
看分享之前可以把论文读一遍,代码看一看,这样必定会事半功倍!
论文目的是通过构造GTN(Graph Transformer Networks),来学习到异构网络中有效的节点表示。
其他现有方法(GNNs)的缺点:
-
对于异构图,由于GNN只用于处理同构图,因此效果不好。(什么是异构图呢?下面这张图清楚的展示了异构图:在一个图中,节点类型数大于1,如author类型,paper类型,venue类型;边的类型数大于1,如author-paper边,paper-venue边;这样存在不同的节点类型和边类型的图就是异构图)
-
一种简单的处理方法就是忽略类型,缺点就是无法获取到类型信息。
-
手动设计一个meta-path,例如
,将异构图转化由meta-path定义的同构图,然后使用GNN进行操作。方法的缺点是:对于每一个问题都需要单独的手工设计meta-path;并且最终效果受到选择meta-path的影响;meta-path的选择需要对应领域知识。
整体框架
- 首先明确一条meta-path的表示:
- 模型构造
卷积层(划红线部分)
这里通过卷积层可以将通道数为n的A(图中所示)转化为通道数为m的Q。
代码:
A 的size:
W的size:
训练过程中某一次W的值如下图所示,在下图中可以看到,1*1的卷积核给A中每一种类型的边赋予一个权值(或者说是分值),通过这种attention机制来判断边对于最终生成meta-path的影响程度。
GT层
在GT层中,使用了类似于stack的结构(你仔细读论文就会看到)图中一个红色小方块圈起来的就是一个卷积层,直观上看就是一个stack的结构。
代码
解决meta-path长度随层数的增加而增加问题(通过eye函数,添加了一个单位矩阵,这样就可以获得任意长度的meta-path。这里大家仔细看看论文和代码理解):
GTN
代码
gcn_conv:
实验
将模型生成的meta-path同预定义的meta-path相比较:
meta-path有效性
本文的亮点
- 不需要领域知识,不需要手动设置meta-path,GTN通过候选邻接矩阵来定义有效的meta-paths。
- 可扩展性强。
pdf版本我放在百度网盘了,需要的下载:
链接:
https://pan.baidu.com/s/1WB1Io4fEmIfujEJL6pYlCg
提取码:ri5t
来源:CSDN
作者:gzh_kevin
链接:https://blog.csdn.net/kai123wen/article/details/104029268