A talk at the Dyalog ’17 User Meeting that I must admit wasn’t on my radar, took me by surprise and really caught my attention. The talk was from Gilgamesh Athoraya of Data Analytics AB, and it was about Evolutionary Programming.
The talk was a detailed take on using artificial neural networks to enable your programs to evolve. This is all about trying to find the best code to execute intelligently, by finding the best or the best hybrid of artificial neural network scenarios.
What are the uses of Evolutionary Programming?
Evolutionary Algorithms are used to solve optimisation problems and generate artificial intelligence. The inspiration behind this type of neural network is in fact, biological evolution. The algorithm over time will attempt to learn where the ‘weak’ areas of itself are and evolve itself in an attempt to improve performance, hence the name Evolutionary.
How does it work?
When it comes to determining the best algorithm or best parts of different algorithms, we need a selection process. Like in biological evolution, it is survival of the fittest, this can be measured by using different types of selection function, some of the ones that Gilgamesh covered were: Fitness Proportionate Selection, Tournament Selection and Elitist Selection. Each has their pros and cons; ultimately the choice of selection process will probably be guided by what your end goal is.
After going through the Selection process, there is a possibility that more than one algorithm has something you like in it, this is where recombination is considered. This is the process of splicing different genetic algorithms together to create a child algorithm from 2 (or more) parent algorithms.
The process of building, selecting and recombining can continue from this until an endpoint/goal is reached.
A simplified overview of the cycle is:
- New generation
- Fitness Selection
- Terminate ‘unfit’ algorithms
- Recombine to make the next generation
After Gilgamesh’s talk I feel like I learnt a lot about the fundamental process of Evolutionary Programming. Gilgamesh used a lot of biological terminology which I felt made it easier to follow and understand. It was detailed but easy to follow and I would thoroughly recommend watching this if you didn’t have a chance to catch it at the Dyalog ’17 User Meeting. Unfortunately, the video is currently not up on Dyalog’s YouTube channel, but will be up in due course.