[computer-go] What is All-as-first-heuristic?
Chrilly
c.donninger at wavenet.at
Tue Sep 12 11:23:06 PDT 2006
Thanks for the very clear explanation (and also to Don Dailey).
> My guess is that you as a chess programmer might find this to be a crazy
> idea
> because movegeneration changes a lot for every ply played
Not at all. In chess something similar is done. Its called there History
Heuristic. One counts the number of cutoffs a move has generated (or how
many times the move was the best). Usually this is a counted weight. If the
remaining search depth is d, possible weights are d*d, or 8*d or 2**d.
The count is traditionally used for move-ordering. But the latest
development is history pruning. In History pruning one calculates the
success-statistics of a move. The Ratio of Move-Played/Move was a Cutoff. If
this ration is below a given thresold, the depth is decremented by 1 Ply.
This statistic is usually only used for non-capturing moves. Also if the
best move was a capture the non-capturing moves are not punished for being
worse.
Chess is somewhat different, because e.g. before moving Nc3d5 the move Nb1c3
must be made. A good history-value for Nc3d5 has no effect for move-ordering
or pruning at the top of the search tree.
In Suzie I have first implemented a knowledge based selective search. But I
have gone back to a simple History-Heuristic based selective search. I do
some aggressive History-Pruning. And I had exactly the same question.
Currently I do it in the chess way (only captures are not threated special),
which is very similar to a weighted All-as-First-heuristic. I am not really
happy with it. One should restrict it to levels. But one can not do it only
for the same level/distance from the root. If the previous iteration was to
depth 4, then in the next iteration the moves being 5 plies away from the
root would have no ordering information. One way is to move up/down 2 plies.
But this comes close to the All-as-First-heuristic, because Suzie searches
in the moment only 5 Plies (plus Quiescence).
I think that the details of search are in Go not so important (no big news
for Go-, but a shocking insight for a chess programmer). If the evaluation
does something wrong, it goes wrong, no matter of the search details. The
selective and the History-based version play rather similar and especially
make practically the same bad mistakes. The computer chess law of Jan
Louwman is fully valid: Faster search means only that the bad moves are
found faster. Jan formulated this law when the search depths of the chess
programms were rather low (5-7 plies). In the meantime there is Heli Weigels
law: The evaluation determines the playing style, the search the playing
strength. Maybe the computers are just by a factor 10000 too slow for Go.
Chrilly
More information about the computer-go
mailing list