Present but Hard to Read: Probing Latent Reasoning with Minimal Pairs
Organizations: Independent researcher
Abstract
Probing studies of latent reasoning often read a model's state where the answer begins and take a failed probe as evidence that a value is absent. We test this with a digit copied from the question, in the looped model Ouro-1.4B and the standard transformer Qwen 2.5-1.5B. Comparing prompts that differ only in that digit shows it is present at the last prompt token, in a code shared across questions (readout about 0.9). A probe that sees one prompt at a time, the usual setting, barely reads it: 0.36 in Ouro and 0.19 in Qwen even after 5,249 training questions. The digit's change is small rather than crowded: random noise lands on equally busy directions, while a random word in its place moves the state far more and is readable. Since every varied token leaves a trace, a successful probe is ambiguous too. We give a protocol, including a synthetic null for generic mixing, for testing computed values against copies and mixtures of the inputs. In pre-registered studies of two-step problems it finds a small signal for the unwritten intermediate a+b just before Ouro writes the answer's last digit, and its sign follows the operation, though mixing alone produces much of that sign-following part. Holding that value at another problem's from the first loop on does not move the written digit toward the other problem's, while the same patch of the answer does: the value is readable but not used.
Figures & tables
| varied token | minimal-pair probe | standard probe | trace |
|---|---|---|---|
| a number the problem needs | 0.92–0.97 | 0.15–0.23 | 5–7% |
| a number in an irrelevant sentence | 0.96–1.00 | 0.14–0.30 | 3–6% |
| a colour word in that sentence | 0.99–1.00 | 0.19–0.40 | 4–6% |
| Ouro-1.4B (looped) | Qwen2.5-1.5B (standard) | |
|---|---|---|
| minimal-pair probe | 0.92–0.97 | 0.75–0.98 (mean 0.88) |
| standard probe | 0.15–0.23 | 0.12–0.14 |
| structured decoder | 0.17–0.21 | 0.12–0.14 |
| MLP probe | 0.11–0.17 | 0.10–0.11 |
| gain, half to all templates | +0.015 | +0.004 |
| Gaussian ceiling of the decoder | 0.75–0.92 | 0.53–0.73 |
| change | input distance | overlap / shuffled | signal/noise in subspace | standard probe | minimal-pair probe |
|---|---|---|---|---|---|
| a different digit | 0.70 | 0.68–1.19 | 0.0009–0.0037 | 0.12–0.14 | 0.75–0.98 |
| a random word | 1.42 | 0.50–1.06 | 0.011–0.205 | 0.24–0.74 | 0.95–1.00 |
| random noise | 1.46 | 0.75–1.24 | 0.0001–0.0010 | 0.11–0.15 | 0.76–0.99 |
| Study 1 | Study 2 (new templates) | |
|---|---|---|
| at P1 | +0.205 [0.172, 0.236] | +0.219 [0.194, 0.244] |
| margin over best control | +0.118 [0.094, 0.141] ( ) | +0.075 [0.052, 0.098] (answer ) |
| bar for the margin | 0.15 | 0.025 (set after Study 1) |
| label | UNCLEAR | passes; fails Study 1’s 0.15 |
| at P0 | ||
| bare addition at P0 | sum 0.71 vs ceiling 0.10 (no controls) | +0.372 vs +0.463: mixing |
| needed vs flipped | Study 1, loop 4 | Study 2, loop 4 | Study 1, loop 3 | Study 2, loop 3 |
|---|---|---|---|---|
| vs | +0.087 [0.069, 0.105] | +0.130 [0.105, 0.154] | +0.173 | +0.161 |
| vs | +0.122 [0.093, 0.152] | +0.065 [0.038, 0.092] | +0.064 | +0.044 |
| vs | +0.052 [0.027, 0.079] | +0.042 [0.015, 0.069] |
| plus problems (need ) | minus problems (need ) | |
| excess of | +0.207 | +0.078 |
| excess of | +0.082 | +0.267 |
| needed minus flipped | ||
| [0.141, 0.172]: FOLLOWS; fixed preference [0.012, 0.053] | ||
| hit rate by patched subspace | |||||||
|---|---|---|---|---|---|---|---|
| pairs | patched after | answer | random | statistic | label | ||
| same | loop 3 | 0.902 | 0.017 | 0.032 | 0.001 | [ , ] | NOT-USED |
| same | loop 2 | 0.331 | 0.007 | 0.006 | 0.002 | +0.001 [ , +0.007] | NOT-USED |
| equal answer | loop 3 | – | 0.003 | 0.002 | 0.000 | +0.001 [ , +0.007] | NOT-USED |
| equal answer | loop 2 | – | 0.003 | 0.003 | 0.001 | +0.001 [ , +0.003] | NOT-USED |
| test | answer patch hit | same- pairs | equal-answer pairs |
|---|---|---|---|
| patch at end of loop 1 | 0.009 | UNSCORABLE | UNSCORABLE |
| clamp at ends of loops 1–3 | 0.914 | [ , +0.001] | +0.005 [ , +0.012] |
| answer ablated, end of loop 3 | – | +0.005 [ , +0.015] | [ , +0.013] |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| state | overlap | shuffled | signal/noise in subspace | structured decoder | Gaussian ceiling | standard probe 50% / 100% | no PCA | MLP |
|---|---|---|---|---|---|---|---|---|
| mid 1 | 11.7 | 10.7 | 0.005 | 0.17 | 0.75 | 0.14 / 0.15 | 0.16 | 0.11 |
| end 1 | 7.2 | 9.1 | 0.014 | 0.17 | 0.90 | 0.18 / 0.19 | 0.18 | 0.13 |
| end 2 | 6.5 | 7.9 | 0.023 | 0.21 | 0.92 | 0.21 / 0.23 | 0.24 | 0.17 |
| end 3 | 9.2 | 10.1 | 0.011 | 0.20 | 0.88 | 0.17 / 0.18 | 0.19 | 0.17 |
| end 4 | 9.4 | 11.3 | 0.010 | 0.18 | 0.85 | 0.17 / 0.19 | 0.18 | 0.12 |
| Analysis | Sec. | Status | Outcome |
|---|---|---|---|
| Answer-only accuracy by loop (GSM8K; Huginn check) | A | Pre-registered | passed: +16.5 points over four loops |
| Re-score with the final scorer | A | Re-run, no test | reproduces the numbers; loop 2–4 gain +3.0 [ , +7.5] |
| Gain on GSM-Symbolic variants | A | Pre-registered | UNCLEAR: +6.4 points, below the 8.25 bar |
| Intermediate value at the last prompt token | 3.1 | Pre-registered | unscorable: sanity check at the majority rate |
| Copied digits by position; bare arithmetic | 3.1 | Exploratory | digit read only on its own token; bare operands 0.96–1.00 |
| Minimal pairs; irrelevant number; colour word; value check | 3.1 | Exploratory, rule in code before data | present at 0.92–1.00 in a shared code; not a magnitude |
Language Model Probing
Language model probing measures what information and capabilities models encode and how those signals relate to their behavior.
See all 276 papers