# How do you encode a chess move in a neural network?

In a neural network for chess (or checkers), the output is a piece or square on the board and an end position.

How would one encode this?

As far as I can see choosing a starting square is 8x8=64 outputs and an ending square is 8x8=64 outputs. So the total number of possible moves is 64x64 4096 outputs. Giving a probability for every possible move.

Is this correct? This seems like an awful lot of outputs!

The number is 4672 from Google.

https://arxiv.org/pdf/1712.01815.pdf

A move in chess may be described in two parts: selecting the piece to move, and then
selecting among the legal moves for that piece. We represent the policy π(a|s) by a 8 × 8 × 73
stack of planes encoding a probability distribution over 4,672 possible moves. Each of the 8×8
positions identifies the square from which to “pick up” a piece.


4672 might sound a big number but it's nothing to what Google (and many other competitors) has been doing to deep learning for image analysis.

• The paper explains the 4672 number: 8 * 8 * (56 + 8 + 9). Can someone help me understand why there are 9 planes for promotion, instead of 12? I understand there are 3 pawn moves: straight, diagonal left, diagonal right. But pawn can be promoted to 4 kinds: knight, rook, bishop, and queen. So that would have been 12. Why queen was not considered in the paper?
– bizi
Jul 21, 2023 at 15:35