Genetic Algorithms Warehouse
Artificial Intelligence Depot
"As knowledge increases, ignorance unfolds." -Kennedy
KNOWLEDGE MESSAGES SUBMIT SEARCH  
Getting Darwinian Evolution to Work
Recent Essay on Layered Systems
 
• Getting Darwinian Evolution to Work

Essay - Getting Darwinian Evolution to Work

An article by Paul Almond has just been published. This was a free submission, not a contest entry.

Suggests that Darwinian evolution has higher levels of abstraction and that explicitly exploiting these in attempts to evolve software on computers could allow programs of greater sophistication. A multi-layered system is proposed which uses the concept of 'evolving evolvability'.

http://ai-depot.com/Articles/54/Evolution.html

1019 posts.
Wednesday 12 February, 18:33
Reply
• Yes this is the way we code. Levels of Detail in the sources.

Thanks Alex

I see it so, our coding combines the reality of nature, in casu the brain and the reality of the computer. We see in the sources clearly different layers (Levels of detail, LODs). We think in notions of higher LODs (a number) than we code the statements.

ed

222 posts.
Thursday 13 February, 07:55
Reply
• Development?

Throughout this article there was much talk of 'interpretation'. Perhaps you are referring to _development_ vs. _optimization_ ? Seems to me that the argument was made that the way nature 'interprets' (which leads to development) DNA is the point we are missing in our simulations.

I think I was rather surprised to see no mention of development in this article, when development is key to evolving complex structures.

3 posts.
Friday 14 February, 10:04
Reply
• What did mean by "interpretation"?

Thank you for your comment, John.

Yes, I was saying that the way that nature interprets DNA is critical.

Clearly, any interpretation that is going to allow sophisticated things to be expressed in it must allow Turing equivalency (I doubt if anyone is going to argue about that with me), but I also think that the way in which interpretation is done is important in determining how much "evolvability" we have.

