user2400: I am working on a project where I take a chess board position (FEN string converted to binary) & it's evaluation score and feed it to a neural network. My aim is to make the neural network differentiate between good and bad positions.
How I encode the position : There are 12 unique pieces in chess i.e pawn, rook, knight, bishop, queen and king for white as well as black. I encode each piece using 4 bits with 0000 denoting an empty square. So the 64 squares are encoded into 256 bits and I use 6 more bits to denote game state like whose turn it is to move, king-castle status, etc.
Problem : Since the input space for chess positions is neither smooth nor uni-modal (one small change in the board position can result in a huge change in the evaluation score), the neural network doesn't learn well. Now, the next logical thing to somehow extract useful features (like material difference, center control, etc) and feed it to the network.
I do not want to hand pick the features as I want the network to learn everything by itself. Therefore I am thinking of extracting features automatically using autoencoders. Is there any better way to accomplish this?
Summary : What is the best way to automatically extract features from a chess board position so that it can be fed into a neural network?
UPDATE : To generate training data, I have modified Stockfish to dump it's evaluation process into a log file. So every new move(position) it considers is written to a file as an FEN string along with it's eval score

user2001: To evaluate a chess position, you need to add code that understands different (e.g. dynamic and static) aspects of chess positions. Small changes (e.g. a blunder) will cause a big change in the Engine score and thus change the evaluation completely. I think that you need to make a survey about static and dynamic aspects of chess positions and write code that will extract this information from every FEN string.
Examples of what to extract:

Material balance
Number of open files
Number of semi-open files
Total number of heavy pieces
Total number of light pieces
Total number of pawns
Number of own pieces and pawns within three steps from the Kings
Number of enemy pieces and pawns within three steps from the Kings
Opening system that has been played in the game


user35: 
I do not want to hand pick the features as I want the network to learn everything by itself. 

There is an AI-Koan concerning this situation:

In the days when Sussman was a novice, Minsky once came to him as he
  sat hacking at the PDP-6. 
"What are you doing?", asked Minsky. 
"I am training a randomly wired neural net to play Tic-Tac-Toe" Sussman
  replied. 
"Why is the net wired randomly?", asked Minsky. 
"I do not  want it to have any preconceptions of how to play", Sussman said.
Minsky then shut his eyes. 
"Why do you close your eyes?", Sussman asked his teacher. 
"So that the room will be empty." 
At that moment, Sussman was enlightened.

Think about it.

2400: <p>I am working on a project where I take a chess board position (FEN string converted to binary) &amp; it's evaluation score and feed it to a neural network. My aim is to make the neural network differentiate between good and bad positions.</p>

<p><strong>How I encode the position :</strong> There are 12 unique pieces in chess i.e pawn, rook, knight, bishop, queen and king for <em>white</em> as well as <em>black</em>. I encode each piece using 4 bits with 0000 denoting an empty square. So the 64 squares are encoded into 256 bits and I use 6 more bits to denote game state like whose turn it is to move, king-castle status, etc.</p>

<p><strong>Problem :</strong> Since the input space for chess positions is neither smooth nor uni-modal (one small change in the board position can result in a huge change in the evaluation score), the neural network doesn't learn well. Now, the next logical thing to somehow extract useful features (like material difference, center control, etc) and feed it to the network.</p>

<p>I do not want to hand pick the features as I want the network to learn everything by itself. Therefore I am thinking of extracting features automatically using <em>autoencoders</em>. Is there any better way to accomplish this?</p>

<p><strong>Summary :</strong> What is the best way to automatically extract features from a chess board position so that it can be fed into a neural network?</p>

<p><strong>UPDATE :</strong> To generate training data, I have modified Stockfish to dump it's evaluation process into a log file. So every new move(position) it considers is written to a file as an FEN string along with it's eval score</p>
 2001: <p>To evaluate a chess position, you need to add code that understands different (e.g. dynamic and static) aspects of chess positions. Small changes (e.g. a blunder) will cause a big change in the Engine score and thus change the evaluation completely. I think that you need to make a survey about static and dynamic aspects of chess positions and write code that will extract this information from every FEN string.</p>

<p>Examples of what to extract:</p>

<ol>
<li>Material balance</li>
<li>Number of open files</li>
<li>Number of semi-open files</li>
<li>Total number of heavy pieces</li>
<li>Total number of light pieces</li>
<li>Total number of pawns</li>
<li>Number of own pieces and pawns within three steps from the Kings</li>
<li>Number of enemy pieces and pawns within three steps from the Kings</li>
<li>Opening system that has been played in the game</li>
</ol>
 35: <blockquote>
  <p>I do not want to hand pick the features as I want the network to learn everything by itself. </p>
</blockquote>

<p>There is an AI-Koan concerning this situation:</p>

<blockquote>
  <p>In the days when Sussman was a novice, Minsky once came to him as he
  sat hacking at the PDP-6. </p>
  
  <p>"What are you doing?", asked Minsky. </p>
  
  <p>"I am training a randomly wired neural net to play Tic-Tac-Toe" Sussman
  replied. </p>
  
  <p>"Why is the net wired randomly?", asked Minsky. </p>
  
  <p>"I do not  want it to have any preconceptions of how to play", Sussman said.</p>
  
  <p>Minsky then shut his eyes. </p>
  
  <p>"Why do you close your eyes?", Sussman asked his teacher. </p>
  
  <p>"So that the room will be empty." </p>
  
  <p>At that moment, Sussman was enlightened.</p>
</blockquote>

<p>Think about it.</p>
