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

Reply via email to