I think that the "evolvability" provided by the interpretation that nature does with DNA has evolved over a long period of time and that we can not wait that long in simulations. the problem is that evolution of a "good" system of interpretation (one that provides evolvability) must be done in the context of a "bad" system of interpretation (one that provides "poor" evolvability) (if it didn't we wouldn't need to evolve our good system of interpretation and this low initial evolvability means that evolving the interpretation needed to allow evolution of a complex system in a reasonable amount of time is probably much harder than the actual evolution of the complex system.

The proposed method is therefore one of forcing evolvability by developing successive layers, each layer having more evolvability than its predecessors and being used as a stepping stone to the next layer.

Why do I use multiple layers? The purpose of each layer is to be used as an interpreter to allow evolution of something better at interpreting (in terms of evolvability) than itself. If we expected to evolve our "ultimate interpreter" in a single step, just using one layer, we would be asking an enormously sophisticated system to evolve without any pre-existing interpretation system that is decent. using multiple layers means that the evolvability provided by each layer can be used to generate something just a little more sophisticated, with just a little more evolvability.

You said this:

"I think I was rather surprised to see no mention of development in this article, when development is key to evolving complex structures."

I have to admit, I am not 100% sure what you mean (probably due to my poor vocabulary and inexperience with this subject) and can think of one or two possibilities. What sort of development do you mean? Could you give an example of a statement which addresses such a matter in a different context, perhaps?

As a guess, in advance, a likely explanation that I will go for, though, to your "where is the development discussion?" question is that I was promoting and addressing a very specific point, that of interpretation and my claim for the need to evolve certain sorts of interpretation systems to give genotypes the right context and that the article is deliberately limited in that sense. For example, there is no mention of sexual combination of information from 2 genotypes in the article. This does not mean that I am claiming it should not be done, but rather that it did not relate directly to the proposal I wanted to make.

If by "development" you are referring to the way in which genotypes "build" phenotypes, then I am aware of this issue - it was addressed briefly at the end of the document and I may shortly write a second paper which turns this multi-layered idea into a slightly different system in which each layer "builds" the next layer rather than interpreting it - this would be like using a compilation paradigm whereas my current method uses an interpretation paradigm, however the method would translate over from one paradigm to another quite easily and converting the method like this is trivial. However, if I had written the description to deal with such a system what I intended would be less clear - I therefore decided to write about an interpreter based system where it would be clear why I was doing what I was doing, rather than a more efficient compiler based system where a lot of the benefits would be hidden.

42 posts.
Friday 14 February, 10:34
Reply
• multiple layers, vertical and horizontal?

Hello Paul Almond

"nature interprets DNA is critical" Yes that is really interpretation in the sense I use that word. A step further. Going on with a part and maybe in a changed environment.

Do you see that as layers in time one after the other? So showing an evolution along multiple layers?

This is very well possible. What is then more at such a layer? Can layers being mixed? Can layers having holes? What are holes?

I ask that for I use also layers but I call them LODs, levels of detail. And that implies you can find a lot of things at such a level. It can have horizontal structures, which is very reasonable in evolution.

And such LODs can indeed mingle because their horizontal structure.

You say you haven't the time DNA needed to become more.

Why not, time is relative. I have a neural net that sleeps a deep sleep in a few millisecs and then the whole net changes, just fun.

I understand your "bad" system, yes, pushes are needed. Let the system be pliant, (have enough chaos) and so you call that "good" evolvability. Evolvability is key notion for you.

In the physical Chaos theory arisen from the Santa Fe group, evolvability is a complex of order and chaos, order for striking and go to another LOD, layer, and chaos for pliancy. This is an agent and agent group to a higher agent.

In this chaos view on nature we see also a constantly build up.

Compare a molecule with many particles, somewhere are quarks, they have arisen after the big bang and in violent supernovas but later stable but still containing the quarks.

You can think this in evolution as well. Then a whole animal functions while the cells live at the same moment. And here we see LODs as well.

Your layers are than more vertical layers in a row along the time axis and my LODs are horizontal, complete and defective, stable or instable and with a kind of condition and all at each moment.

I say such a building shifts and jumps in the time to a direction with an environment. And that's along your layers, I think. Do you understand me?

You can see that often that life is reduced to RNA or with you DNA while we know very early in the existence of life or prelife there was a skin, maybe also from RNA, for RNA is already somewhat (enough) soapy.

I know a biologist who abstracts to the energy, which isn't bad, he finds new things as well, but energy has a so poor structure. A cell-wall adds to the complexity. You don't mention it. I don't know what the consequences are. Do you have an idea? All life has a cell-wall, isn't it? The members can't escape, they have to work together or they die all. We together working has then a nice stimulator. How do you do that without a wall.

The time from monocell to multicellular lasted billions of years, much longer than other stages. And why, roughly to get a wall around more cells, so they can't escape. So maybe a wall or skin is important. A kind milestone a victory for evolution. What do you think?

When you have a cell-wall you know as well it will become its own energy container. Nice for stability, in an instable local environment. A safety-container and whoops... many advantages.

I talk in the language of the physical chaos view on nature. Please ask when something isn't clear. It's also a little bit abstract. (Pictures)

A nice subject, isn't it?

Ed van der Meulen

222 posts.
Friday 14 February, 16:17
Reply
• much talking about interpretation

Hello John Mancine

Yes, much talk about interpretation. I see that as going on to a next step, maybe at another level, but not necessarily. Interpretation is a vital notion in emergence.

A picture

Peaks come up due to combining and at that higher level of detail (LOD) we see something like chaos and is there order? We interpret but also nature interprets.

I hope in my 2nd principle for the new view on AI to explain how this can happen. But that interpretation is a vital notion in all nature, that I see as correct.

Of course it's also a development and even an optimization. The notion striking you can connect with optimizing. But why not just interpretation, a kind of useful abstraction, if you like it.

You are right very often development is a normal used word. But with
the chaos/order view, you can hardly call it development.

After the big bang are the quarks developed to electrons for instance?

They combine, but development is more a word connected to progress for instance the software world.

Evolution is neither a development. This incorporates a direction, but evolution is like water in a landscape and many specific things and it streams down the hill. This can mean complexer life but also back to the monocell. I see evolution as blind in this respect. It can go in all directions. What is becoming extinct for a development but it's direction life can go.

Everywhere it enters holes, we call niches. Now we say life walks in different niches at the same time.

When you hate my metaphors, please tell it me. It's my way of visualizing things.

Ed van der Meulen

222 posts.
Friday 14 February, 10:50
Reply
• Devlopment = Special case of 'interpretation'?

Hello everyone,

Thanks for all the great replies. Very interesting stuff indeed. I think I am going to enjoy my time spent here in these forums. (I've lingered in the dark for a while. ;)

I think we are referring to the same thing. Meaning, I think "developmental" could *almost* be substituted for "interpretative" throughout the paper we just read. (although, I think 'interepret' is a better general term).

Let me see if I'm understand correctly...

First, when I refer to "optimize" I refer to how most GA's work. We have a fixed set of parameters, and we simply 'optimize' those finite set of params (encoded in a genome) until we satisfy our fitness fxn.

The problem with this, is that we are extremely limited in the complexity we can reach. We will never have anything more than 'a highly optimized/tweaked' agent. Nothing of real significance will 'emerge' from this system(I'm generalizing here). (Note: This isn't to say this is not handy especially for concrete mathematical solutions etc. but it is not defensible if we are aiming to actually create intelligence)

We we need to be doing instead is 'developing' our agents so we can achieve higher level of complexity. I believe you basically say this same exact thing in the following quote:

"How does evolution manage to produce complex systems? I suggest that the answer lies in the biochemistry that intereprets the DNA - it must be a particular interpretative architecture that allows evolvability."

That "interpretative architecture" is what we would consider "development" in an organism. Or more precise, what we attribute to "development" is the result of that complex interpretative process. Do you agree?

I'll stop there and await any feedback to see if I'm on the right page on this topic.

3 posts.
Friday 14 February, 19:20
Reply
• nature and nurture from physical chaos view

John Mancine.

I (Ed) answer you as well from the physical chaos view on nature.

John: I think we are referring to the same thing. Meaning, I think "developmental" could *almost* be substituted for "interpretative" throughout the paper we just read. (although, I think 'interepret' is a better general term).

Ed: Yes, interpreting has not yet a direction while developing a forward direction can have. I'm not sure you mean with interepret the same.

John: Let me see if I'm understand correctly...

First, when I refer to "optimize" I refer to how most GA's work. We have a fixed set of parameters, and we simply 'optimize' those finite set of params (encoded in a genome) until we satisfy our fitness fxn.

The problem with this, is that we are extremely limited in the complexity we can reach. We will never have anything more than 'a highly optimized/tweaked' agent. Nothing of real significance will 'emerge' from this system(I'm generalizing here). (Note: This isn't to say this is not handy especially for concrete mathematical solutions etc. but it is not defensible if we are aiming to actually create intelligence)

Ed: Emergence is things come together and then, wow... some fit and look they are striking. Indeed in this way I code.

My problem with mathematical solutions is the mathematical equations don't evolve. And simulating is so much administration. Life has no administration at all.

I still have two wishes for GAs. I need them for my NN. In general this can be also interesting.

1. more fitnesses. In live fitnesses work parallel, Example, good thinking about this subject and friendly to others else you are eaten. But in life there a lot other types of fitnesses. Maybe 2 is sufficient. Maybe not, we'll see.

2. fitness is not the same as fitting in the genes, not at that LOD (level of detail) they know nothing but fitting of the complete phenotype in life so in the environment. It can proof itself there and nowhere else. So it must be in a kind of reality. The phenotype is half coming from the genes and half coming from the environment. Can a fit animal live in a bad enviroment? So I like an integration between GAs and the NN with the environment. And I'm sure that this is codable as well.

3. Some deeper also the development of genes in the body must be good enough a new notion for GA. I like that the fitnesses get weights.

John: We need to be doing instead is 'developing' our agents so we can achieve higher level of complexity. I believe you basically say this same exact thing in the following quote:

"How does evolution manage to produce complex systems? I suggest that the answer lies in the biochemistry that intereprets the DNA - it must be a particular interpretative architecture that allows evolvability."

Yes I (Ed) would say greater flexibility and the interaction between life and circumstances allow evolvability.

Genes are tested in the reality as a living creature, formed by genes an nourishment, safety and education and that at different LODs. Nature and nurture.

But not in detail, all that comes higher is important.

That "interpretative architecture" is what we would consider "development" in an organism. Or more precise, what we attribute to "development" is the result of that complex interpretative process. Do you agree?

I'll stop there and await any feedback to see if I'm on the right page on this topic.

It's clear the "interpretative architecture" is a key notion. Maybe the author can tell some more about it.

Ed van der Meulen

222 posts.
Friday 14 February, 21:31
Reply
• Answer to points raised by Ed vd M and JohnMancine

Thank you, Ed vd M and JohnMancine, for the points you have raised.

Firstly, Ed vd M:
-----------------

You said this: "You say you haven't the time DNA needed to become more. Why not, time is relative. I have a neural net that sleeps a deep sleep in a few millisecs and then the whole net changes, just fun."

Well, time in nature is not really the issue here - the problem is that I envisage the process requiring a huge amount of computation and if a process requires a massive amount of computations that would make it take an impractically long time, no amount of declaring that time in a computer is a an irrelevancy would make that computation execute faster.

As an example, suppose we looked at a simple problem: factorising a 1 million digit number. If I tried to work that out with a pencil and paper it would take a long time - the stars would burn out before I had actually got very far. If I ran this computation in a computer it would still take an impractically long time, irrespective of any argument that a second of program execution could be equivalent days of pencil and paper work. Some processes just require too computation to do in a practical time. You said this: "Why not, time is relative. I have a neural net that sleeps a deep sleep in a few millisecs and then the whole net changes.." -yes, but how many cells does this network contain. If it contained the billions of cells that exist in the human brain I doubt if it would be able to "sleep" in a few milliseconds on any computer available to us now: too much computation would be needed.

You said: "The time from monocell to multicellular lasted billions of years, much longer than other stages. And why, roughly to get a wall around more cells, so they can't escape. So maybe a wall or skin is important. A kind milestone a victory for evolution. What do you think?"

Well, I would agree that, for various reasons, cell walls were an important milestone in evolution, but I wouldn't think we have to worry about things like this when evolving software. Cell walls are needed because of the particular environment in which life exists in physical reality - computer software generated by a GA should not really have need of such things unless we actually want little creatures that wander round in some virtual reality that has similarities with nature.

You said (in a later post): "It's clear the "interpretative architecture" is a key notion. Maybe the author can tell some more about it."

Well, the article describes the sort of processes that I think would help us to make this sort of interpretative architecture - that is what the article is about, but it would be a good idea if I defined "interpretative architecture", so here is a definition:

An interpretative architecture is a function which maps the state of a finite state machine onto its next state. Any computer consists of memory contents and an interpretative architecture which controls how the contents of that computer's memory change in response to what they already contain. Simple example - for a Turing machine the interpretative architecture would be the state transition table, as it controls how the tape is changed in each state transition in response to what is already on the tape before that state transition.

How would a "good" interpretative architecture work? I don't know: that's why I suggest evolving it to work and for that reason I can say little about it.

Next, JohnMancine:
------------------

You said this: "First, when I refer to "optimize" I refer to how most GA's work. We have a fixed set of parameters, and we simply 'optimize' those finite set of params (encoded in a genome) until we satisfy our fitness fxn. The problem with this, is that we are extremely limited in the complexity we can reach. We will never have anything more than 'a highly optimized/tweaked' agent."

I regard the above comment as correct: most simple GAs work like that - they don't really produce a program - the basic idea of the program is there and they merely adjust it. An example would be using a GA to adjust the weightings in a chess evaluation function - all it would adjust is the importance given to various characteristic of the chess position. It would not fundamentally alter how the evaluation function works: it would not be writing code.I regard such GA work as shallow

Some work with GAs is deeper and does attempt to actually go beyond optimisation of parameters and actually produce new software and this sort of GA work to which my paper relates. I do not assume that any program written by a human is there to have its parameters tweaked, or to put it another way, I assume that ALL of the software consists of nothing more than parameters.

Let's look at a simple way of trying to evolve software. Suppose we expressed a program as a sequence of machine code instructions and then simply mutated these instructions, so the program could be altered anywhere, rather than just having its parameters altered. Naively, this may seem to allow us to evolve sophisticated software, but it will not allow this in any reasonable period of time - if it did we would routinely be doing this sort of thing and would be well on our way to machine intelligence. I am trying to propose a method here for making this sort of "total" GA approach practical.

You said: "That "interpretative architecture" is what we would consider "development" in an organism. Or more precise, what we attribute to "development" is the result of that complex interpretative process. Do you agree?"

Okay, yes, I'll go along with that, but I have some comments on that later.

I am very interested in the type of interpretative process - clearly it must be Turing equivalent, but this is not enough. In the example above I mentioned mutating machine code instructions and in this example the interpretative process is the rules of the processor itself that decide how the computer responds to its program. I think this would be a poor interpretation to use for evolution because it would lack "evolvability" (I know that sounds tautological!) and I think that finding interpretations that do not only provide Turing equivalency, but also give good evolvability is the main difficulty. The article is proposing a way of doing that.

There is one difference here between my model and biology - in biology a lot of the "interpretation" (but not, I think, all) goes into how things are BUILT from a blueprint (what you call "development"). In my model all of the interpretation goes into controlling how a computer program WORKS, given its blueprint. I don't think there is any philosophically important distinction between them, but modification of my method to make it explicitly more of a "development" sort of model would give increased efficiency - as my current, simplistic, system runs it would amass more and more levels of interpretation.

42 posts.
Friday 14 February, 22:51
Reply
• reply to Paul Almond, layers of interpretation

You say Paul: the problem is that I envisage the process requiring a huge amount of computation and if a process requires a massive amount of computations that would make it take an impractically long time, no amount of declaring that time in a computer is a an irrelevancy would make that computation execute faster.

Ed: Why do you envisage that. What knowledge do you have I haven't. I don't know if it require a lot of computations. And I have of course some info extra. My neural nets learn 40,000 times faster that mathematical neural nets. I compared it with SNNS. And that on a small PC.

Paul: factorising a 1 million digit number. If I tried to work that out with a pencil and paper it would take a long time.

Ed: Do the genes those computations? Do they write on paper. Maybe there are other models possible, don't you think. In any case I don't assume genes are computing. Maybe we can play with it. But no computing, we can compute and we have taught the computers to do that. Ever seen a mathematical tool in the genes. I am also a math Paul.

Paul: computer software generated by a GA should not really have need of such things unless we actually want little creatures that wander round in some virtual reality that has similarities with nature.

Ed: This means you should have a complete picture of all properties of the cell wall. You know probably as well how complex that wall is. With many processes. Each day researchers find more. The knowledge is nearly exploding. You answered my cage function, but it's an open subject as well. Can we just skip it?

Paul: An interpretative architecture is a function which maps the state of a finite state machine onto its next state. Any computer consists of memory contents and an interpretative architecture which controls how the contents of that computer's memory change in response to what they already contain. Simple example - for a Turing machine the interpretative architecture would be the state transition table, as it controls how the tape is changed in each state transition in response to what is already on the tape before that state transition.

Ed: I see this in a computer, but coding is combining the reality of the genes and the reality of the computer, I think. Could you give a kind of description in the genes, the molecular processes. You copy functionality isn't it. Or do you want to state. I want this so. Many people act in this way. I want it so, and then it must be so.

I have a recognized strong AI project, not so liked here, but very true and I have to use my senses, and the sciences are my senses as well.

Paul: How would a "good" interpretative architecture work? I don't know: that's why I suggest evolving it to work and for that reason I can say little about it.

Yes "good" isn't a statement, but a result, the architecture has to prove itself, like in a GA, the whole path genes work they have to prove themselves. You are completely right in this. I like it to think at this idea. It doesn't interest me how the modules in the computer work as long as they work. This is our ever returning famous duck. But the question is not what I want, that's clear, but how can I realize that. What do you think?

Paul: There is one difference here between my model and biology - in biology a lot of the "interpretation" (but not, I think, all) goes into how things are BUILT from a blueprint (what you call "development"). In my model all of the interpretation goes into controlling how a computer program WORKS, given its blueprint. I don't think there is any philosophically important distinction between them, but modification of my method to make it explicitly more of a "development" sort of model would give increased efficiency - as my current, simplistic, system runs it would amass more and more levels of interpretation.

Yes, I agree with you that it only has to work in the way you see in nature. But where in nature you see your blueprint. I only see it works in nature as well and in a marvelous way. But I don't see a blue print. How can you make a blue print? What is your blue print Paul?

It's a very nice subject with nice questions, thanks

Ed van der Meulen

222 posts.
Saturday 15 February, 09:13
Reply
• Layers of Interpretation

Ed: Why do you envisage that. What knowledge do you have I haven't. I don't know if it require a lot of computations. And I have of course some info extra. My neural nets learn 40,000 times faster that mathematical neural nets. I compared it with SNNS. And that on a small PC."

Okay, but this isn't a neural network. It is a simulation of Darwinian evolution, not exactly noted, in nature, for being the quickest process imaginable. This assertion is supported by the failure of GA techniques to develop very sophisticated software so far and by my reasoning about the interpretative architecture needing to provide evolvability for the whole process to work reasonably quickly.

Ed: Do the genes those computations? Do they write on paper. Maybe there are other models possible, don't you think. In any case I don't assume genes are computing.

No, the genes do not do computations. The computations are done as a result of the top layer of the machine undergoing state changes. The genes, however, are the initial state of the machine in this model.

Ed: This means you should have a complete picture of all properties of the cell wall.

What cell wall? This is just computer software being evolved to fulfil a purpose. It does not have a one to one correspondence with systems in nature.

Ed: Yes, I agree with you that it only has to work in the way you see in nature. But where in nature you see your blueprint. I only see it works in nature as well and in a marvelous way. But I don't see a blue print. How can you make a blue print? What is your blue print Paul?

The way in which the blue print is represented is as the initial state of a computer memory, though this is complicated a little by the use of successive, multiple layers. That initial state, in a given layer, will not persist long as the interpretative architecture will then cause it to undergo state transitions. There is no real distinction between the blueprint and the software in this model - the blueprint is merely how we set the software up at the start.

42 posts.
Saturday 15 February, 11:12
Reply
• Layers of Interpretation 5

Hello Paul Almond

Paul: Okay, but this isn't a neural network. It is a simulation of Darwinian evolution, not exactly noted, in nature, for being the quickest process imaginable. This assertion is supported by the failure of GA techniques to develop very sophisticated software so far and by my reasoning about the interpretative architecture needing to provide evolvability for the whole process to work reasonably quickly.

Ed: I know it was an example that something could made faster than many other think. See it as an example, not that this is an NN and your making a simulation of Darwin's Ideas, and maybe some more modern as well. Darwin certainly was a good thinker but all can be improved. Just what you call interpretation to another layer that is more complex than Darwin thought. But what do you expect in the 19th century. He was a brilliant man. See my NN as only an example.

Paul: No, the genes do not do computations. The computations are done as a result of the top layer of the machine undergoing state changes. The genes, however, are the initial state of the machine in this model.

Ed: That can be true but evolution itself has also "developed", so the layers are there as well and also without computations. Do we have a misunderstanding? All in nature not touched by man can't compute. Also not higher layers. They can remember things but computing is also saying etcetera. I don't understand your answer. I thought you wanted to copy the evolution? Starting with Darwin and probably with modern info as well. And not just an idea of evolution. We know both evolution is complex.

Paul: The way in which the blue print is represented is as the initial state of a computer memory, though this is complicated a little by the use of successive, multiple layers. That initial state, in a given layer, will not persist long as the interpretative architecture will then cause it to undergo state transitions. There is no real distinction between the blueprint and the software in this model - the blueprint is merely how we set the software up at the start.

Ed: Do you want to show a kind of evolution of computer memory? Do you think genes and computer memory can be compared so they evolve in the same way? How can you know that? You always can try of course.

When we see computer memory virtual it's a long one dimension storing place. OS and programs fill it, but is this the same as genes communicate? Please explain me this. Genes have certainly margins, Normal computer memory is exact. And margins are vital in all the biology, I think. Biologists think so. Are genes not more a struct than a computer storage cell?

Maybe I put you difficult questions. Then I am sorry for this. Please let never your enthusiasm be tempered by a strange opinion. You can go on your own way, like you do Paul and then I wish you much success.

Ed van der Meulen

222 posts.
Saturday 15 February, 12:45
Reply
• Reply to Layers of Interpretation 5 by Ed vd M

Paul: Okay, but this isn't a neural network. It is a simulation of Darwinian evolution, not exactly noted, in nature, for being the quickest process imaginable. This assertion is supported by the failure of GA techniques to develop very sophisticated software so far and by my reasoning about the interpretative architecture needing to provide evolvability for the whole process to work reasonably quickly.

Ed: I know it was an example that something could made faster than many other think. See it as an example, not that this is an NN and your making a simulation of Darwin's Ideas, and maybe some more modern as well. Darwin certainly was a good thinker but all can be improved. Just what you call interpretation to another layer that is more complex than Darwin thought. But what do you expect in the 19th century. He was a brilliant man. See my NN as only an example.

I may be missing the point here, but I am not proposing that ANY Darwinian method will be too slow to implement on a computer to make computer software. I am suggesting that the standard method, without giving conisderation to the issue of getting an interpretative architecture evolved WILL be too slow. You seem to be suggesting that I should accept that improvements can be made to algorithms to make them run quicker - but that is exactly what I am trying to do.

Ed: That can be true but evolution itself has also "developed", so the layers are there as well and also without computations. Do we have a misunderstanding? All in nature not touched by man can't compute. Also not higher layers. They can remember things but computing is also saying etcetera. I don't understand your answer. I thought you wanted to copy the evolution? Starting with Darwin and probably with modern info as well. And not just an idea of evolution. We know both evolution is complex.

I disagree. The way that organisms are put together definitely does involves computation. The fact that this computation is not being done by systems that we would recognise as conventional computer systems. If we had a powerful enough computer, deriving an organism's structure from its genetic code would require a lot of computation, so when the organism is derived from its DNA in nature, the process that is going on is equivalent to computation. Whether it is actually computation, or just equivalent to it is just semantics and has no bearing on any of this. A process that is equivalent to computation can be modelled in a computer. I do not want to copy evolution. I want to use the basic process with higher levels of abstraction.

Ed: Do you want to show a kind of evolution of computer memory? Do you think genes and computer memory can be compared so they evolve in the same way? How can you know that? You always can try of course.

No - I am not trying to evolve computer memory. I am trying to evolve computer software. The software consists of symbols in a sequence of locations in a computer memory, so it is natural that this would involve evolving the contents of computer memory.

When we see computer memory virtual it's a long one dimension storing place. OS and programs fill it, but is this the same as genes communicate? Please explain me this. Genes have certainly margins, Normal computer memory is exact. And margins are vital in all the biology, I think. Biologists think so. Are genes not more a struct than a computer storage cell?

Not really an issue - the issue is how the contents of that memory are interpreted by the system that controls how the computer undergoes state changes. In fact, the description of a computer memory as being a 1 dimensional sequence of locations is purely a convenience to allow us to assign each location a number. Locations that are in proximity need not be related to each other in any way, unless the interpretation system causes this and locations that are far apart can be related to each other if the interpretation system requires this. The representation of computer memory as a 1 dimensional sequence is an abstraction for our convenience. Of course, the interpretations applied in conventional computers do tend to associate memory locations with those that are in proximity. For example, when a computer has executed a command the CPU program counter is incremented to process the next command, which is in proximity to the previous command - but it is only interpretation of the memory's contents by the CPU, which is responsible for state changes in the memory, which makes this proximity meaningful. The interpretation can give the system any properties that are favoured by evolution and can relate the memory locations to each other in any way. For example, if we took a sequence of numbers that represented the outputs, connection strengths and threshold values of all the cells in a neural network and then had an interpreter that ran a neural network simulation perform state changes on this system then it would act like a neural network - the properties of the memory would be irrelevant.

This, in fact, happens all the time with computers. Data can be placed into a computer memory and interpreted in various ways to make the structure of the memory irrelevant.

In fact, in principle, ANY Darwinian evolution model running on a conventional computer is really just a sequence of symbols and, in fact, any computer program at all is just a sequence of symbols - this does not stop us from modelling any systems we wish to on computers.

I understand your point that genes are not simple numbers and it is a good one actually, but we do not need to regard each single memory address as being analogous to a gene. We could consider a number of memory addresses as being analogous to a gene and exactly what a gene is in this sort of system is dependent on how it is interpreted - I would expect a number of layers of interpretation to need evolving before it becomes meaningful to describe what the system is doing in terms of genes.

42 posts.
Sunday 16 February, 18:07
Reply
• Layers of Interpretation 6

Hallo Paul,

Paul: I may be missing the point here, but I am not proposing that ANY Darwinian method will be too slow to implement on a computer to make computer software. I am suggesting that the standard method, without giving conisderation to the issue of getting an interpretative architecture evolved WILL be too slow. You seem to be suggesting that I should accept that improvements can be made to algorithms to make them run quicker - but that is exactly what I am trying to do.

Ed Yes and I mean exactly that. I am a math but I don't look mathematical at nature. In this way I have made in an open source project a neural net that 40,000 times faster works than mathematical neural nets and can categorize. Not so bad, isn't it.

So the point is for me is the math-box too small for a good algorithm.

I will explain my view.

Suppose we see particles. They move. We look at relations between particles and we see two movements, to and fro. We are only interested in the result, so we see no more than the movements to and fro. Mathematical you say maybe this is a high order movement. I say maybe, but the result is only counting.

For a cell this means a signal enters or not.

Oh, we see also exchanging of material. Well let us look closer. What is that when the material exchange is enlarged - particles that go to and fro. The fractal-like world! So repeat. But now no repeat top-down, but bottom-up. So the modules have only a = b, a++, a--, IFs, and very many repeats (whiles) and that goes fast on a computer.

I am maybe a renegade with a successful project. And the algorithms you see only how streams can go and you let them go and the repeats of repeats give a result, always brighter than you can think of.

But we think, develop and code what I call factual. Start with the facts, not with a theory and just trust your brains. (factual thinking FT)

In my project we discuss in a friendly way about these things.

I have written a promotion article to all places of the world, but many mathematician don't see it as a good thing, and I'm just sorry for them. For all info I use you can just google and you have your own brain to think it over.

Paul: I disagree. The way that organisms are put together definitely does involves computation.

Not in the way I think and code.

I understand your further reasoning but the present answers will be enough I think. I have just another approach.

However I have read your replies carefully and I can later answer them.

My email address = ameulen@users.sf.net

Ed van der Meulen

222 posts.
Sunday 16 February, 18:53
Reply
• misunderstanding between paul and ed

Ed,

The analogy that Paul is making between Computer memory, and genes in nature as a form of nature's memory is described by Ray Kurzweil towards the beginning his book "The Age of Spiritual Machines"

The Age of Spiritual Machines: When Computers Exceed Human Intelligence

This is a paper from Ray's website that talks a little bit about this concept (among other things)
http://www.kurzweilai.net/meme/frame.html?main=/articles/art0134.html?m%3D1

There is an excellent description of Turing machines in chapter 2 of Roger Penrose's book "The Emperor's New Mind"

The Emperor's New Mind: Concerning Computers, Minds, and the Laws of Physics

tr0p

15 posts.
Monday 17 February, 16:57
Reply
• misunderstanding between paul and ed, is that so?

I have a good contact with Jay Kurzweil. He appreciates my view now.

Sorry trOp, all okay.

222 posts.
Monday 17 February, 17:07
Reply
• insightful article

Paul,

You have some nice ideas here. I haven't done much work with genetic algorithms, but I have contemplated their possibilities. In the past, I have usually come to the conclusion that genetic algorithms will not be productive for almost anything but parameter tweaking, but your analysis was insightful.

This is what I took from your article: Traditional genetic algorithms used for software creation will not be as productive as genetic algorithms evolved from the most fundamental computations, because of flexibility; starting from an existing framework eventually caps complexity.

This has piqued my curiosity, because I had not thought about this fundamental level, and it makes sense now that you pointed it out. I have some questions for you and others on this forum though =)

What kind of software would an evolved compiler create? How do we obtain a fitness function for each level? I'm going to assume that the fitness function is obtained from some sort of external environment (possibly chaotic?) so that the process can be automated. What kind of conditions would be optimal to provide the right environment for this evolutionary compiler process to thrive? And finally, what kind of interaction can we humans expect to have with this?

tr0p

15 posts.
Monday 17 February, 16:19
Reply
• insightful article, interesting questions trOp

Good questions trOp

TrOp: What kind of software would an evolved compiler create? How do we obtain a fitness function for each level? I'm going to assume that the fitness function is obtained from some sort of external environment (possibly chaotic?) so that the process can be automated. What kind of conditions would be optimal to provide the right environment for this evolutionary compiler process to thrive?

Ed: In my approach which is in fact prephysical, the necessary things for higher levels are just the same mechanisms in other circumstances. so you haven't to code some extra function. In fact I don't know when a higher layer will be reached.

TrOp: And finally, what kind of interaction can we humans expect to have with this?

Ed: For me are that constraints, parameters for the module that push a module to react. Of course all user functions have to be coded apart. The user is a strange element in the process, I think. But I do it with constraints, so not determining.

Ed: my view isn't so popular here. I hope I can stay posting, but I am not sure about it. So when I stop with posting it's not my wish.

Ed van der Meulen

222 posts.
Monday 17 February, 17:03
Reply
• recursion

Ed,

I read most of your posts, and the thing I like most is how you promote inquiry.

Keep representing your views, because to many people they will be insightful. I plan to read some of the books you recommended, especially Emergence. We all learn from each other. Its like chaos.

Ed: In my approach which is in fact prephysical, the necessary things for higher levels are just the same mechanisms in other circumstances. so you haven't to code some extra function. In fact I don't know when a higher layer will be reached.

tr0p: Sounds like recursion. I wonder why there is no section in this website for recursion? I think recursion is one of the most under-developed ideas with such wide application. In a sense, the evolutionary process is a recursive process from which complexity emerges. The mandelbrot set is another recursive process from which complexity emerges. What do you think?
tr0p

15 posts.
Monday 17 February, 17:51
Reply
• for me an unexpected reply, I don't recognize myself in your posting

TrOp: I read most of your posts, and the thing I like most is how you promote inquiry. You stop learning when your mind is closed.

I'm myself a math and yes some arguments of maths are very well know.

Ed: stops my learning, is my mind ever closed? I understand the posting very well trOp. I have just another view. I know most of the things others are posting. I know of that book of Ray Kurzweil as well. But things change. That is the point. Nearly everbody sees me as a good listener instead. I prefer to do a step forward.

TrOp: When a concept does not fit within your abstract conceptualizations, perhaps sometimes it is your conceptualizations that need to bend, rather than the concept itself. <p> Keep trying to represent your views, because to many people they will be insightful. I wish I could understand your ideas better though :/ I plan to read some of the books you recommended, especially Emergence. We all learn from each other. Its like chaos.

Ed: Yes you see me so. Why such a posting about the personality and the intellectual power of someone. Have I done you something?

There are not many who see me so, I'm sorry for that trOp. You see me as not a bright thinker, that's clear.

Ed van der Meulen

222 posts.
Monday 17 February, 20:07
Reply
• Good trOp, a member who knows me better

> Good morning Ed!

> I'm so sorry for the delay. Your mails are so nice and
> so as your thoughts. And you are a splendid listener.

This is me trOp, not what you think of me.

I know I could have typed in that text, but I hope you believe it's copied from an email.

So please no postings anymore about how intelligent I am and which social abilities I have, I do that neither with you.

Ed

222 posts.
Monday 17 February, 20:24
Reply
• sorry, my sentence was misleading

tr0p: "You stop learning when your mind is closed. When a concept does not fit within your abstract conceptualizations, perhaps sometimes it is your conceptualizations that need to bend, rather than the concept itself."

This statement is not directed at you personally Ed, it is merely an observation that I have made that applies to all people, including myself. I hope people don't take this out of context. Perhaps I would have been more clear if I said "People stop learning when their minds are closed.."

Please don't take offense to my posts, as I meant to encourage you, not insult you :/

15 posts.
Monday 17 February, 22:27
Reply
• Solved, your emails are very good trOp, thanks for that

Is this not a good thing. We have solved our collision in a friendly way by emailing personally.

I'm glad emailing exists as well.

So TrOp and I are on one line again.

Thanks trOp.

Ed van der Meulen

222 posts.
Tuesday 18 February, 06:55
Reply
• Re: insightful article

Thank you for your kind comment and questions tr0p.

tr0p: This is what I took from your article: Traditional genetic algorithms used for software creation will not be as productive as genetic algorithms evolved from the most fundamental computations, because of flexibility; starting from an existing framework eventually caps complexity.

Yes, and also I suggest that naively attempting to mutate low level code is likely to fail, hence the multi-layered approach I suggest as a solution.

tr0p: What kind of software would an evolved compiler create?

Well, the method discussed here mainly deals with evolving interpreters rather than compilers, but I made a brief reference near the end of the article to evolving compilers instead. Evolving compilers would give greater efficiency, but there isn't much philosophical difference between the two approaches.

There are a number of answers to your question, depending on how thq question is taken. One answer is that it would create the software, ultimately, that best satisfied the evaluation function. Another answer is that this software would be extremely messy with no concept of anything like structured design or aesthetics.

tr0p: How do we obtain a fitness function for each level?

Ah, now we are into details about what is going on here.
The first thing is that the fitness function for each level is designed to test nothing other than how good it will be an interpreter when evolution starts to evolve the next level. You mentioned recursion in another post and there is a decidedly recursive characteristic to this - interpreters are tested for their ability to interpret programs and are then used as interpreters of software that is itself evolved to become interpreters.

Suppose we are testing layer n - our fitness test depends on doing a large number of separate evolution experiments in which layer n+1 is interpreted by layer n and we see how will layer n+1 evolves to satisfy a given fitness test - so our fitness test for layer n+1 involves lots of separate fitness experiments, each with its own fitness test at layer n+1.

What are the fitness tests done at layer n+1?

Well, we are trying to establish an interpretation system that gives good evolvability, so these tests do not need to conform to any real world problems. Ideally, we would use an infinite number of fitness tests at layer n+1, but clearly we can't - we need to use a large enough sample of fitness tests to establish how well layer n+1 is LIKELY to evolve for some unknown evaluation function when layer n is used as an interpreter.

You said that you thought that these would come from some external environment - yes, in the sense that the source of them should be some external program intended to generate fitness tests and you also suggested that it should be automated, which I also agree with.

We need a way of getting hold of a large number of arbitrary evaluation functions - it does not matter really what they are, but we do need a way of controlling the difficulty of satisfying them. This would need more work if somebody tried to do this for real, but I tentatively suggest that something like this could be a possibility:

We make a system that creates random Turing machines. Whenever we need an arbitrary evaluation function we generate a random Turing machine and the score given by this is simply based on how well the system under test mimics the behaviour of this Turing machine. We can control the difficulty by altering the length of the Turing machine tape. For a very short it should be very easy to evolve something that duplicates its behaviour well and for a very long tape it should be very hard. This is only one way of doing it - others, and probably better ones, will be available. It is important to be able to control the difficulty, because we need to make sure that when we start with the lower layers the tasks are at a level that is manageable. At first though, there will be hardly any evolution present and the tasks chosen should be simple enough that they can be satisfied (to some degree) merely by hitting on the solution by making random programs. As more layers are added, and as the sophistication of the interpretation increases, and the evolution process gradually starts up (as the evolvability provided by the interpretative layers increases) the task difficulties can be increased.

That deals with part of the answer to your question, but, of course, if we just kept turning out random evaluation functions for the system to satisfy, we would not get anywhere - we would simply be attempting to evolve improving interpreters with no actual use for the process.

When enough layers have been generated, and the sophistication of the interpretation is adequate, the evaluation functions should change from simple arbitrary functions to actually being the problem that we want to solve. This would probably involve some sort of simulated environment in which the system has to play some sort of game. Having the system play this game against its own near relatives would be a nice touch for establishing an arms race and this sort of interactive competition approach has been used in GA work before. At the end of this we should get a system that plays the game well, so the game should closely match the problem that we want to solve, or we should use a range of different games requiring more general abilities.

One issue is - do we suddenly switch over from improving the interpretation with random evaluation functions to using task specific evaluation functions that get the system to do what we want to do or do we change over gradually, using some method of making the evaluation functions gradually become less random and more like the task we have in mind? The first method would involve no more layers after the decision to switch over was made - one the interpretation is considered good enough, the whole process would become task specific with no more attempts to increase interpretation. The second method would involve still adding further layers in an attempt to increase interpretation, and still using a large number of evaluation functions to test each layer, but these would gradually start to resemble the task that needs to be completed.

tr0p: And finally, what kind of interaction can we humans expect to have with this?

That is a really difficult question at this stage and any answer is simply speculation. Firstly, we would not have the sort of relationship that involves programming systems like this - we would be unlikely to have much idea about how they worked. We also could not really evolve the system specifically to interact with humans to much of a degree: the evaluation function, or fitness test would have to be automated to a high degree for this to work and would probably have to be done in the equivalent of a virtual reality to get any reasonable efficiency, perhaps with a few generations of "real world adaptation" near the end. Humans could not practically play a part in most of the evolution.

The process would be more useful to evolve systems to survive in various environments than to deal with people, but this does not mean that direct interaction with humans is ruled out. Ultimately, I might envisage using a method like this to evolve some kind of generalised learning system that does as well as possible in any given environment (the task specific fitness test involving exposure to a large number of environments), and then effectively training it, as we do with animals, to interact with humans. This would be done by humans providing sensory inputs, in response to actions by the system, to get it to evaluate certain actions as favourable and others as less so.

Have I answered your questions okay? Let me know if I need to be clearer about anything.

42 posts.
Tuesday 18 February, 12:36
Reply
• I will follow your tries for a solution

Hi Paul,

A short posting.

I will with interest follow how you come to a solution to get layers, with the way of computing them. You build up. You hope to see emergence.

Some people talk about predictable emergence. When you have that, much simpler mathematical ways exist, you can optimize then for solutions.

But in nature emergence is unpredictable and that's not nice Paul to do it with the current math box. Don't you think more people have tried it. You have an emergence function or interpreting function for the layers. Those layers will contain structure, like always. But beforehand you don't know what you will meet at higher layers. What kind of structures.

Writing code? What do you like to write? How do you want to distillate code from structures that are just made.

I will with interest follow how you solve these problems, not knowing and still processing.

Did you read this posting Paul:

• Is nature predictable or not, consequences

Ed van der Meulen

222 posts.
Tuesday 18 February, 15:44
Reply
• Why the layers?

Hey Paul,

First off, nice essay! It was a pleasure reading it :)
Second off, since English is not my native tongue, I will try my best to express myself clearly and unambiguously, but don&#39;t pin me down on my words.

