6.3.7 · D2Interpretability & Explainability

Visual walkthrough — Circuits and superposition

3,510 words16 min readBack to topic

Before line one, three plain-word promises about the symbols we use:

  • A dimension = one number the model is allowed to store. Two dimensions = a flat sheet; three = a room; = an -number list. We draw everything in 2D so your eyes can do the work.
  • A feature = one thing the model wants to detect ("is this about apples?"). We represent each feature as an arrow (a vector) pointing out from the centre.
  • Activation space = the sheet the arrows live on. When several features are "on" at once, we add their arrows tip-to-tail.

Step 1 — One neuron, one feature: the wasteful honest way

WHAT. We give each feature its own private axis. Feature 1 points straight along the horizontal axis; feature 2 straight up the vertical axis. In 2D that means we can store exactly 2 features — no more.

WHY. This is the safe, "one neuron per idea" design. If feature 1 is on, only the horizontal number lights up; if feature 2 is on, only the vertical one does. They never talk to each other because their arrows sit at a perfect right angle.

PICTURE. Look at the two arrows in the figure. The angle between them is exactly . To measure "do two arrows interfere?" we first need a tool that turns an angle between two arrows into one number. That tool is the dot product, defined right here before we use it:

Now apply it to our two perpendicular unit arrows:

A dot product of zero means zero leakage: perfectly orthogonal features. The cost is brutal — dimensions buy you only features.


Step 2 — The problem: we want more arrows than we have axes

