End of Summer Update
Believe it or not, the lack of updates is a good thing. It means I graduated and got a good job and I’m working hard. Ok, well, not good for the site or any of you people out there in Internet land, but good for me.
Anyway, I wanted to let people know some updates on what I’ve been working on in my own time. Remember all those AI post a few months back? Well, it’s not completely dead. I’ve been working through some AI tutorials that are rather practical, at least for games. The concepts are all there. I might post the project files if people are interested.
On the conceptual front, though, I’ve been working through some issues and new ideas. First, the original plan was to have just a web of concepts represented by words, and have connections between these concepts. It would start with a few base concepts pre-programmed in, and the program would deduce meaning from the connections between words, and the base meaning it found. But I realized that it would be impossible to program in kind of meaning other than, say, yes or no. Numbers might be do-able, but how would I program the idea of a car, for example, or even the idea of an object?
The first solution I had was to forget about storing meanings at all, even the base ones. Just feed it sentences, and have it graph out connections and study those patterns to find out what to say. This would work fine for a chat-bot style AI. Given some input sentence, it would generate appropriate output. It might be unique output, but it would not be creative output. There would be no understanding of meaning, or any real drive for intelligence.
But out of this came two good ideas. First, forget about the base meanings. They will be impossible to program. The computer can analyse the connections to find similarities and patterns and find some meaning. The second is multiple layers of connections. The system can graph out relations between words in terms of how they are used, and what words they are used with as two separate graphs, then analyse the patterns in the two to create a third graph that would map phrases or sentences to other phrases that would provide the output.
I also thought about how people learn to communicate. At first, I concentrated on how we learn words and such. I realized that we learn by associating a particular sound/letter set with an object or action. We realize that a car is a “Car” when someone shows us a car, and tells us that it is called a car. This came partly from watching “Dances with Wolves”, but that’s another matter. The point here is that we, as people, can observe things better than a machine, and we have a built in understanding of what an object is. We can see a car, without knowing what it is or does, and know that it is some object. We see it move, and we might think it is an animal, but it is still an object. Computers, on the other hand, don’t have that advantage. We can’t just show a computer a car and expect it to figure out it’s an object. Image recognition is a whole new challenge, and even then, who says that it won’t recognize the background over that of the car?
The more I thought, the more I realized I was off course. I was not trying to develop a chat-bot AI, or teach a computer how to speak, but use that facility to teach, training, and provide an outlet for that intelligence. What drives people to communicate, or even thing through a problem? They have to have some kind of need or desire.Babies cry to get attention that they need help, or are hungry. As intelligence grows, the needs and desires grow more complex, so that it becomes a desire to find out what something tastes like, or be near people they recognize. They figure out, through trial and error, as well as by example, how to communicate that need. But the need itself is not to communicate, but communication is necessary to achieve that goal.
So the idea is that we setup a multi-layer graph of connections, starting first with similarities in what words are used together, then similarities in how words are used. This would then build a graph of what it thinks are meanings. These might simply be abstract nodes that the computer assigns meaning to. This will facilitate the communication. Then, to have the computer communicate, we present it with a goal, in the form of an evolutionary algorithm goal. To begin with, something simple could be used, such as atempting to get me, the user, to type a particular word. It won’t know the word to begin with, but will know it when I say it. Feedback controls will allow some measure of how the AI is doing solving the problem. The goal should be one that can be changed on the fly, if possible, so that, eventually, only a generic goal has to be set, and the AI can deside how to meet that goal. Having this need driven system makes the AI try to be intelligent and grow. By contrast, the chat-bot sytem would only grow and learn based on if it said the right thing, not if it tried to learn.

September 2nd, 2009 at 10:56 am
Yay! You’re still alive!