Since the time neural networks have begun to outperform humans in tasks such as object and face recognition and in games such as chess and Go, they have garnered all the headlines. With all the excitement over neural networks and deep-learning techniques that are based on the way human brain works, it’s easy to imagine that the world of computer science consists of little else.
But, an entirely different type of computing has the potential to be significantly more powerful than neural networks and deep learning.
What is Evolutionary Computing?
Evolutionary computing is based on the process that created the human brain—evolution. In other words, a sequence of iterative change and selection that produced the most complex and capable machines known to humankind—the eye, the wing, the brain, and so on. It’s called evolutionary computing.
How it works?
Evolutionary computing works in an entirely different way than neural networks. The goal is to create computer code that solves a specific problem using an approach that is somewhat unconventional and counter-intuitive. The conventional way to create code is to write it from first principles with a specific goal in mind. Evolutionary computing uses a different approach. It starts with code generated entirely at random. And not just one version of it, but lots of versions, sometimes hundreds of thousands of randomly assembled pieces of code. Each of these codes is tested to see whether it achieves the required goal. And of course, all the code is awful because it is randomly generated.
But just by chance, some pieces of code are a little better than others. These pieces are then reproduced in a new generation of code, which includes more copies of the better codes. However, the next generation cannot be an identical copy of the first. Instead, it must change in some way. These changes can involve switching two terms in the code—a kind of point mutation. Or they can involve two codes that are cut in half and the halves exchanged—like sexual recombination. Each of the new generation is then tested to see how well it works. The best pieces of code are preferentially reproduced in another generation, and so on.
In this way, the code evolves. Over time, it becomes better, and after many generations, if conditions are right, it can become better than any human coder can design.
Neural Networks or Evolutionary Computing?
Computer scientists have successfully applied evolutionary approaches to problems ranging from designing robots to building aircraft parts. But it has fallen out of favor because of the huge interest in deep learning. So an important question is whether it can match the performance of deep-learning machines.
To find out the same, recently a team of data scientists at the University of Toulouse in France have shown how evolutionary computing can match the performance of deep-learning machines by developing code that could control and outperform humans at arcade computer games such as such as Pong, Breakout, and Space Invaders.
What is significant to notice here is that the evolved code is just as good as many deep-learning approaches and outperforms them in games like Asteroids, Defender, and Kung Fu Master. Not only it produces a result more quickly but also helps to analyse how it works since it’s small. By contrast, a well-known problem with deep-learning techniques is that it is sometimes impossible to know why they have made particular decisions, and this can have practical and legal ramifications.
Overall, this is interesting work that should suggest to computer scientists who are focusing exclusively on deep learning that they may be missing a trick. The evolutionary approach is a powerful alternative that can be applied in a wide set of situations.