I have an Artificial Networks which needs to recognize 130 different types of moves encoded in terms of 1s and 0s. Therefore the number of outputs I used is 8 so that all my patterns could be distinguished. However, by using 8 outputs, the different types of patterns possible is 256, leaving me with 126 different types of patterns useless.

Do these extra 126 different patterns ruin my ANN's ability? Is there a better way not to have these unused holes?

  • \$\begingroup\$ You might find better answers at the main stack overflow site. Since this question is not directly related to game development, it would probably be better to ask it there. \$\endgroup\$ – MichaelHouse Nov 26 '12 at 2:56
  • \$\begingroup\$ Thanks but @kylotan gave me enough knowledge so that I can continue researching on my own. :) \$\endgroup\$ – user1724140 Nov 27 '12 at 14:34

Irrelevant output values will make it harder to train, yes.

The output does not necessarily have to be 1s and 0s. In fact, if you're just treating each output as a binary bit then it's probably a bad idea because each bit of the output is a fairly arbitrary value compared to the semantics you're trying to train. For example, the difference between move 127 and 128 may be minor but the output is almost entirely different. You'll be asking a lot of your hidden layers to make sense of these arbitrary divisions. (Gray code may be a better answer in such cases, but don't quote me on that.)

To adequately address this - or in fact, most AI questions - it is important to know more about the representation of the data. Of the 130 outputs, is there any correlation between them? If so, is there a way to represent them that makes more sense and which makes similar numbers have similar semantics? (eg. You wouldn't represent a position on a chessboard as a number from 1-64, you'd use 2 numbers from 1-8.) If you can find an output method that more closely relates to your data's semantics and has less in the way of possibly redundant outputs, then training will be more successful.

  • \$\begingroup\$ Thanks for your reply.. Im gonna do a bit more research based on what you said and ill get back to you :) Thanks again \$\endgroup\$ – user1724140 Nov 24 '12 at 15:34
  • \$\begingroup\$ "is there any correlation between them?" - I kinda get what you mean here but I don't totally understand what I should look for? For example if output 1 is 1 therefore move left, output 2 is 1 move right.. How can I correlate between these two? \$\endgroup\$ – user1724140 Nov 24 '12 at 15:57
  • \$\begingroup\$ Those wouldn't be easy to correlate. But you have 130 separate outputs, and it's rare for that many items in any set to be totally independent. \$\endgroup\$ – Kylotan Nov 24 '12 at 17:16
  • \$\begingroup\$ I have read sources that you should do 130 outputs, one for each move if they are too distinct... What can you tell me about that please? \$\endgroup\$ – user1724140 Nov 24 '12 at 20:16
  • \$\begingroup\$ Only what is already said above. It's hard to imagine 130 separate things that have no correlation or pattern. If that is indeed what you have, then a neural network is not likely to be a particularly easy system to get working. But it all depends on your representation and your data. \$\endgroup\$ – Kylotan Nov 24 '12 at 20:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.