I’ve been working on a new technology over the last few months that really excites me.
It’s a completely autonomous approach to Machine Learning where the neural network architecture, data selections, hyper parameters and more are all determined through an evolutionary approach. All prospective customers need to do is upload a data set and the system will autonomously produce a very accurate algorithm within a few weeks.
What is EVOLVE?
EVOLVE stands for Evolution Oriented Learning and Validation Engine, not only is it a classic example of coming up with a cool sounding acronym first but it’s also the implementation of what I believe to be the next generation of Machine Learning technology.
The idea is to only use Darwinian natural selection and evolutionary pressure to build Machine Learning algorithms over a series of generations. Each algorithm has a unique Digital DNA signature that describes everything from the data it uses to its architectural design. I’ve built a decoding system that translates this Digital DNA into an actual Machine Learning model and deploys it to a simulated environment. The simulated environment puts the model through its paces in a series of user defined real world scenarios and generates a “fitness score”, which is just a measurement of how well its performed. By utilising the capabilities of our unique software system (a.k.a Atlas our General Compute Engine) to its full extent we can perform hundreds of these simulations in parallel, yielding thousands of results in just a few hours.
The first generation is created completely randomly and as you would expect the majority of these perform pretty poorly. However, a handful will have certain traits that gives them a slight edge over their competition. Perhaps they had an efficient architecture, selected better data or used good hyper parameters.
The top few hundred models are taken and “bred” together to create the next generation. This generation should contain another handful of models that successfully combine a few of the traits that made their parents successful and with a touch of random mutation, maybe even something new. As a result, this generation should have improved fitness scores.
This process is repeated again and again and again, with each generation getting better and narrowing in on an optimal solution. Tens of thousands of algorithms are created, trained and tested. In the space of just a few weeks, an optimal Machine Learning Algorithm is produced from data alone and without any human input.
Evolution worked well for us, so why not machines too?
An approach like this comes with numerous advantages.
Human beings tend to come with lots of bias, some of it so ingrained that we’re not even aware of it! In machine learning this can often lead to difficulties that slow down or even derail projects. This approach only focuses on results and will try things humans probably won’t even seriously consider. Resulting in both efficient and novel solutions.
Over Fitting is Punished
Determining algorithm fitness from accuracy scores on test data often leads to the dreaded over fit and doesn’t give engineers a great representation as to what’s really going on. It’s a common problem that has plagued the industry from the beginning. By generating fitness scores from a simulated environment where each algorithm is given a unique test, only algorithms that have found genuinely good solutions survive for very long.
Natural Data Filters
Lets face it, data cleaning is the very definition of a Sisyphean task. Data corruptions and just plane bad features can sneak in even under the most thorough of eyes!
Algorithms created with this technology get to choose the data they use, right down to the features, so those unlucky enough to select bad data tend to perform worse compared to their peers and are thus prevented from passing this on. This system naturally filters bad and corrupted data out over multiple generations due to the very nature of survival of the fittest.
You can add in additional filtering criteria / evolutionary pressures for later generations allowing you to optimise and tune your algorithms to your exact specifications. Whether you want to cut down on model training time or speed up the prediction process, it’s all possible in a simple and intuitive way.
Today’s training is often bottle necked by GPU shortages or difficulties in orchestrating large scale parallel training. Our underlying technology has been architected and built from the ground up to do this extremely well. So if you need to train a million algorithms quickly, rest assured we can do it!
We’re currently testing our prototype out and hope to publish some surprising and incredible results over the coming weeks.
Update 1: Here's a really good video by CGP Grey explaining the concept far better than I can!