This was a quick project inspired by Picbreeder — a project to crowd-source the exploration of an evolutionary algorithm powered picture evolver. What’s the gist?

*People are presented a set of pictures that are programmatically generated. They choose which one they like (this preference is the ‘fitness function’) and this image evolves to generate new images that are similar to the last one but slightly different.

Over time, the underlying program that generates images evolves (driven by human choice) to become increasingly complex.*

Examples from their published paper on this project [linked via image].

Examples from their published paper on this project [linked via image].

Ok - so we can generate neat (pun intended) images — so what?

There are many fascinating intuitions you can develop from this experiment. Two worth noting:

  1. The power of evolution / EAs: Many of these interesting images were developed after a surprisingly small number of evolutionary steps. This is a testament to the power of evolution:

    If you have a proper fitness function and method of evolving, interesting results can and will happen — and they do so with remarkable ease.

  2. Why Greatness Cannot be Planned: Ken Stanley — the professor who worked on this project — wrote a book that heavily leans into a takeaway from this study. Notably, many of these interesting images were not discovered by specifically seeking an image of a ‘polar bear’ — rather, they were discovered by chance which was unveiled through adequate exploration.

    1. His argument in this is that often having an explicit objective limits the creativity necessary to discover genuinely interesting findings.

<aside> 💡

So I went ahead and built a quick personal Picbreeder in Google Colab.

</aside>

Implementation

Some Funky Evolutions