[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [computer-go] Pattern matching - example play
----- Original Message -----
From: "chrilly" <chrilly@xxxxxxxxxxxxxxxxx>
To: "computer-go" <computer-go@xxxxxxxxxxxxxxxxx>
Sent: Monday, November 29, 2004 10:12 AM
Subject: Re: [computer-go] Pattern matching - example play
>I think the best combination is a relative poor playing but excellent
>programmer and a high-rated advisor.
Let's say a Go programmer has only two properties: "hacking" ability and Go
knowledge.
I wonder at what stage in the development of a Go program, and at what
strength, Go knowledge becomes more important than hacking ability.
I even wonder whether Go knowledge is very important at all.
L&D for example. Everybody uses pretty reliable heuristics to cutoff early,
like an eyeshape library and n-th order liberties (static evaluation).
When one is a strong Go player, one might be tempted to implement one's
knowledge of L&D and use that to terminate a L&D search branch early.
Then again, when one has no such knowledge, one needs to adopt a different
approach.
My pattern matcher is very adaptable, flexible, multi-purpose.
A year ago I modified it to harvest millions of "connectability" patterns,
patterns that tell me the statistical likelihood that the white or black
chains in that pattern will become connected when both players are pro's.
When given a pattern and a likelihood, I can generate the patterns with
another stone on a legal point in the pattern, look up the new likelyhood
and when it doesn't change and is already high, I know the connectivity
can't be improved significally. When it rises a lot on a certain point, I
know I should move there. A treshold will determine when things are not
"easily cuttable" any more etc.
The interesting aspect of this is that:
- The programmer implements connectivity expertise without using own Go
knowledge
- The system is based on automatic learning and very extensive data so it
will be pretty rugged
- The system can contain a lot of knowledge, possibly more than a strong Go
player can add to a system himself, at least certain aspects are impossible
to attain by putting in human knowledge into a computer, like with my
pattern-library of 8 million patterns).
The system can "hash in" just about anything the programmer deems useful
(has read in a beginner's book).
e.g. when harvesting & statistically analyzing connectivity patterns, also
hash in the ko-status. And the value of the best move on the board, and the
number of stones in the chains, the n-th order liberties of the chains in
the pattern etc. Automatic learning techniques can turn the resulting unique
patterns into estimations of connectivity and simply trying moves and
looking up the resulting patterns will tell you the same as a much deeper
search.
So you have made a statical evaluator of connectivity using the knowledge in
50,000 pro games and it will work like a charm even though you have no clue
about Go yourself. I think Go lends itself better to such an approach than
Chess. Go needs very agressive pruning and I think the best approach is to
optimize this with automatic learning.
Instead of a manually entered eye shape library, why not auto-learn all eye
shapes at all stages of the game in 50,000 pro games?
I think that such a scientific approach is better than trying to put your
own Go knowledge into a system.
I surely intend to auto-learn all aspects of my Go program. I already
implemented "shape" this way, explained how I started with "connectivity"
and gave a hint on how "L&D" could be helped with auto-learning as well.
As long as you have enough patetrns (many millions) and when they are large
enough and contain enough data, I think this approach will not only work, it
will also outperform what a human can put into a program.
IF a human generalizes his/her Go knowledge from many games, a program
should be able to do that as well, and perhaps even better in some cases. Of
course those "static" approaches do not replace search, but they sure help
to speed up search,
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/