Your essay describes the importance of interpretative layers within a system in order to make it evolve to a higher complexity. My question to you is: Why do you need layers to describe it? From my point of view, evolution started with atoms, then molecules, cells, organisms, etc, that&#39;s common knowledge. But why would you want to define different layers of interpretation here? Of course you can say that DNA replicating enzymes interpret the code on a different level than the atoms from which the DNA strand is made, but just cause the complexity of the system is a lot greater, doesn&#39;t mean we&#39;ve actually gotten to a &#39;new level&#39;.

In your essay you say this:

"The bottom level of this system is the basic laws of physics. At the start there is nothing to do the interpreting except the laws of physics. Systems evolve that are interpreted by these laws. The laws of physics have not been designed with evolvability in mind and the process of evolution is extremely slow, with an effective upper limit on the sophistication of the systems that it can produce in any reasonable time.

This is inadequate for producing anything like complex animals, or even bacteria, but this is not what evolves."

You seem to imply that the laws of physics, from which molecules evolve, are not capable of creating complex organisms without reaching a higher level of interpretation (such as DNA). MY opinion is that there is no such thing as a &#39;higher level&#39;, because the limits of such a &#39;level&#39; are 100% arbitrary. Isn&#39;t a molecule comprised of atoms already another level? Two molecules? 24? And what about 1 cell, 2 cells, 3 cells, 23 cells? I say it&#39;s perfectly possible to explain all of evolution from the basic laws of physics on out. You say that evolution would go very slow from the most &#39;basic&#39; level, but I think you do not grasp exactly how it works. If a system has been created (such as a few molecules combined), using the laws of physics, then that system as a whole can evolve together with other systems. But since the limits of your &#39;levels&#39; are completely arbitrary, this happens all the time. Which brings me to my next point.

