RDTChess
- Chess
- PyTorch
- Policy Network
- Value Network
- ResNet
- Recurrent Depth
- Behavioral Cloning
- From-Scratch
An 11.05M-parameter residual network (128 channels × 8 blocks, recurrent depth ×2, gated memory, Squeeze-and-Excitation) that plays chess in one forward pass — no search, no MCTS, no opening book. This is RDTChess2, the model currently live on the Lichess bot. Trained from scratch on a single GTX 1080 Ti by behavioral cloning on ≈10.99M Lichess games (both players ≥1800 Elo), seeing 801,295,726 positions. 61.5% first-move accuracy on 23,845 Lichess puzzles, but the network still executes tactics rather than initiating them: the quiet entry move remains the weak point, at 33.3% in hard positions versus ~90% on the final step of a forcing sequence.
Key figures
- 11,05M
- Parameters
- ~11M
- Training games
- 801,3M
- Positions seen
- 61,5%
- Puzzles (first move)
How it works
Canonical frame: always "White, moving forward"
When it's Black's turn, every square is mirrored (square ^ 56) and the piece colours swapped. Result: the value head always answers a well-posed question — "how good is this for the player to move" — and a position and its colour-reversed twin share one representation, so every game trains both colours at once.
One forward pass, zero search
No MCTS, no opening book, no endgame tablebase. The policy head emits raw logits (not a softmax), so illegal moves can be masked before normalising — softmaxing over all 4096 actions and zeroing ~99% of them would waste most of a network this size's capacity.
Recurrent depth ×2, a learned gate, and whole-board vision
The 128×8 residual tower is applied twice per move, sharing the same convolution weights both times (effective depth ×2 at no extra parameter cost). A learned gate decides how much of the previous state to keep versus overwrite (~88% kept by default). Squeeze-and-Excitation adds, in every block, a per-channel scale and bias computed from the whole board at once — long-range interaction (e.g. a1–h8) without extra convolutional depth.
Four yardsticks, three agree, one stays noisy
Compared to the same architecture without recurrence, gate or SE, same data, same seed: ahead on puzzles (8/8 slices), on Maia-1100/1500/1900 (23/24), and on the full round-robin (7/7, 27,300 games) — never inverted on these three instruments. Against a depth-2 minimax, which searches rather than imitates: 4/8, no stable direction. No absolute Elo is claimed.
It executes tactics, it doesn't initiate them
On the same 23,845 puzzles: 61.5% first-move accuracy, 42.5% on the entire line. Accuracy on the last move of a forcing sequence still sits around 90%, but the quiet (non-forcing) entry move drops to 33.3% in hard positions (2400+), versus 59.9% for a capture — nearly identical to the plain architecture's 32.8%. Recurrence, gating and SE improve accuracy everywhere; they don't change what kind of move stays hard to initiate.
One seed, one run
Every number comes from a single seed (123), extended sequentially across 8 data slices via --resume. The 1.38M-game starting point was confirmed on three independent seeds before this extension — the extension itself was not. The model has never played a rated pool, so no absolute Elo is claimed.