Evolution Icon Evolution
Intelligent Design Icon Intelligent Design

Why We Don’t Evolve Software: A Computer Scientist Considers Darwinian Theory


The basic idea of Darwinian evolution makes a lot of sense on first hearing it: common descent with endless modification shaped by natural selection. However, if you dig deeper there are reasons to doubt. 

Biologists are trained to use common descent as an organizing principle for all their data, and for most biologists the Darwinian mechanism comes in the same package. Evidently they don’t see much reason to doubt this mechanism. There are exceptions to the rule, of course, among biologists who have read Mike Behe or Stephen Meyer carefully. Some proponents of intelligent design believe in common descent, but not in natural selection. 

On the other hand, computer scientists and software engineers are trained in design principles, and also have real experience of how complex functional systems appear and change constructively. In particular, software engineers know how complex it can be to implement a “simple” change. From this perspective, the Darwinian story is a lot less plausible. Natural selection seems just a little bit too easy.

A Different Perspective

Thus computer scientists have a different perspective on biology which could prove fruitful. While all the biological data is still created and curated by biologists, computer scientists have begun to encourage and provoke biologists to properly test the ideas of Darwinian evolution. For example, Winston Ewert has proposed the dependency graph hypothesis as a superior explanation that explains the organization of high level biological data in terms of design. 

Even more recently, another paper has appeared that approaches biology from a computer science perspective, this time asking if evolutionary algorithms and in particular genetic programming show what a Darwinian should expect.

Roman Yampolskiy begins by stating some principles: 

First, a serious scientific theory should be precise enough to simulate. This is controversial, but I think it is a good instinct: To turn any idea into a computer program forces you to think about it and define it very precisely. In science, precision brings clarity, and helps avoid wishful thinking and plausible-but-wrong conclusions. 

Second, if you simulate something that is supposed to be real, the results of the simulation should match reality. Therefore, if Darwinian evolution is a correct scientific theory, we should be able to simulate it, and get results that look like what we see in biology today. 

Darwinian Predictions

He then argues that if Darwin had known about modern biology and our ability to simulate, he could have made some strong predictions:

His predictions may have included the following: (1) simulations of evolution will produce statistically similar results at least with respect to complexity of artifacts produced and (2) if running EAs for as long as possible continued to produce nontrivial outputs, scientists would run them forever. Likewise, he would be able to make some predictions, which would be able to falsify his theory, such as (1) representative simulations of evolution will not produce similar results to those observed in nature, (2) researchers will not be able to evolve software or other complex or novel artifacts, and (3) there will not be any projects running EAs long term because their outputs would quickly stop improving and stabilize. With respect to the public and general cultural knowledge, it would be reasonable to predict that educated people would know the longest-running EA and the most complex evolved algorithm. Similarly, even school children would know the most complex digital organism ever evolved.

After surveying the state of the field, Yampolskiy finds that both Darwinian predictions stand unfulfilled, and all three falsifications stand confirmed. He then discusses several possible reasons why this might be:

Did we fail to implement Darwinian evolution correctly? Unlikely. 

Perhaps the problem is that software is not like biology? It is true that human-made software is often more “brittle” than biological systems. But software doesn’t have to be “brittle”; there is no law that prevents genetic algorithms from making software that is robust like biology. 

Could it be that Darwin is wrong? (Shudder, move on.)

Are there insufficient computational resources to simulate evolution? Maybe. Yampolskiy calculates that the computational power of all organisms vastly outweighs our computational resources.

Deeper Problems

But there are deeper problems too. Quoting Mewada et al. (emphasis added):

Genetic algorithms do not scale well with complexity. That is, where the number of elements which are exposed to mutation is large there is often an exponential increase in search space size. This makes it extremely difficult to use the technique on problems such as designing an engine, a house or plane. In order to make such problems tractable to evolutionary search, they must be broken down into the simplest representation possible. Hence we typically see evolutionary algorithms encoding designs for fan blades instead of engines, building shapes instead of detailed construction plans, and airfoils instead of whole aircraft designs. The second problem of complexity is the issue of how to protect parts that have evolved to represent good solutions from further destructive mutation, particularly when their fitness assessment requires them to combine well with other parts.

Yampolskiy concludes that Darwin’s mechanism doesn’t do what Darwin would have expected. He lays down a challenge to the evolutionary algorithms community to address this. 

Furthermore, if evolutionary algorithms were capable of cracking the nut of general programming, then this would amount to artificial general intelligence (AGI). That has not happened: the Singularity (where artificial intelligent agents appear capable of creating even more intelligent agents, rendering humans useless) won’t happen soon. Instead AGI would have to appear some other way:

[If] GP can solve programming that would imply that GP = AGI (artificial general intelligence), but we see no experimental evidence for such claim. In fact, it is more likely that once we have AGI, it could be used to create an intelligent fitness function for GP and so evolve software. Genetic programming will not be the cause of AI, but a product of it. However, neuroevolution methods for optimizing deep learning architectures and parameters remain a strong possibility for creation of AGI.

In a nutshell, Yampolskiy believes that AGI might be possible in the future, but that it would be based on neural nets and “deep learning”: much more like a brain than like Darwinian evolution. 

An Implicit Suggestion

If you think about it, that makes a lot of sense. Whenever we are able to rigorously track down the cause of creativity in the universe, there does seem to be a brain in there somewhere, rather than, for example, a bunch of animals trying to kill each other. 

The provocative suggestion implicit in Yampolskiy’s paper is that, even though simulated evolution is not creative (with a strong implication that evolution is not creative), we might one day be able to simulate an intelligence that is creative. 

And that has me asking another question: What if human intelligence was itself designed? What if human intelligence is artificial intelligence? Either way, it seems most reasonable to conclude that evolution didn’t do it.

Photo credit: Gustas Brazaitis via Unsplash.