WHAT. Now demand 4 features but keep only 2 dimensions. In a flat sheet, if we insist all four arrows keep a positive pairwise dot product (they all point into the same half-plane, as a real model's features often do), the tightest even spread packs them at — one arrow every across a half-turn. (A full even spread over the whole circle would sit at , but arrows at and point "backwards", giving negative readings; we place them across a half-turn so every feature reads as a positive presence.)

WHY. Real language models want to detect thousands of features but have only hundreds of neurons per layer. So (features) (dimensions) is the normal situation, not the exception. The honest orthogonal plan from Step 1 is impossible: you cannot fit 4 mutually perpendicular arrows on a flat sheet. Something has to give.

PICTURE. Notice the neighbouring arrows are now only apart, not . Their dot product is no longer zero:

That is the price of packing. This leftover number — the amount two feature arrows accidentally point along each other — gets its own name.


Step 3 — Watching interference happen: two features on at once

WHAT. Turn on feature 2 and feature 3 together. We add their arrows tip-to-tail to get the stored activation .

WHY. The model doesn't store "feature 2 is on" and "feature 3 is on" separately — it stores their sum, one point on the sheet. To read a feature back out, it projects onto that feature's arrow (a dot product again — that is why we built the dot product first).

PICTURE. Project the summed arrow back onto to ask "how much feature 2 is present?". Here is at and is at , so the angle between them is and their signed overlap is positive:

We wanted to read 1 (feature 2 is fully on) but got 1.5. The other active feature contaminated the reading — this time by adding to it. That gap is interference. It is small enough here to survive with a threshold — but stack up enough active features and the leak drowns the signal.


Step 4 — Why leaks add like a random walk, not a straight line

WHAT. Suppose features are on at once. Each contributes a leak of size about , but with a random or sign (we just saw both signs in Step 3: a from , a from ). We ask: how big is the total leak?

WHY (where the random signs come from). Under the random-direction model, the dot product between your target arrow and another random arrow is equally likely to be positive or negative — by symmetry, flipping a random arrow to its mirror image is just as probable, and that flips the sign of the dot product. So its average is and its typical size is . Modelling each active leak as with a fair coin flip (, independent across features) is therefore not a hand-wave — it follows directly from the assumption above. Under that fair-coin model, the total is a random walk: steps of size , each direction chosen by a coin.

The tempting wrong answer is "total leak " (just add them). That is only true if every coin lands the same way — vanishingly unlikely. Because the signs cancel in pairs, the walk drifts back toward zero.

PICTURE. The figure shows two accumulations of unit steps: same-sign (left, grows straight to ) versus fair-coin random-sign (right, wanders near the origin). A random walk of unit steps ends a typical distance from the start (standard result: variance adds, so spread ). Hence:

We use (not ) because that is what fair-coin signs do — this single fact is why superposition works so much better than the naive count suggests.

Recall Why is the typical overlap of two random arrows

? Take two independent random unit arrows in . Fix the first one along an axis; then the dot product equals the first coordinate of the second arrow. A random unit vector splits its length- "energy" evenly across coordinates, so each coordinate has typical size (because the squared coordinates sum to , each is about , and its square-root is ). Therefore two random arrows have typical overlap the more dimensions, the closer to perpendicular random arrows become. This is the quantitative engine behind "high-dimensional space has room for many almost-orthogonal directions."


Step 5 — Sparsity: keep the number of active features tiny

WHAT. Introduce sparsity = the probability any one feature is on. If there are features total, the expected number active at once is

WHY. From Step 4, interference . The model can tell features apart only while this leak stays under the true signal (which is about ). We need a precise yardstick for "under the signal", so we define one:

Requiring the reading to stay decodable means keeping the leak below the signal, i.e. , which rearranges to:

PICTURE. The figure shows two vaults holding the same arrows. In the dense vault (high ) many arrows glow at once → leaks pile up → the reading is mush. In the sparse vault (low ) only a handful glow → leaks stay tiny → clean decode. Same geometry, wildly different usability — sparsity, not room, is what makes packing safe.

Solve for how many features we can afford (square both sides, invert):

which is usually written in the equivalent scale-free form below (absorbing the fixed signal size into ):


Step 6 — The geometric ceiling is much higher than the usable one

WHAT. Separately, ask "how many arrows can I even fit below overlap , ignoring decoding?" This is a pure geometry question about how many almost-perpendicular directions live in dimensions.

WHY (a sketch of the union-bound argument). Do it in three plain steps:

  1. One random pair is usually fine. From the Step 4 recall box, two random unit arrows in have overlap clustered around with spread . The chance a single pair exceeds overlap is small — it falls off like , where is just a fixed positive number from the Gaussian tail (think "a constant near "; its exact value doesn't change the story, only the slope).
  2. Count the pairs. With arrows there are pairs that could go wrong.
  3. Union bound (worst-case add-up). The chance any pair fails is at most (number of pairs) (chance one pair fails) . Keep this below and you succeed with all arrows below overlap . Solving gives exponential in :

PICTURE. The figure plots two curves against : the geometric ceiling rocketing upward, and the decodable limit (a fixed height for fixed sparsity). The geometric line is far above. Conclusion: you never run out of places to put arrows; you run out of ability to read them back. Sparsity is the binding constraint — geometry gives you room to spare.


Step 7 — Degenerate cases: check the extremes

Every honest derivation must survive its own edge cases. The figure shows all three side by side.

  • , overlap (the orthogonal baseline). Plug in: no leak, no sparsity needed. This is exactly Step 1 — superposition gracefully reduces to the honest one-feature-per-axis design. ✓
  • (every feature always on). Interference with all active. Capacity , which for meaningful is order — the model gets no benefit, matching intuition: if everything is always on, overlaps can't hide. ✓
  • (arrows nearly identical). Denominator and the two features become indistinguishable directions — capacity collapses and decoding fails even for one active feature. The formula and the picture agree: maximal overlap = maximal confusion. ✓

Because the law behaves correctly at both ends and at the orthogonal midpoint, we trust it in between.


The one-picture summary

This final figure has two panels, and it is worth walking through them slowly rather than at a glance.

Left panel — the packing. The four coloured arrows are the feature directions from Steps 1–2, crowded at small overlap . The thick slate arrow is the stored activation when two features are on together (Step 3). Trace it: it is not aligned with any single feature — that misalignment is the interference you must read through. This panel is the whole "storage" side of the story: many arrows, one shared sheet, unavoidable leak.

Right panel — the two ceilings. The horizontal axis is the number of dimensions ; the vertical axis (log scale) is how many features you can hold. The steep lavender curve is the geometric packing bound from Step 6 — the number of arrows you can physically fit below overlap ; it rockets upward as grows because random arrows get closer to perpendicular (, Step 4 recall box). The flat coral dashed line is the decodable bound from Step 5 — the number you can actually read back at a fixed sparsity ; it does not climb with because it is capped by how many features light up at once, not by geometry. The vertical gap between them — lavender far above coral — is the entire punchline: space is cheap, decoding is dear, and sparsity (not dimension count) is what buys decoding.

Read the two panels together, left-to-right: pack arrows tightly onto one shared sheet (left) → but you can only recover the few that light up simultaneously (right). The left panel shows why leak is unavoidable; the right panel shows which of the two ceilings actually stops you.

Recall Feynman retelling — say it back in plain words

Imagine a small sheet of paper and a huge list of ideas to store. If you insist each idea gets its own perpendicular direction, you run out of room instantly — only two ideas fit on a flat sheet. So you cheat: you let the idea-arrows sit at slight angles, close-but-not-touching. The price is a little leak — when one idea is on, it faintly triggers its neighbours (that's the dot product being nonzero), sometimes nudging the reading up, sometimes down, depending on which way the neighbour leans. Now the magic: if you turn on many ideas at once, their leaks come with random plus and minus signs like fair coin flips (because unrelated feature arrows behave like independent random directions), so they mostly cancel — the total mess grows like the square-root of how many are on, not linearly. That means as long as only a few ideas are ever on at the same time (sparsity), the leaks stay under the real signal and you can still read each idea back cleanly. To measure "under the signal" we use the signal-to-noise ratio, a unitless number = true reading ÷ typical leak, and we require it to stay above a break-even value . Purely geometrically you could pack an exponential number of arrows (bigger lets arrows sit closer to perpendicular, so shrinks and the ceiling soars), but you can only decode about of them — so the thing that actually limits you isn't space, it's how often features light up together. That is superposition, and it's why one neuron ends up meaning three unrelated things.

Recall Quick self-test

Why does total interference grow as and not ? ::: The leaks carry random signs (fair coin flips), so they partly cancel — a random walk of unit steps ends about from the start, not . What is the assumption that makes the leaks fair coin flips? ::: That feature arrows are independent, uniformly random directions on the unit sphere in — so their dot product with a target is equally likely or . What exactly is ? ::: The smallest value of the unitless ratio (true signal ÷ typical interference ) at which a threshold can still tell "feature on" from "feature off"; roughly in the clean toy model. In , what happens as features get sparser ()? ::: The denominator shrinks, so the decodable feature count grows large — sparser features allow heavier usable superposition. Why do random unit arrows in have typical overlap ? ::: A unit vector spreads its length-1 energy over coordinates, so each coordinate is about ; the dot product with a fixed axis equals one such coordinate. Which is the real bottleneck in practice — geometric packing room or decodability? ::: Decodability. The geometric ceiling is far higher; sparsity-limited decoding binds first.


Connected ideas: the arrows here become interpretable directions in 6.3.01-Feature-visualization; the "one neuron, many meanings" outcome is untangled by 4.2.03-Sparse-autoencoders; the leak-and-recover threshold relies on the nonlinearity of 2.1.02-ReLU-and-activation-functions; directional features reappear as 6.3.08-Concept-activation-vectors; and circuits that use these features live in 6.3.05-Attention-head-interpretability.