I've made a NN with back propagation that is supposed to play connect-4. It
has 42 inputs(for each boardposition 1), 20 neurons in the hidden layer and
7 outputs(for each column one). The idea was to train my NN with my Minimax
algorithm so that i don't have to build up all the tree but just run the
board through the network. So the input is the actual boardpositions and the
output should be the column to play.
I've tried to train this network with 1 input set. That worked fined, but as
soon as I was trying to train it with 2 sets or more it didn't worked. The
problem is that I connect all my inputneurons with all my neurons in my
hidden layer and like-wise for my output neurons so the highest value of the
output neurons is only dependant of the weights and not of the input.(rahter
stupid i guess)
Could anyone give me an idea or a clue how i could organize my network to
solve this problem?
"stef" <firstname.lastname@example.org> wrote in message news:<email@example.com>...
> I've made a NN with back propagation that is supposed to play connect-4. It
> has 42 inputs(for each boardposition 1), 20 neurons in the hidden layer and
> 7 outputs(for each column one). The idea was to train my NN with my Minimax
> algorithm so that i don't have to build up all the tree but just run the
> board through the network. So the input is the actual boardpositions and the
> output should be the column to play.
I've developed a neural network evaluator for Connect 4 successfully
using a 42-80-1 fully connected network (trained using td(lambda)).
Instead of outputing a column to play, try using it to output an
evaluation score for a board.
firstname.lastname@example.org (B) wrote in message news:<email@example.com>...
> firstname.lastname@example.org (Imran Ghory) wrote in message
> > Instead of outputing a column to play, try using it to output an
> > evaluation score for a board.
> By doing this is still would have to use some kind of a search tree.
> The point is that i already have an evaluation function that's rather
> good and I don't want to use a gametree.
Not using a game tree isn't generally a good idea unless you have a
specific reason why you can't use one.
Assuming you're using some sort of obvious representation and you're
training it to output something like [0,0,1,0,0,0,0] (i.e. play the
3rd column), it's unlikely you'll be able to produce a good evaluator.
NN are better at learning smooth functions, but the function you're
trying to teach it is anything but smooth.
Consider two sequential board positions in a game, the two board
positions will be virtually identical except for one difference (a
single piece), yet the output of the neural network may have to change
significantly say from [0,0,1,0,0,0,0] to [0,0,0,0,1,0,0] which is
one of the largest changes in output possible.