I stumbled on a rather unusual approach to Computer Go. (Go being a popular Asian strategy game and getting computers to play being the subject of my thesis). Computer Go is an interesting research problem for AI because the “standard” min/max search techniques that have worked so well in Chess and other games don’t work.

There are two important reasons for this. The first: the number of moves available to a player in a given turn is much larger in Go than in other games (roughly 10 times the number available in chess, for example), and so considering all available moves, plus all possibly replies to each one, plus all possible rejoinders to each possible reply, etc., becomes unwieldy very quickly (this is known as exponential growth, a phenomenon found in this approach to all games, but for most games the large numbers involved are still tractable for a number-crunching computer). The second: unlike chess and similar games, the question of which of two positions is better in Go cannot be answered easily. Taken together, it means that in Go, there are many more moves to consider, and greater difficulty in “considering” them. The end result is that Computer Go programs play badly, and often slowly as well.
Various people are working on a technique they call “Monte Carlo Go”. (For an outline of “Gobble”, the first program to use this technique, go here). The basic idea is this: to test each candidate move, make that move and then play out the rest of the game making random moves. Do this several thousand times, making note of the final score each time. Choose the move that scores the best.
The advantages are twofold. One, there is no search through an exponentially-growing game tree, since a fixed number of random games are played at each juncture (though this can still be slow if the number of random games is high enough). Two, move evaluation is easy to perform, since the only positions to evaluate are the end of the game, and all that needs to be done is compute the score and see “who won”.
How do such programs play? Quite badly, even by computer standards. However, the original Gobble didn’t “know” anything but the rules of the game. There have been some attempts to introduce Go knowledge to improve playing ability: for example, an early program by this fellow doesn’t choose moves that fill a player’s own eyes (a usually suicidal move). That program plays slightly better, but seems to play a rather odd game of making small amounts of tightly-defended territory in the middle of the board while leaving the edges to its opponents, thus losing badly.
Putting aside playing ability, this approach to Go, while fairly typically of AI techniques, is completely unlike the way an real Go player operates. Even if a real player had the superhuman ability to play out 10,000 random games per second, doing so would not help them nearly as much as playing normally. Not only is this unfeasible for a human player, it is quite unnatural. When was the last time you solved a problem by trying a bunch of random solutions with random results and then picked the “most promising”?
To paraphrase David Parans, I’m starting to think the name “Artificial Intelligence” is very apt, in that AI it relates to intelligence in much the same way “Artificial Flavor” does to flavour: AI goes to great lengths and fakery to create the illusion of the real thing. This is a bit of a shame since it would be much more productive to learn the real principles of intelligence. And yes, there are such things: if intelligent creatures like ourselves can be created by nothing more magical than the process of natural selection, the principles intelligence itself, while highly complex, are not inherently unknowable. To think otherwise is to believe in eyes but to think Optics is ineffable.