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

推荐订阅源

K
Kaspersky official blog
罗磊的独立博客
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
量子位
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
B
Blog RSS Feed
腾讯CDC
博客园_首页
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
博客园 - Franky
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
D
Docker
P
Privacy & Cybersecurity Law Blog
S
Securelist
V
V2EX
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
The Hacker News
The Hacker News
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Cloudbric
Cloudbric
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
V2EX - 技术
V2EX - 技术

博客园 - zhang-yd

今日开源[第33期] Home Assistant Core 今日开源[第32期] Vibe-Trading 今日开源[第31期]RuView 今日开源[第30期]Chrome DevTools MCP 今日开源[第29期]RomM (ROM Manager) 今日开源[第28期]Page Agent 今日开源[第27期]video-use 今日开源[第26期]SimpleX Chat 今日开源[第25期]LingBot-Map 今日开源[第24期]OpenMontage 今日开源[第23期]Voicebox 今日开源[第22期]tw93/Pake 今日开源[第21期]yifanfeng97/Hyper-Extract 今日开源[第20期]google-research/timesfm 今日开源[第19期]Panniantong/Agent-Reach 今日开源[第18期]karpathy/autoresearch 今日开源[第17期]public-domain-books-translation 今日开源[第16期]soxoj/maigret 论文解读-《Dual-Kernel Graph Community Contrastive Learning》 今日开源[第15期]agent-skills 论文解读-《Hyperbolic Continuous Structural Entropy for Hierarchical Clustering》 今日开源[第14期]google/skills 今日开源[第13期]turbovec 今日开源[第12期]LiteParse 今日开源[第11期]OmniVoice-Studio 今日开源[第10期]ds4(DwarfStar) 今日开源[第9期]graphify 今日开源[第8期]open-notebook 今日开源[第7期]spec-kit 今日开源[第6期]Production Agentic RAG Course 今日开源[第5期]Headroom 今日开源[第4期]OpenTalking 今日开源[第3期]train-llm-from-scratch 今日开源[第2期]Project N.O.M.A.D. 今日开源[第1期]MoneyPrinterTurbo LearningCell代码解读 论文解读-《It Takes a Graph to Know a Graph Rewiring for Homophily with a Reference Graph》 论文解读-《Mitigating Over-Squashing in Graph Neural Networks by Spectrum-Preserving Sparsification》 论文解读-《Make Heterophily Graphs Better Fit GNN A Graph Rewiring Approach》 论文解读-《Temporal Graph Rewiring with Expander Graphs 》 论文解读-《Homophily-oriented Heterogeneous Graph Rewiring》 论文-Deep appearance modeling: A survey 代码阅读笔记-nanoclaw 代码阅读笔记-OpenManus 论文解读-《An Empirical Evaluation of Rewiring Approaches in Graph Neural Networks》 论文解读-《Probabilistic Graph Rewiring via Virtual Nodes》 论文解读-《Probabilistically Rewired Message-Passing Neural Networks》 论文解读-《Joint Graph Rewiring and Feature Denoising via Spectral Resonance》 代码阅读笔记-nanobot 论文解读-《Oversquashing in GNNs through the lens of information contraction and graph expansion》 论文解读-《GNNs Getting ComFy Community and Feature Similarity Guided Rewiring》 论文解读-《PANDA Expanded Width-Aware Message Passing Beyond Rewiring》 代码阅读笔记-AiPyApp 论文解读-《Deep Graph Contrastive Representation Learning》 论文解读-《Community-Invariant Graph Contrastive Learning》 论文解读-《DiffWire Inductive Graph Rewiring via the Lovász Bound》 论文解读-《The Effectiveness of Curvature-Based Rewiring and the Role of Hyperparameters in GNNs Revisited》 论文解读-《Over-Squashing in GNNs and Causal Inference of Rewiring Strategies》 论文解读-《Uncertainty-Aware Graph Structure Learning》
论文解读-《Understanding Oversquashing in GNNs through the Lens of Effective Resistance》
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算法,重在分析。