PATRICK WINSTON: I have extremely bad news.
Halloween falls this year on a Sunday.
But we in 6.034 refuse to suffer the slings and arrows
of outrageous fortune.
So we've decided that Halloween is today, as far
6.034 is concerned.
Kenny, could you give me a hand, please?
If you could take that and put it over there.
STUDENT: [INAUDIBLE]?
PATRICK WINSTON: Mm hm.
Just give it to them.
You can take as much of this as you like.
The rest will be given to that herd of stampeding freshman
that comes in after.
It's a cornucopia of legal drugs.
Chocolate does produce a kind of mild high, and I recommend
it before quizzes and giving lectures.
I have a friend of mine, one of the Nobel laureates in
biology, always eats chocolate before he lectures.
Gives him a little edge.
Otherwise, he'll be flat.
So I recommend it.
It will take, I suppose, a little while to digest that
neural net stuff.
A little richer than usual in mathematics.
So today, we're going to talk about another effort at
mimicking biology.
This is easy stuff.
It's just conceptual.
And you won't see this on the next quiz.
But you will see it on the final.
It's one of those quiz five type problems, where I ask you
questions to see if you were here and awake.
So a typical question might be, Professor Winston is a
creationist, or something like that.
Not too hard to answer.
In any event, if it's been hard to develop a real
understanding of intelligence, occasionally the hope is that
by mimicking biology or mimicking evolution, you can
circumnavigate all the problems.
And one of those kinds of efforts is
ever to imitate evolution.
So we're going to talk today about so-called genetic
algorithms, which are naive attempts
to mimic naive evolution.
Now, I realize that most MIT students have a basic grasp of
sexual reproduction.
But I've found in talking with students that many times,
they're a little fuzzy on some of the details.
So let's start off by reflecting a little bit about
how that works.
So let's see, we need pink and blue.
And here's our cell, and here is its nucleus, and here are
mommy and daddy's chromosomes.
We'll just pretend there's one pair.
Now ordinarily, in ordinary cell
division, you get two cells.
Both have a nucleus, and the process of producing them
involves the duplication of those chromosomes.
And then one pair ends up in each of the child cells, and
that's all there is to that.
That's mitosis.
But then, when we talk about reproduction, it's more
complicated because those chromosomes get all twisted
up, and they break, and they recombine.
So when we talk about the cells that split off from one
of these germ cells, it's no longer appropriate to talk
about the pink one and the blue one, because the pink one
and the blue one are all mixed up.
So you get two chromosomes here and two here.
But through some miracle of nature, which has always
amazed me, these two cells split, in turn, into four
cells altogether.
And each of those four cells at the bottom gets one of the
chromosomes that was produced by the twisting up of the rope
and recombination.
Then, along comes a special occasion.
And now we can think of this as being a blue one and this
as being a pink one.
And they come together, and you get a new person, like so.
Note that your mother and father's chromosomes are
never, never recombined.
It's your grandparents chromosomes that recombine.
So that's what it's like.
And the main thing to note about this is--
well, a couple things.
If you happen to be female, this part of the process--
this part over here--
took place before you were born.
If you happen to be male, it's going on right now as we
speak, which probably explains something.
But in any event, it's going on right now.
But whenever it goes on, there are lots of opportunities for
throwing dice.
So God threw all the dice before you were born, if you
happen to be a female, in this part of the process over here.
Then, of course, more dice got thrown here when the decision
was made about which particular cells got to fuse
to form a new individual.
So I want to beat on this idea of lots of choice.
When we talk about genetic algorithms, and we talk about
nature, there are lots of choices in there.
And that means there are lots of choices to intervene, to
screw around, to make things work out the way you want.
But in any event, there we are.
That's the basic idea, and it all starts with chromosomes.
So we could think of implementing something that
imitates that with the ACTG stuff that you learned all
about in Seminar 1.
But we're computer scientists.
We don't like Base 4.
We like Base 2.
So I'm going to just suggest that our chromosomes are
binary in this system that we're going to build.
So that might be a chromosome.
And it doesn't have to be binary.
It can be symbolic for fall I care.
But it's just some string of things that determine how the
ultimate system behaves.
So it all starts out, then, with some of these
chromosomes, some of these simulated chromosomes,
simulated, simplified, and naive.
And there's a population of chromosomes.
The population of chromosomes-- it might be
subject to a little bit of mutation.
That is to say, a zero becomes a one, or a
one becomes a zero.
That happens a lot.
That mutation stuff happens over here when things get
twisted up and recombined.
There are copying errors and stuff.
Cosmic rays hit it all the time.
All sorts of reasons why there might be a
single point of change.
That produces the mutation effect.
So here, we have a population that starts off over here.
And some of those things are subject to mutation.
And you'll note, here's a whole bunch of choice already.
How many of these mutations do you allow per
chromosome, for example?
How many of the chromosomes just slip
through without any mutation?
Those are choices you can make.
Once you've made those choices, then we have the
crossover phenomenon.
Let's identify one of these guys as the pink one and one
of these guys as the blue one.
And so now we have the pink one cruised along as well as
the blue one.
The pink one and the blue one cross and produce a new
chromosome, just like in nature.
So we take the front part of one, back part of the other,
and we fuse them together.
And some may slip by without any of that, like so.
Well, these things are meant to be combined in pairs, like
so, but they may not have any crossover in them.
So you have another set of choices.
How many crossovers do you allow per recombination?
You get another set of choices.
So now we've got a population of modified chromosomes
through mutation and crossover.
So the next thing to do is we have the genotype to phenotype
transition.
That is to say the chromosome determines the individual.
It may be a person.
It may be a cow.
It may be a computer program.
I don't care what.
But that code down there has to be
interpreted to be a something.
So it is the genotype, and it has to be interpreted to be
something which is the phenotype, the thing that the
stuff down there is encoding for.
So here, we have a bunch of individuals.
Now, each of those individuals, because they have
varying chromosomal composition, will have a
different fitness.
So these fitnesses might be--
well, who knows how they might be scored.
But we're computer scientists.
We might as well use numbers.
So maybe this guy's fitness is 88, and this guy's fitness is
77, and so on.
So now that we've got fitness--
by the way, notice all the choices involved there--
choice of how you interpret the genotype, choice about how
the phenotype produces the fitness.
And now we have a choice about how the fitness produces a
probability, like 0.8 and 0.1, or something like that--
probability of survival into the next generation.
So now, once we've got those probabilities, we actually
have selection.
And those phenotypes out there produce genotypes, a new set
of chromosomes, and that completes our loop that goes
back in there.
And so that's the new generation.
Sounds simple.
So if you're going to make this work, of course, you have
a million choices, as I'm going to emphasize over and
over again.
And one of your choices is, for example, how do you
compute the probability of survival to the next
generation given the fitness?
So we have to go, somehow, from numbers like these to
probabilities like those.
So I'm going to talk about several ways of doing it.
None of them are magic.
None of them was specified and stipulated by God
as the right way.
But they have increasingly good properties with respect
to this kind of processing.
So the simplest thing you can do--
idea number one for computing the--
see, what you do is you get this whole bag of individuals,
and you have to decide who's going to survive to the next
generation.
So at each step, everything in the bank has a probability of
being the one you pick out and put in the next generation.
So at any step, the sum of the probabilities for each of
those guys is 1, because that's how
high probability works.
The probability of a complete set, added all up, is
probability of 1.
So one thing you can do is you can say that the probability
that you're going to draw individual i is equal to, or
maybe is proportional to, the fitness of that individual.
I haven't completed the expression, so it's not a
probability yet, because some piece of it won't add up to 1.
How can I ensure that it will add up to 1?
That's easy.
Right.
All I have to do is divide by the sum of the
fitnesses over i.
So there's a probability measure that's produced from
the fitnesses.
Yeah.
STUDENT: You need to make sure that the
fitnesses aren't negative.
PATRICK WINSTON: Have to make sure the fitnesses are what?
STUDENT: Aren't negative.
PATRICK WINSTON: He says I have to make sure the
fitnesses aren't negative.
Yeah, it would be embarrassing if they were.
So we'll just [? strike ?] anything like that as 0.
You've got a lot of choice how you can calculate the fitness.
And maybe you will produce negative numbers, in which
case you have to think a little bit more about it.
So now, what about an example?
Well, I'm going to show you an example.
Why don't I show you the example.
What we're going to do is we're going to have a genetic
algorithm that looks for an optimal value in a space.
And there's the space.
Now, you'll notice it's a bunch of contour lines, a
bunch of hills in that space.
Let me show you how that space was produced.
The fitness is a function of x and y, and it's equal to the
sine of some constant times x, quantity squared, times the
sine of some constant y, quantity squared, e to the
plus x plus y divided by some constant.
So sigma and omega there are just in there so that it kind
of makes a nice picture for demonstration.
So there's a space.
And clearly, where you want to be in this space is in the
upper right-hand corner.
That's the optimal value.
But we have a genetic algorithm that
doesn't know anything.
All it knows how to do is mutate and cross over.
So it's going to start off with a population of 1.
It's a little red dot down in the lower left.
So here's how it's going to evolve.
There's going to be s chromosome consisting of two
numbers, an x number and a y number, like,
say, 0.3 and 0.7.
Here's another one, which might be 0.6 and 0.2.
So the mutation operator is going to take one of those
values and change it a little bit.
So it might say, well, we'll take 3, and we'll make it 0.2.
And the crossover operation is going to exchange the x and y
values of pairs.
So if we have a crossover here, then what we're going to
get out from this one--
well, we're going to get out a combination of these two.
And it's going to look like this.
Because what we're going to do is we're going to take the x
value of 1 and combine it with the y value of the other one.
So this is going to be 0.2--
my mutated value and 0.2--
and this is going to be 0.6 and 0.7.
So that's how my little genetic algorithm heck is
going to work.
So having coded this up, we can now see how it flows.
Let's run it 10 generations.
So the population is rapidly expanded to some fixed limit.
I forgot what it is--
30 or so.
And we can run that 100 generations.
And so this seems to be getting stuck, kind of, right?
So what's the problem?
The problem is local maxima.
This is fundamentally a hill-climbing mechanism.
Note that I have not included any crossover so far.
So if I do have crossover, then if I've got a good x
value and a good y value, I can cross them over and get
them both in the same situation.
But nevertheless, this thing doesn't seem to be
working very well.
STUDENT: Professor, I have a question.
PATRICK WINSTON: Yeah.
STUDENT: That picture is just the contour
lines of that function.
PATRICK WINSTON: The contour lines of that function.
So the reason you see a lot of contour lines in the upper
right is because it gets much higher because there's that
exponential term that increases as you
go up to the right.
So I don't know, it looks--
let's put some crossover in and repeat the experience.
We'll run 100 generations.
I don't know.
It just doesn't seem to be going anywhere.
Sometimes, it'll go right to the global maximum.
Sometimes it takes a long time.
It's got a random number generator in there, so I have
no control over it.
So it's going to get there.
I couldn't tell whether the crossover was
doing any good or not.
Oh, well, here's one.
Let's make this a little bit more complicated.
Suppose that's the space.
Now it's going to be in real trouble, because it'll never
get across that moat.
You know, you would think that it would climb up to the x
maximum or to the y maximum, but it's not
going to do very well.
Even with crossover, it's just not going to do very well,
because it's climbing up those local hills.
Anybody got an idea about one simple thing we could do to
make it work better?
Yeah, you could increase step size, right?
Let me you see if that will help.
You know, even that doesn't seem to help.
So we have to conclude-- do we conclude that
this is a bad idea?
Well, we don't have to conclude it's a bad idea yet,
because we may just look at it and ask why five times.
And we might ask, well, maybe we can get a better mechanism
in there to translate fitness into probability of survival.
Using this formula is kind of strange, anyway, because
suppose temperature is one of your fitness characteristics.
The hotter, the better.
Then the ratio of the probability that you'll
survive versus the person next to you, that ratio will depend
on whether you're measuring the temperature in Celsius or
Fahrenheit, right?
Because you've shifted the origin that shifts the ratio
that shifts the probability of success.
So it seems kind of strange to just take these things right
straight into probabilities.
So a better idea--
idea number two--
is to say, well, shoot, maybe we don't care about what the
actual fitnesses are.
All we really care about is the rank order of all the
candidates.
So the candidate with the most fitness will have the most
probability of getting into the next generation.
The candidate with the second-most fitness will have
the second-highest probability, and so on.
But we're not going to use the actual fitnesses themselves to
make the determination.
Instead, what we're going to do with this
mechanism number two--
this is the rank space method--
is this.
We're going to say that the probability of the
highest-ranking individual of getting into the next
generation is some constant P sub c, which, of course, you
can select.
You have another choice.
Then, if that guy doesn't get selected, the probability of
the second-highest-ranking individual getting in the next
generation is going to be the probability that that guy
didn't get in there.
That's 1 minus P sub c times the same probability constant.
And so you can see how this is going.
P3 will be equal to 1 minus P sub c squared terms P sub c.
P sub n minus 1 will be equal to 1 minus that probability
constant to the n minus--
n minus 2 times P sub c.
And then there's only one individual left.
And then if you got through all these guys and haven't got
anybody selected, then you've got to select the last guy.
And so the probability you're going to select the last guy
is going to be 1 minus P sub c to the n minus 1.
So it's a probability you've missed all those guys in the
first n minus 1 choices.
Yeah, it is, honest to God.
See, this is the probability that this last guys is going
to get selected.
It's not the probability that it's the last guy getting
selected, given that the others haven't been select.
Trust me, it's right.
Are you thinking it ought to be 1?
STUDENT: What?
PATRICK WINSTON: Were you thinking it ought to be 1?
STUDENT: No, I was thinking that I was wondering why you
were re-rolling the dice, so to speak.
PATRICK WINSTON: You are re-rolling the dice.
You've got a probability each time, except for the last
time, when, of course, you have to take it.
There's nothing left.
There's no other choice.
STUDENT: I have a question.
PATRICK WINSTON: Yeah, [INAUDIBLE].
STUDENT: So when you jump from [INAUDIBLE], that makes sense.
[INAUDIBLE] you're saying [INAUDIBLE].
PATRICK WINSTON: It's the probability [INAUDIBLE] the
first two choices.
STUDENT: Yeah, but the second choice had probability one
minus P sub c times P sub c, not--
PATRICK WINSTON: Think about it this way.
It's the probability you didn't choose the first two.
So the probability you didn't choose the first one is one
minus P sub c.
The probability you didn't choose the next one, as well,
because you're choosing that next one with probability P
sub c, it's the square of it.
So that might work better.
Let's give it a shot.
Let's go back to our original space choice, and we set and
switch to the rank fitness method.
And we'll run out 100 generations.
Whoa!
What happened there?
That was pretty fast.
Maybe I used a big step size.
Yeah, that's a little bit more reasonable.
Oops--
what happened?
It's really getting stuck on a local maximum.
So evidently, I've choosed a constant P sub c such that it
just drove it right up the nearest hill.
On the other hand, if I change the step size a little bit,
maybe I can get it to spread out.
I sure did.
And now that it's managed to evolve over there to find the
maximum value, now I can clamp down on the step size again.
And now it shows no more diversity.
It's just locked on to that global maximum.
So this is not unlike what evolution sometimes does.
Sometimes, species collapse into a state where they don't
change for 500 million or 600 million years, like sharks,
for example.
Sometimes, they only survive if they've got a lot of
diversity built into their way of life so that they can
adjust to habitat changes.
Now, when you increase the step size, because you're
stuck on a local maximum, it's like heating up a metal.
You make everything kind of vibrate
more, make bigger steps.
So this kind of process, where you may start with a big step
size and then gradually reduce the step size, is called
simulated annealing, because it's like letting
a metal cool down.
So you start off with a big temperature-- big step size--
that covers the space.
And then you slowly reduce the step size, so you actually
crawl up to the local maxima that are available.
So that seemed to work pretty well.
Let's see if we can get it to work on the harder
problem of the moat.
So it's not doing very well.
Better increase the step size.
No, it's still kind of stuck.
Even though it's got the capacity to cross over, it's
so stuck on that lower right-hand corner, it can't
get up that vertical branch to get to a point where a
crossover will produce a value up there in the upper
right-hand corner.
So we're still not home yet.
So what's the trouble?
The trouble is that the fitness mechanism is just
driving things up to the local maximum.
It's just terribly unfortunate.
What to do?
Well, here's something you could do.
You can say, well, if the problem is we've lost the
diversity in our population, then we can measure the
diversity--
not only the fitness of the set of individuals we're
selecting from, but we can measure how different they are
on the individuals we've already selected for the next
population.
In other words, we can get a diverse population as well as
a fit population if, when we make our selection, we
consider not only their fitness but how different they
are from the individuals that have already been selected.
So that's going to be mechanism number three.
So now we have a space, and we can measure
fitness along one axis--
ordinary fitness--
and this is rank space fitness, so that's
going to be P sub c.
There will always be some individual
with the highest fitness.
And over here--
that might not be P sub c, actually.
But there'll be some individual with a maximal
fitness, and at any given step in the selection of the next
population, there'll be some individual that's maximally
diverse from all of the individuals that have been
selected for the next generation so far.
So what kind of individual would you like to pick for the
next generation?
Well, the one with the highest fitness rank and the one with
the highest diversity rank.
So what you'd really like is you'd like to have somebody
right there.
And if you can't have somebody right there, if there's nobody
right there with a maximum fitness, a maximum diversity
at the same time, then maybe you can draw in iso-goodness
lines, like so, which are just how far you
are from that ideal.
So let's summarize.
You've got to pick some individuals for the next
population.
When we pick the first individual, all we've got to
go on is how fit the individual is, because there's
nobody else in that next generation.
After the first individual is selected, then we can look at
our set of candidates, and we can say which candidate would
be more different from the set of things we've already
selected than all the others.
That would get the highest diversity rank and so on down
the candidate list.
So let's see how that might work.
So we're going to use a combination of fitness rank
and diversity rank.
And we'll just use the simple one so far.
We'll use a small step size, and we'll let this run 100
generations to see what happens.
Bingo.
It crawls right up there, because it's trying to keep
itself spread out.
It uses that diversity measurement to do that.
And at the same time, it's seeking high fitness, so
that's why it's crawling up to the upper right-hand corner.
But in the end, that diversity piece of it is keeping the
things spread out.
So suppose you're a shark or something.
You don't care about diversity anymore, And we could just
turn that off.
Is that thing still running?
Go back to fitness rank--
bingo.
So there you are-- you're stuck for 600 million years.
So let's see if this will handle the moat problem.
See, our step size is still small.
We'll just let this run.
So the diversity of P sub is keeping it spread out, pretty
soon, bingo, it's right in there.
It's across that big moat, because it's got the crossover
mechanism that combines the best of the x's and the best
of the y's.
So that seems to work pretty well.
OK, so see, these are some of the things that you can think
about when you're thinking-- oh, and of course, we're a
shark, we're going to forget about diversity.
We'll change the selection method from fitness and
diversity rank to just diversity.
It collapses down on to the highest hill.
Yeah, [INAUDIBLE], what?
STUDENT: How does step size translate into mutations?
PATRICK WINSTON: Oh, just the--
question is, how does step size translate into mutation?
Instead of allowing myself to take steps as big as 1/10, I
might allow myself to take steps as big as 3/10,
according to some distribution.
So what to say about all this?
It's very seductive, because it's nature, right?
The trouble is, it's naive nature.
And as evolutionary theories go, this is horrible.
This is naive.
So we'd like to use real evolutionary theory, except we
don't have real evolutionary theory.
Evolution is still a mystery.
Some things are pretty obvious.
You can breed fast race horses.
That works just like so.
The trouble is, we don't have any real good idea about how
speciation takes place and how a lot of evolution works,
because all these chromosomes are connected to their
phenotype consequences in very complicated ways that nobody
fully understands.
So there's a great deal of magic in that genotype to
phenotype transition that nobody really
understands very well.
So when people write these programs that are in the style
of so-called genetic algorithm, they're taking a
photograph of high school biology, and they're spending
a long time building programs based on that naive idea.
But that naive idea has lots of places for intervention,
because look at all the things you can screw around with in
that process of going from one generation to the next.
By the way, what does mutation do?
It's basically hill climbing, right?
It's producing a little spread out, and you're using the
fitness thing to climb the hill.
So you get a lot of choices about how you handle that.
Then you get a lot of choices about much
crossover you're doing.
What does crossover do?
It kind of combines strong features of multiple
individuals into one individual, maybe.
So you've got all kinds of choices there.
And then your genotype to phenotype translation--
how do you interpret something like those zeroes and ones as
an if-then rule, for example, as something that's in the
hands of the designer?
Then you've got all the rest of those things, all which are
left up to the designer.
So in the end, you really have to ask--
when you see an impressive demonstration, you have to
say, where does the credit lie?
And I mean that pun intentionally, because usually
the people who are claiming the credit are lying about
where it's coming from.
But nevertheless, let me give you a couple of examples of
where this has found actual, bona fide practical
application.
So when you look for practical application, you might say,
well, in what kind of problem does a good front piece
combine with a good back piece to produce
a good thing overall?
And the answer is, when you're making a plan.
So you might have a problem in planning that requires you to
take a series of steps.
And you might have two plans, each of which
is a series of steps.
And you might combine these to produce something new that's
the front half of one and the back half of another.
So that's practical application number one.
And that requires you to interpret your chromosome as
an indicator of the steps in the plan.
Another example is drawn from a [? UROP ?]
project a student did for me some years ago.
He was a freshman.
He came to me and said, I want to do a [? UROP ?] project.
And I said, have you taken 6.034?
And he said no.
And I said, go away.
And he said, I don't want to go away.
I want to do a [? UROP ?] project.
So I said, have you read my book?
He said no.
I said, well, go away, then.
And he said, I don't want to go away.
I want to do a UROP project.
So I said, I don't have any [? UROP ?] projects.
He said, that's OK.
I've got my own.
He's a finance-type guy, so he was interested in whether he
could build a rule-based expert system that could
predict the winners at horse races.
So his rule-based expert system consisted
of rules like this.
If x and y, then some conclusion.
If l and m, then some kind of conclusion.
And from these, he would produce rules like if x
prime-- that's a slightly mutated version of the x
antecedent--
and m, then some conclusion.
So it's mutation and crossover.
And he was able to produce a system that seemed to work
about as well as the handicappers in the newspaper.
So he started losing money at a less fast rate.
He is now doing something in the stock market, they say.
Doesn't talk so much about it, though.
But an interesting application.
He came up with rules like, if the sum of the jockey's weight
on the post position is low, that's good.
Well, that makes sense in the end, because the jockey's
weight is always between 100 and 110 pounds, and the post
position is always between 1 and 10 or something, so they
were commensurate values.
And a low one is good, in fact.
Not bad.
But neither of those--
I mean, this is real stuff.
My company uses this sort of stuff to do
some planning work.
But neither of those is as impressive as the
demonstration I'm about to show you that involves the
evolution of creatures.
And these creatures consist of block-like objects, like so.
And they combine like this, and so on.
And so how can you make a feature like that from a
[? 0-1 ?] chromosome?
Well, some of the bits in the chromosome are interpreted as
the number of objects.
Others are interpreted as the sizes of the objects.
Others are interpreted as the structure of how the objects
are articulated.
And still others are interpreted as fixing the
control algorithm by which the creature operates.
So you see how that roughly goes?
Would you like to see a film of that in action?
Yes.
OK.
[INAUDIBLE]
always likes to see the films.
STUDENT: How would you measure diversity in that graph?
PATRICK WINSTON: The question is, how do I measure the
diversity of the graph?
I did it the same way I measured the fitness.
That is to say, I calculated the distance--
the actual metric distance--
of all the candidates for the next generation from all of
the candidates that had already been selected.
I summed that up.
And from that sum, I could rank them according to how
different they were from the individuals that were already
in the next generation.
It's like giving a rank, and then from the rank, I use that
kind of calculation to determine a fitness, ie, a
probability of survival, and then I just combine the two
kinds of probabilities.
STUDENT: So you always kept-- every time that you started
something, [? you cached ?] those.
And you kept everything that you've ever [INAUDIBLE].
PATRICK WINSTON: I'm always using the individuals that
have already been selected at every step, so every step is a
little different because it's working with a new set of
individuals that have already been selected for the next
generation.
OK?
So let's see how this works.
So this is showing the evolution of
some swimming creatures.
And they're evolved according to how well they can swim, how
fast they can go.
Some of them have quite exotic mechanisms, and some of them
quite natural.
That looked like a sperm cell floating away there.
Once you have these things evolving, then of course, you
can get groups of them to evolve together.
So you saw already some that were evolving to swim.
These are evolving to move around on the land.
It's interesting-- this was done by Karl Sims, who at the
time was at a then-thriving company, Thinking Machines, a
fresh spinoff from MIT.
So he was using a vastly parallel computer, super
powerful for its day, thousands of
processors, to do this.
And it was a demonstration of what you could do
with lots of computing.
In the early stages of the experimentation, though, its
notion of physics wasn't quite complete, so some of the
creatures evolved to move by hitting themselves in the
chest and not knowing about the conservation of momentum.
I thought that was just great.
So here they are, out doing some further--
So you look at these, and you say, wow, there must be
something to this.
This is interesting.
These are complicated.
I think this is one of the ones that was trained,
initially, to swim and then to do land locomotion.
So eventually, Karl got around to thinking about how to make
these things evolve so that they would compete for food.
That's the fastest, I think, by the way, of the land
locomotors.
So that was training them to-- evolving them to jump.
This is evolving them to follow a little red dot.
Some of them have stumbled upon quite exotic methods, as
you can see.
Seem to be flailing around, but somehow manage to--
sort of like watching people take a quiz.
Making progress on it.
But now we're on to the food competition.
So some of them go for the food, and some of them go to
excluding their opponent from the food, not actually caring
too much about whether they get it.
That's sort of what children do.
There's a kind of hockey player--
now, here's two hockey players.
Watch this.
They're kind of--
one succeeds--
it reminds me a little bit of hockey, rugby,
something like that.
Sometimes, they just get kind of confused, go right after
their opponent, forgetting about the food.
Gives up.
I think these are the overall winners in
this elimination contest.
I can't quite get there.
OK, so you look at that, and you say, wow, that's cool.
Genetic algorithms must be the way to go.
I remember the first time I saw this film.
It was over in Kresge.
I was walking out of the auditorium with Toma Poggio
And we looked at each other, and we said the same thing
simultaneously.
We didn't say that genetic algorithms were the way to go.
What we said was, wow, that space is rich in solutions.
What we were amazed by was not that simple-minded genetic
algorithms produced solutions but that the space was so rich
with solutions that almost any mechanism that was looking
around in that space would find them.
But there's yet another way of thinking about it, and that is
you could say, wow, look at how smart Karl Sims is,
because Karl Sims is the one who had his hands on all the
levers, all those choices.
And I kept emphasizing, all those choices that enabled him
to trick this thing, in some sense, into stumbling across
the solutions in a space that was guaranteed to
be rich with solutions.
So you have to ask--
so first of all, diversity is good.
We noticed when we put diversity into the genetic
algorithm calculations, we were much
better at finding solutions.
But the next gold star idea that I'd really like to have
you go away with is the idea that you have to ask where the
credit lies.
Does it lie with the ingenuity of the programmer or with the
value of the algorithm itself?
In this case, impressive as it is, the credit lies in the
richness of the space and in the intelligence of the
programmer, not necessarily in the idea of genetic
algorithms.