[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/