Today I want to talk about artificial life. It's something that I worked on for a lot of years, and it sort of
underlies a lot of the research I've done more recently. This is another New Mexico CS For All video, for a class we're doing on computational thinking and programming.
Alright, Now, the very idea of artificial life is is kind of weird because we
normally think of life as natural -- nature is full of life. But we need to come up with a definition broad enough so that so that we can see other kinds of things as being life -- or lifelike.. And in fact that's the distinction that
we'll talk about immediately after: The weak claim is that these systems are merely
lifelike. Strong claim is that these systems are _actually_ life. Whether it actually makes a concrete
difference in any particular system is unclear, but it does make a difference in our expectations. We'll take a look at some demos, and
then try to wrap up as quick as we can. This is my big area so I like to talk about it! The Meaning of Life: Not just a movie by Monty Python Here's a dictionary definition: the state
of being which begins with generation birth or germination, ends with death, anything that happens in the middle. Uhm.. This is a catch-all. It's not completely satisfying. It's a description of what happens during a life, rather than some sort of necessary and sufficient
conditions for what it means for anything to be a life Many people have taken cracks at coming up with such a definition. Here's two: A self-sustaining chemical system capable
of undergoing Darwinian evolution; a self-organized non-equilibrium system
such that its processes are governed by a program stored symbolically, and
it can reproduce itself. Now both of these talk about systems, they both talk about them doing
something on their own -- sustaining, organizing.. They have slightly different emphases. Gerald Joyce is a chemist, perhaps not surprisingly. Lee Smolin is a physicist. When I, as a computer person, see 'program', and particularly see
things like 'symbolically', those are little red flags to me. That's
a.. there's a lot of stuff that has to be explained when someone invokes 'program',
'symbolic representations' and so on. I want to boil it away, and make it as simple as I possibly can.
My favorite defininition: Umm.. Now, I got this from my dad. The internets seems to think that this is may be from Dr. Who. I'm not sure (If anybody actually has any
references to this in print I'd be interested to see a citation.) The key point of this is the preservation-- preserving. So, a big umbrella definition: Life is a system that dynamically preserves pattern, OK? Now, you might think you'd be able to
preserve pattern without being dynamic about it. Like Mount
Rushmore. You know, you just make it big, and you make it out of rock, and the pattern will persist. The pattern will be preserved. But in fact, even the mountains come down eventually. And, it turns out,
Mount Rushmore -- every fall the National Park Service
gets out there and and repairs it, you know, plasters up Lincoln's nose or whatever it is what they do. So the larger system of Mount Rushmore plus people are dynamically preserving that
pattern, but the lifelike part of it is really the people, more than the Mount Rushmore. OK. So this is clearly extremely general, and we're gonna have to
admit that there might be some things that aren't really as lifelike as other things. I mean, even a little eddy, whirlpool, in a stream--that, you know, if you
move one pebble it will disappear-- it has a dynamically preserved pattern.
The water flows by, and you see it, it lasts for some period of time. That's gonna have a
little bit of life, according to this view; according to this definition. So this, fundamentally, is sort of 'computational paganism'. Wherever you look out in the world, if you see a pattern being dynamically
preserved, that is a little bit of life. That is a system that's a little lifelike. And then it's a spectrum. OK? This is plenty of room for what we need. OK. So, now we can build computers, computer programs, whatever, that will display this kind of property;
that will dynamically preserve their pattern. What _are_ those computer systems that we build? Well,
that depends on the stance that we want to take to them. We could take the weak claim, and say that this computational system is a model of some living system. And when we do that, our goal is to
understand something about life, or understand something about whatever
system we're claiming it's a model of. And ideally, we'd like to be able to make predictions about whatever it is that
it's a model of. OK. Let's take a look at an example. Alright. Here is a model of the world, everything. It's been running for a while here: Day two thousand four hundred and something. What it is, is a 100 by 100 grid, with mountains all around it
that nothing can get through. And spaces inside that can hold things. You may see these little flashes every so often Those are, I'm imagining...
lightning bolts On any given time step, any given square has some probability of
just zapping whatever is there. And that's our model of.. 'stuff' happening. That, whatever else goes on in the system, if
it's going to be a realistic model at all, it's going to have some process of tearing down, decay, time passing. OK. So, let's dynamically preserve our pattern.. Well, let's take
a strawman first here. OK, this guy, he's now sitting in one of these squares. And all of these little creatures that
i've implemented, the way they work is they look at -- when
it's their turn to go -- we're scattering turns around into every square in a random order, and then doing it again. When it's this guy's turn to go, he looks at one random spot in his neighborhood, and does something about it. Maybe he
moves there, maybe he destroys and eats whatever's there, maybe he has an offspring:
whatever we want to do. This particular guy does nothing, OK? When it's his turn he just says "I'm done."
Alright? And he's preserving his pattern fine, right? But we know that sooner or later, the odds are gonna catch up with him. And.. he's doing pretty well, um. But he's the only instance of the guy. So down here
we have the list: The amount of time we've got, the total
number of living things -- we're calling this guy 'living'. I call him 'Type S' 'cause
he just stands there. He's the standing guy. Well, we'll even let him live. But sooner or later, he's going to get
zapped by lightning and then he's gone. So how do we fight against that? We fight against that by reproduction. We fight against that by building a
system that can make copies of itself. So, here is such a thing. This is -- the little green square -- is like a plant that just grows under
the influence of sunlight, or some resource that's generally available. And it goes from one.. to two, now it's four.. well one of them got zapped, it would have gone four. Oh, we lost our standing guy. OK. He wasn't very satisfying anyway. He was
Mount Rushmore. Mount Rushmore just got, you know, lightning hit it. On the other hand, it's very very very
unlikely, at this point, that enough lightning is going to hit all of these little 'Type P' plant guys to wipe them out. Their pattern is being preserved by copying. And that's the basic living trick. We start out with one guy, then we had
two, then we had four. And it's often used as an example of -- let's
let this speed up a little -- of an exponential growth process. One times two
is four -- uh, times two is _two_ -- times two is four, and so on. Umm.. It's worth noting that this growth process that we're watching --
right here time thirty eight hundred, thirty-nine hundred, four thousand coming up -- this is not actually growing exponentially. Why not? Well, because, very quickly, the plants are not limited by their
ability to reproduce. The way I programmed these guys,
they can reproduce fast. They're limited by their ability to
find empty space to put an offspring in. These guys never actually move. When they
wake up they look at one of the randomly-picked neighbors, and if it's empty, and if they have
enough energy, they split. They give some to -- they create a new plant
in that position. And then they reduce their size by somewhat more than
what they gave. Alright. Let this go even faster. Alright. And and what we end up with is this, you know, ocean full of plants, that are occasionally zapped by lightning. And that creates an
empty spot, and then one of the neighbors fills it in and it regrows and so on. OK? The basic pattern preservation idea of life.
It's about amplification It's about reproduction. And it's doing great.. Obviously, we could have other things show up in this world. Like, in particular, a herbivore. Woah... So what happened there? We sort
of missed it it was so quick. The herbivores, when they get a chance to move, they look at a random
square. If it's empty, they move into it. If it's occupied by a plant they eat it. If they have enough energy, they might
create an offspring where they used to be. And that's basically it. So they
just sort of move around randomly, and if they happen to have a plant next to them they try to eat it. And what happened? Well, we had an absolute explosion in
the population of these.. and now they're extinct:
The herbivores, the 'H's. They're gone. So if we let this speed up, The plants regenerate themselves. And
and now if we look at the classical
mathematics governing predators -- in this case the prey is the plant, and the predator is
the herbivore. It's like if the plants had lookouts they'd be going, you know, "Look out! Here come the vegetarians!" Umm. In the classical mathematics.. With
continuous mathematics of it is not possible for anything to actually go extinct. So the herbivores would become very small
in number, that would allow the plants to rebound, and then there'd be plenty of food, so the herbivores would reproduce and eat them up. Here of course, there's always
that possibility of the last guy dies. And in fact that's
what happened here. Let's try it again. We'll stick in a
herbivore. And he eats, he reproduces. They reproduce.. Two hundred, three hundred,
four hundred. Reproducing very rapidly, and basically a plague on the land. Just sweeping across it eating everything. And once again they've all starved to death.
Now, you can, if we actually, if we can get, luck out, Umm.. Let's see what happens here.. We will get a system which -- this might do it -- yeah I think uh... yeah I think this might do it. If we can get a system where there's enough
small patches of plants, that have a few of the herbivores sort of scattered
around them, then in fact we can get to a rather stable circumstance.. And this
will do it... Let's go to full-speed here. Alright. So, herbivores are chasing around after the plants. The
plants are getting eaten, but then the herbivores are having famines and starving. Plants are regrowing. This is quite stable for as long as I've been watching it, as I've been setting up this video. OK. It's only a small piece of what we put normally consider
a living system. If the standing guy wasn't very
realistic because he just sat there, and tried to preserve one single
pattern flawlessly.. The limitation here is that whenever the plant reproduces itself, its offspring is always absolutely identical, down to every last teeny bit of behavior, and every
possible parameter. Same thing with the herbivores: the
copying process is absolutely faithful. Let's take a look at another example. Alright. So we've got our 'stuff' happening again. And let's put it in one of these 'evolutionary plants'. Which you can't really see there. The idea here is this plant has some genetic
information that tells it -- one, two -- tells 'em what kind of color he wants
to be. So this is sort of a pale blue green. And now we're going through the
exponential growth phase: One, two, four.. Which will quickly give way to a quadratic growth phase, in this case, 'cause our world
is two-dimensional. So the periphery only grows that fast. But the difference here is that every
time that one of these plants has an offspring, the offspring's color-- either its hue, or how intense it is, may shift slightly. Okay, and you may already be able
to see that off on one side here. The color's a little different. If we let it speed up, it should become more apparent. Yeah. so now we're sort of getting some blue, purple stuff, and we're getting some
sort of greener, yellow stuff. And it's kind of starting to look
like a clown wig, or something like that. Now, why are these colors changing? They're just changing because of drift. Because--the only way that these plants move is
by having offspring. The offspring have little mutations. So, the further we get from the center,
where we started the guy, the more generations down, in terms of the plant lineage,
that we are. Alright. We've got an evolving herbivore. Let's get one of him going Umm.. And the idea with him is--whups-- he has a particular color that he'd most like to eat. So the main color of his face--this
guy would sorta like to eat a sort of light cream color. So, the food that's around him, the plants around him:
Not his favorite food. That means he has a less.. When he tries to interact with one -- tries to eat it -- he won't succeed
as often. That's the way I made this work. That when you get a good color match, yum, you chomp it down. When it's a bad match, you're more likely to
just not be able to swallow it, and you don't get any energy that day. But once again, when you have a kid, the kid's preference for what color, and what amount
of saturation--how intense the color-- slightly modified, compared to yours. OK? And these guys are starting to reproduce and spread a little bit. Let's speed this up. Alright.
What's going on here? Two hundred.. two fifty.. They're spreading now. Unlike the original herbivores that just ate everything, these guys are more selective. It seems,
like down here anyway, they kind of like the
greenish stuff. And they're sort of leaving the
bluer, purpler stuff behind. And as a result, the green stuff is starting to disappear from the world. And the blue and purpler stuff is filling in the empty space
left behind. We now have an evolutionary system where the plants are evolving under the
pressure of the herbivores, and the herbivores in turn are
evolving under the pressure of the food sources provided by the plants. So, what's gonna happen in the long run here? Maybe.. Maybe we should let this cook for awhile, and talk about some other stuff, and then come
back and see what's happened here. Alright. So, was that model.. Alright, is it a model of a living system? if so what living system is it a model
of? Is is..was that green stuff supposed to be algae? Are these little white
dots there snails? It was not actually a model of any specific system. And one of the terrible problems with the weak claim of artificial life, is that it's really hard to make a specific, accurate model of an actual living system, 'cause actual
living systems are so sort of gnarly. They kind of depend on all sorts of
different things. And because they have that amplification
step, because they have that reproductive step.. With a system that has amplification, small differences at one time become big
differences later on. They can become big differences, and as a result, the
small details of the living system may in fact make a big difference how the system works over time. So to make an accurate artificial life model of any natural
system -- specific species interaction, what have you-- is very challenging. There's a lot of
parameters that have to be set. I mean, you know: How fast do these plants grow? How fast do they gain energy? When do
they try to split? How much energy do they give to their offspring? I just sort of made up parameter values for all that stuff, in order to make a demo that showed some
effect. So, coming up with predictability is a
challenge. But on the other hand, if you sort of back up a little bit, and say: Well I'm not trying to
model algae or any specific living system in the natural world I'm just seeking to understand how living systems act in general. According.. across many different systems, they act a lot like this. They have reproduction-- amplification-- and so on. OK. Well, if we're not talking about the weak claim -- that this is a computer
program which is just a model (as we've been talking about all through
this class) -- then the alternative is making a strong claim. The strong claim is that a computational system can _be_, literally _be_, a living system. And that we need to bend the definition of living
system and/or computational system until that can actually be true. The difference between taking the strong claim
and the weak claim, again, is a matter of emphasis With the strong claim, we don't necessarily care about
modeling any particular system. It's the difference between trying to model
flight by making bird wings, and modeling flight by making jet engines
and aluminum wings. With the strong claim for artificial life, the focus is just on
building systems that actually do something, that potentially is useful. Or at least, useful to somebody. Do we have examples of this? Artificial systems, that are out in the world, doing work, that are reproducing? You know? Well, here's one example. This is data from 2001. It's kind of
old now. From UCSD. Showing the infections of the Code Red computer virus. And we can watch it over time. At midnight there was a few hundred.
By noon.. Well, by six, seven a.m., there's thousands. By the afternoon, tens of thousands. By the evening there's hundreds of
thousands, all over the globe. What we end up with essentially is a map of
Microsoft software usage as of 2001, on the entire globe. (This'll go around one more time.) So, unlike the demo that we looked at first -- a 'world in a box' -- this, it's confined to being inside computers,
yes, but it's all over the planet. And since then, there have been many other sorts of these things. out in the wild, getting transmitted by internet, or floppy disks or uh... picture frames. All sorts of things, USB keys Umm.. And they actually _do_ stuff. They may do stuff just to computers.. The stuxnet virus, last year, did stuff in the physical world. It caused
physical machines to wobble and destroy themselves. How real do you need it to be, before you say: Well, that thing went out, worked its way through communication channels, reproducing itself, found its target, and destroyed stuff, in the actual world? So I think there's some pretty strong basis
for the strong claim -- that computational systems can _be_
living systems. Since I think _I_ am a computational system, I need the strong claim. You do too.
Alright. Let's check back -- oh, woah! What has happened here? Umm.. Well, the blue stuff has sort of gotten eaten up. And look at this now. We've got these red guys in the red patch; we've got some blue guys down here, and all kinds of things. Oh, there's some green guys, down here will be some. Well OK, alright, so. So it looks like what's happening now is yellow plants seem to be kind of spreading
out of the southeast, because there isn't anybody who's
really eating them. But we know what'll happen soon.
enough, The -- it looked like they were red guys here -- they're already getting lighter up here. So, where we used to have sort a big solid
blue -- a monoculture of one type -- now we've got a lots of little patches of quite
different colors near each other. And what looks like an endlessly churning, but -- if you step back -- kind of stable ecology. Hmm. OK. So let's mop it up. If we take the strong claim, that computational systems can be living
systems.. These days we can start.. Well there's
a new area called "living technology" which is focused specifically on the
strong claim. It's saying we can build living systems, that
are lifelike in some way. We can build them out of hardware -- that's like robots and stuff like that.
We can build them purely out of software-- that's the kind of stuff that we just saw here, We can build
them out of wetware--that's sort of carbon-based chemistry water solvents, the stuff that we're made of. And hopefully we can do something useful with them for society. It drives me crazy that if you look at artificial living systems today.. The example of the strong claim of alife that I picked is a bad one, It's one that
is tearing stuff down.. The Code Red virus, stuxnet.. It's difficult -- not impossible but it's
difficult -- to find really decent examples of using reproducing systems for good... for the overall
benefit of society. And I think that's got to change. So
my current research area is focused on how can we reengineer computing, how can we rethink computing, to take advantage of more of these lifelike principles? And -- oh, so now it looks like the plants are
cycling back towards white to some degree.. I mean, you know, the important point -- well, there's a lot of important points -- but one
important point about life is like what Woody Allen said,
you know: 90% of success is just showing up. Life fills space, wherever there's enough resources
to support it. And that means it can be there, when the extraordinary event just happens
to happen, somewhere. OK. That's it. Thanks for watching.
He was my professor at the University of New Mexico for three of my undergrad CS classes. Incredibly knowledgeable teacher. All of his presentations were done in emacs...
Was the audio stuttering for anyone else? It's driving me batshit.
This is cool and all, but why?
So the last seconds of the video the program evolved itself and escaped the inpenetratable wall? :)