Answers.Body: <p>The paper is right. Traditional chess engines use a set of tedious hand-crafted features for positional evaluation.</p>
  
  <p>I'd say nothing surprising, to name a fews (I can't name everything):</p>
  
  <ul>
  <li>Mobility bonus</li>
  <li>Outpost bonus</li>
  <li>Attack bonus</li>
  <li>Rook on the seventh rank</li>
  <li>Material advantage</li>
  <li>Minor pieces behind pawn</li>
  </ul>
  
  <blockquote>
    <p><a href="https://github.com/official-stockfish/Stockfish/blob/master/src/evaluate.cpp" rel="nofollow noreferrer">https://github.com/official-stockfish/Stockfish/blob/master/src/evaluate.cpp</a></p>
  </blockquote>
  
  <p>If you take a look at the source code, it's quite complicated. Difficult programming for something that is understood even by chess beginners.</p>
  
  <p>What about <strong>replacing</strong> the entire file with a deep neural network? Training a network is easier than tweaking those numbers in the file.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-05-21T04:20:09.133Z
Answers.LastActivityDate: 2018-05-21T04:20:09.133Z
Answers.UserDisplayName: SmallChess
Body: <p><a href="https://arxiv.org/pdf/1712.01815.pdf" rel="nofollow noreferrer">AlphaZero paper</a> which introduced the engine which allegidly outperformed stockfish mentioned the following:</p>
  
  <blockquote>
    <p>These programs evaluate positions using features handcrafted by human
    grandmasters and carefully tuned weights, combined with a
    high-performance alpha-beta search that expands a vast search tree
    using a large number of clever heuristics and domain-specific
    adaptations.</p>
  </blockquote>
  
  <p>In particular I am interested in a claim about <strong>features handcrafted by human
  grandmasters</strong>. The paper didn't provide any examples, neither it references anything here. To make the question less ambiguous, let's narrow the scope of programs to just a couple of <a href="http://www.computerchess.org.uk/ccrl/4040/rating_list_all.html" rel="nofollow noreferrer">best performing</a> families of engines (stockfish, sugar, komodo, houdini)</p>
  
  <p>So my question is: what kind of hand-crafted features do top performing family of engines use to evaluate a position?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2018-05-21T04:14:27.327Z
Comments.Text: You're a programmer right? Why not look at evaluate.cpp in Stockfish source code?
Comments.UserDisplayName: SmallChess
Tags: <engines><stockfish><evaluation><alphazero>
Title: What kind of hand-crafted features do top performing family of engines use to evaluate a position?
ThreadText: # What kind of hand-crafted features do top performing family of engines use to evaluate a position?
  
  (Asked by: username_0 on 2018-05-21)
  
  [AlphaZero paper](https://arxiv.org/pdf/1712.01815.pdf) which introduced the engine which allegidly outperformed stockfish mentioned the following:
  
  > These programs evaluate positions using features handcrafted by human
  > grandmasters and carefully tuned weights, combined with a
  > high-performance alpha-beta search that expands a vast search tree
  > using a large number of clever heuristics and domain-specific
  > adaptations.
  
  In particular I am interested in a claim about **features handcrafted by human
  grandmasters**. The paper didn't provide any examples, neither it references anything here. To make the question less ambiguous, let's narrow the scope of programs to just a couple of [best performing](http://www.computerchess.org.uk/ccrl/4040/rating_list_all.html) families of engines (stockfish, sugar, komodo, houdini)
  
  So my question is: what kind of hand-crafted features do top performing family of engines use to evaluate a position?
  
  **Tags:** engines, stockfish, evaluation, alphazero
  
  > **Comments:**
  > **username_1**: You're a programmer right? Why not look at evaluate.cpp in Stockfish source code?  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-05-21. Score: 3 | Accepted answer
  
  The paper is right. Traditional chess engines use a set of tedious hand-crafted features for positional evaluation.
  
  I'd say nothing surprising, to name a fews (I can't name everything):
  
  * Mobility bonus
  * Outpost bonus
  * Attack bonus
  * Rook on the seventh rank
  * Material advantage
  * Minor pieces behind pawn
  
  > <https://github.com/official-stockfish/Stockfish/blob/master/src/evaluate.cpp>
  
  If you take a look at the source code, it's quite complicated. Difficult programming for something that is understood even by chess beginners.
  
  What about **replacing** the entire file with a deep neural network? Training a network is easier than tweaking those numbers in the file.
  
  
  ---
  
  