3
$\begingroup$

I'm working on my own implementation of NEAT algorithm based on the original 2002 paper called "Efficient Reinforcement Learning through Evolving Neural Network Topologies" (by Kenneth O. Stanley and Risto Miikkulainen). The way the algorithm is designed it may generate loops in connection of hidden layer. Which obviously will cause difficulties in calculating the output.

I have searched and came across two types of approaches. One set like this example claim that the value should be calculated like a time series usually seen in RNNs and the circular nodes should use "old" values as their "current" output. But, this seems wrong since the training data is not always ordered and the previous value has nothing to do with current one.

A second group like this example claim that the structure should be pruned with some method to avoid loops and cycles. This approach apart from being really expensive to do, is also against the core idea of the algorithm. Deleting connections like this may cause later structural changes.

I my self have so far tried setting the unknown forward values as 0 and this hides the connection (as whatever weight it has will have no effect on the result) but have failed also for two reasons. One is my networks get big quickly destroying the "smallest network required" idea and also not good results.

What is the correct approach?

$\endgroup$
1
$\begingroup$

You can use a feed forward style network, so that every node outputs to a higher node except output nodes. This will eliminate connection loops.

$\endgroup$
  • $\begingroup$ "higher" in what sense? Innovation number? or something else? $\endgroup$ – Emad Aug 13 at 6:24
  • $\begingroup$ Yes, identification number or innovation number. $\endgroup$ – Terry T. Aug 13 at 13:06
  • $\begingroup$ Ok but innovation number is not actually a measure of being later in the feed network. i.e. a new connection can form before one of the existing ones yet take higher innovation number. $\endgroup$ – Emad Aug 14 at 14:17
  • $\begingroup$ Whoops it is actually this: a new connection is formed only when the first node is is closer to the input then the second node, or the fewest number of connections to get to the input is greater in the second node. Another question simailar to this can be found here ai.stackexchange.com/questions/6231/… $\endgroup$ – Terry T. Aug 14 at 20:43
  • $\begingroup$ I see. Yet in the literature it's a bit different. I appreciate your solution. $\endgroup$ – Emad Aug 15 at 19:05

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.