[Top][All Lists]
[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