Winning Percentage to Centipawns
Before continuing with last week's post, AlphaZero's Zeros, on the problem with 0.00 evaluations in traditional A/B chess engines, one point needs clarification. NN engines like AlphaZero don't use centipawn evaluations of a position; they calculate the probability of a win from the position using a scale of 100% (a certain win) to 0% (a certain loss).
When engine competitions like TCEC/CCC (see the tab at the top of the page) compare the thinking of the engines, how do they handle the A/B and NN results? I don't know what AlphaZero would do, since it's never competed in a tournament setting, but Leela converts its winning percentage to a centipawn evaluation. Both the TCEC and the CCC explain the conversion with identical language:-
!formula Leela's conversion from win pct to centipawns: cp = 290.680623072 * math.tan(3.096181612 * (feval - 0.5))
That formula was recently tweaked. The result is documented on Technical Explanation of Leela Chess Zero (github.com/LeelaChessZero):-
How does Lc0 calculate the cp eval? Lc0 uses an average expected score Q in the range [-1,1]. This expected score is converted to a traditional centipawn (cp) eval using this formula: cp = 111.714640912 * tan(1.5620688421 * Q)
How were those numbers derived? Another page on the same GitHub resource explains the process in detail: Recalibrate centipawn formula.
No comments:
Post a Comment