Antievolution Objections to Evolutionary Computation
Back in 1999, I started a draft of an article about objections to evolutionary computation. It looks like now would be a good time to remind people that these arguments against evolutionary computation have long been addressed.
Creationist Objections
1. Natural selection is an inadequate theory of adaptation because it does not provide the basic rules for successful computer simulation.[1]
Natural selection turned out to be perfectly adequate as a source of basic rules for simulation. The field of evolutionary computation dates back to the late 1950's or early 1960's. Even when Marcel-Paul Schutzenberger assured the attendees of the mid-1960's Wistar conference on mathematical challenges to the Neo-Darwinian synthesis that all efforts to model natural selection on computers just "jam" the machines, another attendee spoke out saying that he had successfully run such simulations, and was, in fact, impressed with how quickly they worked.
2. Natural selection is disproved because attempted computer simulation has always failed.[2]
Certain early attempts at EC did fail, but in the particular case cited above, the person was attempting a variant of genetic programming, which is still a very difficult field. Since then, successful simulations have been accomplished in GAs, AL, and even genetic programming. It is doubtful that Marcel-Paul Schutzenberger, the originator of this criticism, would have been willing to go so far as to say that natural selection is supported because simulation is successful.
3. Simulation of natural selection on computers will be found to be no different than random search in efficiency.
This one is commonly encountered in online discussions as a variant of the popular "natural selection is just the same thing as blind chance". We can show that various problems solved by GAs are solved much more efficiently than by random search. [Note that humans deploying evolutionary computation are not doing so to explore all cost functions of a problem; most applications have a specific cost function of interest.]
4. Natural selection might be capable of being simulated on computers, and the simulations may demonstrate good capacity for solving some problems in optimization, but the optimization problems are not as complex as those in actual biology.
This objection typically appears once the first three above have been disposed of. Computer simulation, once held to be either a potential indicator of merit or an actual falsifier of natural selection, is then treated as essentially irrelevant to natural selection. It is certainly true that computer simulations are less complex than biological problems, but the claim at issue is not that EC captures all the nuances of biology, but rather that EC gives a demonstration of the adaptive capabilities of natural selection as an algorithm.
5. Natural selection simulated on computer produces solutions which are informed by the intelligence that went into the operating system, system software, and evolutionary computation software.
If we take a limited form of evolutionary computation for simplicity's sake and analyze it, I think that we will come out ahead. Genetic algorithms, as presented by John Holland in 1975, work on a population of fixed-length bit strings. The bit-string representation is generic. The operations which the genetic algorithm performs involves the manipulation of these bit strings, with feedback from an evaluation function.
What are the manipulations on the bit-strings? The GA can copy bit-strings with mutation (change in state of a bit), crossover (production of a new bit-string using parts of two existing bit strings in the population), and a variety of other "genetic" operators. The GA selects bit-strings for reproduction based upon results returned from an evaluation function which is applied against each bit string in the population.
The purpose of the evaluation function is to provide a metric by which the bit-strings can be ranked. The critical point to be grasped is that neither the operations of the GA nor those of the evaluation function need information about the pattern of the end solution. The GA's operations are completely generic; there are a variety of GA shell tools available for use, including plug-ins for MS Excel spreadsheets. Since the same GA tool may be used for job-shop scheduling in one instance, and oilfield pipeline layout in another, the objection that the intelligence of the GA programmer informed the specific designs that result from its application quite soon appear ludicrous. That a programmer might code a generic GA shell and also happen to somehow infuse it with just the right information to optimize PCB drilling movements might be possible, but to insist that the same programmer managed to infuse specific domain knowledge for each and every application to which his tool is put stretches credulity.
Now, let's eliminate the evaluation function as a source of domain-specific information. Obviously the evaluation function does give information to the GA, but that information does not give a direction for adaptive change for each bit-string evaluated, but rather just how well each bit-string performed when evaluated. The result passed back to the GA does not give the GA insights like "Toggle bit 9 and swap 20-23 with 49-52". It merely passes back a scalar number, which when compared to other scalar numbers, forms a ranking of the bit strings. The evaluation function can require very little in the way of domain-specific knowledge. For the PCB drilling application mentioned above, the evaluation function can very simply be instantiated as "return closed path length of the route represented by the input bit-string", which says nothing at all about what the path looks like, and works for any set of hole coordinates. Because the evaluation function can be generic over cases, again we have the argument that domain-specific information is unavailable here on the same grounds as for the GA operations. While we might be able to conceive of an evaluation function that somehow encapsulated information about a particular solution, for problems like the PCB routing one mentioned it is highly unreasonable to credit that information about all possible PCB route configurations has somehow been instilled into the code.
What's left? Merely the information content of the initial bit strings in the GA population. Since this is often, if not always, done by filling the bit-strings based upon random numbers, any non-trivial bit representation is highly unlikely to correspond to a final solution state.
The information or designs said to be produced by GA are the contents of the bit-strings at the end of the GA run. It can be confirmed that the end bit-string content differs from the initial bit-string content. It can be demonstrated that the evaluation of the initial bit-string indicates poorer function than the final bit-string. The question which those who object to evolutionary computation via the assertion that intelligence has somehow been infused into the result must answer is that if intelligence intervenes to shape or produce the final bit-string, *how* does it accomplish that, and *where* did the domain-specific knowledge come from? I've already sealed off infusion via the GA, the evaluation function, and the initial bit-strings for "how". The "where" question poses an extremely serious difficulty for proponents of this assertion, since if the information needed to solve all the problems which a GA can solve is present on every machine which a GA can be run upon, the information capacity of each machine is demonstrably smaller than the information content of all those possible solutions. It is problematic where the information is stored, and even if that information were capable of being stored somehow, the problem of *why* computer designers and programmers, who would be shown by this to be very nearly omniscient, would chose to put all that information into their systems when the vast majority of it is very likely never to be used.
I'll note that it is entirely possible to point to or construct evolutionary computation examples whose evaluation functions incorporate a known final solution state. I only know of such simulations done for pedagogy. Dawkins' "weasel" program from "The Blind Watchmaker" is a fine example of this. However, the mere existence of that simulation is not sufficient to show that all evolutionary computation does so. Any example without a "distant ideal target" demonstrates that GA operation is not dependent on having such a property.
6. The generation of a natural language sentence via means of evolutionary computation is either difficult or impossible.
I think that instead of either being difficult or impossible, the correct classification is that it would be time-consuming to generate such an application. I'll lay out the approach I would take if I had the time and inclination to do such. First, I would not use fixed-length bit strings, so the underlying computational approach would not quite match the definition of a GA, although most of the same code would likely be useful. Second, the initialization of the evaluation function would involve scanning a large source of text in the language of choice, building a symbol sequence frequency table. (A possible or likely objection here is that this gives information about the language to be generated. However, this procedure gives far less information than is provided to developing humans, who in the absence of examples of language use do not generate grammatically correct sentences, either.) Third, the evaluation function would return a probability value for a bit-string based on the likelihood that the bit-string could be drawn from the distribution represented by the symbol sequence frequency table, with extra points for the final symbol being a period, and the initial symbol being a capital letter. The GA would finish when a bit-string achieved a threshold evaluation value. The likely results will be the production of nonsensical, but often grammatically correct or near-correct sentences. I say this on the basis of experience in coding 'travesty' generators and information entropy analysis applications. The use of evolutionary computation in this regard would be no huge stretch.
7. There is an internal contradiction between natural selection and a genetic algorithm, whereby the first step in a GA is to "create" a population of candidate solutions, but no such step exists in natural selection.
In the case of natural selection operating or the case of a GA being run, there has to be some initial state. We aren't concerned with *how* that initial state came to be; our analysis concerns what happens when natural selection operates, or the GA operates. Let's look at another simulation, one in which the rise and fall of barometric pressure is simulated according to provided atmospheric conditions. In this unexceptionable case of a simulation of barometric pressure, we don't claim that there is an internal contradiction because the simulation does not include the creation of an atmosphere from a vacuum.
36 Comments
Mike Elzinga · 18 August 2006
And don't forget all the variations of the Monte Carlo techniques, which go back to at least John von Neumann and perhaps earlier if I am remembering my history correctly.
I have used these techniques in my research and have often had the eerie feeling that the methods come up with more clever solutions than we can imagine. This is especially true when exploring a very complicated potential function that forms the landscape over which the solutions are developed. Not unlike evolution occurring on a landscape that includes natural selection and a "potential function" made up of all the composite characteristics of molecules clustered together in an environment that varies with time.
GuyeFaux · 18 August 2006
I know very little about information theory, but it seems pretty easy to verify if the evaluation function sneaked in information.
Just check the inormation content of the solution v. the information content of the code of the evaluation function.
Someone correct me if I'm wrong.
Mike · 18 August 2006
Interested parties might look at "Genetic Algorithms in Search, Optimization & Machine Learning" by David E. Goldberg, Addison-Wesley, 1989. This is a pretty accessible introduction to GA's. Chapter 2 discusses the effectiveness of GA's over a wide range of problem types as a search through "schema space".
I'm not competent to speculate on the question of whether or not GA's truly tell us something about biological evolution. However, in response to point 5 in your post, my understanding of GA's is that the programmer decides which attribute(s) of the solutions generated are of interest and how to rank them via a fitness function. Using only that fitness function to discriminate "good" from "bad" solutions (or "better" from "worse"), the GA is then able to execute an efficient search through the schema space - a space much larger than the space of putative solutions that can be encoded as fixed length strings - for optimal or near optimal solutions as measured by the fitness function.
For example, all the programmer has to bring to the algorithm is the idea that transportation costs in a large network should be minimized even though he has no idea what a minimum cost solution would look like.
Wesley R. Elsberry · 18 August 2006
GuyeFaux, the essential point is about the content of the solution, not the quantity of information. Unless the evaluation function is very short indeed (as is the case for the Travelling Salesman Problem and similar problems), the quantity of information in a "winning" solution is likely to be smaller than that in the evaluation function. But the two are information about different things. The evaluation function can be thought of as the description of constraints relevant to the problem such that any proposed solution can be ranked against another. The solution, though, is just the configuration which best (in the search made by the GA) meets those constraints.
Unless the evaulation function actually provides or includes the solution configuration in some form, though, the antievolutionist criticism in question fails. And thus it fails almost all of the time, since only a handful of GA simulations run for pedagogy utilize an evoluation function with a "distant ideal target" inside.
GuyeFaux · 18 August 2006
Gotcha.
How do you then prove that the evaluation function is/isn't some sort of a fixed target? Practically, how do you show, just by looking at the evaluation functions, that Dave Thomas's evaluation function is not targeted whereas something like Dawkin's Weasel and Cordova's summer is?
I have an intuition about it, but is there a formal distinction?
Dave Thomas · 18 August 2006
jeffw · 18 August 2006
David B. Benson · 18 August 2006
Dave Thomas: This is quite good, but it seems to me you have yet to address the "intelligent design" which went into the operating system and system software. While you are at it, the same arguments will also work for the 'intelligent design" which went into the hardware as well.
GuyeFaux · 18 August 2006
IanC · 18 August 2006
Wesley R. Elsberry · 18 August 2006
David W. Benson, I've already taken up your concern. See #5.
jeffw, yes, EC is a broad term. Within my responses, I do mention more than just GAs, as in #1 where I include artificial life and genetic programming as example fields. But the GA model itself can be used as a sufficient counter to almost all the antievolutionist objections to evolutionary computation, and has the advantage of simplicity.
David B. Benson · 18 August 2006
Wesley --- My point is a small one. You address EC, specifically GA, thoroughly. But the operating system and system software mentioned in 'objection 5' never reappears in your reply.
David B. Benson · 18 August 2006
Oops. I need to give credit where it is due. Wesley Elsberry, this is quite good. (Dave Thomas was another thread. It was quite good as well.)
MattP · 18 August 2006
David B.:
The operating system, "system software" (difference?), computer hardware, etc. do not really contribute anything to solving the problem beyond providing a deterministic environment in which the algorithm can be executed quickly and accurately.
Dave Thomas · 18 August 2006
Wesley R. Elsberry · 18 August 2006
David B. Benson, if it helps, feel free to imagine that the following sentence is inserted at an appropriate place: "Likewise, the operating system and system software is of finite information capacity, but may be used to support the running of an indeterminate number of instances of EC applications solving different problems, and thus there is no hope for the contention that the specific information of each solution might somehow be passed on via that conduit."
buddha · 19 August 2006
Caledonian · 19 August 2006
RBH · 19 August 2006
Wesley R. Elsberry · 19 August 2006
Caledonian · 19 August 2006
Wesley R. Elsberry · 19 August 2006
trrll · 19 August 2006
David B. Benson · 19 August 2006
Wesley Elsberry: Yes, that provides the needed paragraph.
jeffw · 19 August 2006
Caledonian · 19 August 2006
Torbjörn Larsson · 20 August 2006
"It becomes less and less true as the size of the solution space shrinks toward the size of the solution (i.e. adding more and more constraints). When they are equal, the solution is an encoding of the problem space."
Interesting observation, but isn't this assuming that you can come sufficiently close and that the solution space is locally constrained in all dimensions by the evolving solution?
Also, the problem space is continually changing. RBH notes that for the environment. There is also coevolution AFAIK. For example between species: preys may choose to become good with avoidance, fleeing, hiding, or defences, or any combination whereof which deconstrain the solution space, and the interactions change continually.
So if some solutions may become sufficiently constrained close up, it may not be the general situation. I'm not sure if this will impress creos, though.
stevaroni · 20 August 2006
Caledonian · 20 August 2006
It's not *quite* that simple. Organisms need to reproduce enough that the species continues, which is somewhat harder than merely "living long enough to reproduce".
stevaroni · 20 August 2006
Henry J · 20 August 2006
How about inboard motors? ;)
Henry
jeffw · 21 August 2006
Pepeloco · 21 August 2006
Holy Star Trek convention, Batman, this thread just blew up my nerdometer.
Okay, kidding aside, what you guys are doing here is comparable to arguing with an 8-year-old child about the existence of Santa Clause by using quantum mechanics to demonstrate that reindeers can't fly.
Let's see if I can tone down the argument a bit so people without a PhD in computer sciences can have a clue what you're talking about. (In case you care, I'm a computer nerd with 20+ years of experience, though I'm not into AI, so excuse my inevitable misuse of the terminology.)
First of all, intelligence is simply the capacity to solve a problem. Creationists love to think that there's something magical about intelligence that can only occur inside a human mind (or god's mind) but that's BS with a capital BS. Technically speaking, the ID claim that "design requires intelligence" is actually correct, but only because it is a tautology; that is, any process that can produce design should be qualified as "intelligent" regardless of how it produced the design.
The most basic form of intelligence is composed of two mechanisms: (1) a mechanism that alters the behavior of the "intelligence" within the set of possible behaviors that would solve the problem and (2) a mechanism that can tell the difference between a correct answer and an incorrect one. For instance this program:
10 x=random()
20 if x!=cos(x) then goto 10
30 print x
This programs represents the most basic form of intelligence. It has the capacity to solve a problem, namely, it will print a value of x so that x=cos(x). And this program will indeed solve the problem. It might take it a long time, but it will solve it. The difference between this "intelligence" and what happens inside your mind is a matter of degree, not category. What the mind does is to add mechanisms to complement the two I mentioned. For instance, you can add a "memory" so the program can know when it has already tried a value so it doesn't have to check it again. You can add a more sophisticated test so the program can tell which values are closer to the solution than others, etc., etc. That would certainly make the program much more efficient, but the program as it stands is already "intelligent." It isn't particularly bright, but it's intelligent nonetheless.
In case you missed it, mutation and natural selection would qualify as the two required mechanisms for an intelligence. Mutation causes changes in behavior, and natural selection serves as a filter that gets rid of the wrong answers. So there you have it, there IS an intelligence guiding evolution. Like in the case of my program, it isn't a particularly bright intelligence (it takes it millions of years to get anywhere), but it is indeed an intelligence.
And in case anyone wants to complain about it, the only real difference between a completely random behavior (for the first mechanism) and a guided behavior is efficiency. In fact, any intelligence requires a random component (i.e., creativity), otherwise its behavior would simply be an infinity loop producing the exact same sequence of possible answers over and over and over.
Popper's ghost · 22 August 2006
Pepeloco · 22 August 2006
David B. Benson · 26 August 2006
Actually, algorithms could have 'truly random' components. However, pseudo-random number generators mimic random number sequences so well that few, if any, bother to equip their computer with a device to sense a random process such as radioactive decay.