Chance and Necessity

A few weeks ago I wrote an article for NRO, in which I said:

[M]any educated people have invested scientists — and more often, popularizers of science — with the right to be taken seriously as they pontificate about morality and public policy. The argument tends to take this form: Scientific finding X implies liberal political or moral conclusion Y. Important contemporary examples include the assertions that evolution implies atheism, and the fact that CO2 is a greenhouse gas implies that we must reduce carbon emissions rapidly and aggressively.

Conservatives, for their part — especially those with access to the biggest megaphones — have recently developed the habit of responding to this by challenging scientific finding X. The standard sorry spectacle, and the resulting alienation of those who takes science seriously, ensues.

In general, it would be far wiser to accept X, but to challenge the assertion that X implies Y. Scientific findings almost never entail specific moral or political conclusions, because the scope of application of science is rarely sufficient to do so.

John G. West of the Discovery Institute has written and article for NRO defending the recent Louisiana Science Education Act. I assume that his reasoning in it is at least in part a response to my article. He says that:

Fearful of being branded “anti-science,” some conservatives are skittish about such efforts to allow challenges to the consensus view of science. They insist that conservatives should not question currently accepted “facts” of science, only the supposedly misguided application of those facts by scientists to politics, morality, and religion. Such conservatives assume that we can safely cede to scientists the authority to determine the “facts,” so long as we retain the right to challenge their application of the facts to the rest of culture.

He then immediately proceeds to say:

First, the idea that a firewall exists between scientific “facts” and their implications for society is not sustainable. Facts have implications. If it really is a “fact” that the evolution of life was an unplanned process of chance and necessity (as Neo-Darwinism asserts), then that fact has consequences for how we view life. It does not lead necessarily to Richard Dawkins’s militant atheism, but it certainly makes less plausible the idea of a God who intentionally directs the development of life toward a specific end. In a Darwinian worldview, even God himself cannot know how evolution will turn out — which is why theistic evolutionist Kenneth Miller argues that human beings are a mere “happenstance” of evolutionary history, and that if evolution played over again it might produce thinking mollusks rather than us.

But this is a perfect example (in my view) of asserting that science says something that it does not. Mr. West claims that Neo-Darwinism asserts “that the evolution of life was an unplanned process of chance and necessity.” While some scientists may say that, there is no such scientific finding. It is true that any hypothesized teleology in the development of humans would be so difficult to determine through current methods that scientists appropriately proceed as if this were true when conducting operational science; but that it is a very far cry from saying that it is scientifically proven to be true.

Here is a long excerpt from an NR article I wrote last year on exactly this topic:

Most of this debate, unfortunately, engages with evolution only at a very abstract or metaphorical level, which lends itself to a lot of gassy talk. In order to evaluate the claims of each group, we need to consider the mechanics of evolution.

To understand these mechanics, it’s very helpful to look at an analogous system. So-called Genetic Algorithms (GAs) are computer-software implementations of the same kind of mathematics that takes place in the biological process of evolution. (Dawkins, in fact, devoted about 40 pages of The Blind Watchmaker to describing a primitive GA-type program that he wrote on his PC.) Today, GAs are widely deployed in artificial-intelligence computer programming to solve such prosaic engineering problems as optimally scheduling trucks on a delivery route or identifying the best combination of process-control settings to get maximum output from a factory.

Consider the example of a chemical plant with a control panel that has 100 on/off switches used to regulate the manufacturing process. You are given the task of finding the combination of switch settings that will generate the highest total output for the plant. How would you solve the problem? One obvious approach would be to run the plant briefly with each possible combination of switch settings and select the best one. Unfortunately, even in this very simplified example there are 2^100 possible combinations. This is a surprisingly gigantic number — much larger, for instance, than the number of grains of sand on Earth. We could spend a million lifetimes trying various combinations of switches and never get to most of the possible combinations.

But there’s a trick that can help us. Once we start to try combinations, we might begin to notice patterns like “when switches 17 and 84 are set to ‘on,’ production always increases when I put switch 53 to the ‘off’ position.” Such insights could help us to narrow down our search, and get to the answer faster. This might not seem to be much help in the face of such an enormous number of possibilities, but the power of these rules is also surprising.

