• 【GNN】【ICML2019】Position-aware GraphNeural Networks


    分享一篇ICML2019的 “老文章":
    在这里插入图片描述

    摘要总结

    • 背景:过去的GNN很难学习到节点之间的位置关系
    • 取名字:我们提出一种position-aware的GNN(P-GNN)能够对节点位置进行编码
    • 方法:该方法随机指定几组anchor nodes,即锚节点,然后计算每个节点到这些锚节点的距离,然后学习基于这些距离的非线性聚合函数,这样的话P-GNN就能学习到节点之间的位置关系。
    • 优点:P-GNN 是inductive,scalable的,并且可以引入节点feature。
    • 实验:在link-prediction和community detection任务上取得SOTA,最高有66%的ROCAUC提升。

    问题背景


    可以看出,A和B两个类别的 rooted subtree结构相同,因此,在没有节点feature的情况下,只通过结构,是无法对节点 v 1 v_1 v1 v 2 v_2 v2分类的。

    因此,只要节点能够区分相对位置的话,就可以解决这个问题。

    方法

    Architecture
    首先选出k=3个anchor-set: S = S 1 , S 2 , S 3 S={S_1,S_2,S_3} S=S1,S2,S3,接下来通过函数 F F F来计算每个节点的位置编码,最后根据传统GNN来计算每个节点的新表示。

    举个例子,比如,要通过 F F F计算 v 1 v_1 v1的编码 M v 1 M_{v_1} Mv1。可以看上图最右边部分,通过节点特征 h v 1 h_{v1} hv1,分别加上三个anchor-set S i S_i Si 中的每个节点特征,分别执行函数 F F F,再将三个执行后的结果加起来,就得到了 M v 1 M_{v_1} Mv1。这里还通过一个线性变换 W W W让三个结果变换到一个3维的位置编码 Z v 1 Z_{v_1} Zv1.

    然后 M v 1 M_{v_1} Mv1输入到AGG聚合函数后,就得到新的节点表示。

    那么这个位置编码 Z v 1 Z_{v_1} Zv1在哪里用到呢?作者表示,这个编码可以计算两个节点和节点标签的条件概率,即, p z ( y ∣ u , v ) = d z ( Z u , Z v ) p_z(y|u, v)=d_z(Z_u,Z_v) pz(yu,v)=dz(Zu,Zv),并且可以用一个可学习的函数 d z d_z dz来学习。

    然后对比了传统GNN和P-GNN的损失函数:

    在这里插入图片描述
    作者还有别的一些理论分析,略过。

    实验结果

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    java-net-php-python-jsp校园美食点评系统计算机毕业设计程序
    vim复制代码包含注释时格式会乱掉的解决办法
    springboot集成nacos作配置中心,动态配置不生效
    新的U-Net 网络结构
    c++处理图像---绘制物体的凸包:cv::convexHull
    MVC、MVP、MVVM区别
    Spring入门
    【更新】ARCGIS之成片区开发方案报备坐标txt格式批量导出工具(定制开发版)
    mongodb 数据分析
    nodejs+vue毕业生就业知道信息平台系统
  • 原文地址:https://blog.csdn.net/bagba/article/details/125549866