GIN--HOW POWERFUL GNN
HOW POWERFUL ARE GRAPH NEURAL NETWORKS?
本文是 Jure Leskovec 又一力作,首先对图神经网络的原理做了深入检出、提纲挈领的叙述,然后从原理方面介绍了如何发挥图神经网络的效用。
图神经网络可以分为三个阶段:
Aggregate:聚合邻居节点信息
\[a^{(k)}_v = AGGREGATE^{(k)}(\{h_{\mu}^{(k−1)}:\mu\in N(v)\})
\]Combine:聚合邻居和当前节点
\[h_{\mu}^{(k)} = COMBINE^{(k)}({h_{\mu}^{(k−1)},a^{(k)}_v})
\]Readout:整合表示图中所有节点
\[h_G = READOUT(\{h^{(K)}_v|v \in G\})
\]
在GraphSAGE中,Aggregate和Combine过程如下,GCN同理

那么如何衡量图神经网络是否学到了良好的表示,这里提到了 Weisfeiler-Lehman test ,有兴趣可以下去研究。
文章的和核心出发点在于:对于子树结构相同且对应节点特征相同的的俩个节点,一个有效的GNN应该有能力映射两个节点到embedding空间中相同的位置,决不会将两个不同的节点映射到同一embedding空间位置。
Intuitively, a maximally powerful GNN maps two nodes to the same location only if they have identical subtree structures with identical features on the corresponding nodes
A maximally powerful GNN would never map two different neighborhoods
因此,GNN的Aggregate必须是单射的,单射函数(一对一函数)如下

由此引出定理3,定理3是本文中一个重要的定理,其规定了一个powerful GNN的理论形式,即函数 \(f\) 的变量是一个multiset,Combine \(\phi\) 是单射函数, Readout 是单射函数。

那么如何根据定理3设计改进GNN?
GIN:Graph Isomorphism Network
针对节点分类任务,使用nodel-level级GIN:

对于图分类任务,替换 \(h_G\) 如下

注意到式(4.1)做了两处改变,
- 使用sum作为agg函数
- 使用MLP替代 \(\sigma W\)
那么GIN是否有效?实验分别验证了 sum 和MLP 在此发挥的作用,分别用
(1) 1-layer perceptrons instead of MLPs and
(2) mean or max-pooling instead of the sum

根据引理7,单层perceptrons更接近于线性映射,使GNN退化为简单的summing。
作者用下面两个图阐述了sum>mean>max,此部分内容有兴趣可以阅读原文。


实验结果也验证了在大部分模型和任务上,GIN可以带来有效的提升。

原文:HOW POWERFUL ARE GRAPH NEURAL NETWORKS?
官方GitHub:https://github.com/weihua916/powerful-gnns
《Graph Neural Networks多强大?》阅读笔记 - 陈乐天的文章 - 知乎 https://zhuanlan.zhihu.com/p/62006729
GraphSAGE: GCN落地必读论文 - 风浪的文章 - 知乎 https://zhuanlan.zhihu.com/p/62750137
GIN--HOW POWERFUL GNN的更多相关文章
- 论文解读(GIN)《How Powerful are Graph Neural Networks》
Paper Information Title:<How Powerful are Graph Neural Networks?>Authors:Keyulu Xu, Weihua Hu, ...
- 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...
- PGL图学习之图神经网络GraphSAGE、GIN图采样算法[系列七]
0. PGL图学习之图神经网络GraphSAGE.GIN图采样算法[系列七] 本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/50619 ...
- zz【清华NLP】图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐
[清华NLP]图神经网络GNN论文分门别类,16大应用200+篇论文最新推荐 图神经网络研究成为当前深度学习领域的热点.最近,清华大学NLP课题组Jie Zhou, Ganqu Cui, Zhengy ...
- 论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》
论文信息 论文标题:Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks论文作者:Mingqi Yang, Ya ...
- HDOJ 3593 The most powerful force
树形DP / 泛化物品的背包...可以去看09年徐持衡论文<浅谈几类背包问题> The most powerful force Time Limit: 16000/8000 MS (Jav ...
- CodeForces 86D Powerful array(莫队+优化)
D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...
- hdu 4150 Powerful Incantation
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4150 Powerful Incantation Description Some dangerous ...
- D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
莫队算法就是优化的暴力算法.莫队算法是要把询问先按左端点属于的块排序,再按右端点排序.只是预先知道了所有的询问.可以合理的组织计算每个询问的顺序以此来降低复杂度. D. Powerful array ...
- 10+ powerful debugging tricks with Visual Studio
10+ powerful debugging tricks with Visual Studio Original link : http://www.codeproject.com/Articles ...
随机推荐
- <七>深入理解new和delete的原理
new ,delete 运算符 int *p =new int; delete p; 看一下汇编代码 可以看到new 和delete 运算符其实也是 operator运算符重载函数的调用 malloc ...
- Springboot使用基础总结
搭建项目 (Eclipse | | IDEA====>官方生成DEMO:http://start.spring.io/) 模版引擎 ( thymeleaf freemarker ...
- linux系统安装nginx中的subs-filter模块
debain系 nginx源里面一般都包含 nginx的第三方模块 所以对应已经安装了nginx 的系统可以直接安装第三方模块 sudo apt install libnginx-mod-http-s ...
- 【大数据面试】【框架】Hadoop-入门、HDFS
一.入门 1.常用端口号 2.x 50070:查看HDFS Web-UI 8088:查看MapReduce运行情况 19888:历史服务器 9000:hdfs客户端访问集群 50090:Seconda ...
- gulp报错The following tasks did not complete
代码如下: //引用gulp模块 const gulp = require('gulp'); //使用gulp.task()建立任务 gulp.task('first', () => { con ...
- Vue快速上门(2)-模板语法
VUE家族系列: Vue快速上门(1)-基础知识 Vue快速上门(2)-模板语法 Vue快速上门(3)-组件与复用 01.模板语法 1.1.template模板 <template>是H5 ...
- 线程、GIL全局解释器锁、进程池与线程池
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...
- python从公众号文章中获取二维码
在做一个公众号采集的项目中,客户有个要求,想把二维码的url保存到数据库中,如图. 原本以为要各种骚操作各种逆向才能获取得到,没想到竟然很简单. 第一步 观察二维码url的规范 https://mp. ...
- 【转载】EXCEL VBA 20个有用的ExcelVBA代码
1.显示多个隐藏的工作表 如果你的工作簿里面有多个隐藏的工作表,你需要花很多时间一个一个的显示隐藏的工作表. 下面的代码,可以让你一次显示所有的工作表 Sub UnhideAllWoksheets() ...
- java RSA加密
参考了下面这个博主的文章,很有收获,简单处理后记录一下 RSA加密.解密.签名.验签的原理及方法 - PC君 - 博客园 工具类自带生成秘钥的方法,也可以用第三方工具生成秘钥 package com. ...