I have used the Stochastic RBF algorithm (Python implementation available here: https://ccse.lbl.gov/people/julianem/, although I had to modify/extend it) for those parameters that can't be tuned via the Texel method. It needs at least 2n iterations where n is the number of parameters to optimize but probably no more than 10n to produce a decent parameter set. Each iteration is a substantial number of games (30000 or so). This method is somewhat tolerant of noise. It takes a lot of time and resources, but many other methods are designed for optimizing computationally cheap functions or simulations and require more samples (sometimes a lot more) to produce the same results.
--Jon
Genetical learning (again)
Moderators: hgm, Rebel, chrisw
-
- Posts: 4367
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
-
- Posts: 175
- Joined: Fri Oct 22, 2010 9:47 pm
- Location: Austria
Re: Genetical learning (again)
I experimented last weeks with this one, in the same category:jdart wrote:I have used the Stochastic RBF algorithm (Python implementation available here: https://ccse.lbl.gov/people/julianem/, although I had to modify/extend it) for those parameters that can't be tuned via the Texel method. It needs at least 2n iterations where n is the number of parameters to optimize but probably no more than 10n to produce a decent parameter set. Each iteration is a substantial number of games (30000 or so). This method is somewhat tolerant of noise. It takes a lot of time and resources, but many other methods are designed for optimizing computationally cheap functions or simulations and require more samples (sometimes a lot more) to produce the same results.
--Jon
http://rmcantin.bitbucket.org/html/
After a few tests I'm trying to guess how many games I should play per "measure point" in order to get a good parameter sets as quick as possible. The noise level in short tournaments is terrible...
-
- Posts: 4367
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
Re: Genetical learning (again)
BayesOpt uses a different algorithm although it is still in the response surface category. This is actually quite an old method (dating back to the 1998 paper by Jones) and it has a decent theory behind it but I don't think it is state of the art anymore. There is a comparison article here: http://link.springer.com/article/10.100 ... 014-0184-0 with some measurements.
I don't know if there is an optimal number of games per sample. I think it depends on the problem. The general problem is that many of the tuning "knobs" in a chess engine actually do not by themselves change the rating very much. So you are trying to find the low point on a very flat surface (most optimizers by default are minimizers so the measure they optimize is the inverse of the rating). If the noise is larger than the slope of the surface then you are probably just optimizing noise .
--Jon
I don't know if there is an optimal number of games per sample. I think it depends on the problem. The general problem is that many of the tuning "knobs" in a chess engine actually do not by themselves change the rating very much. So you are trying to find the low point on a very flat surface (most optimizers by default are minimizers so the measure they optimize is the inverse of the rating). If the noise is larger than the slope of the surface then you are probably just optimizing noise .
--Jon
-
- Posts: 175
- Joined: Fri Oct 22, 2010 9:47 pm
- Location: Austria
Re: Genetical learning (again)
But doesn't have any optimisation method the same problem?jdart wrote:So you are trying to find the low point on a very flat surface (most optimizers by default are minimizers so the measure they optimize is the inverse of the rating). If the noise is larger than the slope of the surface then you are probably just optimizing noise .
--Jon
-
- Posts: 4367
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
Re: Genetical learning (again)
Sure. It is just a hard problem. All optimizers will have difficulty with it. But some may do better than others because they converge faster and/or tolerate noise better.nionita wrote: But doesn't have any optimisation method the same problem?
--Jon
-
- Posts: 859
- Joined: Mon Aug 10, 2009 10:05 pm
- Location: Italy
- Full name: Stefano Gemma
Re: Genetical learning (again)
Next step: I'll use the new tourney mode of Satana to genetical-tune parameters against external engines, instead of just self-playing. I'm not sure about the best schema:
A) tune only against external engines
B) tune against internal engines (the GA population) and then run a validate session against external engines
C) tune in a mixed population: internal growing Satana instances plus fixed external engines
I would start from the last one, it seems the most promising schema. En passant, if I use even Neurone as an external engine, it has a "neurolearning" option that let him learn openings game by game... this would let not really fixed the external pool of engines.
It would be very nice to have a pool of automatic learning external engines but I don't know any other than Neurone, in the ELO range of Satana.
A) tune only against external engines
B) tune against internal engines (the GA population) and then run a validate session against external engines
C) tune in a mixed population: internal growing Satana instances plus fixed external engines
I would start from the last one, it seems the most promising schema. En passant, if I use even Neurone as an external engine, it has a "neurolearning" option that let him learn openings game by game... this would let not really fixed the external pool of engines.
It would be very nice to have a pool of automatic learning external engines but I don't know any other than Neurone, in the ELO range of Satana.
Author of Drago, Raffaela, Freccia, Satana, Sabrina.
http://www.linformatica.com
http://www.linformatica.com