Live model · NeurIPS 2026 · computed in your browser

Radius as a shared coordinate: anchoring hyperbolic shells across graphs

In a hyperbolic embedding, radius is meant to say how central a node is. A model that learns radius freely learns it in one graph's scale, so the same structural role lands at different radii in different graphs. Invariant Hyperbolic Unfolding fixes radius from a structural percentile inside each graph and lets learning move only the angle. Generate two graphs of different size and see what that changes.

Invariant Structural Anchoring · Continuation

Generating graphs…

Radius from
Score
Continuation
Graph A · the scale was fitted here
Graph B · unseen, different size
Radius against structural percentile · both graphs
structural percentile: core → peripheryradial shells at the 25th, 50th, 75th percentile · radius drawn to scalegraph Agraph B
1 · The barrier

A learned radius carries its graph's scale

Radius is supposed to encode hierarchy, but nothing calibrates it across disjoint graphs. Switch to "raw score": a radius set on graph A's scale puts graph B's hubs and periphery at different radii than A's, and a frozen distance-based decoder has no way to tell which scale it is looking at.

2 · Invariant Structural Anchoring

Percentile first, then one shared map

Each node's coreness (or degree, PageRank) becomes a mid-rank percentile inside its own graph, with ties sharing a rank. One monotone map, r = Rmax(1 − p)β, turns the percentile into a radius. Equal percentile means equal radius in every graph.

3 · Continuation

Direction learns, radius stays

Message passing averages tangent vectors, and averaging vectors that point different ways shortens them. Turn Continuation off and add layers: the radial channel drifts and flattens. With it on, each layer keeps the new direction and resets the radius to its shell.