[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: computer-go: A problem with understanding lookahead
> When people say here that there is no easy evaluation function to go, they
> seem to mean that there is no evaluation function that can be done is short
> enough time to be of any use in global searching.
Granted. What I envision as ideal in Go is something like in Chess.
In Chess, a call to the evaluator is pretty much meaningless without
combining it with a tactical search. Most evaluation functions in
Chess don't know a queen is hanging on the very next move, instead a
search is done that may involve hundreds, or thousands of additional
nodes. The branching factor in Chess is about 40 more or less
depending on the situation, but if the situation is reasonably
complex, a "simple" one ply search can involve thousands of nodes.
It's certainly tricky comparing apples to oranges. Some people design
very fast evaluation function in chess and others have very slow ones
that try to do much more. It's not clear which is best, because there
are sucessful examples of both. It appears that you can trade on for
the other and get approximately the same results.
So a well done "static evaluation" in Chess is totally lousy by
itself, the search is integrated into it. Apparently it's pretty
similar for Go. I will mention that it's possible, and has been done,
to write a think called a "static exhange evaluator" that tries to
actually return an accurate score without doing a tactical or quies
search. Even programs that do this often use a hybrid of the two,
looking deeper sometimes and depending on this other times.
> Your idea of exploring global search mechanisms on really small go board is
> interesting. I hope someone will do it, and publish results.
I am sure Go is solved on 1x1, 2x2 3x3 up to some level, mabye 4x4 or
maybe even 5x5 (which I kind of doubt, but may be possible.) I
suspect that someone either already has, or easily could write a 5x5
Go program that is virtually unbeatable by humans but I'm just
guessing. It wouldn't surprise me if very very good small board
versions are possible, such as 7x7, but most people optimize for the
big board or are not interested in these little boards. I am sure
there is someone out there who is reading this who knows the facts on
this.
I think global search is perfectly sound in principle, BUT we are sort
of at the point we were in Chess when we were figuring out how to do
quiescience with very shallow searches. There is no virtue in deep
searches when much more can be gained by concentrating on evaluation
first, so I guess I believe that we are not ready to think about doing
2 ply searches yet. We need to think in terms of doing very good 1
ply searches with quiesence. I think most people view this as looking
a few ply ahead selectively, but it's really a matter of semantics. I
see "evaluation" as everything that happens after some full width
depth, even if it's just 1 ply. By the way, some people claim they
are fully selective because they don't consider all the mvoes at even
the first ply. Again, most of the is highly semantics, because if you
even consider a move to reject it, you are "sort of" doing a 1 ply
search. You may of course have a routine that suggests moves and
doesn't visit some moves even in the most abstract sense and you could
call that selective I suppose.
It's much clearer to describe what we are really doing and the
terminology we use usually muddles up the true points. So even when
we call chess program "selective", almost none truly are, they are
full width to some depth, then they have several plys of selective
quiesence, which we call "null move selectivity" or something roughly
equivalent. Interestingly, I have watched terminolgy change over the
years. People are starting to refer to current chess programs as
BRUTE FORCE again because the man behind the curtain has been exposed.
It's kind of like what AI has gone through, new AI technology gets
relabeled once the principles are well understood and the smoked glass
and mirrors are exposed. Computer Chess was once called AI, now it's
called "engineering."
Don
From: Heikki Levanto <heikki@xxxxxxxxxxxxxxxxx>
Don Dailey <drd@xxxxxxxxxxxxxxxxx> wrote:
> I keep hearing on this group that Go programs can't search, they are
> primarily evaluation based. That means most of the strength is due to
> evaluation. Go programs don't play great, but they play like advanced
> beginners at least. Correct?
Well, yes.
The problem with evaluating a go position is that it requires a lot of
local tactical reading to determine the life status of all groups, etc.
At least in GnuGo, the evaluation of the current position is intermixed with
move generation. When it checks the status of a group, it may find that it
is unstable, and therefore recommend a move that kills or saves this group,
and gives the move a numerical value. After having collected all the data it
can from the game position, it also has a number of move proposals, from
which it choosed the one with the highest value. It could also evaluate the
whole position at the end of this sequence, for example to a probability of
winning the game, but currently it does not need to do so at all.
It would ntobe too hard to make it try all possible moves, or all reasonable
moves (by some sort of heuristics), or even just a few of the moves it has
already proposed, and evaluate the position after those. Adding recursion to
get a full ply or even teo would not be that difficult. But as it is now,
this line of programming is completely out of t he question, since the
single evaluation-cum-move-finding takes several seconds, in cases half or
whole minute, depending on the processor and settings.
When people say here that there is no easy evaluation function to go, they
seem to mean that there is no evaluation function that can be done is short
enough time to be of any use in global searching.
I do not know anything about evaluation functions in chess, but from what I
have heard, they can be reasonably fast. As you say, not just counting
pieces, but still something "trivial", like counting possible moves, threats
and defences to the various squares on the board, open lines and diagonals,
and rows of pawns, and probably weighing all these in some way...
Your idea of exploring global search mechanisms on really small go board is
interesting. I hope someone will do it, and publish results.
- Heikki
--
Heikki Levanto LSD Levanto Software Development heikki@xxxxxxxxxxxxxxxxx
"In Murphy we Turst"