Difference between revisions of "Evaluation"

From Chessprogramming wiki
Jump to: navigation, search
(2020 ...)
 
Line 4: Line 4:
  
 
'''Evaluation''',<br/>
 
'''Evaluation''',<br/>
a [https://en.wikipedia.org/wiki/Heuristic_(computer_science) heuristic function] to determine the [[Score|relative value]] of a [[Chess Position|position]], i.e. the chances of winning. If we could see to the end of the game in every line, the evaluation would only have values of -1 (loss), 0 (draw), and 1 (win), and the chess engine should search to depth 1 only to get the best move. In practice, however, we do not know the exact value of a position, so we must make an approximation with the main purpose is to compare positions, and the chess engine now must search deeply and find the highest score position within a given period.
+
a [https://en.wikipedia.org/wiki/Heuristic_(computer_science) heuristic function] to determine the [[Score|relative value]] of a [[Chess Position|position]], i.e. the chances of winning. If we could see to the end of the game in every line, the evaluation would only have values of -1 (loss), 0 (draw), and 1 (win), and the chess engine should search depth 1 only to get the best move. In practice, however, we do not know the exact value of a position, so we must make an approximation with the main purpose is to comparing positions, and the chess engine now must search deeply and find the highest score position within a given period.
  
Recently, there are two main ways to build an evaluation: traditional '''hand-crafted evaluation''' (HCE) and multi-layer [[Neural Networks|neural networks]]. This page focuses on the traditional way considering explicit features of a [[Chess Position|chess position]].  
+
Recently, there are two main ways to build an evaluation: traditional '''hand-crafted evaluation''' (HCE) and multi-layer [[Neural Networks|neural networks]]. This page focuses on the traditional way of considering explicit features of a [[Chess Position|chess position]].  
  
 
Beginning chess players learn to do this starting with the [[Point Value|value]] of the [[Pieces|pieces]] themselves. Computer evaluation functions also use the value of the [[Material|material balance]] as the most significant aspect and then add other considerations.  
 
Beginning chess players learn to do this starting with the [[Point Value|value]] of the [[Pieces|pieces]] themselves. Computer evaluation functions also use the value of the [[Material|material balance]] as the most significant aspect and then add other considerations.  
Line 52: Line 52:
 
and second if the function is [https://en.wikipedia.org/wiki/Homogeneous_function homogeneous] of degree 1:
 
and second if the function is [https://en.wikipedia.org/wiki/Homogeneous_function homogeneous] of degree 1:
 
: [[FILE:EvalLinearFormula3.jpg|none|border|text-bottom]]
 
: [[FILE:EvalLinearFormula3.jpg|none|border|text-bottom]]
It depends on the definition and [https://en.wikipedia.org/wiki/Linear_independence independence] of features and the acceptance of the [https://en.wikipedia.org/wiki/Axiom_of_choice axiom of choice] ([[Ernst Zermelo]] 1904), whether additive real number functions are linear or not <ref>[http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=288501&t=29552 Re: Linear vs. Nonlinear Evaluation] by [[Tord Romstad]], [[CCC]], August 27, 2009</ref> . Features are either related to single pieces ([[Material|material]]), their location ([[Piece-Square Tables|piece-square tables]]), or more sophisticated, considering interactions of multiple pawns and pieces, based on certain [[Evaluation Patterns|patterns]] or [[Chunking|chunks]]. Often several phases to first process simple features and after building appropriate data structures, in consecutive phases more complex features based on patterns and chunks are used.
+
It depends on the definition and [https://en.wikipedia.org/wiki/Linear_independence independence] of features and the acceptance of the [https://en.wikipedia.org/wiki/Axiom_of_choice axiom of choice] ([[Ernst Zermelo]] 1904), whether additive real number functions are linear or not <ref>[https://talkchess.com/forum/viewtopic.php?topic_view=threads&p=288501&t=29552 Re: Linear vs. Nonlinear Evaluation] by [[Tord Romstad]], [[CCC]], August 27, 2009</ref>. Features are either related to single pieces ([[Material|material]]), their location ([[Piece-Square Tables|piece-square tables]]), or more sophisticated, considering interactions of multiple pawns and pieces, based on certain [[Evaluation Patterns|patterns]] or [[Chunking|chunks]]. Often several phases to first process simple features and after building appropriate data structures, in consecutive phases more complex features based on patterns and chunks are used.
  
Based on that, to distinguish [https://en.wikipedia.org/wiki/First-order first-order], [https://en.wikipedia.org/wiki/Second-order second-order], etc. terms, makes more sense than using the arbitrary terms linear vs. nonlinear evaluation <ref>[http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=288564&t=29552 Re: Linear vs. Nonlinear Evaluation] by [[Robert Hyatt]], [[CCC]], August 27, 2009</ref> . With respect to [[Automated Tuning|tuning]], one has to take care that features are independent, which is not always that simple. Hidden dependencies may otherwise make the evaluation function hard to maintain with undesirable nonlinear effects.
+
Based on that, to distinguish [https://en.wikipedia.org/wiki/First-order first-order], [https://en.wikipedia.org/wiki/Second-order second-order], etc. terms, makes more sense than using the arbitrary terms linear vs. nonlinear evaluation <ref>[https://talkchess.com/forum/viewtopic.php?topic_view=threads&p=288564&t=29552 Re: Linear vs. Nonlinear Evaluation] by [[Robert Hyatt]], [[CCC]], August 27, 2009</ref>. With respect to [[Automated Tuning|tuning]], one has to take care that features are independent, which is not always that simple. Hidden dependencies may otherwise make the evaluation function hard to maintain with undesirable nonlinear effects.
  
 
==General Aspects==  
 
==General Aspects==  
Line 167: Line 167:
 
* [[Jeff Rollason]] ('''2012'''). ''[http://www.aifactory.co.uk/newsletter/2012_01_evaluation_options.htm Evaluation options - Overview of methods]''. [[AI Factory]], Summer 2012
 
* [[Jeff Rollason]] ('''2012'''). ''[http://www.aifactory.co.uk/newsletter/2012_01_evaluation_options.htm Evaluation options - Overview of methods]''. [[AI Factory]], Summer 2012
 
* [[Lyudmil Tsvetkov]] ('''2012'''). ''An Addendum to a Little Chess Evaluation Compendium''. [http://www.winboardengines.de/doc/addendumlcec_2012.pdf Addendum June 2012 pdf], [[file:Addendum2LCEC_2012.pdf|Addendum 2 September 2012 pdf]], [[file:Addendum3LCEC_2012.pdf|Addendum 3 September 2012 pdf]], [http://www.winboardengines.de/doc/addendum4lcec_2012.pdf Addendum 4 November 2012 pdf], [[file:Addendum5LCEC_2012.pdf|Addendum 5 November 27, 2012 pdf]], [[file:Addendum6LCEC_2012.pdf|Addendum 6 December 03, 2012 pdf]]
 
* [[Lyudmil Tsvetkov]] ('''2012'''). ''An Addendum to a Little Chess Evaluation Compendium''. [http://www.winboardengines.de/doc/addendumlcec_2012.pdf Addendum June 2012 pdf], [[file:Addendum2LCEC_2012.pdf|Addendum 2 September 2012 pdf]], [[file:Addendum3LCEC_2012.pdf|Addendum 3 September 2012 pdf]], [http://www.winboardengines.de/doc/addendum4lcec_2012.pdf Addendum 4 November 2012 pdf], [[file:Addendum5LCEC_2012.pdf|Addendum 5 November 27, 2012 pdf]], [[file:Addendum6LCEC_2012.pdf|Addendum 6 December 03, 2012 pdf]]
* [[Lyudmil Tsvetkov]] ('''2012'''). ''Little Chess Evaluation Compendium''. [http://www.winboardengines.de/doc/LittleChessEvaluationCompendium.pdf July 2012 pdf] <ref>[http://www.talkchess.com/forum/viewtopic.php?t=44265 An Update of the Addendum to the LittleCompendium] by [[Lyudmil Tsvetkov]], [[CCC]], July 02, 2012</ref>,  [[file:LittleChessEvaluationCompendium.pdf|December 03, 2012 pdf]]  
+
* [[Lyudmil Tsvetkov]] ('''2012'''). ''Little Chess Evaluation Compendium''. [http://www.winboardengines.de/doc/LittleChessEvaluationCompendium.pdf July 2012 pdf] <ref>[https://talkchess.com/forum/viewtopic.php?t=44265 An Update of the Addendum to the LittleCompendium] by [[Lyudmil Tsvetkov]], [[CCC]], July 02, 2012</ref>,  [[file:LittleChessEvaluationCompendium.pdf|December 03, 2012 pdf]]  
 
* [[Derek Farren]], [[Daniel Templeton]], [[Meiji Wang]] ('''2013'''). ''Analysis of Networks in Chess''. Team 23, [[Stanford University]], [http://snap.stanford.edu/class/cs224w-2013/projects2013/cs224w-023-final.pdf pdf]
 
* [[Derek Farren]], [[Daniel Templeton]], [[Meiji Wang]] ('''2013'''). ''Analysis of Networks in Chess''. Team 23, [[Stanford University]], [http://snap.stanford.edu/class/cs224w-2013/projects2013/cs224w-023-final.pdf pdf]
 
==2015 ...==
 
==2015 ...==
 
* [[Nera Nesic]], [[Stephan Schiffel]] ('''2016'''). ''Heuristic Function Evaluation Framework''. [[CG 2016]]
 
* [[Nera Nesic]], [[Stephan Schiffel]] ('''2016'''). ''Heuristic Function Evaluation Framework''. [[CG 2016]]
* [[Lyudmil Tsvetkov]] ('''2017'''). ''[http://www.secretofchess.com/ The Secret of Chess]''. [https://www.amazon.com/Secret-Chess-Lyudmil-Tsvetkov-ebook/dp/B074M85CVV amazon] <ref>[http://www.talkchess.com/forum/viewtopic.php?t=64776 The Secret of Chess] by  [[Lyudmil Tsvetkov]], [[CCC]], August 01, 2017</ref>
+
* [[Lyudmil Tsvetkov]] ('''2017'''). ''[http://www.secretofchess.com/ The Secret of Chess]''. [https://www.amazon.com/Secret-Chess-Lyudmil-Tsvetkov-ebook/dp/B074M85CVV amazon] <ref>[https://talkchess.com/forum/viewtopic.php?t=64776 The Secret of Chess] by  [[Lyudmil Tsvetkov]], [[CCC]], August 01, 2017</ref>
 
* [[Lyudmil Tsvetkov]] ('''2017'''). ''Pawns''. [https://www.amazon.com/Pawns-Lyudmil-Tsvetkov-ebook/dp/B074S2MYQV amazon]  
 
* [[Lyudmil Tsvetkov]] ('''2017'''). ''Pawns''. [https://www.amazon.com/Pawns-Lyudmil-Tsvetkov-ebook/dp/B074S2MYQV amazon]  
  
Line 195: Line 195:
 
* [https://www.stmintz.com/ccc/index.php?id=475521 Re: Zappa Report] by [[Ingo Althöfer]], [[CCC]], December 30, 2005
 
* [https://www.stmintz.com/ccc/index.php?id=475521 Re: Zappa Report] by [[Ingo Althöfer]], [[CCC]], December 30, 2005
 
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=4155#p21292 Do you evaluate internal nodes?] by [[Tord Romstad]], [[Computer Chess Forums|Winboard Forum]], January 16, 2006 » [[Interior Node]]
 
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=4155#p21292 Do you evaluate internal nodes?] by [[Tord Romstad]], [[Computer Chess Forums|Winboard Forum]], January 16, 2006 » [[Interior Node]]
* [http://www.talkchess.com/forum/viewtopic.php?t=13969 question about symmertic evaluation] by [[Uri Blass]], [[CCC]], May 23, 2007
+
* [https://talkchess.com/forum/viewtopic.php?t=13969 question about symmertic evaluation] by [[Uri Blass]], [[CCC]], May 23, 2007
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=15220 Trouble Spotter] by [[Harm Geert Muller]], [[CCC]], July 19, 2007 » [[Tactics]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=15220 Trouble Spotter] by [[Harm Geert Muller]], [[CCC]], July 19, 2007 » [[Tactics]]
 
* [http://www.hiarcs.net/forums/viewtopic.php?t=402 Search or Evaluation?] by [[Ed Schroder|Ed Schröder]], [[Computer Chess Forums|Hiarcs Forum]], October 05, 2007 » [[Knowledge#SearchVersusEvaluation|Search versus Evaluation]], [[Search]]
 
* [http://www.hiarcs.net/forums/viewtopic.php?t=402 Search or Evaluation?] by [[Ed Schroder|Ed Schröder]], [[Computer Chess Forums|Hiarcs Forum]], October 05, 2007 » [[Knowledge#SearchVersusEvaluation|Search versus Evaluation]], [[Search]]
 
: [http://www.hiarcs.net/forums/viewtopic.php?p=2944 Re: Search or Evaluation?] by [[Mark Uniacke]], [[Computer Chess Forums|Hiarcs Forum]], October 14, 2007
 
: [http://www.hiarcs.net/forums/viewtopic.php?p=2944 Re: Search or Evaluation?] by [[Mark Uniacke]], [[Computer Chess Forums|Hiarcs Forum]], October 14, 2007
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=20340 Problems with eval function] by [[Fermin Serrano]], [[CCC]], March 25, 2008 » [[Evaluation]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=20340 Problems with eval function] by [[Fermin Serrano]], [[CCC]], March 25, 2008 » [[Evaluation]]
* [http://www.talkchess.com/forum/viewtopic.php?t=22817 Evaluation functions. Why integer?] by oysteijo, [[CCC]], August 06, 2008 » [[Float]], [[Score]]
+
* [https://talkchess.com/forum/viewtopic.php?t=22817 Evaluation functions. Why integer?] by oysteijo, [[CCC]], August 06, 2008 » [[Float]], [[Score]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=24052 Smooth evaluation] by [[Fermin Serrano]], [[CCC]], September 29, 2008
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=24052 Smooth evaluation] by [[Fermin Serrano]], [[CCC]], September 29, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=25795 Evaluating every node?] by [[Gregory Strong]], [[CCC]], January 03, 2009
+
* [https://talkchess.com/forum/viewtopic.php?t=25795 Evaluating every node?] by [[Gregory Strong]], [[CCC]], January 03, 2009
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=26700 Evaluation idea] by [[Fermin Serrano]], [[CCC]], February 24, 2009
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=26700 Evaluation idea] by [[Fermin Serrano]], [[CCC]], February 24, 2009
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=27055 Accurate eval function] by [[Fermin Serrano]], [[CCC]], March 18, 2009
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=27055 Accurate eval function] by [[Fermin Serrano]], [[CCC]], March 18, 2009
* [http://www.talkchess.com/forum/viewtopic.php?t=27299 Eval Dilemma] by [[Edsel Apostol]], [[CCC]], April 03, 2009
+
* [https://talkchess.com/forum/viewtopic.php?t=27299 Eval Dilemma] by [[Edsel Apostol]], [[CCC]], April 03, 2009
* [http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=288424 Linear vs. Nonlinear Evalulation] by [[Gerd Isenberg]], [[CCC]], August 26, 2009
+
* [https://talkchess.com/forum/viewtopic.php?topic_view=threads&p=288424 Linear vs. Nonlinear Evalulation] by [[Gerd Isenberg]], [[CCC]], August 26, 2009
* [http://www.talkchess.com/forum/viewtopic.php?p=291259 Threat information from evaluation to inform q-search] by [[Gary Linscott|Gary]], [[CCC]], September 15, 2009 » [[Quiescence Search]]
+
* [https://talkchess.com/forum/viewtopic.php?p=291259 Threat information from evaluation to inform q-search] by [[Gary Linscott|Gary]], [[CCC]], September 15, 2009 » [[Quiescence Search]]
 
==2010 ...==  
 
==2010 ...==  
* [http://www.talkchess.com/forum/viewtopic.php?t=32396 Correcting Evaluation with the hash table] by [[Mark Lefler]], [[CCC]], February 05, 2010
+
* [https://talkchess.com/forum/viewtopic.php?t=32396 Correcting Evaluation with the hash table] by [[Mark Lefler]], [[CCC]], February 05, 2010
* [http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=362888&t=35455 Re: Questions for the Stockfish team] by [[Milos Stanisavljevic]], [[CCC]], July 20, 2010
+
* [https://talkchess.com/forum/viewtopic.php?topic_view=threads&p=362888&t=35455 Re: Questions for the Stockfish team] by [[Milos Stanisavljevic]], [[CCC]], July 20, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=36104 Most important eval elements] by [[Tom King]], [[CCC]], September 17, 2010
+
* [https://talkchess.com/forum/viewtopic.php?t=36104 Most important eval elements] by [[Tom King]], [[CCC]], September 17, 2010
* [http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&p=374967&t=36421 Re: 100 long games Rybka 4 vs Houdini 1.03a] by [[Tord Romstad]], [[CCC]], November 02, 2010
+
* [https://talkchess.com/forum/viewtopic.php?topic_view=threads&p=374967&t=36421 Re: 100 long games Rybka 4 vs Houdini 1.03a] by [[Tord Romstad]], [[CCC]], November 02, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=37191 dynamically modified evaluation function] by [[Don Dailey]], [[CCC]], December 20, 2010
+
* [https://talkchess.com/forum/viewtopic.php?t=37191 dynamically modified evaluation function] by [[Don Dailey]], [[CCC]], December 20, 2010
 
'''2011'''
 
'''2011'''
 
* [http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=22785 Suppose Rybka used Fruits evaluations] by [[Søren Riis|SR]], [[Computer Chess Forums|Rybka Forum]], August 29, 2011
 
* [http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=22785 Suppose Rybka used Fruits evaluations] by [[Søren Riis|SR]], [[Computer Chess Forums|Rybka Forum]], August 29, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=41621 writing an evaluation function] by Pierre Bokma, [[CCC]], December 27, 2011
+
* [https://talkchess.com/forum/viewtopic.php?t=41621 writing an evaluation function] by Pierre Bokma, [[CCC]], December 27, 2011
 
'''2012'''
 
'''2012'''
* [http://www.talkchess.com/forum/viewtopic.php?t=42806 The evaluation value and value returned by minimax search] by [[Chao Ma]], [[CCC]], March 09, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=42806 The evaluation value and value returned by minimax search] by [[Chao Ma]], [[CCC]], March 09, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=43385 Multi dimensional score] by [[Nicu Ionita]], [[CCC]], April 20, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=43385 Multi dimensional score] by [[Nicu Ionita]], [[CCC]], April 20, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=43386 Bi dimensional static evaluation] by [[Nicu Ionita]], [[CCC]], April 20, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=43386 Bi dimensional static evaluation] by [[Nicu Ionita]], [[CCC]], April 20, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=43387 Theorem proving positional evaluation] by [[Nicu Ionita]], [[CCC]], April 20, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=43387 Theorem proving positional evaluation] by [[Nicu Ionita]], [[CCC]], April 20, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=43545 log(w/b) instead of w-b?] by [[Gerd Isenberg]], [[CCC]], May 02, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=43545 log(w/b) instead of w-b?] by [[Gerd Isenberg]], [[CCC]], May 02, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=44014 The value of an evaluation function] by [[Ed Schroder|Ed Schröder]], [[CCC]], June 11, 2012
+
* [https://talkchess.com/forum/viewtopic.php?t=44014 The value of an evaluation function] by [[Ed Schroder|Ed Schröder]], [[CCC]], June 11, 2012
 
'''2013'''
 
'''2013'''
* [http://www.talkchess.com/forum/viewtopic.php?t=46879 eval scale in Houdini] by [[Rein Halbersma]], [[CCC]], January 14, 2013 » [[Houdini]]
+
* [https://talkchess.com/forum/viewtopic.php?t=46879 eval scale in Houdini] by [[Rein Halbersma]], [[CCC]], January 14, 2013 » [[Houdini]]
* [http://www.talkchess.com/forum/viewtopic.php?t=46993 An idea of how to make your engine play more rational chess] by [[Pio Korinth]], [[CCC]], January 25, 2013
+
* [https://talkchess.com/forum/viewtopic.php?t=46993 An idea of how to make your engine play more rational chess] by [[Pio Korinth]], [[CCC]], January 25, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=48252 A Materialless Evaluation?] by [[Thomas Kolarik]], [[CCC]], June 12, 2013
+
* [https://talkchess.com/forum/viewtopic.php?t=48252 A Materialless Evaluation?] by [[Thomas Kolarik]], [[CCC]], June 12, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=48644 A different way of summing evaluation features] by [[Pio Korinth]], [[CCC]], July 14, 2013 <ref>[https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance from Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Principal_component_analysis Principal component analysis from Wikipedia]</ref>
+
* [https://talkchess.com/forum/viewtopic.php?t=48644 A different way of summing evaluation features] by [[Pio Korinth]], [[CCC]], July 14, 2013 <ref>[https://en.wikipedia.org/wiki/Euclidean_distance Euclidean distance from Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Principal_component_analysis Principal component analysis from Wikipedia]</ref>
* [http://www.talkchess.com/forum/viewtopic.php?t=49190 Improve the search or the evaluation?] by [[Jens Bæk Nielsen]], [[CCC]], August 31, 2013 » [[Knowledge#SearchVersusEvaluation|Search versus Evaluation]]
+
* [https://talkchess.com/forum/viewtopic.php?t=49190 Improve the search or the evaluation?] by [[Jens Bæk Nielsen]], [[CCC]], August 31, 2013 » [[Knowledge#SearchVersusEvaluation|Search versus Evaluation]]
* [http://www.talkchess.com/forum/viewtopic.php?t=49421 Multiple EVAL] by [[Ed Schroder]], [[CCC]], September 22, 2013
+
* [https://talkchess.com/forum/viewtopic.php?t=49421 Multiple EVAL] by [[Ed Schroder]], [[CCC]], September 22, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=50472 floating point SSE eval] by [[Marco Belli]], [[CCC]], December 13, 2013 » [[Float]], [[Score]]
+
* [https://talkchess.com/forum/viewtopic.php?t=50472 floating point SSE eval] by [[Marco Belli]], [[CCC]], December 13, 2013 » [[Float]], [[Score]]
 
'''2014'''
 
'''2014'''
* [http://www.talkchess.com/forum/viewtopic.php?t=51012 5 underestimated evaluation rules] by [[Lyudmil Tsvetkov]], [[CCC]], January 23, 2014
+
* [https://talkchess.com/forum/viewtopic.php?t=51012 5 underestimated evaluation rules] by [[Lyudmil Tsvetkov]], [[CCC]], January 23, 2014
* [http://www.talkchess.com/forum/viewtopic.php?t=51811 Thoughs on eval terms] by [[Fermin Serrano]], [[CCC]], March 31, 2014
+
* [https://talkchess.com/forum/viewtopic.php?t=51811 Thoughs on eval terms] by [[Fermin Serrano]], [[CCC]], March 31, 2014
 
==2015 ...==
 
==2015 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=55355 Value of a Feature or Heuristic] by [[Jonathan Rosenthal]], [[CCC]], February 15, 2015
+
* [https://talkchess.com/forum/viewtopic.php?t=55355 Value of a Feature or Heuristic] by [[Jonathan Rosenthal]], [[CCC]], February 15, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=55897 Couple more ideas] by [[Lyudmil Tsvetkov]], [[CCC]], April 05, 2015
+
* [https://talkchess.com/forum/viewtopic.php?t=55897 Couple more ideas] by [[Lyudmil Tsvetkov]], [[CCC]], April 05, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=55955 Most common/top evaluation features?] by [[Alexandru Mosoi]], [[CCC]], April 10, 2015
+
* [https://talkchess.com/forum/viewtopic.php?t=55955 Most common/top evaluation features?] by [[Alexandru Mosoi]], [[CCC]], April 10, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=56690 eval pieces] by [[Daniel Anulliero]], [[CCC]], June 15, 2015
+
* [https://talkchess.com/forum/viewtopic.php?t=56690 eval pieces] by [[Daniel Anulliero]], [[CCC]], June 15, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=57022 * vs +] by [[Stefano Gemma]], [[CCC]], July 19, 2015
+
* [https://talkchess.com/forum/viewtopic.php?t=57022 * vs +] by [[Stefano Gemma]], [[CCC]], July 19, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=57087 (E)valuation (F)or (S)tarters] by [[Ed Schroder|Ed Schröder]], [[CCC]], July 26, 2015  
+
* [https://talkchess.com/forum/viewtopic.php?t=57087 (E)valuation (F)or (S)tarters] by [[Ed Schroder|Ed Schröder]], [[CCC]], July 26, 2015  
 
'''2016'''
 
'''2016'''
* [http://www.talkchess.com/forum/viewtopic.php?t=59091 Non-linear eval terms] by [[J. Wesley Cleveland]], [[CCC]], January 29, 2016
+
* [https://talkchess.com/forum/viewtopic.php?t=59091 Non-linear eval terms] by [[J. Wesley Cleveland]], [[CCC]], January 29, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=59570 A bizarre evaluation] by [[Larry Kaufman]], [[CCC]], March 20, 2016
+
* [https://talkchess.com/forum/viewtopic.php?t=59570 A bizarre evaluation] by [[Larry Kaufman]], [[CCC]], March 20, 2016
 
* [http://int8.io/chess-position-evaluation-with-convolutional-neural-networks-in-julia/ Chess position evaluation with convolutional neural network in Julia] by [[Kamil Czarnogorski]], [http://int8.io/ Machine learning with Julia and python], April 02, 2016 » [[Deep Learning]], [[Neural Networks]]
 
* [http://int8.io/chess-position-evaluation-with-convolutional-neural-networks-in-julia/ Chess position evaluation with convolutional neural network in Julia] by [[Kamil Czarnogorski]], [http://int8.io/ Machine learning with Julia and python], April 02, 2016 » [[Deep Learning]], [[Neural Networks]]
* [http://www.talkchess.com/forum/viewtopic.php?t=61064 Calculating space] by [[Shawn Chidester]], [[CCC]], August 07, 2016
+
* [https://talkchess.com/forum/viewtopic.php?t=61064 Calculating space] by [[Shawn Chidester]], [[CCC]], August 07, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=61236 Evaluation values help] by [[Laurie Tunnicliffe]], [[CCC]], August 26, 2016
+
* [https://talkchess.com/forum/viewtopic.php?t=61236 Evaluation values help] by [[Laurie Tunnicliffe]], [[CCC]], August 26, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=61861 A database for learning evaluation functions] by [[Álvaro Begué]], [[CCC]], October 28, 2016 » [[Automated Tuning]], [[Learning]], [[Texel's Tuning Method]]
+
* [https://talkchess.com/forum/viewtopic.php?t=61861 A database for learning evaluation functions] by [[Álvaro Begué]], [[CCC]], October 28, 2016 » [[Automated Tuning]], [[Learning]], [[Texel's Tuning Method]]
* [http://www.talkchess.com/forum/viewtopic.php?t=61875 Evaluation doubt] by [[Fabio Gobbato]], [[CCC]], October 29, 2016
+
* [https://talkchess.com/forum/viewtopic.php?t=61875 Evaluation doubt] by [[Fabio Gobbato]], [[CCC]], October 29, 2016
 
'''2017'''
 
'''2017'''
* [http://www.talkchess.com/forum/viewtopic.php?t=63181 Bayesian Evaluation Functions] by [[Jonathan Rosenthal]], [[CCC]], February 15, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=63181 Bayesian Evaluation Functions] by [[Jonathan Rosenthal]], [[CCC]], February 15, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=63408 improved evaluation function] by [[Alexandru Mosoi]], [[CCC]], March 11, 2017 » [[Texel's Tuning Method]], [[Zurichess]]
+
* [https://talkchess.com/forum/viewtopic.php?t=63408 improved evaluation function] by [[Alexandru Mosoi]], [[CCC]], March 11, 2017 » [[Texel's Tuning Method]], [[Zurichess]]
* [http://www.talkchess.com/forum/viewtopic.php?t=63803 random evaluation perturbation factor] by [[Stuart Cracraft]], [[CCC]], April 24, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=63803 random evaluation perturbation factor] by [[Stuart Cracraft]], [[CCC]], April 24, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=63863 horrid positional play in a solid tactical searcher] by [[Stuart Cracraft]], [[CCC]], April 29, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=63863 horrid positional play in a solid tactical searcher] by [[Stuart Cracraft]], [[CCC]], April 29, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=64041 Another attempt at comparing Evals ELO-wise] by [[Kai Laskos]], [[CCC]], May 22, 2017 » [[Playing Strength]]
+
* [https://talkchess.com/forum/viewtopic.php?t=64041 Another attempt at comparing Evals ELO-wise] by [[Kai Laskos]], [[CCC]], May 22, 2017 » [[Playing Strength]]
* [http://www.talkchess.com/forum/viewtopic.php?t=64230 static eval in every node?] by [[Erin Dame]], [[CCC]], June 09, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=64230 static eval in every node?] by [[Erin Dame]], [[CCC]], June 09, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=65403 comparing between search or evaluation] by [[Uri Blass]], [[CCC]], October 09, 2017» [[Search]]
+
* [https://talkchess.com/forum/viewtopic.php?t=65403 comparing between search or evaluation] by [[Uri Blass]], [[CCC]], October 09, 2017» [[Search]]
* [http://www.talkchess.com/forum/viewtopic.php?t=65715 Neural networks for chess position evaluation- request] by [[Kamil Czarnogorski]], [[CCC]], November 13, 2017 » [[Deep Learning]], [[Neural Networks]]
+
* [https://talkchess.com/forum/viewtopic.php?t=65715 Neural networks for chess position evaluation- request] by [[Kamil Czarnogorski]], [[CCC]], November 13, 2017 » [[Deep Learning]], [[Neural Networks]]
* [http://www.talkchess.com/forum/viewtopic.php?t=65829 AlphaGo's evaluation function] by Jens Kipper, [[CCC]], November 26, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=65829 AlphaGo's evaluation function] by Jens Kipper, [[CCC]], November 26, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=65946 Logarithmic Patterns In Evaluations] by [[Dennis Sceviour]], [[CCC]], December 09, 2017
+
* [https://talkchess.com/forum/viewtopic.php?t=65946 Logarithmic Patterns In Evaluations] by [[Dennis Sceviour]], [[CCC]], December 09, 2017
 
'''2018'''
 
'''2018'''
* [http://www.talkchess.com/forum/viewtopic.php?t=66413 replace the evaluation by playing against yourself] by [[Uri Blass]], [[CCC]], January 25, 2018 » [[Fortress]]
+
* [https://talkchess.com/forum/viewtopic.php?t=66413 replace the evaluation by playing against yourself] by [[Uri Blass]], [[CCC]], January 25, 2018 » [[Fortress]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67524 Poor man's neurones] by [[Pawel Koziol]], [[CCC]], May 21, 2018 » [[Neural Networks]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=67524 Poor man's neurones] by [[Pawel Koziol]], [[CCC]], May 21, 2018 » [[Neural Networks]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67877 Xiangqi evaluation] by [[Harm Geert Muller]], [[CCC]], July 01, 2018 » [[Chinese Chess|Xiangqi]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=67877 Xiangqi evaluation] by [[Harm Geert Muller]], [[CCC]], July 01, 2018 » [[Chinese Chess|Xiangqi]]
 
==2020 ...==
 
==2020 ...==
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74652 romantic-style play] by [[Stuart Cracraft]], [[CCC]], August 02, 2020
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=74652 romantic-style play] by [[Stuart Cracraft]], [[CCC]], August 02, 2020
 
* [https://prodeo.actieforum.com/t120-engine-choosing-between-sets-of-piece-square-tables Engine choosing between sets of piece/square tables] by [[Pawel Koziol]], [[Computer Chess Forums|ProDeo Forum]], December 05, 2020 » [[Rodent]], [[Piece-Square Tables]]
 
* [https://prodeo.actieforum.com/t120-engine-choosing-between-sets-of-piece-square-tables Engine choosing between sets of piece/square tables] by [[Pawel Koziol]], [[Computer Chess Forums|ProDeo Forum]], December 05, 2020 » [[Rodent]], [[Piece-Square Tables]]
 
* [https://prodeo.actieforum.com/t123-controlled-randomness-of-evaluation-function Controlled randomness of evaluation function] by [[Pawel Koziol|nescitus]], [[Computer Chess Forums|ProDeo Forum]], December 06, 2020
 
* [https://prodeo.actieforum.com/t123-controlled-randomness-of-evaluation-function Controlled randomness of evaluation function] by [[Pawel Koziol|nescitus]], [[Computer Chess Forums|ProDeo Forum]], December 06, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76161 Manually tuned evaluation] by [[Maksim Korzh]], [[CCC]], December 27, 2020 » [[Simplified Evaluation Function]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=76161 Manually tuned evaluation] by [[Maksim Korzh]], [[CCC]], December 27, 2020 » [[Simplified Evaluation Function]]
 
'''2021'''
 
'''2021'''
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=76446 So what do we miss in the traditional evaluation?] by [[Ferdinand Mosca]], [[CCC]], January 29, 2021 » [[NNUE]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=2&t=76446 So what do we miss in the traditional evaluation?] by [[Ferdinand Mosca]], [[CCC]], January 29, 2021 » [[NNUE]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76556 HCE and NNUE and vectorisation] by [[Vivien Clauzon]], [[CCC]], February 11, 2021 » [[NNUE]], [[Minic]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=76556 HCE and NNUE and vectorisation] by [[Vivien Clauzon]], [[CCC]], February 11, 2021 » [[NNUE]], [[Minic]]
 
* [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/erjTVGUqAQAJ Idea: use range (evalMin - evalMax) for position evaluation] by Mirza Hadzic, [[Computer Chess Forums|LCZero Forum]], April 6, 2021  
 
* [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/erjTVGUqAQAJ Idea: use range (evalMin - evalMax) for position evaluation] by Mirza Hadzic, [[Computer Chess Forums|LCZero Forum]], April 6, 2021  
 
: [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/SgbGghzhBAAJ Re: Idea: use range (evalMin - evalMax) for position evaluation] by [[Álvaro Begué]], [[Computer Chess Forums|LCZero Forum]], May 28, 2021 <ref>[[Eric B. Baum]], [[Warren D. Smith]] ('''1999'''). ''[https://www.mitpressjournals.org/doi/abs/10.1162/089976699300016881?journalCode=neco Propagating Distributions Up Directed Acyclic Graphs]''. [https://en.wikipedia.org/wiki/Neural_Computation_%28journal%29 Neural Computation], Vol. 11, No. 1</ref>
 
: [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/SgbGghzhBAAJ Re: Idea: use range (evalMin - evalMax) for position evaluation] by [[Álvaro Begué]], [[Computer Chess Forums|LCZero Forum]], May 28, 2021 <ref>[[Eric B. Baum]], [[Warren D. Smith]] ('''1999'''). ''[https://www.mitpressjournals.org/doi/abs/10.1162/089976699300016881?journalCode=neco Propagating Distributions Up Directed Acyclic Graphs]''. [https://en.wikipedia.org/wiki/Neural_Computation_%28journal%29 Neural Computation], Vol. 11, No. 1</ref>
 
: [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/F9JjnN8FBQAJ Re: Idea: use range (evalMin - evalMax) for position evaluation] by [[Warren D. Smith]], [[Computer Chess Forums|LCZero Forum]], May 29, 2021
 
: [https://groups.google.com/g/lczero/c/TLCMkkdm1hw/m/F9JjnN8FBQAJ Re: Idea: use range (evalMin - evalMax) for position evaluation] by [[Warren D. Smith]], [[Computer Chess Forums|LCZero Forum]], May 29, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=77571 I declare that HCE is dead...] by [[Andrew Grant]], [[CCC]], June 29, 2021 » [[Ethereal]], [[NNUE]]
+
* [https://talkchess.com/forum3/viewtopic.php?f=2&t=77571 I declare that HCE is dead...] by [[Andrew Grant]], [[CCC]], June 29, 2021 » [[Ethereal]], [[NNUE]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77952 Evaluation questions] by [[Ellie Moore]], [[CCC]], August 16, 2021
+
* [https://talkchess.com/forum3/viewtopic.php?f=7&t=77952 Evaluation questions] by [[Ellie Moore]], [[CCC]], August 16, 2021
 +
 
 +
'''2023'''
 +
* [https://talkchess.com/viewtopic.php?t=81968 Most Important Evaluation Terms] by [[Aditya Chandra]], [[CCC]], April 30, 2023
  
 
=External Links=  
 
=External Links=  

Latest revision as of 07:13, 20 July 2024

Home * Evaluation

Wassily Kandinsky - Schach-Theorie, 1937 [1]

Evaluation,
a heuristic function to determine the relative value of a position, i.e. the chances of winning. If we could see to the end of the game in every line, the evaluation would only have values of -1 (loss), 0 (draw), and 1 (win), and the chess engine should search depth 1 only to get the best move. In practice, however, we do not know the exact value of a position, so we must make an approximation with the main purpose is to comparing positions, and the chess engine now must search deeply and find the highest score position within a given period.

Recently, there are two main ways to build an evaluation: traditional hand-crafted evaluation (HCE) and multi-layer neural networks. This page focuses on the traditional way of considering explicit features of a chess position.

Beginning chess players learn to do this starting with the value of the pieces themselves. Computer evaluation functions also use the value of the material balance as the most significant aspect and then add other considerations.

Where to Start

The first thing to consider when writing an evaluation function is how to score a move in Minimax or the more common NegaMax framework. While Minimax usually associates the white side with the max-player and black with the min-player and always evaluates from the white point of view, NegaMax requires a symmetric evaluation in relation to the side to move. We can see that one must not score the move per se – but the result of the move (i.e. a positional evaluation of the board as a result of the move). Such a symmetric evaluation function was first formulated by Claude Shannon in 1949 [2] :

f(p) = 200(K-K')
       + 9(Q-Q')
       + 5(R-R')
       + 3(B-B' + N-N')
       + 1(P-P')
       - 0.5(D-D' + S-S' + I-I')
       + 0.1(M-M') + ...

KQRBNP = number of kings, queens, rooks, bishops, knights and pawns
D,S,I = doubled, blocked and isolated pawns
M = Mobility (the number of legal moves)

Here, we can see that the score is returned as a result of subtracting the current side's score from the equivalent evaluation of the opponent's board scores (indicated by the prime letters K' Q' and R'.. ).

Side to move relative

In order for NegaMax to work, it is important to return the score relative to the side being evaluated. For example, consider a simple evaluation, which considers only material and mobility:

materialScore = kingWt  * (wK-bK)
              + queenWt * (wQ-bQ)
              + rookWt  * (wR-bR)
              + knightWt* (wN-bN)
              + bishopWt* (wB-bB)
              + pawnWt  * (wP-bP)

mobilityScore = mobilityWt * (wMobility-bMobility)

return the score relative to the side to move (who2Move = +1 for white, -1 for black):

Eval  = (materialScore + mobilityScore) * who2Move

Linear vs. Nonlinear

Most evaluations terms are a linear combination of independent features and associated weights in the form of

EvalLinearFormula1.jpg

A function f is linear if the function is additive:

EvalLinearFormula2.jpg

and second if the function is homogeneous of degree 1:

EvalLinearFormula3.jpg

It depends on the definition and independence of features and the acceptance of the axiom of choice (Ernst Zermelo 1904), whether additive real number functions are linear or not [3]. Features are either related to single pieces (material), their location (piece-square tables), or more sophisticated, considering interactions of multiple pawns and pieces, based on certain patterns or chunks. Often several phases to first process simple features and after building appropriate data structures, in consecutive phases more complex features based on patterns and chunks are used.

Based on that, to distinguish first-order, second-order, etc. terms, makes more sense than using the arbitrary terms linear vs. nonlinear evaluation [4]. With respect to tuning, one has to take care that features are independent, which is not always that simple. Hidden dependencies may otherwise make the evaluation function hard to maintain with undesirable nonlinear effects.

General Aspects

Basic Evaluation Features

Considering Game Phase

Opening
Middlegame
Endgame

Miscellaneous

See also

Search versus Evaluation

Publications

1949

1950 ...

1960 ...

1970 ...

1980 ...

1990 ...

2000 ...

2010 ...

2015 ...

Blog & Forum Posts

1993 ...

1995 ...

2000 ...

2005 ...

Re: Search or Evaluation? by Mark Uniacke, Hiarcs Forum, October 14, 2007

2010 ...

2011

2012

2013

2014

2015 ...

2016

2017

2018

2020 ...

2021

Re: Idea: use range (evalMin - evalMax) for position evaluation by Álvaro Begué, LCZero Forum, May 28, 2021 [12]
Re: Idea: use range (evalMin - evalMax) for position evaluation by Warren D. Smith, LCZero Forum, May 29, 2021

2023

External Links

Mathematical Foundations

Chess Evaluation

References

Up one level