Tuesday, June 12, 2007

Animal's Source Code

I am writing code as fast as I can. It's tedious but I have set a July 1 deadline for myself. That's when I expect Animal to be good enough for testing. I have already converted almost all the code for the chess pieces including their move logic. I am cleaning up the old code as I go along. Tomorow I will start working on the various sensors and effectors.

My initial plan was to release Animal's entire source code to the public as soon as I thought that it demonstrated a good enough ability to learn chess. And then it occurred to me that I have been slaving away on this project for many years to get to the point where I could honestly say to myself that I have a good understanding of how the brain works. Not once did I receive any support (financial or otherwise) from the general public. Sure, I have gotten a few words of encouragement here and there but, for the most part, I had to suffer the indignation and hardship of being branded a crackpot, a lunatic and a crank. It's not easy, believe me.

My point is this: Why should I release the source code to the public for nothing? I am willing to do it but I need a good reason. The way I see it, the public deserves nothing. And I'm still debating whether or not I should update the AI pages to reflect my current theory. I guess I just need to be motivated. Unless somebody out there can convince me otherwise, all the public is going to get is a binary executable. I am not sure they deserve even that. Sorry.

Monday, June 11, 2007

Animal Project: Progress Report

I am hard at work converting Animal's original C++ code to C#. It is slow going. Animal has about 150 classes. There is a separate class for each type of sensors, effectors and chess pieces. Take a look at the original design to get an idea of what's involved. Since I am new to C#, I am learning new things as I go and I make a lot of mistakes along the way. Fortunately, the Microsoft XNA Game Studio Express environment is nice because it catches a lot of errors automatically. One of the other nice things about it is that coding the sprite graphics is now pretty much painless.

I hope to be done with the conversion by this coming Sunday (June 16). That should give me about two weeks to play around with Animal's brain. That's going to be the fun part. If all works according to plan, by the first week of July, Animal will be learning chess more or less like a human being. That will be a first in the history of artificial intelligence. From my standpoint, true AI will have finally arrived in the world. More to come.

PS. The design for Animal's brain may seem like it's gonna need a lot of coding but it's really not all that complicated. Each layer is just an array of specialized but identical neurons. Once the code is written for one class of cell, it is used by all the cells of the same class.

Saturday, June 9, 2007

Logical Consistency in COSA

As many of you already know, the design of the COSA software model was heavily influenced by my ongoing research in artificial intelligence. One of the problems that every serious AI researcher or robot brain designer must confront is conflict resolution. How does one keep a robot from doing stupid things like trying to open and close the door at the same time, or trying to put both feet in front of the other? In other words, how can a behaving system (which is what a COSA program is) control the selection of its actions without introducing logical contradictions or conflicts? GOFAI (good old fashioned AI) experts would immediately suggest the use of predicate calculus with which to manipulate various symbols. Aside from the fact that the symbol manipulation approach to doing AI has been a dismal failure, the brain is known to process discrete signals (unnamed events), not symbols.

The beauty of discrete signal processing is that the behavioral logic of a signal-based intelligent system is not symbolic in nature but temporal. Timing is everything. This simplifies learning tremendously because there can only be two temporal correlations between events: they are either concurrent or sequential. Of course, a COSA program does not have to learn temporal correlations but event timing is the key to resolving conflicts in the program’s behavior. Logical consistency in COSA is governed by a single powerful principle that I have been calling the principle of motor coordination (PMC). I am not going to expand on it here but suffice it to say that the use of the PMC will find and resolve all internal logical conflicts in the behavior of a COSA program regardless of its complexity. The power of the PMC is its simplicity.