gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gnugo-devel] Revise TODO?


From: Gunnar Farnebäck
Subject: Re: [gnugo-devel] Revise TODO?
Date: Fri, 09 Nov 2007 21:29:27 +0100
User-agent: Mozilla-Thunderbird 2.0.0.6 (X11/20071008)

Ben Lambrechts wrote:
  * Fuseki tuning by hand is difficult. People who are interested
    in doing machine learning experiments with GNU Go could try
    working with fuseki. This may be one of the areas with most
    potential for substantial and reasonably quick improvements.

Very interesting and I think it's doable in the near future.

I looked today at the fuseki19.dbz structure. And I have a few questions.

* Does GNU Go uses this file for opening?

Yes. To get into some detail it works like this:

At build time, the program uncompress_fuseki converts fuseki19.dbz into the C-code file fuseki19.c, where the position information is transformed into 64-bit board hashes and stored in an array together with information on the number of stones on the board, move position, and pattern value. To get a clearer view of how the patterns look it's possible to convert fuseki19.dbz into fuseki19.db by using uncompress_fuseki with the db option.

At runtime, the code in fuseki.c calls fullboard_matchpat(). This computes board hashes for all rotations of the board and looks for matches in the array described above. From the matched moves, one is chosen randomly with probabilities proportional to the pattern values. The fuseki module then announces this to the move valuation system as a move with a fixed value of 75 points.

* Does GNU Go take in to account that the board is symmetrical (black first
move @ pd = first move @ dp, dd or pp

Yes, as described above, all rotational/mirror symmetries are matched.

* Is this the only file for opening moves?

By giving a 75 points value this file will in practice have precedence but fuseki moves are also generated by other code in fuseki.c (open corners) and by patterns in fuseki.db and to some extent by ordinary patterns. Additionally joseki moves are generated from the joseki databases (patterns/*.sgf) when those apply.

Of course, if the board is not 19x19, fuseki19.dbz is not used at all. Corresponding databases exist also for 9x9 and 13x13 but on other boardsizes the general code and patterns are left to themselves.

I don't want to hack in the code, but if I can create a new fuseki-database,
I am willing to help.

I don't think a new full-board database would be of much value at this time. As described in my other mail, smaller scale patterns have much more potential.

However, I believe patterns/extract_fuseki.c, the code used to generate the fullboard patterns, has a mode to also generate halfboard patterns. It could be interesting to generate a collection of such patterns from a set of strong games, which then could be used in an Elo pattern rating approach.

/Gunnar




reply via email to

[Prev in Thread] Current Thread [Next in Thread]