You don&#39;t need to define those &#39;levels&#39; in order to reach high complexity.

I strongly believe that the creation of &#39;layers of interpretation&#39; you describe is a natural process which, if the starting conditions are chosen correctly, will evolve automatically. In your essay, you compare mutating computer symbols with mutating DNA code. Your point is that the computer symbols cannot create the same complexity as the DNA, because of its underlying architecture. This is of course correct, but what is your point? It seems to me like your comparing apples with pears. Given enough time, the computer symbols will evolve layers of its own and eventually reach the same complexity as the DNA has.

Maybe I should ask you a question, maybe I misread you:

In what way do you suggest we take the evolution of &#39;layers&#39; of interpretation into account when designing base conditions? (laws-of-physics-like) I do not understand how you would design the starting conditions to include the possibility of evolving evolution. You state that we have to "adapt this computer to allow it to be used as an architecture machine.", with "computer" being the first layer of architecture. I don't think that it is as easy as you say it is. Of course we can make sure that the base architecture serves as input for the higher layer, but this has to be included in the starting conditions. The way you put it is absolutely correct, but it's not concrete, at least not from my newbie point of view, and I don't see how realizing the existence of 'layers' will solve the complexity problem. The starting conditions don't have to be very complex, but after reading your essay, I still have no concrete image of what they would look like. Maybe you could summarize them for me? After all: they should be pretty simple, as are most laws in physics.

Thank you for your time.

(Btw, I just turned 18, I do not claim to know a lot about the way programming works, but I believe I have a decent set of brains and I would like to hear your reaction to this :))

- Thom

1 posts.
Tuesday 02 January, 09:30
Reply