【图神经网络】GNN 图神经网络相关知识点

关键问题1,GCN是否可以用于有向图?

图卷积分为两大类,一类是基于谱方法(spectral methods),就是将图信号进行傅里叶变换在频域进行研究,以GCN为代表的模型,但是谱方法有一个理论要求就是拉普拉斯矩阵L要求为对称矩阵,L = D-A,即图为无向图才能满足;二类,是基于空域的研究方法(spatial methods),以GraphSage为代表的模型,空域是不分有向图和无向图的,均可以计算;

因此从理论上来说GCN是不能用于有向图的,但是从代码实现层面上来看是可以的,gcn代码的实现层面是按照空域实现的,所以gcn也能够用于有向图。

详情参考:https://github.com/rusty1s/pytorch_geometric/issues/397

关键问题2,edge_index,消息传递方向,有向图方向的区别?

edge_index是coo()形式的情况下[2,num_edges],edge_index[0]表示source节点,edge_index[1]表示target 节点

当flow = 'source_to_target'时,消息传递的方向为source->target,即edge_index[0] - > edge_index[1],反之,消息传递的方向为target->source;

有向图的方向与消息传递方向的区别,一般情况下,建立有向图的时候应该保持有向图方向和消息传递的方向相同,比如下面的有向图:

【图神经网络】GNN 图神经网络相关知识点_第1张图片

节点A收到来自节点X,Y的message,所以A = aggr(X,Y);

edge_index的定义为:

edge_index = torch.tensor([
    [X, Y, A, A, B, B, C],
    [A, A, B, C, D, E, F],
])

详细参考:

https://github.com/rusty1s/pytorch_geometric/issues/1845

https://github.com/rusty1s/pytorch_geometric/issues/1040

https://github.com/rusty1s/pytorch_geometric/issues/126

关键问题3,有向图的情况下,无监督训练训练样本的采样方向与消息传递方向是否一致?

有向图的情况下,消息传递的方向与有向图方向一致,但是采样方向是与有向图方向相反的,因为只有K阶采样的方向与图的方向相反,才能保证在消息传递的时候方向与有向图方向一致;

详情见:GraphSAGE 无监督训练源码剖析 这边文章中的关键问题1

https://blog.csdn.net/minemine999/article/details/118658429

关键问题4,pytorch_geometric的MessagePassing机制是如何实现的?

https://zhuanlan.zhihu.com/p/397560946

关键问题5,图卷积神经网络为什么存在过度平滑问题?

待更新...

你可能感兴趣的:(图机器学习,图神经网络)