-
Notifications
You must be signed in to change notification settings - Fork 511
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve default WDLDrawRateTarget handling #2029
Improve default WDLDrawRateTarget handling #2029
Conversation
…matically if not specified and WDLCalibrationElo: 0 is used
Further testing shows that very small |
I assume you're talking about numerical issues? Probably coming from Because from a chess point of view, already values like 0.02 (which were allowed in the old range) cause completely erratic evals, play etc. We could either sanitize for numerical issues only, or give a warning/exception/... when a too low value is used. One such value could be whatever the Elo model automatically assigns to a game between 0 (or 1000) rated players. |
After we decide on a safe minimum value, what is the preferred solution? Make smaller values zero or increase them to this safe minimum? What about |
Since any "safe minimum" is arbitrary anyway, I would treat them as zero instead and thus turn off the WDL sharpening. I'd be happy with using the current minimum (0.001) as that value so we have consistent behavior for example, even if it allows one order of magnitude more than reasonable.
It has per design resp. definition, since the reference draw rate comes from the raw WDL of the net, and we don't have any nets with values outside the current value range, nor will we ever have unless on purpose.
Mathematically, it's |
This fixes the following unintended behavior:
If we want to turn off the WDL sharpening when using
WDLCalibrationElo
by setting it to 0, the code falls back to directly usingWDLDrawRateTarget
. This however means that when using the correctWDLDrawRateReference
in the config without also settingWDLDrawRateTarget
to the same value, turningWDLCalibrationElo
off doesn't actually retain the raw WDL values, since it internally works with the default 0.5 value.By changing it to the default behavior "value 0 means no effect", it doesn't need to be set in the config anymore, and turning off
WDLCalibrationElo
also turns off any WDL sharpening.