Answers.Body: <p>It is actually the other way around: connection IDs is what is debated!</p>
  
  <p>Nodes always have innovation IDs (in the image, it is just their identifying number).</p>
  
  <p>Node IDs are sufficient to identify connections. If a connection links nodes 3 and 6, then it is the same as another connection linking nodes 3 and 6: no need for an extra ID. So why the extra innovation IDs then?</p>
  
  <p>On the one hand, this is an implementation choice: maybe these extra IDs would allow you to create a more complex but faster code?</p>
  
  <p>On the other hand, there is a debate around whether a connection between two nodes means the same thing at different times in evolution. If you have no innovation IDs, then you cannot tell apart an old connection from 3 and 6 and another that was independently created later in a different genome (imagine the old connection was removed first). Is this relevant? As said, it is an open debate. Surely, it is not crucial at a basic level!</p>
  
  <p>This question (and my answers) is related to <a href="https://stackoverflow.com/a/49625345/3924118">this other question</a> on Stack Overflow.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-03T14:26:06.407Z
Answers.Text: Do you have any links to arguments on either side? I'd be interested to read some opinions.
Answers.UserDisplayName: Andrew Butler
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-04-03T14:50:45.873Z
Answers.Text: I can't say much more than what I have written. In a conversation that I followed, I understood that removing IDs from connections simplifies code. The one drawback that was mentioned is what I already said here, about not being able to track connections between the same nodes at different times. Colin Green is responsible for SharpNEAT and knows A LOT about this. He is currently refactoring all the code and brought up this topic, so maybe you can reach him if you have more doubts! https://github.com/colgreen/sharpneat-refactor
Answers.UserDisplayName: Pablo
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-04-03T08:32:21.080Z
Answers.LastActivityDate: 2019-07-07T19:50:43.183Z
Answers.LastEditDate: 2019-07-07T19:50:43.183Z
Answers.UserDisplayName: Pablo
Answers.Body: <p>In the original paper the innovation ID is on the connections only.</p>
  
  <p>The connection is the object that is keeping the information; nodes can be discerned by the connections.</p>
  
  <p><a href="https://i.sstatic.net/lmBlH.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/lmBlH.png" alt="enter image description here"></a></p>
  
  <p>This image represents a possible crossover operator that makes a distinction between disjoint and excess genes and therefore creates children depending on these. It's part of my master thesis, I'd be glad to expand the topic, but for now I'll just use it as example.</p>
  
  <p>In the image we assume that the connections that are joining two nodes have the same innovation number.</p>
  
  <p>As you can see, there is no need of assigning an innovation number to the nodes: nodes are just a result of what the connection say. This also allows for a more dynamic approach that can be used to spot invalid nets even before building them (checking if there are cyclics or nodes that aren't receiving any input or giving any output) and correct them in order to obtain only valid graphs.
  Nodes are added just because there is a connection that is pointing to that specific node. This is enough to grant its presence (node number 8 in child 2).</p>
  
  <p>As last point, for the data normalization theory (<em>Normalization is a process of organizing the data in database to avoid data redundancy, insertion anomaly, update anomaly &amp; deletion anomaly</em>) we should avoid rendundancy at any cost and this is why we should try to keep track of the smallest amount of object possibles. So if we can deduct the nodes from the connections we should do it.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-22T14:33:04.770Z
Answers.Text: I believe the correct interpretation is the oposite. Note that in your diagram only nodes have identifying numbers, and that connections are defined by the nodes they connect.
Answers.UserDisplayName: Pablo
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-24T04:48:07.983Z
Answers.Text: True, nodes have IDs, connections are defined by the connected IDs. Keeping only the connections, though, allows a slimmer genome representation without loosing any information as you can store nodeFrom, nodeTo, weight and innovation number. Nodes are then discerned from the list of connections.
Answers.UserDisplayName: Alvin Sartor
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-05-23T14:44:01.213Z
Answers.LastActivityDate: 2018-05-23T14:44:01.213Z
Answers.UserDisplayName: Alvin Sartor
Body: <p>Does NEAT require only connection genes to be marked with a global innovation number? </p>
  
  <p>From the <a href="http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf" rel="nofollow noreferrer">NEAT paper</a></p>
  
  <blockquote>
    <p>Whenever a new gene appears (through structural mutation), a global innovation number is incremented and assigned to that gene.</p>
  </blockquote>
  
  <p>It seems that any gene (both node genes and connection genes) requires an innovation number. However, I was wondering what was the node gene innovation number for. Is it to provide the same node ID across all elements of the population? Isn't the connection gene innovation number sufficient?  </p>
  
  <p>Besides, the NEAT paper includes the following image which doesn't show any innovation number on node genes.</p>
  
  <p><a href="https://i.sstatic.net/0xkhX.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/0xkhX.png" alt="enter image description here"></a></p>
  
Tags: <neural-networks><genetic-algorithms><evolutionary-algorithms><neat><neuroevolution>
Title: Does NEAT require only connection genes to be marked with a global innovation number?
UserDisplayName: kuma
ThreadText: # Does NEAT require only connection genes to be marked with a global innovation number?
  
  (Asked by: username_0 on 2018-03-03)
  
  Does NEAT require only connection genes to be marked with a global innovation number?
  
  From the [NEAT paper](http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf)
  
  > Whenever a new gene appears (through structural mutation), a global innovation number is incremented and assigned to that gene.
  
  It seems that any gene (both node genes and connection genes) requires an innovation number. However, I was wondering what was the node gene innovation number for. Is it to provide the same node ID across all elements of the population? Isn't the connection gene innovation number sufficient?
  
  Besides, the NEAT paper includes the following image which doesn't show any innovation number on node genes.
  
  [![enter image description here](https://i.sstatic.net/0xkhX.png)](https://i.sstatic.net/0xkhX.png)
  
  **Tags:** neural-networks, genetic-algorithms, evolutionary-algorithms, neat, neuroevolution
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2018-04-03. Score: 4
  
  It is actually the other way around: connection IDs is what is debated!
  
  Nodes always have innovation IDs (in the image, it is just their identifying number).
  
  Node IDs are sufficient to identify connections. If a connection links nodes 3 and 6, then it is the same as another connection linking nodes 3 and 6: no need for an extra ID. So why the extra innovation IDs then?
  
  On the one hand, this is an implementation choice: maybe these extra IDs would allow you to create a more complex but faster code?
  
  On the other hand, there is a debate around whether a connection between two nodes means the same thing at different times in evolution. If you have no innovation IDs, then you cannot tell apart an old connection from 3 and 6 and another that was independently created later in a different genome (imagine the old connection was removed first). Is this relevant? As said, it is an open debate. Surely, it is not crucial at a basic level!
  
  This question (and my answers) is related to [this other question](https://stackoverflow.com/a/49625345/3924118) on Stack Overflow.
  
  > **Comments:**
  > **username_2**: Do you have any links to arguments on either side? I'd be interested to read some opinions.  
  > **username_1**: I can't say much more than what I have written. In a conversation that I followed, I understood that removing IDs from connections simplifies code. The one drawback that was mentioned is what I already said here, about not being able to track connections between the same nodes at different times. Colin Green is responsible for SharpNEAT and knows A LOT about this. He is currently refactoring all the code and brought up this topic, so maybe you can reach him if you have more doubts! https://github.com/colgreen/sharpneat-refactor  
  
  ---
  
  ### Answer by username_3 on 2018-05-23. Score: 1
  
  In the original paper the innovation ID is on the connections only.
  
  The connection is the object that is keeping the information; nodes can be discerned by the connections.
  
  [![enter image description here](https://i.sstatic.net/lmBlH.png)](https://i.sstatic.net/lmBlH.png)
  
  This image represents a possible crossover operator that makes a distinction between disjoint and excess genes and therefore creates children depending on these. It's part of my master thesis, I'd be glad to expand the topic, but for now I'll just use it as example.
  
  In the image we assume that the connections that are joining two nodes have the same innovation number.
  
  As you can see, there is no need of assigning an innovation number to the nodes: nodes are just a result of what the connection say. This also allows for a more dynamic approach that can be used to spot invalid nets even before building them (checking if there are cyclics or nodes that aren't receiving any input or giving any output) and correct them in order to obtain only valid graphs.
  Nodes are added just because there is a connection that is pointing to that specific node. This is enough to grant its presence (node number 8 in child 2).
  
  As last point, for the data normalization theory (*Normalization is a process of organizing the data in database to avoid data redundancy, insertion anomaly, update anomaly & deletion anomaly*) we should avoid rendundancy at any cost and this is why we should try to keep track of the smallest amount of object possibles. So if we can deduct the nodes from the connections we should do it.
  
  > **Comments:**
  > **username_1**: I believe the correct interpretation is the oposite. Note that in your diagram only nodes have identifying numbers, and that connections are defined by the nodes they connect.  
  > **username_3**: True, nodes have IDs, connections are defined by the connected IDs. Keeping only the connections, though, allows a slimmer genome representation without loosing any information as you can store nodeFrom, nodeTo, weight and innovation number. Nodes are then discerned from the list of connections.  
  
  ---
  
  