LeelaChessZero / lc0

The rewritten engine, originally for tensorflow. Now all other backends have been ported here.
GNU General Public License v3.0
2.38k stars 525 forks source link

Improving the MUtility function #1929

Open ContradNamiseb opened 10 months ago

ContradNamiseb commented 10 months ago

In this PR I'm introducing 2 new tune able parameters, only the MovesLeftThreshold parameter is left from the old MUtility function. What this PR will do is prioritize shorter wins and longer losses. The first parameter is MovesLeftMidpointMove this controls where the m-value crosses the y-axis as in moves with greater value than this parameter will have a negative m-effect value. This is done so moves that have shorter movesleft-value than MovesLeftMidpointMove can be prioritized higher than moves with longer movesleft-value than MovesLeftMidpointMove I would recomend (100) for this parameter. The second parameter is the MovesLeftSteepnessFactor this should be the more tune-able parameter to match hardware as this parameter will differ depending on the nps. This sets the steepness of the curve, which is how quickly the m-value changes as the moves-left decrease or how high or low the m-value goes in simple terms. The higher this value is the greater the m-effect on node Q which might cause aggressive play and missing some deeper tactic's that might cause losses.

mooskagh commented 6 months ago

To proceed, this change at least needs to show that it doesn't cause Elo or nps regression.

And preferably, also some better math-grounded justification for the changes, maybe discuss with @Naphthalin as he is the author of the original MUtility.