<aside> 💡 Check out the Google Colab implementation and play around with your own evolutions!

</aside>

I implemented CPPN-NEAT using python-neat. This was based on Compositional Pattern Producing Networks (CPPN) and NeuroEvolution of Augmenting Topologies (NEAT).

Ok - so this makes cool patterns. So what?

I find this incredibly interesting because of the implications it has for explaining the power of evolution. CPPN-NEAT works as follows:

  1. You have a neural network with 2 inputs and one output.
  2. You (the user) choose which pattern is the most interesting. This determines the ‘fitness function’ that is used for NEAT to evolve the next generation of neural networks (that define the patterns).
  3. Using NEAT, interesting patterns reproduce and generate more interesting patterns.
  4. This process continues until you decide to stop going.

What is fascinating is that through a fairly simple evolutionary process, you are able to generate remarkably interesting patterns within very few (order of 10s) of generations.

Evolutionary algorithms were one of the earliest rabbit-holes I went down in my artificial intelligence journey because they show the power of evolution — often proving to be much more effective than initially thought.

Some Funky Evolutions

Grid of possible genomes at an interesting time-step. Choosing Genome #5 led to the next generation to be more similar to Genome #5 (but with variation). Multiple ‘species’ exist so not every genome will immediately emulate the fittest.

Grid of possible genomes at an interesting time-step. Choosing Genome #5 led to the next generation to be more similar to Genome #5 (but with variation). Multiple ‘species’ exist so not every genome will immediately emulate the fittest.

I selected some of my favorites that I evolved below.

Quite interesting symmetry.

Quite interesting symmetry.

                                                  . .
~

                                              . . 
                                              ~

This is just funky.

This is just funky.

Pseudo-symmetry mixed with an almost QR-code feature.

Pseudo-symmetry mixed with an almost QR-code feature.