Darkness Visible: Reading the Exception Handler of a Language Model
Abstract
The final MLP of GPT-2 Small exhibits a fully legible routing program -- 27 named neurons organized into a three-tier exception handler -- while the knowledge it routes remains entangled across ~3,040 residual neurons. We decompose all 3,072 neurons (to numerical precision) into: 5 fused Core neurons that reset vocabulary toward function words, 10 Differentiators that suppress wrong candidates, 5 Specialists that detect structural boundaries, and 7 Consensus neurons that each monitor a distinct linguistic dimension. The consensus-exception crossover -- where MLP intervention shifts from helpful to harmful -- is statistically sharp (bootstrap 95% CIs exclude zero at all consensus levels; crossover between 4/7 and 5/7). Three experiments show that "knowledge neurons" (Dai et al., 2022), at L11 of this model, function as routing infrastructure rather than fact storage: the MLP amplifies or suppresses signals already present in the residual stream from attention, scaling with contextual constraint. A garden-path experiment reveals a reversed garden-path effect -- GPT-2 uses verb subcategorization immediately, consistent with the exception handler operating at token-level predictability rather than syntactic structure. This architecture crystallizes only at the terminal layer -- in deeper models, we predict equivalent structure at the final layer, not at layer 11. Code and data: https://github.com/pbalogh/transparent-gpt2
Figures & tables
| Tier | Neurons | Count | Fire Rate | Jaccard | Function |
|---|---|---|---|---|---|
| Core | N2123, N2910, N740, | 5 | 90–100% | 0.91 | Vocabulary reset |
| N1611, N2044 | |||||
| Diff | N2462, N2173, N1602, | 10 | 35–88% | 0.15–0.89 | Candidate suppression, |
| N1800, N2379, N1715, | subword repair | ||||
| N611, N3066, N584, N2378 | |||||
| Spec | N2921, N2709, N971, | 5 | 14–37% | 0.15 | Boundary detection |
| Level | Tokens | Mean | 95% CI | |
| 0/7 | 206 | 0.187 | [ 0.145, 0.231] | |
| 1/7 | 913 | 0.094 | [ 0.079, 0.109] | |
| 2/7 | 3,051 | 0.045 | [ 0.039, 0.051] | |
| 3/7 | 6,283 | 0.030 | [ 0.026, 0.033] | |
| 4/7 | 12,617 | 0.014 | [ 0.011, 0.016] | |
| 5/7 | 34,155 | 0.004 | [ 0.006, 0.003] |
| Tier | Neurons | PPL | 95% CI | |
|---|---|---|---|---|
| Baseline | — | 31.79 | — | — |
| Core | 5 | 31.86 | 0.2% | [ 0.1%, 0.4%] |
| Differentiators | 10 | 32.20 | 1.3% | [ 0.9%, 1.7%] |
| Specialists | 5 | 31.69 | 0.3% | [ 0.6%, 0.1%] |
| All exception | 20 | 32.44 | 2.1% | [ 1.6%, 2.5%] |
| L0–L3 | L4–L6 | L7–L9 | L10 | L11 (auto) | L11 (known) | |
| Exc. fire rate | 6–15% | 12–15% | 25–36% | 38.5% | 10.9% | 11.3% |
| Max Jaccard | 0.06–0.16 | 0.13–0.18 | 0.26–0.36 | 0.384 | 0.123 | 0.998 |
| Enrichment | 1.06–1.17 | 1.11–1.21 | 1.06–1.09 | 1.05 | 1.15 | 2.0 |
| Hi-Jaccard ( 0.5) | 0 | 0 | 0 | 0 | 0 | 4 |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Neuron | Dimension | Rate | Key Evidence |
|---|---|---|---|
| N2 | Clausal continuation | 88.4% | Fires on and , but , also mid-clause; silent at clause boundaries |
| N2361 | Syntactic elaboration | 84.1% | Fires on that , while , neither , fully ; depleted on There , United |
| N2460 | Relational embedding | 86.0% | Fires on an , into , per , other in prep. phrases; depletes According to 3.3% |
| N2928 | Sequential structure | 91.4% | Fires on ordinals, lists, parallel structure; highest mean activation (0.79) |
| N1831 | Discourse coherence | 81.0% | Fires on topic-continuing phrases; 77K disagreement tokens |
| N1245 | Argument structure | 85.5% | Fires on leadership , validity , one of the ; marks semantic roles |
| Prompt (abbreviated) | Target | Base | Static | Context |
| Retrievable (context rank 10): | ||||
| …300,000 km per | second | 1 | 244 | 1 |
| …100 degrees | C | 3 | 68 | 1 |
| …created by Linus | Tor | 1 | 2,551 | 1 |
| …London occurred in | 16 | 4 | 372 | 2 |
| …begins with four | notes | 2 | 3,159 | 2 |
| In top-20 | Expected by chance | |
|---|---|---|
| Consensus neurons (7) | 2.6 avg | 0.05 |
| All routing neurons (27) | 7.3 avg | 0.18 |
| Enrichment | 36.5 | — |
| Layer | Logit Top-1 | Tuned Top-1 | First lock-in (Tuned) | |
| Emb | 0.7% | 3.5% | 2.8 | 3.5% |
| L0 | 3.0% | 9.0% | 6.0 | 6.2% |
| L1 | 3.9% | 9.7% | 5.8 | 1.2% |
| L2 | 3.9% | 10.7% | 6.7 | 1.4% |
| L3 | 5.0% | 11.7% | 6.6 | 1.4% |
| L4 | 5.9% | 12.6% | 6.7 | 1.3% |
| # | Intrans. verb | Trans. verb | Disambig. | ||
| 1 | struggled | scratched | took | 5.4 | 11.6 |
| 2 | sneezed | visited | prescribed | 6.8 | 16.2 |
| 3 | dozed | watched | next | 8.9 | 11.5 |
| 4 | escaped | attacked | searched | 17.0 | 19.4 |
| 5 | slept | ignored | standing | 13.2 | 11.3 |
| 6 | cried | woke | in | 9.0 | 6.9 |
| Neuron | Tier | Base rate | Exc rate | Enrichment | -value |
| N2123 | Core | 70.9% | 100.0% | 1.41 | |
| N584 | Differentiator | 6.2% | 8.3% | 1.33 | |
| N2378 | Differentiator | 5.7% | 7.4% | 1.30 | |
| N737 | Specialist | 4.0% | 4.9% | 1.22 | |
| N1602 | Differentiator | 22.7% | 24.4% | 1.08 | |
| N611 | Differentiator | 67.2% | 71.8% | 1.07 |