parameter tuning in chess4j and Prophet

Discussion of chess software programming and technical issues.

Moderator: Ras

jswaff
Posts: 105
Joined: Mon Jun 09, 2014 12:22 am
Full name: James Swafford

Re: parameter tuning in chess4j and Prophet

Post by jswaff »

algerbrex wrote: Sun Jul 03, 2022 3:12 pm
AndrewGrant wrote: Sun Jul 03, 2022 11:46 am Thanks for the post, James, and thanks for the shoutout. Now if only this could be done for search paramaters instead of just eval features, then we would really be cooking :)
I've been thinking about ways to tune the search parameters a good bit, and after reading Thomas Petzke's blog from a couple of years ago, I've been tempted to try some sort of genetic tuning of the search parameters.

Now of course the difficulty is selecting a good fitness function. It would be nice if there was a quick fitness function that could be used, like for Texel Tuning, but I suspect I'll only see any good results using a fitness function based on playing many games. Nevertheless, I have come across several papers (like this one: https://arxiv.org/pdf/1711.08337.pdf), that used a fitness function based on finding the highest number of correct moves, and the fewest number of nodes used to find such a move, for certain positions from grandmaster games.

I'm skeptical that such a fitness function would work well for me in practice, but since it's relatively quick, I'll probably start with it first and see what happens. I'd be surprised if I was able to start from random values and even equalize with the search parameters in the current code.
A friend outside of computer chess suggested trying GAs to optimize the structure of a NN. Randomize the weights and make the structure the phenotype. I think it's an interesting idea. I also like the idea of using GAs to optimize search parameters.
AndrewGrant
Posts: 1957
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: parameter tuning in chess4j and Prophet

Post by AndrewGrant »

jswaff wrote: Sun Jul 03, 2022 6:18 pm I hadn't considered training only a new term or set of terms without rebalancing all terms. That seems dangerous to me actually.
Big IF attached to that statement. If you can right now, take your tuner, tune all values for a thousand epochs, and then find it to be neutral in elo, then I think the idea is founded to tune all things at once when adding a new term.

However, if you find yourself in a place where not all tunes of existing values end up in nice places, then there is danger in tuning all at once. You risk the changes to the old terms masking the gains from the new one.

I used to fall under the first category. At some point, I went into the second. Perhaps more data was needed. Ethereal has something like 1,400 HCE values. Maybe MSE loss was not quite optimal -- maybe tweaking the power was important. Who can say.