I'm currently working on what a computer scientist could call an artificial intelligence autonomous multi-agent configuration management system. There are many such systems out there and they are handy when you have a bunch of a computers to keep configured in a changing environment. These systems also helpt to maintain those configurations in case someone tries to break them. For example, CIS currently uses a system call cfengine to maintain it's configuration. In general, for every configuration file we have it managing, if I change that configuration file, cfengine will make sure that the changes are undone in an hour or so. We also use cfengine to do things like kill processes that shouldn't be running, start processes that have died, etc. I'm working on my system for a slightly different purpose (though, it's possibly my system could eventually supersede cfengine in the department).
Anyway, I want to explain the terms "artificial intelligence" and "autonomous" and "multi-agent" for non-computer scientists. Autonomous is easy, it runs without direct human supervision. I was surprised to learn that all that is required for something to be autonomous is this. I thought it would mean that the program was able to make independent decisions or something, but it does not. It merely means, "runs automatically and doesn't need a human to direct it." This means that most modern computers have autonomous agents running on them to monitor disk usage, protect the system from viruses, automatically download email, and check for processes that have "Stopped Responding."
The term "multi-agent" means that there are multiple agents running together (and probably that they cooperate towards a common purpose). An "agent" is just a program (or it could be a human that helps) that does something. The way AI computer scientists throw the term around, you could probably call your web browser an agent if it does anything on it's own (like check to see if there are any new updates for installed plugins).
The, ironically, stupidest term in this set is "artificial intelligence," aka AI. This seems like a name computer scientists came up with in the 60's for a field they were pursuing in which they thought we'd have Robby the Robot by 1990. This was hubris. Basically, they fleshed out some economic theories and created a few new search algorithms and eventually created a field named "machine learning," which is less misleading if not more impressive name for a field. The goal of the field of AI can pretty much be summed up in a word picture: An AI system is supposed to figure out how to climb to the highest peak possible in a very short amount of time, but without being able to see very far through fog. The way this is generally done is by looking for the upward leading slope and following it. When all the slopes lead down, you assume that you've reached the top of the tallest peak. Which, of course, is nonsense, because it might be if you take three steps down and to your left you find an upslope that goes even higher. Furthermore, what if you start in the wrong mountain range?
The further you get into AI, the more you find that it's just more tricks for trying to find a way around the fog. What if we drop several AIs and search from multiple starting points? What if can pierce the fog a little deeper? AI is very, very simple in the basics and the field grows in tedium the deeper you get. It doesn't produce any real intelligence in programs, it's just provides a few more tools for getting answers a little faster when you have limited information (for example, if you're playing chess, it's impossible to work out all the possible moves you and your opponent can make, so you look ahead as far as you can and try to make a good judgement on that basis).
Since I mentioned it, I'll finish with "machine learning." Machine learning seems like the most interesting field in AI. However, the results of machine learning aren't as impressive as one could hope and so the utility is limited. Currently, the most popular tool in machine learning is the Bayesian filter, which is just a way of saying that a guy named Bayes invented a way of statistically analyzing data so that you could make better decisions as you collect more statistics. If you use the Junk filter on your favorite email program, it's probably a Bayesian filter. On the simplest level, these programs work by collecting statistics about what makes a good email and what makes a bad one. In general, the simplest of these is what words can be found in the email. Generally, an email that contains the name of a major prescription drug will be more likely to be spam, while anything that includes the name of one of my favorite development tools is probably not. This is why you have to tell it that something is junk or something is not. It uses that classification to determine on which side of the ledger to count each of the words or phrases found. I imagine that Google does this on a number of levels (for example, ever mispell a word in a search on Google? As I understand it, Google picks word suggestions based upon words it's seen on the billions of web pages it's examined, not based upon any human collected dictionary. Thus, it can even suggest spellings for words that name products or companies that Google employees have never heard of.)
However, this sort of thing isn't perfect because a Bayesian system can't understand English grammar. Even so, humans can make the mistake of misfiling something as spam or not (called false positives and false negaties in machine learning lingo). Bayes systems are among the best available.
Anyway, I thought I would try to explain a few things to the beginning computer scientist or to the layperson because I'm not a fan of being thought of as a wizard with computers. There's nothing more special about my knowledge except that it is extremely specialized. I can't fix my truck, I am barely capable of fixing things around my house, and I have no expertise in most fields. In fact, I don't really understand how transisters or silicon chips work. That's beyond my understanding and I even took a basic course on it once. Anyway, lately I've become a bit tired of people thinking I know magic. This stuff isn't magic, but then as Arthur C. Clarke put it, "Any sufficiently advanced technology is indistinguishable from magic."
