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

Re: computer-go: A problem with understanding lookahead



>  Forget the combinatorics.

Why?  The premise of this whole discussion is how  a deep searching Go
program would behave, not  IF we  can do one.

Your explanation  of the difficulties of   Go evaluation was excellent
and easy to understand and I agree with this part completely.

However, you are also completely unaware about how  difficult it is to
do  Chess evaluation.  Chess  evaluators are horribly incompetent, and
suffer from the  same problems  that Go  programs do.  King  safety is
notoriously  difficult, you can be  a  queen up and  have  a dead lost
position.   Trapped pieces are  just like  your  dead stones, they are
dead and  can't be evaluated with  any kind of accuracy.  Passed pawns
can't  be correctly evaluated unless  the search actually resolves the
situation.

The fact that modern  Chess programs  have  managed to  play extremely
well has come   as  a HUGE surprise  to   most of  the  computer chess
community precisely  because we all recognized  with  the same clarity
that you  do in Go, the  horrible inadequacy of  evaluation functions.

Every  time I hear   someone  enumerate why   Go  is hard, I  get this
overwhelming sense that I'm hearing the  same old broken record I have
been  hearing for decades about Chess.   For some reason a minority of
Go programmers (I think you are one of them) seem to  think it's a new
problem unique to their domain.  When I started  writing my Go program
I already knew  to expect these  problems, I  can't understand  why Go
programmers  think chess is  somehow immune  to the same difficulties.

Your last paragraph tries  to tie lack of deep  searches in Go to  the
difficulty  of  evaluating Go positions,  and   I hardly see  how this
follows, it  doesn't take great genius  to realize  it's the branching
factor  that  makes deep searches a   fantasy in Go.    

Even though  Go  evaluators are  truly difficult  (I won't deny this),
they are reasonable  in the Chess sense  of what  reasonable is, which
means they often  have a rough  idea of who has  the advantage  if the
advantage is large enough.

By the way, it's not completely clear that it is important as we might
think that  an  evaluator estimates all    positions accurately.  This
sounds like  a  strange  statement, but what   a tree  search does  is
COMPARE positions, and  most  positions it compares are  very similar.
It's easier to   compare similar positions  and tell  which is better.
It's also  a  hard problem, but  it's  much easier than  comparing two
completely different  (but equal) positions   and determining which is
better.  So a program can drift into a position  it thinks is bad, but
still be playing  excellent moves because  it compares better  than it
actually evaluates. 


Don




   From: "David Mechner" <mechner@xxxxxxxxxxxxxxxxx>
   Content-Length: 1117

   Forget the combinatorics.

   The critical difference between go and chess, as far as evaluation goes, is
   that in go dead pieces can stay on the board, even until the end of the
   game.

   Go is a game of territory. To evaluate, you have to be able to count
   territory. Dead stones are enemy territory. To be able to count territory,
   you have to know which stones are dead. Therefore to able to evaluate a
   position, you have to know which stones are dead.

   But knowing which stones are dead is HARD. Not only can't our programs
   figure it out quickly enough for practical use in a static evaluation
   function, they can't figure it out AT ALL.

   There are simple cases where a group is obviously alive or obviously dead,
   where fast heuristics might give reasonably accurate answers. But in the
   majority of (important) cases, there is no working model of how to go about
   solving the problem.

   Until serious advances are made in the state of the art of life and death
   analysis, talk of a reasonable evaluation function is fantasy, and talk
   about using big search in go is a fantasy.

   -David Mechner
   http://cns.nyu.edu/~mechner/