Hi Gian-Carlo,
I reply to the list, because the answer might be interesting to other
readers.
On 05/24/2010 09:50 PM, Gian-Carlo Pascutto wrote:
I have 2 based on a quick look:
1) What does one do with draws? I could continue matches until there is
a winner, but I suspect this is suboptimal wrt the optimization procedure?
Right now, QLR does not support draws. That will be for next version,
probably. It should not be more than half a day of work for programming
and testing.
There are also some important features that are not supported yet, and
that could be useful in the future:
- Allow replications at one point in parameter space. Right now, QLR
will only ask for one game result. But a tester might wish to play two
games from a random opening, one with White, and the other with Black.
Or 2N games against N opponents.
- Integer parameters. Right now all parameters are assumed continuous.
Of course, you can round them in your program. But QLR would behave
better if it could be aware that you round them.
2) Do you have any advice regarding high-dimensional problems? I have a
few hundred parameters to tune. In theory your program can handle all at
once, if I get it correctly. In practise, surely there are some tradeoffs?
A good automatic parameter optimizer should always perform better when
optimizing all parameters together, than when optimizing them one by one
(or few by few). It is my objective to have this property, but QLR
probably does not have it yet, unfortunately.
QLR does a quadratic regression. That is to say, it fits a model to
data. With N parameters to be optimized, this model has (N+1)*(N+2)/2
parameters. For large N, that's a lot of parameters. So it requires
strong regularization. My plan for the future is to have a strong prior
on covariance terms. That is to say, assume parameters are independent
unless data proves there is a correlation. This should allow direct
optimization of really many parameters.
Right now my regression does not have a strong regularization. The prior
over regression parameters is a Gaussian with high variance. In
practice, I tested that it works in dimension 10, on artificial
problems. QLR makes no miracles, anyway. If you wish to optimize
hundreds of parameters, you'll have to play millions of games.
I suggest you try to optimize few parameters first. And if you have
prior intuition that some parameters tend to be independent from others,
then it is better to optimize them separately. Move ordering and
position-evaluation could probably be optimized separately without
losing much, for instance.
A feature I will add in the future is the ability to re-use data from an
optimization of a subset of parameters. For instance, you start by
optimizing bishop and knight value, with rook=5. Then, you can use the
data you collected, in order to optimize bishop + knight + rook together.
Another important feature QLR is missing is the possibility to use
reference values for parameters. You surely have good guesses for all
your parameters. Giving them to QLR would help. Right now, you only give
an interval to QLR, and it might waste some time in the beginning in
order to discover reasonable values. Seeding QLR with a few hundred
games at your current reference value would help it a lot in the beginning.
So QLR is just at a starting point now. It will improve in the future.
But you can start writing a connection script for your program right
now: it will be useful soon.
Rémi
_______________________________________________
Computer-go mailing list
[email protected]
http://dvandva.org/cgi-bin/mailman/listinfo/computer-go