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

Re: [computer-go] taking advantage of board symmetries in neuralnetworks



--- Frank Steinmann <frank-steinmann@xxxxxxxxxxxxxxxxx>
wrote:
> So my question is how to take advantage of the board
> symmetries here?
> Apparently my approach didn't lead to the desired
> success. Does anyone have
> any experience with that? I'm sure you have... ;)

Hello, everyone.  I'm new to the list, but I'm also
interested in applying neural networks to Go play.

More specifically, we're intent on using the
neuroevolutionary approach of NEAT,

http://nn.cs.utexas.edu/pub-view.php?RECORD_KEY(Pubs)=PubID&PubID(Pubs)=116

which begins with a run with a population of networks
with minimal topology and random weights, and employs
both mutation and an efficient crossover scheme to
produce new offspring after selection.

So far we're in the process of completing our own
implemention of NEAT, and we've tested the algorithm
provisionally with XOR and Tic-Tac-Toe, with good
results.  Our path is to scale up to 15x15 Gomoku,
learn how to deal with high-input/output domains
(exploiting symmetry being one important aspect of
doing so), and then perhaps to first-capture Go on
smaller boards, and eventually Go.

We've discussed a couple of possible approaches to
dealing with symmetry, including:

1) Constraining the evolution of the network to a
symmetrical topology (which it sounds like, from some
discussion here, may be a bad idea)

2) Employing an indirect encoding scheme, in which
genes can encode for smaller modules, or sub-networks.
 Right now, NEAT uses direct encoding (one gene maps
to one topological feature, such as a node or
connection).

We run into the problem of constraining the ability of
the algorithm to find a solution with #1, and with #2
we've increased the complexity of the search, and
might also experience increased bloat.

Right now we're conceptually leaning toward:

3) A mobile agent, capable of "looking" at only a
portion of the board (e.g. a 5x5 section), and whose
outputs are movement to another part of the board or
an indication of where to finally place a stone. 
There seem to have been some successful applications
of this use of an input window for things like shape
recognition.  It would seem to somewhat efficiently
deal with issues of symmetry.

Admittedly, though, my friend and I are neophytes in
the world of Go programming and the application of GAs
and neural networks.  But I hope to listen and learn a
lot more here.

Derek James

__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://computer-go.org/mailman/listinfo/computer-go