Logo

The Data Daily

Evolutionary Machine Learning: The Next Deep Learning?

Evolutionary Machine Learning: The Next Deep Learning?

So much of what Engineers design and build today takes inspiration from nature. Boeing added flaps on the wings of their planes mimicking Eagles, the shape of Whale fins helped reduce drag on wind turbines and the noses of bullet trains look suspiciously like a Kingfisher’s beak.

Nature has often already found elegant solutions to problems that our best and brightest work on every day. Nature finds these solutions through a process of natural selection where the genes of the best performing organisms are passed on to successive generations. It’s a brutal but extremely efficient method of finding incredible solutions to the problems life faces. In the words of Jeff Goldblum during his classic Jurassic Park role:

And like any self-respecting mad scientist, I found myself asking:

Evolutionary Machine Learning uses Darwinian natural selection to autonomously design, train and optimise Neural Networks. The idea is to start off with tens of thousands of randomly generated models that each have a unique digital DNA signature. The DNA is a blueprint that a building program uses to create the networks architecture, data selections, hyperparameters and just about everything else.

Another system then trains and tests the models in a simulated environment that closely mirrors how it would be used in the real world. A few of these random models, through sheer dumb luck, will have gotten something right and gained a slight edge over their peers. The DNA of these high performers are then used to produce the next generation and the whole process is repeated. Eventually, after many generations and a touch of mutation, the system will have narrowed in on an optimal solution without any human interference!

As we apply machine learning to problems of increasing complexity, we may find that it’s the all too familiar human part of their creation that struggles to keep up and we’ll need computers to help plug the gap.

Evolutionary Machine Learning might sound like a nice idea/concept but how does it perform in reality?

To test the idea, an experiment was run over the course of two weeks using the EVOLVE Prototype I built at Singularity Technologies to train ~100k machine learning models under an evolutionary paradigm.

The models were trained, loaded into various strategies and given daily opportunities to make trades in a historical six-month window. The bots were given a goal to make as much money as possible and they used the Machine Learning models to inform decisions on which currencies to buy or hold. Additionally, they competed with “PerfectBot” running in the same six-month window. PerfectBot could peer into the future to always choose the most profitable transactions. The model’s fitness score is then expressed as a fraction of how well it performed against PerfectBot.

Here are the results gathered from two sleepless weeks of non-stop training!

This GIF shows the progression of each generation compared to the first. As expected, the fitness scores of each generation hold roughly to a normal distribution. Even just eyeballing the graphs you can clearly see that successive generations perform better and trend towards higher scores. Below are tables that detail numerous statistics of each generation.

In this table, you can see how each generation managed to convert a few hundred negative scores into positive ones. Additionally, the number of high performers increases with each generation.

T tests are useful here to tell if the generations are actually deviating from each other in a statistically significant way. The scores calculated above prove with a high degree of statistical accuracy that this is, in fact, the case. Furthermore, the standard deviation is fairly consistent, showing that the population is moving fairly uniformly. The negative T score for Generation 5 coincided with an experimental concept called “Extinction” events. One of the strategies was extremely high risk, a high reward which was believed to be polluting the results and randomly giving a few otherwise poor performing models a random leg up. By removing this strategy, the inconsistent models were removed from the pool, giving the more consistent ones a better chance of passing their genes on. As expected Generation 5 took a hit but Generations 6 & 7 performed better than ever!

Although this limited experiment did not produce a model that was accurate in all situations, it did succeed in giving some weight to the underlying concepts and ideas. There is definitely something incredible going on under the hood and I strongly believe with more generations a consistently good model will emerge.

However, when running the experiment, it was clear that this technology requires much more R&D and horsepower. In particular, both the number of generations and their size probably need to be increased by a factor of 10. This will increase the diversity of each generation and give the system more time to narrow in on an optimal solution.

Further down the line, it will be fascinating to experiment with the network weights themselves being incorporated into the DNA and for the training process to be removed entirely. This could accomplish several things:

However, this will probably require the computational power of a present-day data centre as the DNA length will have to be increased dramatically.

This experiment barely scratched the surface but showed there is real merit to such an approach. With computational power still getting cheaper year on year, orchestration technologies such as Kubernetes continuously getting better and Deep Learning becoming ever more unwieldy, the scene seems to be set for something just like this to come along and change everything.

Images Powered by Shutterstock