[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
computer-go: Neural Nets: suggesting and evaluating
It appears that there are two obvious ways to use a neural network in a
very simple Go program:
1) Take the board as input and output a value for each potential move.
The move with the highest rating is the move considered best by the
network.
2) Take the board as input and output either (a) the value of the board
or (b) the value of each point on the board. To choose a move, do
global search (usually 1-ply, conceivably deeper).
We're currently doing 2(b), but it's clear that this will not scale up
to larger boards or deeper searches. I'm contemplating combining these
two approaches, so that one network suggests a move and another network
evaluates the resulting board. The suggestor could then be used to
narrow the search in a number of ways, including:
- Consider the N highest-rated moves, such as the top five.
- Consider all moves whose estimated value exceeds some threshold.
This threshold might increase with search depths, so only obviously
good moves would be considered in deep searches. Such a system might
conceivably be able to read ladders as a special case.
Our current evaluator network has one input unit and one output unit
for each point on the board, and a number of hidden units. Rather than
do deep thinking about how the hidden units should be divided into
layers, we let each hidden unit take input from all of the input units
and all previous hidden units, so that the hidden units form a sort of
column with weights coming from all previous layers.
We had been looking at small windows on the board, but this has two
problems:
1) Vital connectivity and eye information may not be available within
the window.
2) A lot of time is wasted recomputing the same information over and
over again.
In light of that second point, evaluator and suggestor networks should
probably share the same hidden units...
One of the oft-mentioned advantages of neural nets is the speedup due
to massive parallelism. We never actually get this, because we
simulate the networks on serial machines. Has anyone taken advantage
of massively parallel hardware for speedup? I believe there are
generic neural net machines available.
Thoughts?
Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/