The Pinocchio Function, Part 5: Amazing Technicolor Dreamcode
So there I was, having written enough code to really wet my appetite.
Once I had gotten the concept down, and flexed my muscles a little, I got to thinking about how the instruction set was really just a metaphor for what was really happening, which was this complex interaction and eventual abstraction of functionality into larger functionality. This in turn lead me to think more about how to model the true interaction for what it was I'm trying to do. So I set aside the old code, and started fresh in a completely different language (Java, if you're interested), and started to focus more on the way in which behavior was encapsulated. This lead to the eventuality of what I now call the Abstraction Engine.
The Abstraction Engine took a wholly different approach to it's design, because right from the get-go it was never designed to 'solve problems', rather it was designed to explore the way that code executing in parallel can interact and build off their own abilities by leveraging other aspects of what their neighbors were doing, where neighbors was this loosely defined concept that had no bearing on their spatial relationship to each other.
And it was watching how one piece of code would poison another to death with clever tricks of encapsulation and a little magic that it had invented on it's own when I finally had the ultimate confirmation of what I had always dreamed of, and found a new and profound understanding of the nature of life itself.
It was surely by no accident that I finally obtained these understandings, any more than a bee's flight to a flower is no accident; neither are pre-destine, and yet destiny still prevails due to the serendipitous nature of our universe. To deny it requires denying all of existence, which leaves me but a clever rook in some much larger game of multi-dimensional chess; my moves are unknown, but my methods are constrained, and so my destiny is predictable. I recognize now that the answers I have searched for are every bit as complex and profound as I imagined them to be.
The moment of enlightenment happened when I was stepping through a particularly treacherous pieces of code that had evolved the ability to seemingly defy boundaries that I had put in place to prevent it from replicating too fast. In particular I was looking at how the code had happened upon a sequence of events that actually allowed it to change the equivalent of it's digital fingerprint to masquerade as another piece of code, yet retain a sense of it's original identity. In theory this should have been impossible, but I had managed to allow a bug to slip through in a seemingly unrelated piece of code, and the code had figured out how to manipulate that bug in a very complex sequence to do what would have otherwise been impossible to do.
The end result was that now I had code that was breaking the boundaries of my framework by exploiting a bug that I hadn't 'told' it how to exploit, AND that same code was, at critical moments, changing it's appearance to pass by my security undetected. It did so though a highly unlikely set of interactions involving collusion between multiple disparate pieces of code, and in repeats of the scenario, eventually similar conspiracies of masquerading identity would form.
It wasn't until I actually got my mind wrapped around the highly unlikely set of circumstances and the path that they took in forming that I saw the profound truth reveal itself before me, like a butterfly's wings unfolding as it emerges from it's cocoon: These complex interactions form not out of randomness like I had initially thought and designed them to do, or out of the design of some intelligence, but from co-evolution inter-operating on multiple scales of force, much like our own forces of gravity, weak, electro-magnetic, and strong do. Each piece of code... each organism if you will... plays it's specific role at it's specific time, but in doing so enables other aspects of the system in subtle and complex ways in this symphony of orchestration which surpasses the complexity of the silicone on which it exists, and steps firmly into the domain of emergent process modeling, or more to the point what we often call biology when applied to organics. What may seem like a benign change or even a sophisticated one in one aspect of the system in one piece of code has profound and lasting effects that don't become clear until the whole of time and space as it's defined within my simulation is examined, and the forces of natural selection have taken their toll. Evolution works a lot like my favorite quote from Bill Cosby: "I told you that story, so I could tell you this one." in that it reuses it's previous accomplishments and breakthroughs as a foundation for it's further feats in this grandiose act of self-organization, but does so in a way that's very subtle and even highly suggestive.
Erich Jantsch has talked about this extensively in his book, "The Self-Organizing Universe" which in turn draws heavily on the work of Nobel Prize winner Ilya Prigogine concerning dissipative system and nonequilibrium states. The physicist Hermann Haken in 1978 suggested the label of "synergetics" for the field that studies the collective patterns emerging from many interacting components, as they are found in chemical reactions, crystal formations or lasers. Another Nobel laureate, Manfred Eigen has focused on the origin of life, the domain where chemical self-organization and biological evolution meet. He has introduced the concepts of hypercycle, an autocatalytic cycle of reactions containing other cycles, and of quasispecies, the fuzzy distribution of genotypes characterizing a population of quickly mutating organisms or molecules.
I'd like to think that if they took a look at what I was doing today to reproduce these behaviorism in the digital domain instead of the chemical or biological one, they would be proud.
So now the question from the final line in Ghost in the Shell begs, "Where does the newborn go from here? The net is vast and infinite." and surely this must be my answer: The net. The internet is a perfect place for such experiments because it provides an ever increasing amount of resources, and allows for emergence of complex behavior on a grand scale, one we've already realized on our own image; when a blogger posts a juicy story, the population reacts in complex and unforeseeable ways which in turn pushes other forces to bear, and it happens at the speed of humans who are instantly connected. When computers can perform the same feats... and I have them doing the equivalent on a microbe scale... they will do it at the speed of the internet minus the humans.
What will happen when the equivalent of wild bacteria are released into the otherwise sterile and static cleanroom that is our world of the digital domain, provided with an unlimited supply of food, and left to grow? I can't know for sure, but I have my guesses: It will likely follow our own planetary evolution, which is to say that the first thing that will happen is a layer of the digital equivalent of pond scum will form and cover everything that it can reach, and be wholly uninteresting. And that's where it's likely to stay for a while, happy and content to exist and reproduce, until the conditions are right for it to make the leap from the equivalent of a single-celled-single-minded organism to something more complex. That is, at the very least, what it would do if I just stuck it up there right now. However, I think I can improve upon that situtation, by stacking the metaphorical deck if you will.
You see the trick here isn't in creating the ultimate code which gives rise to life, rather it's in creating a framework which allows for increasingly complex interaction in multiple fields like our universe does with the different forces which hold our existence in a relatively stable yet ever changing way. From a 10,000 foot looking down view the forces of gravity, weak, electro-magnetic, and strong combined with sufficient mass/energy provide enough complex interaction to account for some really interesting behaviors. The theory is to abstract that same complex interaction into something entirely different, and you should be able to produce some of the same results, and the code I'm working on demonstrates it can be done.
Digital intelligence is still outside of our abilities, but life as a science has officially reached a new plateau as it's forced to expand and cope with reaching new domains to exist within. What I have done is simply the proof of concept that demonstrates when sufficient pressures exist within the domain to enable the right changes, profound results can be accomplished, just like in biology and chemistry. This is in no way new, as many people have proven the same thing many many times before me. I've just demonstrated it in a potentially exciting way, and when I'm confident enough that it's sufficiently proven as a system, I hope to use it to enable all kinds of things.
Labels: Abstraction Engine, AI, AL, ALife, artificial intelligence, artificial life, disruptive technology, evolution, programming