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.algerbrex wrote: ↑Sun Jul 03, 2022 3:12 pmI'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.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![]()
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.
parameter tuning in chess4j and Prophet
Moderator: Ras
-
- Posts: 105
- Joined: Mon Jun 09, 2014 12:22 am
- Full name: James Swafford
Re: parameter tuning in chess4j and Prophet
-
- 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
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.