02 August 2019

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: