21.03.2015 Views

Darwin's Dangerous Idea - Evolution and the Meaning of Life

Darwin's Dangerous Idea - Evolution and the Meaning of Life

Darwin's Dangerous Idea - Evolution and the Meaning of Life

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

210 BIOLOGY IS ENGINEERING<br />

tigation <strong>of</strong> heuristic algorithms. But <strong>the</strong>re is also a tradition within computer<br />

science <strong>and</strong> ma<strong>the</strong>matics <strong>of</strong> contrasting heuristic methods with algorithmic<br />

methods: heuristic methods are risky, not guaranteed to yield results, whereas<br />

algorithms come with a guarantee. How do we resolve this "contradiction"?<br />

There is no contradiction at all. Heuristic algorithms are, like all algorithms,<br />

mechanical procedures that are guaranteed to do what <strong>the</strong>y do, but what <strong>the</strong>y<br />

do is engage in risky search! They are not guaranteed to find anything—or at<br />

least <strong>the</strong>y are not guaranteed to find <strong>the</strong> specific thing sought in <strong>the</strong> amount <strong>of</strong><br />

time available. But, like well-run tournaments <strong>of</strong> skill, good heuristic<br />

algorithms tend to yield highly interesting, reliable results in reasonable<br />

amounts <strong>of</strong> time. They are risky, but <strong>the</strong> good ones are good risks indeed.<br />

You can bet your life on <strong>the</strong>m (Dennett 1989b). Failure to appreciate <strong>the</strong> fact<br />

that algorithms can be heuristic procedures has misled more than a few critics<br />

<strong>of</strong> Artificial Intelligence, In particular, it has misled Roger Penrose, whose<br />

views will be <strong>the</strong> topic <strong>of</strong> chapter 15.<br />

Samuel saw that <strong>the</strong> Vast space <strong>of</strong> checkers could only be feasibly explored<br />

by a process that riskily pruned <strong>the</strong> search tree, but how do you go<br />

about constructing <strong>the</strong> pruning <strong>and</strong> choosing demons to do this job? What<br />

readily programmable stop-looking-now rules or evaluation functions would<br />

have a better-than-chance power to grow a search tree in wise directions?<br />

Samuel was searching for a good algorithmic searching method. He proceeded<br />

empirically, beginning by devising ways <strong>of</strong> mechanizing whatever<br />

obvious rules <strong>of</strong> thumb he could think <strong>of</strong>. Look before you leap, <strong>of</strong> course,<br />

<strong>and</strong> learn from your mistakes, so <strong>the</strong> system should have a memory in which<br />

to store past experience. "Rote learning" carried <strong>the</strong> prototype quite far, by<br />

simply storing thous<strong>and</strong>s <strong>of</strong> positions it had already encountered <strong>and</strong> seen <strong>the</strong><br />

fruits <strong>of</strong>. But rote learning can only take you so far; Samuel's program<br />

confronted rapidly diminishing returns when it had stored in <strong>the</strong> neighborhood<br />

<strong>of</strong> a million words <strong>of</strong> description <strong>of</strong> past experience <strong>and</strong> began to be<br />

overcome with indexing <strong>and</strong> retrieval problems. When higher or more<br />

versatile performance is required, a different strategy <strong>of</strong> design has to kick in:<br />

generalization.<br />

Instead <strong>of</strong> trying to find <strong>the</strong> search procedure himself, Samuel tried to get<br />

<strong>the</strong> computer to find it. He wanted <strong>the</strong> computer to design its own evaluation<br />

function, a ma<strong>the</strong>matical formula—a polynomial—that would yield a<br />

number, positive or negative, for every move it considered, such that, in<br />

general, <strong>the</strong> higher <strong>the</strong> number, <strong>the</strong> better <strong>the</strong> move. The polynomial was to<br />

be concocted <strong>of</strong> lots <strong>of</strong> pieces, each contributing positively or negatively,<br />

multiplied by one coefficient or ano<strong>the</strong>r, <strong>and</strong> adjusted to various o<strong>the</strong>r<br />

circumstances, but Samuel had no idea what sort <strong>of</strong> concoction would work<br />

well. He made some thirty-eight different chunks—"terms"—<strong>and</strong> threw <strong>the</strong>m<br />

into a "pool." Some <strong>of</strong> <strong>the</strong> terms were intuitively valuable, such as those<br />

giving points for increased mobility or potential captures, but o<strong>the</strong>rs were<br />

more or less <strong>of</strong>f <strong>the</strong> wall—such as "DYKE: <strong>the</strong> parameter is credited with<br />

The Computer That Learned to Play Checkers 211<br />

1 for each string <strong>of</strong> passive pieces that occupy three adjacent diagonal<br />

squares." At any one time, sixteen <strong>of</strong> <strong>the</strong> terms were thrown toge<strong>the</strong>r into <strong>the</strong><br />

working genome <strong>of</strong> <strong>the</strong> active polynomial <strong>and</strong> <strong>the</strong> rest were idle. By a lot <strong>of</strong><br />

inspired guesswork <strong>and</strong> even more inspired tuning <strong>and</strong> tinkering, Samuel<br />

devised rules for elimination from <strong>the</strong> tournament, <strong>and</strong> found ways <strong>of</strong><br />

keeping <strong>the</strong> brew stirred up, so that <strong>the</strong> trial-<strong>and</strong>-error process was likely to<br />

hit upon good combinations <strong>of</strong> terms <strong>and</strong> coefficients <strong>and</strong> recognize <strong>the</strong>m<br />

when it did. The program was divided into Alpha, a rapidly mutating pioneer,<br />

<strong>and</strong> Beta, a conservative opponent that played <strong>the</strong> version that had won <strong>the</strong><br />

most recent game. "Alpha generalizes on its experience after each move by<br />

adjusting <strong>the</strong> coefficients in its evaluation polynomial <strong>and</strong> by replacing terms<br />

which appear to be unimportant by new parameters drawn from <strong>the</strong> reserve<br />

list" (Samuel 1964, p. 83).<br />

At <strong>the</strong> start an arbitrary selection <strong>of</strong> 16 terms was chosen <strong>and</strong> all terms<br />

were assigned equal weights__ During [<strong>the</strong> early rounds] a total <strong>of</strong> 29<br />

different terms was discarded <strong>and</strong> replaced, <strong>the</strong> majority <strong>of</strong> <strong>the</strong>se on two<br />

different occasions __ The quality <strong>of</strong> <strong>the</strong> play was extremely poor. During<br />

<strong>the</strong> next seven games <strong>the</strong>re were at least eight changes made in <strong>the</strong> top<br />

listing involving five different terms __Quality <strong>of</strong> play improved steadily<br />

but <strong>the</strong> machine still played ra<strong>the</strong>r badly ___ Some fairly good amateur<br />

players who played <strong>the</strong> machine during this period [after seven more<br />

games] agreed that it was 'tricky but beatable'. [Samuel 1964, p. 89]<br />

Samuel noted (p. 89) that, although <strong>the</strong> learning at this early stage was<br />

surprisingly fast, it was "quite erratic <strong>and</strong> none too stable." He was discovering<br />

that <strong>the</strong> problem space being explored was a rugged fitness l<strong>and</strong>scape in<br />

which a program using simple hill-climbing techniques tended to fall into<br />

traps, instabilities, <strong>and</strong> obsessive loops from which <strong>the</strong> program could not<br />

recover without a helping nudge or two from its designer. He was able to<br />

recognize <strong>the</strong> "defects" in his system responsible for <strong>the</strong>se instabilities <strong>and</strong><br />

patch <strong>the</strong>m. The final system—<strong>the</strong> one that beat Nealey—was a Rube Goldberg<br />

amalgam <strong>of</strong> rote learning, kludges, 15 <strong>and</strong> products <strong>of</strong> self-design that<br />

were quite inscrutable to Samuel himself.<br />

15. Pronounced to rhyme with "stooge," a kludge is an ad hoc or jury-rigged patch or<br />

s<strong>of</strong>tware repair. Purists spell this slang word "kluge," drawing attention to its (likely)<br />

etymology in <strong>the</strong> deliberate mispronunciation <strong>of</strong> <strong>the</strong> German word klug(e), meaning<br />

"clever"; but according to The New Hacker's Dictionary (Raymond 1993), <strong>the</strong> term may<br />

have an earlier ancestor, deriving from <strong>the</strong> Kluge paper feeder, an "adjunct to mechanical<br />

printing presses" in use as early as 1935. In its earlier use, it named "a complex <strong>and</strong><br />

puzzling artifact with a trivial function." The mixture <strong>of</strong> esteem <strong>and</strong> contempt hackers<br />

exhibit for kluges ("How couid anything so dumb be so smart!") perfectly reproduces<br />

<strong>the</strong> attitude <strong>of</strong> biologists when <strong>the</strong>y marvel at <strong>the</strong> perversely intricate solutions Mo<strong>the</strong>r<br />

Nature so <strong>of</strong>ten discovers.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!