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

Re: computer-go: Neural Nets: suggesting and evaluating



Peter Drake wrote:
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).
(1) I did something like that which is described in my CG2002 paper. One could also do this in a Q-learning framework.
2(a) In contrast this could be used in the TD-learning framework.

Both approaches seem valid.

2(b) isn't this the same as 1, or do you predict something else?


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.
Even if the full board is available your network will most likely not succeed in learning the long distance connectivity relations, at least if you use a raw representation. (Remember that Minsky & Papert showed connectedness to be of unbound order.)

My approach would be: Take a large window and extract a reduced number of features that emphasize the local structure.


2) A lot of time is wasted recomputing the same information over and over again.
If it's really the same information why can't you just store it in a cache?

Regards,
Erik