惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - zhang-yd

今日开源[第57期]beautiful-water源码解读 今日开源[第56期]human-atlas源码解读 今日开源[第55期]model-x-studio源码解读 今日开源[第54期]Spark(@sparkjsdev/spark)源码解读 今日开源[第53期]PlayCanvas Engine(playcanvas/engine)源码解读 今日开源[第52期]SPEEDBALL GI WebGPU Showcase(speedball-gi)源码解读 今日开源[第51期]Pi Agent Harness(pi)源码解读 今日开源[第50期]World Monitor(worldmonitor)游戏项目解读 今日开源[第49期]竹知了(zhuzhiliao)小玩具项目解读 今日开源[第48期]Operation Ironhold 游戏项目解读 今日开源[第47期]Academic Research Skills for Claude Code(ARS)项目skill解读 今日开源[第46期]AI-Research-SKILLs项目skill解读 今日开源[第45期]nature-research-skills项目skill解读 今日开源[第44期]findskills项目skill解读 今日开源[第43期]last30days-skill 今日开源[第42期]Cangjie Skill 今日开源[第41期]MoneyPrinterTurbo 今日开源[第39期]img2threejs 今日开源[第39期]Kronos 今日开源[第38期]Open Code Review (OCR) 今日开源[第37期]Openship 今日开源[第36期]croc 今日开源[第35期] Code-Review-Graph 今日开源[第34期] 《深入理解 AI Agent:设计原理与工程实践》 今日开源[第33期] Home Assistant Core 今日开源[第32期] Vibe-Trading 今日开源[第31期]RuView 今日开源[第30期]Chrome DevTools MCP 今日开源[第29期]RomM (ROM Manager) 今日开源[第28期]Page Agent
论文解读-《Understanding Oversquashing in GNNs through th...
zhang-yd · 2026-04-07 · via 博客园 - zhang-yd

1. 论文介绍

论文题目:Understanding Oversquashing in GNNs through the Lens of Effective Resistance
论文领域:图神经网络,图重连算法
论文发表:ICML 2023
论文背景:

gnngtr01

2. 论文摘要

消息传递图神经网络(GNNs)是一种流行的图结构数据学习结构。然而,GNN遇到的一个问题是过压缩,GNN很难在远程节点之间发送信息。理解和减轻过度压缩最近受到了研究界的极大关注。在本文中,我们通过分析输入图中节点间有效电阻透镜的过拟量来继续这一工作。有效阻力通过图中的路径直观地捕捉到两个节点之间连接的“强度”,并且在图论的许多领域都有丰富的文献。我们建议使用总有效阻力作为图中过拟总数的界,并为其使用提供理论依据。我们进一步发展了一种算法来识别要添加到输入图中的边,以最小化总有效电阻,从而减轻过拟。我们提供的经验证据的有效性,我们的总有效电阻为基础的重布线策略,以提高性能的GNNs。

3. 相关介绍

3.1 背景介绍

有效电阻的概念源于电力工程,指的是在电路中,当在节点u注入单位电流并在节点v移除时,两个节点u和v之间的有效电阻即为u与v之间的电势差。
一条边的两个端点之间的有效电阻与该边被包含在图的一棵生成树中的概率成正比。更形象的是:有效电阻与描述图瓶颈的图Cheeger常量更类似。由于其与众多其他对象(如随机游走和拉普拉斯算子)的多种关联,有效电阻在实践中得到了广泛应用。
总而言之,有效电阻是描述两个节点的连接程度的度量。在GNN中,有效电阻值也可作为衡量节点间信息挤压程度的边界指标。当两个节点间的有效电阻值越低时,图神经网络在这些节点间传递信息时所遭遇的信息挤压效应就越微弱。

3.2 论文贡献

1,给出了有效电阻这个指标来衡量过度挤压问题,
2,理论证明了通过图神经网络的任意层数从一个节点传递到另一个节点的信息量,其上限与节点间的有效电阻相关。
3,使用总的有效电阻作为一个整体过度挤压的度量,并提出基于此指标的图重连算法
4,用实验证明了本文算法的有效性

3.3 关系型GNN

在图结构重连过程中,底层图的结构将被改变。为了保留原始图的信息并充分利用图重连产生的新图结构,我们采用关系型图神经网络来兼容这两种信息R。
R-GNN网络的输入输出可以为
gnngtr02

其中ϕ和ψ都是可学习的函数

4. 有效电阻

4.1 有效电阻介绍

有效电阻的定义,两个节点uv之间的有效电阻可以为
gnngtr03

其中$1_v$是顶点v的指示向量,$L^+$是L的伪逆矩阵。
同样的,有效电阻也可以使用归一化的拉普拉斯矩阵来表达
gnngtr04

总之,节点uv两者的路径越多越短,其有效电阻则越小。

4.2 有效电阻和雅可比范式

GNN的雅可比范式的的上界是归一化邻接矩阵的多次幂。
gnngtr05

基于上面的定理3.2可以给有效电阻一个新的边界
gnngtr06

上面的不等式在雅可比和邻接矩阵的多次幂建立联系,那么需要在邻接矩阵多次幂和有效电阻建立联系
拉普拉斯的伪逆矩阵在非二部图中可以为

