Sunday, June 04, 2006

AI Form

Here is how my artificial intelligence is supposed to work.

1. Static Patterns

The first thing which the AI is supposed to do is recognize concrete repetitions in the data. This means data that looks as if its been copied precisely from one place to another. This, I think, is the most obvious type of pattern, when the mind is untrained in a particular field. In many cases, we are not new to a particular form of patternfinding; in fact, for all of our senses, I think it's safe to say that we have built-in things to look for.

These 'built-in things' can be classified somewhat under the heading of looking for concrete repetitions that we have seen before. This is a second thing that we do (or, if we aren't new to an arena of sense, the first): look for the old familiar patterns that have guided us in the past. The AI must have a way of learning what to look for, based on what repeated patterns have been most useful. However, this really shouldn't be thought of as fundamentally separate from looking for repeats in the first place.

Looking for repeats is very mechanical, very simple. But it is the foundation of this model of intelligence. That is why I personally like this idea: that intelligence is founded on repetition, one of the simplest, most easily programmed ideas. If it is true, then there is no barrier between the human mind and the computer. No magical component to human thought that cannot be created in a non-human.

In fact, I give a warning. The idea of simply taking in concrete repeated patterns can be enticing to the would-be AI programmer. Technically, given enough data, it should be able to learn any pattern to an arbitrary degree of proficiency. But this is like assuming that we can only repeat the names of numbers that we've heard before. Many numbers have been said before; but if I were to make up an arbitrary 12-digit number, and was able to divide and multiply it by equally new numbers (say, sixty-eight point five two four nine) would you still say I was repeating only things I'd seen before? I've seen numbers and division, sure, but I'm able to make up the specifics. Something more complicated is going on. We don't just memorize; we also abbreviate, and in doing so, generalize.

2. Variable Patterns.

The first stage of this abbreviation is to define things that can "slip" in these static patterns. Just as a static pattern is defined by its constant insides, I like to say that a variable pattern is defined by its constant outsides. Anything set of objects that occur in similar context may be called a variable pattern. ("Similar", here, means that at least one identifiable element is precisely the same.) The search for variable patterns is similarly simple in concept. One can either tabulate the surroundings in which different perceptual objects have occurred, merging objects when some similarity is noticed, or one can look at some defining characteristic of a context, looking at all things that occur in that defined context and naming them a set (for example, all things that occur after a particular thing).

Note: defining either a variable or a static pattern should not limit the finding of others. Including something in a static repeated pattern should not limit it, and nor should inclusion in a variable pattern. Putting something in a set should not brand it forever; it is meant to facilitate further patternfinding, not to hinder other interpretations.

In practice, putting something in a static pattern or a variable pattern may well limit its use elsewhere. Patternfinding focuses on that interpretation of it. But flexibility should be included; some means of breaking down bad interpretations, and of looking at others.

The first use of variable patterns is to increase the scope of static patterns. Once something is put in a variable pattern with a few other elements, it and those others may be seen as "the same". If they are interpreted thus, the AI may be able to see an increased number of direct repetitions in the data. Once this ability is utilized, one can arrive at a model for data that can be used in the following way: the model can be unravelled from top to bottom, following directly the static patterns, and choosing randomly from the variable patterns. One then arrives at a random reconstruction of the data.

But we can do even better.

3. Correlation

We now have variables in data. And variables in data can be correlated.

If a static pattern is composed of at least two variable patterns, then we can look at the data to see if information about one gives us any information about the other.

In an uncorrelated state, if we have two variables, each with a certain number of states, the total possible number of states is the product of the two variable's state-numbers. But if, looking through the data, we see that less states exist, we can limit the stats that the variables can take on to make our model more accurate.

Each variable can take on all of its values. In an uncorrelated state, limiting one variable to a single value should not limit the other. But if we look through the data and discover that when we hold one variable still the other becomes more predictable, we have found a correlation.

4. Functions of Data

There is one more way of examining the data. Actually, this method is pretty general. It's like saying "the rest". In fact, the first three methods could be explained in terms of this one; but they seem so basic that I wouldn't want to.

This method takes any function which transforms the data, and then looks for patterns in that resulting data.

This method is intended to be used with the functions learned in the previous state. A correlation is, after all, a function. It takes in a value of one variable and returns the possible value(s) of the other. But in practice, not all functions absolutely have to be learned. Many can be (and should be) default. (Including default functions does not violate the goal of creating true intelligence if we already know that that function could be learned if necessary, given enough information.)

5. Integration

Each step creates another "interpretation" of data to be fed back into the whole process. But each also creates more, less visible data to be interpreted:

1: Each static pattern is not only part of a larger picture, but a pattern in itself. Static patterns should be examined for internal structure, not only external. Also, they should be compared to eachother, to look for commonalities of form.

2: Variable patterns, too, must be examined internally and in comparison to eachother. This involves a bit more: it involves first comparing several static structures to eachother, and then comparing this list to other lists like it.

3: Correlations, also, may follow patterns; rather than seeking out more data, one should sometimes look at the distribution of the data at hand to find more patterns. If we can determine in what way one state of one variable is tied to another in another in those ties that we have already found, we may be able to predict what is on the other side of the ties we have not yet determined.

4: Well, if I put something down for this one, it would seem a bit contrived. Only the first three need to wrap around. Not everything follows a pattern, you know.