I'm currently building a chess engine in my free time while entering my second year of my master's studies in computer science. For a class we need to perform a litterature survey of a topic and identify a research gap. I thought I'd kill two birds with one stone and research something relevant for the heuristic evaluation function of my chess engine.

What I want to do is to test the idea of using a convolutional neural network autoencoder to extract a feature vector (10-20 features maybe?) from chess boards. My idea is to encode positions in 8x8 arrays with each layer containing zeros or ones for each colour and piece, i.e. one layer for white pawns, one for black knights etc. Possibly it would also be good to have a layer indicating whose turn it is to move, and maybe 12 additional layers for possible squares of attack for the different pieces.

I can find tons of articles using convolutional neural networks for chess state evaluation (when searching scopus and google scholar), but nothing about using autoencoders. My idea is to append custom features (features that might be difficult for a CNN to find) in addition to the autoencoded features, and then feed all features to a new model. Has this been done before? If so, can someone point me in the direction of some attempts at this?

People who are versed in chess and in CNNs, what features for a chess board are difficult for CNNs to automatically detect, that would benefit from some custom feature engineering alongside an autoencoder?

Also, can someone see some obvious weakness with this approach, or does it seem like a sound idea?

1 Answer 1


I'm very late but I am working on something similar. Here are are a couple of resources that involve using autoencoders.

Hope they help! Let me know how it goes.

  • Welcome to Chess! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. Commented Jan 16, 2021 at 23:02
  • I actually performed this project in another course, with more focus on the implementation itself. Unfortunately, the features produced by the autoencoder did not really work that well to predict the winner. So I'm thinking that a convolutional neural network trained with FC layers at the end is probably better than using an autoencoder. Also, supervised learning may not be the best approach, as the models do not really rank similar positions well enough between each other. In that case, the approach of DeepChess with two positions competing against each other seems more appropriate!
    – mr_escape
    Commented Feb 8, 2021 at 19:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.