To illustrate this, think of a simple game: I pick a random whole number between one and a billion, and you try to guess it. If the only thing I tell you when you make each guess is whether you are right or wrong, you would have very little chance of guessing my number even if I let you guess non-stop for a year. If, however, I tell you whether each guess is high or low, there is a procedure that will get the exact answer within about 30 guesses. You should always guess 500 million first. For all subsequent guesses, you should always pick the mid-point of the remaining possibilities. If, for example, the response to your opening guess of 500 million is that you are too high, your next guess should be the mid-point of the remaining possibilities, or 250 million. If the response to this second guess is “too low,” then your next guess should be the mid-point of 250 million and 500 million, or 375 million, and so on. You can find my number within about a minute.

A Genetic Algorithm works on roughly the same principle. Let’s go back to our problem of the 2^100 possible combinations of switch settings. We can use a Genetic Algorithm as an automated procedure to sort through the vast “search space” of possibilities — and thus home in quickly on the best one. This procedure has the same three elements as our procedure for guessing the number: a starting guess, a feedback measurement that gives some indication of how good any guess is, and an iterative method that exploits this feedback to improve subsequent guesses.

In order to establish the initial guess for the GA, imagine writing a vertical column of 100 zeroes and ones on a piece of paper. If we agree to let one=“turn the switch on” and zero=“turn the switch off,” this could be used as a set of instructions for operating the chemical plant. The first of the hundred would tell us whether switch 1 should be on or off, the second would tell us what to do with switch 2, and so on all the way down to the 100th switch.

This is a pretty obvious analogy to what happens with biological organisms and their genetic codes — and therefore, in a GA, we refer to this list as a “genome.”

Our goal, then, is to find the “genome” that will lead the plant to run at maximum output. The algorithm creates an initial bunch of guesses — genomes — by randomly generating, say, 1,000 strings of 100 zeros and ones. We then do 1,000 sequential production runs at the factory, by setting the switches in the plant to the combination of settings indicated by each genome and measuring the output of the plant for each; this measured output is termed the “fitness value.” (Typically, in fact, we construct a software-based simulation of the factory that allows us to run such tests more rapidly.) Next, the program selects the 500 of the 1,000 organisms that have the lowest fitness values and eliminates them. This is the feedback measurement in our algorithm — and it is directly analogous to the competition for survival of biological entities.

Next comes the algorithmic process for generating new guesses, which has two major components: crossover and mutation. These components are directly modeled on the biological process of reproduction. First, the 500 surviving organisms are randomly paired off into 250 pairs of mates. The GA then proceeds through these pairs of organisms one at a time. For each pair it flips a coin. If the coin comes up heads, then organism A “reproduces” with organism B by simply creating one additional copy of each; this is called direct replication. If it comes up tails, then organism A reproduces with organism B via “crossover”: The program selects a random “crossover point,” say at the 34th of the 100 positions, and then creates one offspring that has the string of zeroes and ones from organism A up to the crossover point and those from organism B after the crossover point, and an additional offspring that has the string of zeroes and ones from organism B up to the crossover point and those from organism A after the crossover point. The 500 resulting offspring are added to the population of 500 surviving parents to create a new population of 1,000 organisms. Finally, a soupçon of mutation is added by randomly flipping roughly every 10,000th digit from zero to one or vice versa.

The new generation is now complete. Fitness is evaluated for each, the bottom 500 are eliminated, and the surviving 500 reproduce through the same process of direct replication, crossover, and mutation to create the subsequent generation. This cycle is repeated over and over again through many generations. The average fitness value of the population moves upward through these iterations, and the algorithm, in fits and starts, closes in on the best solution.

Notice … that one of the 2^100 possible combinations of switch settings will produce the highest output, and with enough time the algorithm will always converge on this one answer. The algorithm is therefore the opposite of goalless: It is, rather, a device designed to tend toward a specific needle in a haystack — the single best potential result.

Notice…[also] that though the number of possible solutions is very large, it is finite. With sufficient computational power the goal is, in principle, knowable without ever running the algorithm. The algorithm itself is just a computational convenience.

In other words, once we de-mystify this process, we can see evolution as merely an efficient method for searching a space of possible combinations. I go on in the article to explain why the complexities of actual evolution in the field don’t change this picture at all from a philosophical perspective. Evolution through natural selection might or might not be “an unplanned process of chance and necessity”, but science does not tell us this one way or another.