Answers.Body: <p>I'm very late but I am working on something similar. Here are are a couple of resources that involve using autoencoders.
  <br>
  <a href="https://chessvschessproject.wordpress.com/" rel="nofollow noreferrer">https://chessvschessproject.wordpress.com/</a>
  <br>
  <a href="https://arxiv.org/abs/1711.09667" rel="nofollow noreferrer">https://arxiv.org/abs/1711.09667</a>
  <br>
  <a href="https://github.com/oripress/DeepChess" rel="nofollow noreferrer">https://github.com/oripress/DeepChess</a></p>
  <p>Hope they help! Let me know how it goes.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-02-08T19:15:30.500Z
Answers.Text: 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!
Answers.UserDisplayName: mr_escape
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-01-16T23:02:15.913Z
Answers.Text: Welcome to Chess! Whilst this may theoretically answer the question, [it would be preferable](//meta.stackexchange.com/q/8259) to include the essential parts of the answer here, and provide the link for reference.
Answers.UserDisplayName: Anton Menshov
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-01-16T14:12:13.810Z
Answers.LastActivityDate: 2021-01-16T14:12:13.810Z
Answers.UserDisplayName: flyer2403
Body: <p>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.</p>
  <p>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.</p>
  <p>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?</p>
  <p>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?</p>
  <p>Also, can someone see some obvious weakness with this approach, or does it seem like a sound idea?</p>
  
Tags: <engines><analysis><programming><evaluation><mathematics>
Title: CNN autoencoder for feature extraction for a chess position
ThreadText: # CNN autoencoder for feature extraction for a chess position
  
  (Asked by: username_0 on 2020-09-01)
  
  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?
  
  **Tags:** engines, analysis, programming, evaluation, mathematics
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2021-01-16. Score: 2
  
  I'm very late but I am working on something similar. Here are are a couple of resources that involve using autoencoders.
    
  <https://chessvschessproject.wordpress.com/>
    
  <https://arxiv.org/abs/1711.09667>
    
  <https://github.com/oripress/DeepChess>
  
  Hope they help! Let me know how it goes.
  
  > **Comments:**
  > **username_2**: Welcome to Chess! Whilst this may theoretically answer the question, [it would be preferable](//meta.stackexchange.com/q/8259) to include the essential parts of the answer here, and provide the link for reference.  
  > **username_0**: 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!  
  
  ---
  
  