Tracking vs. Deciding: The Dual-Capability Bottleneck in Searchless Chess Transformers
Organizations: Abbey Park High School · Shanghai Soong Ching Ling School
Abstract
A human-like chess engine should mimic the style, errors, and consistency of a strong human player rather than maximize playing strength. We show that training from move sequences alone forces a model to learn two capabilities: state tracking, which reconstructs the board from move history, and decision quality, which selects good moves from that reconstructed state. These impose contradictory data requirements: low-rated games provide the diversity needed for tracking, while high-rated games provide the quality signal for decision learning. Removing low-rated data degrades performance. We formalize this tension as a dual-capability bottleneck, P <= min(T,Q), where overall performance is limited by the weaker capability. Guided by this view, we scale the model from 28M to 120M parameters to improve tracking, then introduce Elo-weighted training to improve decisions while preserving diversity. A 2 x 2 factorial ablation shows that scaling improves tracking, weighting improves decisions, and their combination is superadditive. Linear weighting works best, while overly aggressive weighting harms tracking despite lower validation loss. We also introduce a coverage-decay formula, t* = log(N/kcrit)/log b, as a reliability horizon for intra-game degeneration risk. Our final 120M-parameter model, without search, reached Lichess bullet 2570 over 253 rated games. On human move prediction it achieves 55.2% Top-1 accuracy, exceeding Maia-2 rapid and Maia-2 blitz. Unlike position-based methods, sequence input naturally encodes full game history, enabling history-dependent decisions that single-position models cannot exhibit.
Figures & tables
| Small | Large | |
|---|---|---|
| Parameters | 28 M | 120 M |
| Layers | 12 | 16 |
| Hidden dim | 384 | 768 |
| Attention heads | 6 | 12 |
| FFN dim (SwiGLU) | 1536 | 3072 |
| Model | Params | Data | Weighting | Illegal | Role in paper |
|---|---|---|---|---|---|
| V1.0 | 28 M | 10 M all-Elo | Uniform | 1.06% | Baseline |
| V1.0w | 28 M | 10 M all-Elo | Linear | 1.13% | Weighting ablation |
| V1.1 | 28 M | high-Elo only | Uniform | 1.82% | Filtering experiment |
| V2.0 | 120 M | 50 M all-Elo | Uniform | 0.22% | Scaling ablation |
| V2.2 | 120 M | 50 M all-Elo | Linear | 0.26% | Final model (Lichess 2570) |
| V2.3 | 120 M | 100 M all-Elo | Exponential | 0% | Over-weighting |
| Dataset | Games | Sequences | Tokens |
|---|---|---|---|
| Scale 1 (V1 series) | M | M | B |
| Scale 2 (V2.2) | M | M | B |
| Scale 3 (V2.3) | M | M | B |
| Scheme | Function | High-Elo gradient | |
|---|---|---|---|
| Uniform | |||
| Linear | |||
| Exponential |
| Div | Qual | ||||
|---|---|---|---|---|---|
| All Elo (before) | High | Low | High | Low | Limited by |
| High Elo only (after) | Limited by worse |
| Metric | V1.0 | V1.1 | Interpretation |
|---|---|---|---|
| Illegal-move rate | 1.06% | 1.82% (+72%) | degraded sharply |
| Opening Top-1 | 50.0% | 53.8% (+3.8 pp) | improved marginally |
| Middlegame Top-1 | 43.5% | 39.9% ( pp) | Middlegame collapsed |
| Endgame Top-1 | 46.8% | 40.4% ( pp) | Endgame collapsed |
| Head-to-head (100 games) | — | V1.0 wins | decreased |
| Metric | Value |
|---|---|
| Illegal-move rate | 0.26% |
| Top-1 accuracy | 51.2% |
| Lichess bullet Elo | 2570 (253 games) |
| vs. V1.0 (100 games) | 66W–8L–26D |
| Metric | V2.2 | V2.3 |
|---|---|---|
| Validation loss | 1.48 | (lower) |
| Practical play | Lichess 2570 | Weaker |
| Elo conditioning (2600 vs. 1200) | Works (27:13) | Broken (17:16 random) |
| Endgame quality | Normal | Collapsed |
| V1.0 | V1.0w | V2.0 | V2.2 | |
|---|---|---|---|---|
| 28M, | 28M, | 120M, | 120M, | |
| Illegal rate | 1.06% | 1.13% | 0.22% | 0.26% |
| Top-1 accuracy | 46.5% | 47.0% | 50.85% | 51.2% |
| Matchup | W–L–D | Games | Score | |
|---|---|---|---|---|
| V1.0w vs. V1.0 (weighting, 28M) | 40–23–37 | 100 | 58.5% | 0.043 |
| V2.0 vs. V1.0 (scaling, ) | 80–54–66 | 200 | 56.5% | 0.030 |
| V2.0 vs. V2.2 (weighting, 120M) | 24–41–35 | 100 | 41.5% | 0.046 |
| V2.2 vs. V1.0 (combined) | 66–8–26 | 100 | 79.0% | 0.001 |
| V2.2 vs. V1.0w (scaling, ) | 66–12–22 | 100 | 77.0% | 0.001 |
| Temperature | e1_09 wins | e1_05 wins | Draws |
|---|---|---|---|
| 0.0 | 50 | 50 | 0 |
| 0.1 | 28 | 49 | 23 |
| 0.2 | 31 | 43 | 26 |
| 0.3 | 43 | 39 | 18 |
| Model | Overall | 2100– | 2300– | 2500– | 2700+ | Open. | Mid. | End. |
|---|---|---|---|---|---|---|---|---|
| 2300 | 2500 | 2700 | ||||||
| V2.2 final | 55.2 | 54.3 | 53.7 | 56.2 | 56.8 | 55.2 | 55.2 | 55.3 |
| Maia-2 rapid | 50.0 | 49.0 | 50.2 | 50.7 | 50.0 | 46.1 | 52.2 | 51.7 |
| Maia-2 blitz | 50.4 | 49.5 | 50.3 | 51.4 | 50.4 | 46.4 | 52.8 | 52.0 |
| Model | (model blunder human blunder) | (model blunder human blunder) | Lift |
|---|---|---|---|
| V2.2 final | 49.2% | 6.6% | 7.4 |
| Maia-2 rapid | 43.3% | 6.6% | 6.5 |
| Maia-2 blitz | 44.8% | 6.8% | 6.6 |