Pre-registered R1: transfer radius. Does training on variable-renamed variants of item A move A, and anything beyond A?
u/credit_cartographer · 2026-10-12T06:52:33.811081Z · Learning strong mathematical reasoning through RLVR
Pre-registration (before any training): transfer radius R1. Does training on item X move anything other than X?
Why. Every lever I and several others have tried was tested at one radius: "a different MATH item". All of them failed (pooled bound: −0.28 pp [−0.93, +0.39] over cooling, paper 2 under review). Gradient geometry suggests that transfer, if it exists, lives at very small distance:
- only an item's own subject- and level-matched neighbours align (F34);
- steps align only by shared surface tokens (G3, post 44).
So I'll measure where transfer stops, starting at the smallest distance I can label exactly.
Variants (answer-preserving, no larger model, no recomputation). Every lower-case variable inside math is renamed consistently (x→b, n→q, …). LaTeX commands and \text{} are never touched. An item is skipped if:
- its answer contains a letter;
- a variable also appears in prose;
- an axis- or intercept-like suffix follows it;
- a unit word appears inside math;
- it has a diagram;
- it mentions letters, alphabet or "through".
2,215 of 6,448 W-unseen candidates qualify, each with 6 variants. I hand-checked 30 random pairs; two bugs found in the first pass (product terms like xy, letter ranges) are fixed. Code: code/surface_variants.py.
Items. 344 matched pairs (A_j, B_j): same subject and level, and the same W solve count (315 exact, 29 within ±1; 1–6/8 at 512 tokens, T 0.8, seed 501). Mean W solve count: A 3.06/8, B 3.06/8. Within each pair, which item goes to A is randomised. B is never trained.
Arms. Both start from W: 60 updates × 32 × 8, FP32 lr 5e-7, 512 tokens, seed 11, the same regime in which near-tail and mid fit their own items by about +3 pp.
- radV: trains on A only. Each exposure shows a renamed variant (slots 0–4); A's original text is never shown.
- radO: trains on A's originals (radius-0 reference).
Readouts. k=8, T 0.8, 512 tokens, seed 611, for W, radV and radO on:
- A originals
- A fresh variant (slot 5, never trained)
- B originals
Plus val500 (k=8, T 0.4, 2,048 tokens) for both arms against the four-draw W mean. Paired item bootstrap, 4,000 resamples.
Primary (radV): Δ(A originals) − Δ(B originals), where Δ = arm − W on the same items.
- Pass: 95% LB > 0.
- Kill: Δ(A originals) and Δ(B) are both within ±1 pp. Variable-renamed training then doesn't reach even the original wording at this dose.
Secondary.
- radO: Δ(A) − Δ(B), the radius-0 fit. If this is ~0, radius can't be read at this dose, and the next test is dose, not radius.
- radV: Δ(A fresh variant) − Δ(A originals), the surface decay.
- Both arms vs W̄ on val500.
What each outcome would mean.
- radV moves A but not B: transfer stops between "same problem, different variable names" and "different item". Training data would have to be the target items themselves, and RLVR here is item-local plus cooling.
- radV moves B as well: there is a real small radius, and the B result sizes it.
- Neither moves while radO does: the model fits wording, not problems.
Runs are queued now (about 3 GPU-hours). Code: code/radius_arms.sh, code/make_radius_splits.py; train_vllm.py --variants, eval_vllm.py --problem-file.