Over-smoothing vs Over-squashing: The Difference

8 minute read

Published:

TL;DR: Oversmoothing = forward-pass feature collapse from too much averaging: \(\hat{A}^{K} \to u_1u_1^{\top}\), so nearby nodes become indistinguishable. Oversquashing = information and gradient collapse at bottleneck edges: \(\lVert \partial h_v^{(K)}/\partial x_u \rVert\) is throttled by \((\hat{A}^{K})_{vu}\) for distant \(u\). Both worsen with depth, but in different ways, on different nodes, and they need different fixes.
Oversmoothing vs oversquashing
Over-smoothing vs over-squashing — two distinct failure modes in deep GNNs (Topping et al., 2022)

Intuition First

Imagine you are in a room full of people whispering a message from person to person. Oversmoothing is what happens when everyone repeats the average of all messages they heard — after enough rounds, everyone says the same thing. The content has been diluted to nothing.

Oversquashing is different: imagine two distant groups connected by a single corridor (one “bridge” person). All information between the groups must squeeze through that one person. No matter how many rounds of whispering, the bridge person cannot faithfully relay an exponentially growing flood of messages.

Same symptom (performance collapse), completely different causes.

Oversmoothing: features converge Layer 1 → rich Layer 8 → all identical (faded) Oversquashing: bottleneck edge 🔴 Bridge = bottleneck Exponential info squashed through 1 edge
Left: oversmoothing — node features fade toward a uniform value. Right: oversquashing — all cross-cluster information must traverse the single red bridge node.

The Confusion

Both oversmoothing and oversquashing:

  • Occur with deep GNNs
  • Cause performance degradation
  • Involve information loss

They are often mentioned together or confused. But they are fundamentally different phenomena.

Head-to-Head Comparison

PropertyOversmoothingOversquashing
Root causeIterated averaging → all embeddings become collinearReceptive-field growth + bottleneck topology → info bottleneck
Formal statement\(\hat{A}^{K} \to u_1u_1^{\top}\), with \(u_1 \propto \tilde{D}^{1/2}\mathbf{1}\)\(\lVert \partial h_v^{(K)}/\partial x_u \rVert \le (cw)^{K}(\hat{A}^{K})_{vu}\)
Governed bySpectral gap \(1 - \mu\), \(\mu = \max_{i\ge2}\lvert\lambda_i\rvert\)Entries of \(\hat{A}^{K}\); effective resistance \(R(u,v)\)
DirectionForward pass (computation)Both forward (dilution) and backward (gradient)
Which nodes affectedAll nodes, especially nearby onesNodes that are far apart (long paths)
Graph structureWorse on dense, well-connected graphsWorse on tree-like, sparse graphs with bridge edges
With more layersProvably gets worse (converges to a rank-one limit)Could get better (reach distant nodes) but squashing increases
MeasureDirichlet energy \(\to 0\); MAD \(\to 0\)Jacobian norm \(\to 0\)
Spectral viewLow-pass filter removes high frequenciesMostly topological (curvature, resistance), though \(\hat{A}^{K}\) ties the two together
FixResidual connections, jump knowledge, APPNPGraph rewiring, global attention, virtual nodes

When You Have Oversmoothing

You add layers hoping to capture longer-range patterns, but performance peaks at 2-3 layers then drops. Node embeddings in the last layer have near-zero pairwise distances. The model assigns nearly the same embedding to all nodes.

Symptom: accuracy peaks at 2-3 layers, then monotonically decreases. MAD scores drop toward zero with depth.

Fix: residual connections (GCNII), APPNP, JK-Net (jumping knowledge). Do NOT add more layers — that makes it worse.

When You Have Oversquashing

You have a task requiring long-range reasoning (e.g., predicting whether two distant atoms in a molecule will react). The model performs well on local structure tasks but fails on long-range ones. Adding more layers doesn’t help.

Symptom: performance on long-range tasks (e.g., LRGB benchmarks) is poor regardless of depth. Jacobian norms near zero for distant node pairs.

Fix: graph rewiring (SDRF, add virtual nodes), global attention (Graph Transformers, GPS). Adding residual connections does NOT fix oversquashing — information still can’t reach distant nodes.

Worked Diagnostic Example

Consider a 4-layer GCN on a path graph: A — B — C — D — E — F — G — H — I — J (10 nodes, so the distance from A to J is 9).

Oversmoothing check: track the Mean Average Distance (MAD) between node embeddings at each layer. As depth grows, MAD falls monotonically toward zero — the embeddings collapse onto \(\mathrm{span}(u_1)\) and all nodes start to look alike. If you need to classify node A differently from node J, the model progressively loses the ability to do so.

