Hello fellow readers,
The last two months I’ve been extremely interested in evolutionary programming and group dynamics. In this post I’ll try to gather some important factors I’ve noticed repeating themselves across the multiple opinions and examples, and the ones that just seemed noticeably important.
Naming those factors helps uncover the camouflage around life in its purest form, of what it means to be alive. What it means to have a sustainable being, one that changes across time to morph with its surrounding.
Once we finally understand them we might move unto more complex territories such as the initial conditions on earth, the particularity or singularity that incubated the start of life. Then, with those in hands, the field of AI will flourish and grow!
Scientists already tried reproducing the early state with arguable luck. However, it is still practically impossible to guess if what is tested in the labs is relevant or not. You can do your own online search about those experiments, for example this one. They are also doing amazing researches in the evolutionary biology field.
In no particular order of appreciation, the next few points are what I think the rock pillows of evolution.
Randomness, Mutations, & Crossovers
Randomness is beautiful, but the die of nature is unbalanced.
What we think is uniformly random is not at all. The law governing randomness is heavily dependent on historic and environmental factors. It doesn’t mean that all events are pre-calculated but that the chances of hitting a number varies constantly. It would be similar to playing poker and suddenly finding that the size of the deck has changed because new cards and new rules were added.
This is how the randomness of nature is, far from the strict laws, closer to a law that moves like the tide. It’s unlikely that humans will ever be able to grasp all the elements that create the law that governs it.
A mutation is an alteration or change of form, quality, attribute, functions
of any trait in an individual. The change can be apparent or not. A mutation
is only considered transmittable in evolution if it has affected the genotype of
the being. The genotype contains the genetic code of the being,
the combination of alleles on homologous chromosomes. This is the only change
that can be transmitted from one generation to another. It’s the code making up
what the being is.
Let’s note that the mutation on the genotype level that is transmitted should take place in the gonads (germinal cells). If the change doesn’t happen there, it might be expressed in the phenotype but not transmitted to the descendant.
The mutation happens randomly on the current law of distribution of nature at that time for the specific group of beings.
A genetic crossover is the genotype resulting from the mix-up of the two genotypes of the parents. The probability of one attribute of the parent taking over the attribute of the other parent follows the randomness we talked about and that we’ll discuss more later on.
Robustness Against Small Changes
An adaptable and resistant being is one that can survive and continue its usual activities while under small changes inside its body and environment. For example, a human is still able to continue a fairly normal life if it suffers the loss of one of its member, a finger for instance. The other parts of the body will equilibrate and make up for the loss. Same for the environment, for the individual to evolve correctly it should be able to adapt to the loss of one of the essential attribute in its surrounding.
The robustness is relatively dependent on the speed for readjustment. It is similar to simulated annealing, inspired by the metallurgy technique. In common words, a system gets more robust if it has the time to find out about its deficiencies and recalibrate itself accordingly. My best friend, Francois Boulos, a medical student, told me a metaphor that is a perfect illustration of this phenomenon. Imagine a car hitting a wall at full speed, it’ll crash, explode, and the passengers won’t have any chance of survival. Now imagine the same scenario but the car approaching extremely slowly. Once the passengers notice the deformation on the front bumper they consolidate it with metal and other materials. They repeat the consolidation until there’s no more danger.
For further understanding of this topic there’s a superb paper on building robust systems by Gerald Jay Sussman.
There exist a mechanism to instantly correct the mutations happening to the cells. Only a minimal part of those mutations will stick and be transmitted. Moreover, in most cases the mutation are not expressed in the phenotype. For instance, in the human genome there is a whole section of the DNA that does not code for any specific behavior, at least we do not know its purpose. Being parts that don’t affect the phenotype there is a higher chance of a mutation happening on there. Its surface is larger than the one which codes for something.
We can consider it as a protector for the rest of the DNA reducing the factor of mutations sent to the descendant. Slowing down the cooling.
Pool Of Solutions
Robustness is also achievable at a genotype level. With Respect to the current distribution law, multiple variants of the genotype should be able to produce similar functional phenotypes that solve the same problem, which we refer to as a pool of solutions. Small changes in the genotype might make a huge difference in the overall fitness but big changes might give similar results.
This means that the fitness of the phenotype is dependent on the combination of genes rather than the genes themselves.
A recent article of the nautilus magazine developed on this subject.
A Gene Circuit
As we said in the last paragraph, the combination of genes let us have more than one option to a valid/stronger path in evolution. This is the consequence of having the genes work together inside a network. The phenotype is but a general property of the current state of the circuit.
The related Wikipedia page is scarce. The studies around this field are still relatively dark, it’s an undiscovered land full of opportunities.
The only persons who dare to touch it are biological engineers which use this property to try to reproduce computer-like system from biological system. It’s called a biological circuit, and is part of the synthetic biology field.
Only the chosen ones have priorities in the survival game. Their phenotypes being superior affects the probability of their genotype surviving for another generation.
That is because we follow the Darwinian view of evolution (until proven wrong) which says that a
property is kept if it augments the chance of reproduction and survival unlike
the Lamarckian view, that
inheritance is an acquired characteristics, “use
‘em or lose ‘em”.
Consequently, a fitter individual from a population survives only if it has more chances of mating. The traits that influence this are the robustness against the current way of living and robustness against near future ways of living for that specie. This greatly depends on the environment and conditions at the time.
Let’s say, for example, that a certain animal has white fur. Someday one of the male grows black fur and coincidently, from a mutation, turns out to be a bit stronger. He is lucky and mate with multiple females. This might give rise to a new generation where females are more attracted to black fur and males with black fur are more resistant. This illustrates how an unrelated phenotype can have a direct relation with the genotype. The genotype cannot be seen by others so it’s highly dependent on the phenotype.
To reproduce the ranking system in the world of algorithm multiple methods are available.
- Roulette wheel Selection
Every individual is assigned a fitness (according to factors well chosen) then placed in the overall population having a weight equivalent to its fitness, like on a pie chart. A number between 1 and the sum of all fitness is chosen and we let the arrow spins around.
Select two random individuals from a group and take the best between them. Repeat until the best individuals pool is filled. (nb: it doesn’t matter if the same individual is present twice in the pool)
We’ll discuss more complicated ways of selection in the next sections.
The Importance Of Groups
A population is composed of multiple entities, it’s a flock. Analysing a single person’s movements apart from the whole group blinds us on what the global changes are.
A specie might have sub-groups that are scattered at different geographical positions (this can be due to any effect) and start diverging greatly.
The internal behavior inside the sub-groups might be different. Norms might have been set for the survival of the specie.
Inside a group, if it is evolved enough to have norms and institutions, the black sheep effect might take place and the mutation (change/difference) factor goes on a decline. Which means that the robustness speed is slowed down (which is more adequate, see the above metaphor).
Once the group reaches another level of norms, social behaviors are instituted and the ranking system might resemble more an Eigen Morality political system than the simple tournament.
One thing to keep from this paragraph is that the global meta-mind of the group is more powerful than a single individual behavior and that a group big enough can live alone and diverge from the main branch of its specie.
No one survives alone, the world is made of multiple beings all sharing the same cozy place. You can replace the word environment in all the other paragraphs by symbiosis or system biology (depending on the scale you want to look at).
Be it beneficial or not, any interactions from one specie to another creates a snowball effect. Food chains, infections, viruses, relationships, climate change, etc.. It goes on and on.
A very simple implementation of interspecies interaction is the Bask Sneppen model.
The model dynamics repeatedly eliminates the least adapted species and mutates it and its neighbors to recreate the interaction between species.
Issues With Implementation
I emailed a specialist in EV (Evolutionary programming), Peter Grogono and got some nice insights on the problems faced when implementing evolutionary programming. I’ll introduce some of them in this paragraph. If you want to read more about it, he has written some excellent papers on the subject such as Laws and Life.
Evolutionary programming is mainly used in optimization problems where you have a function F (fitness function) and want to assign the best value to the parameters.
The problem arise when the developers are choosing those parameters and on what space they can evolve on.
The parameter space may be very large. In fact EP is used precisely because it provides an efficient way of searching large spaces. But the parameter space may also be too small in the sense that it restricts the solution to possibilities imagined by the designer.
For example, I recall a fascinating paper about simulating the evolution of an eye: good vision was achieved in only 800000 generations. The parameters of the simulation included tissue transparency light sensitivity refractive index etc. Clearly this simulation could not produce an ear!
Nature has no such restrictions. At some time a mutation produced by chance one of the opsin proteins. These proteins have the interesting property that a photon can cause a change in structure that can be detected chemically. From there it’s only a few million years to an eye. Bottom-up not top-down.
Defining the genome itself in a program is a huge problem in itself. It means defining genes parameters, what compose them. Peter Grogono’s solution was to ignore the genes and instead use some sort of meta-program which evolve itself through generations. However, this approach leads to more complications.
This replaces the genome by an evolving program which is open-ended but leads to The robustness problem. How do you design a programming language in which small changes to the source code yield small changes in the behaviour? How do you avoid programs evolving to exploit freaks of the specification? Many problems here!
The stability problem. Why are some features more stable than others? I find it comforting that dinosaurs had five fingers just as I do. But why is the number of fingers more stable than say the function of the small bones in my ear which dinosaurs used to eat with?
It’s extremely complex to approach the implementation of real evolution in a programming language. Programming is meant to have strict mathematical rules. As we said earlier in this paragraph, EP is used to optimize a function but what are we optimizing in the case of a life form?
The fitness function problem. Practical EP works by evolving organisms that achieve high (or low) values of the fitness function. But what is the fitness function of a sparrow? To fly high and fast? To see well? To avoid being eaten by a hawk? No: the only thing that evolution can do for a sparrow is to help it produce more sparrows. The “fitness function” becomes a tautology.
It becomes even more complex when the environmental factors are introduced, preys and predators for instance.
The adaptation problem. Consider the following taken from your blog:
“Lets say for example that a certain animal has white fur. Someday one of the male grows black fur and coincidently from a mutation turns out to be a bit stronger. He is lucky and mate with multiple females. This might give rise to a new generation where females are more attracted to black fur and males with black fur are more resistant.”
There are three immediate assumptions:
- strength (whatever that is!) is under genetic control
- fur colour is under genetic control
- the same gene or cluster of genes affects both strength and fur colour.
Next it is not as simple as “this might give rise to a new generation where females are more attracted to black fur”. What might actually happen is:
- black animals mate more than white animals because they are stronger
- they pass their genes onto their offspring who therefore may be stronger and may have black fur
- the offspring also mate more than white animals because of their inheritance.
- animals of either colour will be more successful if they have one or more parents with black fur
- consequently animals who prefer black fur in other will become more successful.
However in order for step 11 to occur we require first:
- animals have the sense organs required to distinguish black and white fur
- there must be a link between an observation (“that animal has black fur”) and an action (“mate with that animal”).
- an animal with black fur but no extra strength will have an advantage: the black fur will help it to mate but it doesn’t require extra resources for strength.
Thus weak animals with black fur will tend to dominate the population there will be no advantage to having black fur and we start all over again …
This last examples shows how evolutionary programming is sometime really unsuspected. Weak individuals can get a better chance of survival because of a correlated trait that is seen as strong from an environmental perspective, even though it isn’t. Correlation in the environment is a very strong factor.
The big question is, how to map all those relations in a program.
The law of distribution of the randomness of nature is the sum of all the factors mentioned along this article. We’re still far from discovering the true meanings of evolution and life. People are still arguing if we should take a top-down approach or down-top one. I’m not sure which I’ve taken here but I’m glad I did settle on it!
On my journey through evolutionary programming I didn’t find yet anything that joined the multiple views I mentioned. It’s probably due to the complexity of having everything affecting everything creating a cycle, the cycle of evolution and life.
If you want an interesting book to read which goes in depth about the subject of life I recommend: What is life? How chemistry becomes biology.
I might be wrong on a lot of points but writing this was a lot of fun and I hope it’ll be as fun to read it!
Thanks a lot to my best buddy Francois Boulos for the proofreading and new ideas. You’re going to be a great doctor (°∀°)b
Thanks to Peter Grogono, you seem like a super cool guy!
Romanes, G. J.; uploaded to Wikipedia by en:User:Phlebas; authors of the description page: en:User:Phlebas, en:User:SeventyThree / Public domain
If you want to have a more in depth discussion I'm always available by email or irc.
We can discuss and argue about what you like and dislike, about new ideas to consider, opinions, etc..
If you don't feel like "having a discussion" or are intimidated by emails then you can simply say something small in the comment sections below and/or share it with your friends.