gnngtr07

所以有:
gnngtr08

总的有效电阻 $R_{tot}$为一个图中所有节点对的有效电阻的总和。
总有效电阻限定了图中所有顶点对之间雅可比矩阵之和的上界
gnngtr09

4.3 有效电阻和平衡福尔曼曲率比较

有效电阻是面对全局的,而曲率是针对局部,如下图,ab和uv有着同样的曲率,但有效电阻不一。
gnngtr10

4.4 有效电阻和通勤时间边界

节点u与v之间的过度挤压现象也可以通过通勤时间τ(u,v),即在随机游走中从u出发到v再返回u的预期步数来界定。
通勤时间与有效电阻呈正比关系,两项研究还采用了类似的技术手段将有效电阻/通勤时间与图神经网络的雅可比矩阵相关联。
两者主要差异源于:(1)所界定量的不同(两者均与图神经网络雅可比矩阵相关);(2)对图神经网络假设条件的不同。

4.5 有效电阻和谱间隙

理论证明了节点间的最坏情况有效电阻与谱隙成正比关系。

gnngtr11

gnngtr12

图的过度挤压行为不仅与谱间隙相关,更与拉普拉斯算子的整个谱系紧密相连。因此,提升拉普拉斯算子的整个谱系(而不仅仅是谱间隙)可能进一步缓解过度挤压现象。

gnngtr13

5. 最小化总有效电阻的图重连算法

5.1 算法的理论基础

首先是推导一个公式来确定添加特定边能在多大程度上降低总电阻,然后基于公式来增加新的边以最小化整体有效电阻。

首先引入双调和距离,u和v之间的双调和距离定义为

gnngtr14

根据定义有,节点u与v之间的双调和距离平方与总电阻对该边权重的偏导数成正比。

gnngtr15

所以有理论

gnngtr16

给图添加边后,整个拉普拉斯也会发生变化。从L到L+(1u-1v)(1u+1v)^T的变化。

有引理

gnngtr17

根据上面的可以得到

gnngtr18

下图展示了在不同形态的图下边的对应的值的变化。

gnngtr19

5.2 GTR算法细节

全称是基于贪心的全局有效电阻算法Greedy Total Resistance
根据定理4.1,每次不断加边以最大化变量。
对于不连通的图而言,不同连通分量中顶点间的有效电阻和双调和距离并不具备实际意义。因此,我们仅会在已属于同一连通分量的顶点之间添加边。
添加多条边,定理4.1只表述了找到一条边可以最大减少总的有效电阻。但也给出一些例子说明了添加多条边会更优的情况,添加边和减小总电阻的关系并不是单调的。最好的方式则是利用全局暴力搜索。

6. 实验设置

先来看FoSR和GTR在谱间隙和总的阻尼的变化,数据集基于Cora。

gnngtr20

任务是基于图分类任务,数据集全部来自TUDataset,基座模型采用GCN,R-GCN,GIN和R-GIN
实验结果为

gnngtr21

7. 核心代码


    def compute_edges(self, num_edges : int) -> torch.Tensor:
        """ Calculate edges to add to the graph using the GTR heuristic. """
        ret_edges = torch.zeros((2,0), dtype=torch.long)
        for _ in range(num_edges):
            # The entries resistance_matrix[s,t] and biharmonic_matrix[s,t]
            # are the effective resistance and biharmonic distance between s and t.
            pinv_diagonal = torch.diagonal(self.pinv)
            resistance_matrix = pinv_diagonal.unsqueeze(0) + pinv_diagonal.unsqueeze(1) - 2*self.pinv
            squared_pinv_diagonal = torch.diagonal(self.squared_pinv)
            biharmonic_matrix = squared_pinv_diagonal.unsqueeze(0) + squared_pinv_diagonal.unsqueeze(1) - 2*self.squared_pinv
            # diff_matrix[s,t] stores the change in total resistance when the edge {s,t} is added to the graph
            diff_matrix = (biharmonic_matrix / (1 + resistance_matrix))
            # We only want to add an edge not already in the graph and not between connected components.
            # Multiplying by edge_mask sets the value of all self-loops
            # and edges already in the graph to 0.
            # Multiplying by component_mask sets the value
            # of all edges between connected components to 0.
            masked_diff_matrix = diff_matrix * self.edge_mask * self.component_mask
            # Find the endpoints of the edge that most decrease the total resistance.
            # torch.argmax returns the index of max in flattened coordinates, hence the divmod.
            s, t = divmod(torch.argmax(masked_diff_matrix).cpu().item(), self.data.num_nodes)
            # Add the edge {s,t} to the return array
            new_edges = torch.Tensor([[s, t], [t, s]]).long()
            ret_edges = torch.cat([ret_edges, new_edges], 1)
            # Update the matrices for the next iteration
            self.update_pseudoinvere(s, t)
            self.update_squared_pseudoinverse(s, t)
            self.update_laplacian(s, t)
            self.update_edge_mask(s, t)
        return ret_edges

8. 总结和个人感想

围绕着有效电阻为核心,同时充分对比了其他同样描述邻接矩阵的连接特征的属性,如曲率,谱间隙,针对全局有效电阻来设计一个简单可行的GTR算法,重在分析。