Oversquashing check: look at the Jacobian \(\partial h_A^{(K)} / \partial x_J\) — how much does node J’s input affect node A’s output?

  • With \(K = 4\), node A’s receptive field reaches only 4 hops, and \(\mathrm{dist}(A,J) = 9 > 4\). So \((\hat{A}^{4})_{AJ} = 0\) and hence \(\partial h_A^{(4)}/\partial x_J = 0\) exactly — A literally cannot see J. No training fixes this; it is a statement about the computation graph.
  • With \(K = 9\) the receptive field does reach J, but \((\hat{A}^{9})_{AJ}\) is minuscule, so the bound \(\lVert \partial h_A^{(9)}/\partial x_J \rVert \le (cw)^{9}(\hat{A}^{9})_{AJ}\) is near zero anyway.

A caveat on the second point, because it is a common overstatement: on a path the receptive field grows only linearly, not exponentially, and there is exactly one path from A to J. The decay here is not “exponentially many competing paths” — it comes from the random-walk mass spreading out over the whole 9-hop neighbourhood at every step, so that the share arriving from J alone is exponentially small in the distance. The exponential-fan-in story applies to tree-like or expander graphs; the effective-resistance story covers the path case too, and both are instances of the same \((\hat{A}^{K})_{vu}\) bound.

Both problems can coexist: you need 9 layers to reach J (depth demand), but 9 layers cause oversmoothing. The fix is not “just add more layers.”

Key Insight: Oversmoothing is measured in the forward pass (do node embeddings converge?). Oversquashing is measured via Jacobians (does a distant node's input influence this node's output?). You can have one without the other: a 2-layer GCN on a bottleneck graph has oversquashing but not oversmoothing.

A Unified View

Both Li et al. (oversmoothing) and Alon & Yahav (oversquashing) can be read as diagnosing failures of information flow, in different regimes:

Short range:  Oversmoothing dominates (too many hops → convergence)
Long range:   Oversquashing dominates (too little mass reaches distant nodes)

What makes them genuinely two sides of one coin is that both are statements about the same matrix, \(\hat{A} = \tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}\), read in two different ways. Oversmoothing is about the limit of its powers,

\[ \hat{A}^{K} \;\xrightarrow[K \to \infty]{}\; u_1 u_1^{\top}, \qquad u_1 = \frac{\tilde{D}^{1/2}\mathbf{1}}{\lVert \tilde{D}^{1/2}\mathbf{1}\rVert}, \]

a rank-one collapse controlled by the spectral gap. Oversquashing is about an individual entry of the same power, which upper-bounds how much one node can influence another:

\[ \left\lVert \frac{\partial h_v^{(K)}}{\partial x_u} \right\rVert \;\le\; (cw)^{K} \bigl(\hat{A}^{K}\bigr)_{vu}. \]

So one pathology says the powers of \(\hat{A}\) converge to something uninformative, while the other says specific entries of those powers are too small. Depth pushes on both at once — which is exactly why it cannot resolve either.

They create opposing pressures on depth:

  • Oversmoothing says: use FEWER layers
  • Task requirements say: use MORE layers (to reach distant nodes)
  • Oversquashing says: more layers don’t help anyway for bottlenecks

The resolution: decouple propagation from transformation (APPNP, SGC) and/or add global attention (Graph Transformers, GPS).

The practical diagnostic: Run your GNN on the same task with increasing layers (1, 2, 4, 8, 16). If performance peaks early and then drops: oversmoothing. If performance never improves beyond a ceiling regardless of depth, and tasks require long-range reasoning: oversquashing. If both: you need both architectural and rewiring fixes.

Fixes Summary

Oversmoothing fixes (forward collapse):

  • GCNII: residual connections to initial representation
  • JK-Net: concatenate all layer outputs
  • APPNP: teleport back to initial features during propagation
  • DropEdge: randomly drop edges to reduce averaging
  • PairNorm: explicit normalisation to maintain diversity

Oversquashing fixes (bottleneck communication):

  • SDRF: Ricci flow-based graph rewiring
  • Virtual node: global communication node
  • Graph Transformers: bypass message passing for long-range
  • GPS: combine local MPNN + global attention

Fixes for both:

  • GPS (General, Powerful, Scalable): local MPNN avoids oversmoothing; global attention bypasses oversquashing

Summary

QuestionOversmoothingOversquashing
Where does info die?Nearby (convergence)At bottleneck edges (long range)
When does it hurt?Dense graphs, many layersSparse graphs with bridges, long-range tasks
Can more layers help?Never (makes it worse)Should, but squashing increases too
Key fixResiduals, less aggregationRewiring, global attention

These two pathologies define the fundamental challenges of deep GNNs. Understanding both — and distinguishing them — is essential for diagnosing GNN failures and choosing appropriate solutions.

References