# Is the NEAT algorithm unbalanced?

So I'm developing an implementation of the NEAT algorithm. I understand how it works. But during my testing phase I saw something interesting, related to this quote:

In the add node mutation an existing connection is split and the new node placed where the old connection used to be.

Clear. Let's assume we have a network without any hidden nodes. So two inputs, two outputs. This means a total amount of 4 connections.

Let's add a node. It splits a connection into two connections. This has an effect on only one of the outputs. So there are now a total of 3 connections linked with one output, while only 2 linked to the other.

Let's add a node again. It has a 3/5 chance of changing a link to one output, while only a 2/5 chance of changing a link to one output.

If you would only add nodes until eternity, you would find that only a small amount of nodes have effect on one of the outputs, while a large amount has effect on the other.

Question: It is obvious that only the add node mutation is unbalanced. But does the add connection mutation neutralise this unbalance?

In the practice what have worked me the best is having your add connection rate higher node mutation rate.

As you said, you don't want your networks to explode with new nodes with non-optimized yet parameters, so with the add connection you add chances for them to be properly used.

As the nodes are already connected to the origin, it also could happen that some will continue growing on that three, but others will not and this is why is important to separate between species. At the end, the ones which seize the structure better are the ones which will survive.

Also, don't forget that the add connection in the pure NEAT implementation also can lead to a node to add a connection to itself, which could also lead to very interesting results.

Yes that's correct. As what Rulo said, usually I have increasing probability from node mutation -> connection mutation -> weight mutation respectively.

The NEAT algorithm introduces complexification so you have to think in terms of optimizing a topology for a certain amount of time (connections and weight) before more complexity is augmented (nodes). If you don't you'll end up with unbalanced networks as you call it, you'll wander into higher order complexities quicker than you can find a basis of fitness to complexify from.

Its not that simple though, sometimes only deeper networks have any type of reasonable solution to the problem. I've read papers where people start from a deep topology due to this; in fact neuroevolution algorithms traditionally would add connections and mutate weights but not nodes, which is part of what makes NEAT novel. You may see some interesting results by having relatively high node mutation rates in certain domains but I think its safe to say its not to be expected.