Sunday, March 16, 2008

Thoughts on Artificial Intelligence

The computer science field of Artificial Intelligence has sparked a lot of interest yet hasn't really turned up many visible products. There are a lot of projects out there and I don't want to even attempt to minimize the amount of effort that has been spent on AI research, but by and large there aren't many visible "AI" companies or tools that we use regularly.

A large part of that has to do with the confusion of what AI is? What does artificial "intelligence" mean? I know about programming language research. The goal there is to create expressive, productive programming languages. Systems research centers around operating systems, distributed systems, fault tolerance and other similar areas. But AI could mean different things to different people.

Change the Vocabulary

My suggestion is to do away with the term AI all together. It is not useful, even at a high-level. Modern software is pretty "intelligent". That is the goal of most software. We humans need a way to communicate with software in order to tell the software to do something. The software will respond with a set of terminology or actions that we understand. A lot of software is good at that. If I tell google to give me information on cars Google will return a set of listings on cars. I don't know the internal details, how it came up with the information. All I do know, I am normally happy with the results. The back and forth conversation with google was a positive one. Google is an AI. Microsoft windows/Ubuntu Linux are forms of AI? The seem pretty intelligent to me.

So the term AI doesn't mean a whole lot. Or at the very least, it is a misnomer. I am not totally set of this term, but it seems to fit for the time-being. "evolved, adaptive artificial systems". That is what we are looking for. Systems that have evolved past the "dumb" systems that we are normally used to. Outside of google, most applications are built with every action, feature is known. If a piece of software does something that we don't expect, we call that a bug. An evolved system is one that is adaptive to its inputs. You may not get the same output if given a known input. The term evolved is less meaningful than adaptive. In 100 years, the software will have evolved past what it is today. I want to use the term because of the connection with typical usage of evolution. A dumb amoeba is the basis of all life. Man is the result of millions of years of evolution. The software of tomorrow will evolve past the software of today.

The question is, what determines that evolution? What will google look like in 100-200 years. What processes will encourage evolution. Does open source encourage? Does the addition of AI technology encourage it. Will the future evolved software thrive on autonomous, fault tolerant operations?

No comments: