Random Posts

Play Live Blitz

YOU CAN PLAY LIVE BLITZ GAMES ON CHESSBASE FROM MY BOOK REVIEW PAGE! Just click on Play Blitz under the board.

Monday, March 11, 2019

Stockfish 10 Contempt Settings

     I am not an engine guru, but after using Stockfish 10 for a while I have noticed some strange behavior in its evaluation function that has to do with its contempt setting. 
    The contempt setting controls how readily the engine will play for a draw. The higher the value the stronger the effect on the engine and the more it will try to avoid a draw even if it means playing something other than the optimal move. If the engine has high contempt setting it might exhibit a more attacking style. 
     The default contempt setting for Stockfish 8 was zero, Stockfish 9 was 20 and for Stockfish 10 it is 24. Programmers did this because in some computer tournaments Stockfish was playing too many draws and by raising the contempt setting, the engine was able to score more points against weaker engines without losing too much objective strength against the stronger engines. This idea may sometimes be seen in games between human players when a player tries to keep the tension in a position which creates more scope for his weaker opponent to make a mistake. 
     But, what if you are playing in engine assisted tournaments against other Stockfish users? Might not the higher settings result in losing more games by trying to avoid the draw because the engine is not recommending the absolute best move? 
     If you are looking for the absolute best move in a given position, it might not be the engine's first choice. According to Russell Sherwood of the Welsh Chess Federation, "General opinion for CC has been that contempt settings should be set to zero to get a more accurate assessment of the position, however, there are different views on this." Mr. Sherwood has written some interesting articles on correspondence chess and the use of engines on the Welsh website
     I am not exactly sure how the contempt setting works. On one site I read that when the engine starts analyzing from a position it gives a “bonus” in the form of the contempt setting to whichever side is on the move. The result that the evaluation keeps bouncing back and forth and, according to the poster, the transposition table is filled with conflicting evaluation scores. 
     Another person wrote that was incorrect. According to him, the engine searches and returns its best move and the expected reply (known as the ponder move) so the engine is always searching from the same side to move.
     Whatever is going on, when analyzing with Stockfish 10 I have noticed what one person called “a strange yo-yo-effect especially at the beginning of the game” (also referred to as the “roller coaster effect”) that results in wild fluctuations in the evaluation every time a move is actually made on the board. His explanation was, like previously mentioned, it is because the contempt factor is switched back and forth to whichever side has the move. 
     I don’t know who is correct, but take the following position. 


I used two cores with the hash table at 1168 and gave Stockfish 10 five minutes to evaluate the position. 
Contempt setting: 24 Evaluation: -1.71 
Contempt setting: 20 Evaluation: -1.42 
Contempt setting: 0 Evaluation: -1.27 

     Clearly the contempt setting changes the evaluation, the difference in this case by as much as almost a half a Pawn. For anybody that’s interested, there is an interesting discussion at Talkchess,com.

1 comment:

  1. excellent article. mention that stockfish has always "analysis contempt" on. other engine do not. others do not use contempt for infinitely analysis purposes. i might be an good idea to turn stockfish's analysis contempt off when playing corr chess ?!

    ReplyDelete