GIN — 把图神经网络的表达力顶到理论天花板
是什么
GIN(Graph Isomorphism Network)是一篇先证明再设计的图神经网络论文。它先回答一个理论问题:
一类常见的 GNN(每个节点反复看邻居、把信息聚合一下、再更新)究竟能区分多少种不同的图?
答案是:最多和 1968 年的 Weisfeiler-Lehman 图同构测试(简称 1-WL)一样强,再多也不行。
然后论文设计了一种叫 GIN 的 GNN,证明它正好达到了这个上限。
日常类比:把图神经网络比作一群围圈的人,每个人手里有一张颜色卡片。每一轮,每个人把”我自己的颜色 + 邻居的颜色清单”交给一台机器,机器吐出一张新颜色卡片。重复多轮后,看两张图最终的颜色分布是否一样,来判断它们是不是”同一张图”。GIN 证明了:这台机器能做的事,最多不超过 1-WL 这个老算法;而 GIN 自己刚好能做到那么多。
为什么重要
不理解 GIN,下面这些事都没法解释:
- 为什么 GraphSAGE / GCN 在某些图上怎么训都区分不开两个明显不同的结构——它们用 mean / max 聚合,理论上严格弱于 1-WL
- 为什么 2019 年之后所有”新 GNN”论文都要先报告”我比 1-WL 强”——GIN 把 1-WL 立成了基准线
- 为什么有些化学分子的分类任务所有主流 GNN 都败在同一类例子上——那类例子 1-WL 就分不开(比如正则图)
- 为什么 GNN 理论这条线后来分裂成 k-WL GNN / subgraph GNN / 等变 GNN——它们都在试图突破 GIN 划下的天花板
核心要点
GIN 的论证可以拆成 三步:
-
GNN 的能力 ≤ 1-WL:任何”看邻居、聚合、更新”形式的 GNN,区分两张图的能力绝不超过 1-WL 测试。这是上界。
-
要达到上界,聚合必须是单射函数:聚合函数收到的是一个多重集(multiset,邻居颜色的清单,可重复),它必须做到”不同的清单 → 不同的输出”,否则信息就丢了。mean / max 聚合在很多多重集上撞结果,所以严格弱。sum 不会撞——加起来的向量唯一对应一个多重集(前提是元素来自可数空间)。
-
GIN 用 sum + MLP 实现单射:更新规则
h_v ← MLP((1 + ε) · h_v + Σ_{u∈邻居} h_u)sum 保证多重集信息不丢,MLP(万能近似器)把求和后的向量再映射到一个单射输出。ε 是可学习的小标量,让”中心节点本身”和”邻居和”能被区分开。
实践案例
案例 1:mean 聚合为什么会”撞”
考虑两个节点 v 和 w:
- v 的邻居颜色多重集是
{red, red, blue, blue} - w 的邻居颜色多重集是
{red, blue}
mean 聚合给两个节点输出完全一样的均值(颜色编码取平均,比例相同)。GIN 的 sum 则会输出 2·red + 2·blue vs 1·red + 1·blue,不一样。
这就是为什么论文说 mean / max 严格弱于 sum。
案例 2:GIN 的 PyTorch 一行实现
class GINLayer(nn.Module): def __init__(self, dim): super().__init__() self.mlp = nn.Sequential(nn.Linear(dim, dim), nn.ReLU(), nn.Linear(dim, dim)) self.eps = nn.Parameter(torch.zeros(1))
def forward(self, h, edge_index): # 邻居和:把每个节点收到的邻居特征加起来 neigh_sum = scatter_add(h[edge_index[0]], edge_index[1], dim=0) return self.mlp((1 + self.eps) * h + neigh_sum)整个论文的核心可以压缩进 10 行代码。
案例 3:图级 readout 为什么要每层都拼
图分类任务要把”一堆节点向量”压成”一个图向量”。GIN 建议:
graph_repr = torch.cat([scatter_sum(h[k], batch, dim=0) for k in range(K)], dim=-1)每一层的 sum-readout 都拼起来,而不是只取最后一层。理由:浅层捕捉局部子结构,深层捕捉大范围结构,两者对最终分类都有用——只取最后一层会丢信息。
案例 4:用 1-WL 这把尺子怎么量一个 GNN
想自己验证某个 GNN 是否达到 1-WL 上界,可以用一对经典反例图:两个 6 节点的正则图(CSL 图),一个圈成单环,一个圈成两个三角形。1-WL 区分不了它们,所有 message-passing GNN 也都区分不了。如果你的 GNN 在这对图上 100% 准确,要么实现有 bug,要么它已经超出 1-WL(比如加了节点编号或子图特征)。这是 GIN 论文之后社区共享的”判官题”。
踩过的坑
-
把 GIN 当 SOTA 通用模型用:它是表达力上界证明,不是工程最强解。在分子图回归、3D 几何、大图节点分类等任务上,MPNN / SchNet / GraphSAGE 仍然各有更适合的版本。
-
以为 1-WL 已经很强:1-WL 区分不了正则图(每个节点邻居数一样的图,比如所有节点都是 3 度)。GIN 同样区分不了。这是 GNN 理论的著名痛点,催生了 k-WL GNN 和 subgraph GNN 整条研究线。
-
ε 直接设 0:很多实现偷懒把 ε 砍掉,结果
(a, [a, b])和(b, [a, a])在 sum 后可能撞(前者是2a + b,后者是2a + b)。论文明确建议保留可学习 ε。 -
MLP 太浅:单层线性 + ReLU 不一定够近似单射,论文实验用两层 MLP,是兼顾表达力和训练稳定性的折中。
-
特征是连续向量时 sum 不再保证单射:理论证明前提是节点特征来自可数空间(比如 one-hot 或离散类别)。当节点特征是连续浮点向量时,单射性只是”几乎处处”成立,工程上并不严格——但实务里影响有限,因为 MLP 会把表示重新拉开。
适用 vs 不适用场景
适用:
- 图级分类任务(分子毒性、社交网络分类)的小到中等数据集
- 需要”理论保证我没漏信息”的研究 baseline
- 教学:让人从零理解 GNN 表达力是什么意思
不适用:
- 节点分类的超大图(PinSAGE / GraphSAINT 这类工程方案更扛规模)
- 需要区分正则图(必须上 k-WL GNN / subgraph GNN)
- 几何 / 3D 分子任务(要 SE(3)-等变性,用 EGNN / SchNet)
- 异质图(节点 / 边类型不同)——需要异质 GNN 框架
历史小故事(可跳过)
- 1968 年:苏联两位数学家 Weisfeiler 和 Lehman 提出 WL 测试,用作图同构判定的启发式,发表在一份俄文期刊上。
- 2009 年:Gärtner 等人把 WL 改造成图核(graph kernel),这是 GNN 之前的主流图分类方法。
- 2017 年:GraphSAGE / GCN / MPNN 三波 GNN 爆发,效果好,但没人能说清它们究竟能做什么、不能做什么。
- 2018 年 10 月:MIT 的 Jegelka 组和 Stanford 的 Leskovec 组合作,把 1-WL 拉来当尺子量 GNN,发现 mean / max 都不够用,sum + MLP 刚好顶到上界。GIN 上传 arXiv。
- 2019 年:ICLR 接收,立刻成为 GNN 理论必引文献。
- 2020 年之后:‘突破 1-WL’ 成为 GNN 理论主流,PPGN / k-GNN / GNNML / Subgraph GNN 各显神通,全都把 GIN 当作起点参考。
学到什么
- 先证再设计 是工程更高的境界——不是先调参再讲故事,而是先把”能做到的天花板”证清楚,再把模型建到天花板。
- 多重集的单射性 这个看起来抽象的数学概念,决定了一个聚合函数的上限。
sum在工程里看起来平平无奇,但在表达力理论里是 mean / max 的”严格上位”。 - 理论上界 ≠ 工程最强:GIN 证明了能力上限,但不是说所有任务都该用它。理论保证只是下限的下限。
- 拿老算法当尺子:1968 年的 WL 测试在 2019 年成为评估深度学习模型的标准——好的理论工具有跨时代的生命力。
- 聚合函数的选择不是工程口味,是表达力问题:换个聚合可能不是”调参”,而是把模型整体能力等级换了一档。这个视角把”模型选型”从经验问题升级成可推导的设计问题。
延伸阅读
- 论文 PDF(17 页正文 + 大量附录):How Powerful are Graph Neural Networks? - arXiv 1810.00826
- 视频讲解:Petar Veličković — Theoretical Foundations of GNNs(剑桥讲座,把 1-WL 到 GIN 这条线讲透)
- 综述:A Survey on The Expressive Power of GNNs - Sato 2020(把 GIN 之后的所有’突破 1-WL’工作整理成一张图)
- 实现参考:PyTorch Geometric GINConv 文档(含 ε 是否可学的开关说明)
- 后续突破:Provably Powerful Graph Networks (PPGN) - Maron et al. 2019(第一篇明确超越 1-WL 的 GNN,达到 3-WL)
- graphsage-2017 —— GIN 论文里的对比基线,mean 聚合的代表
- weisfeiler-lehman-test —— GIN 上界来源的 1968 年算法(待补)
一句话总结
GIN 的贡献不是又造了一个 GNN,而是把 GNN 这一整类模型的能力上限和它达到上限的充分条件都写下来了——以后所有 GNN 论文要么在这条线下做工程,要么必须明确论证自己怎样越过这条线。这是把一个野蛮生长的领域装进数学框架的标志性工作。
关联
- graphsage-2017 —— 用 mean 聚合的前作;GIN 证明它严格弱于 1-WL
- message-passing-nn —— GIN 是 MPNN 框架下的一个具体实例(待补)
- universal-approximation —— GIN 用 MLP 当聚合后的单射映射器,依赖 MLP 的万能近似性质
- graph-attention-networks —— 同期 GNN 思路,用注意力替代固定聚合(待补)
- karp-21 —— 图同构问题的复杂度地位,与 1-WL 这种近似启发式形成对照