Chess: Man vs. Machine Debate Continues
Frederic Friedel sent in an interesting submission. It's an interview with the current world's chess champion, Vladimir Kramnik, in which they talk about the upcoming year in chess competitions, but also get into [Deep Blue] and where computer chess playing is versus several years ago, with a comparison between Deep Blue and Fritz. If you want more info, check out Chessbase for additional news.
Forget conversational ability. I'd like to see a Chess Turing Test, where grandmasters go up against an unknown opponent, and have to ascertain whether they're playing a computer or a machine.
Kevin Fox
There is an enormous amount of creativity and human effort in creating Deep Blue or Fritz. Deep blue's win was not a machine beating a man. It was a team of programmers who were able to figure out how to get a piece of hardware to beat man at his own game!
Believe nothing -- Buddha
It's interesting that computers haven't been trained to always win or tie at chess.
Chess is a game of perfect information. Each player knows every detail of the game state at any moment. Therefore, there has to be formula of some sort that can be applied to guarantee one player victory. Reasoning as follows:
Say I construct a lookup table for every possible combination of moves. Then I eliminate every move which doesn't lead to my victory. I am left with a lookup table which contains the proper response to every move my opponent makes.
There are two possibilities: I win the game, or my opponent wins the game. However, in order for my opponent to win, he/she would have to come up with a sequence of moves which is not in my lookup table. Since my lookup table is exhaustive, this is impossible.
Given an infinite amount of processing power and memory, could someone "solve" the game of chess?
If so, could someone use techniques such as genetic programming or neural networks to learn the lookup table in a finite amount of time/space?
>From someone who has played them, how does Chess
/. a few weeks ago) designed a complete ruleset that's only a few lines long. In practise, there are many rulesets, most of them because of tradition. This is somewhat problematic when making a program, because some rulesets are simply not complete.
:) I would have to check for the current state of the art, but I believe the top programs are quite competitive here.
>compare to Go or Shogi in terms of depth and
>style of play?
I've played all three and written strong programs to play two of them, but this still is a hard question.
Go is by far the deepest. The current top programs play at the level of a (rather weak) club player. It's got a huge branching factor (number of possible moves) which makes any brute or semi-brute force appraoch (what is used for chess) impossible. Most programs around right now are based on pattern recognition.
Funny thing is, the game is by far the simplest. John Tromp (the guy that wrote the 'shorter turing machine' that was posted to
Playing go is a very nice mixture of tactics and strategy. One other thing that's very nice about it is that there is a very good handicap system. The games can always be close, even against much stronger players.
Chess, well, it's mostly about tactics. Of course positional understanding matters a lot, but it's actually rather insignificant compared to the tactical part. Mostly due to continious small advances in technique and hardware, we've now got programs that are able to search about 16 half-moves (move by one side) deep. That'll nearly always take care of the tactical part. Programming strategical understanding is much harder, but a lot of progress is being made in the latter. Especially the latest generation of programs took a big step forward. We've got computers that can successfully compete with the very best humans.
Shogi I've only played once, but I've been working a lot on a chess variant that behaves like Shogi in the past. (captured pieces can be dropped) It's got almost double the branching factor of chess, and hence is somewhere halfway between go and chess. The big issue with it is that it is also very tactical, unlike go. Even though the brute force depth of current programs isn't great, they can extend mating lines very well. And mates are important in shogi/dropchess
--
GCP
Kramnik says that the Fritz 7 program on a laptop is producing some better moves than Deep Blue did against Kasparov. That's how much progress there's been.
Chess programs are now so powerful that unless your're a rated master, you can be trounced by a palmtop. Even the palmtop programs are now achieving draws against grandmasters.
Grandmasters can in fact tell whether their oponent is a computer, sometimes even after playing just a single game, and certainly by the end of a match. In fact, I believe Kasparov lost to Deep Blue precisely because he counted on the computeresque behavior of his opponent when designing his strategy. If you read the article, you will learn that Kramnik can tell computer programs apart by their style, and that he thinks Fritz is becoming more human-like in its behavior, from which I infer that he can still identify its style as computeresque on some level.
So, the test you propose has already been carried out, and the machines "failed". This may have more to do with the fact that the people who write chess playing programs are more concerned with the programs' ability to win than they are with the programs' ability to emulate the playing style of humans. If humans could calculate better [Note: "calculate" has a precise technical meaning in chess] or chess playing computer programs were slower and considerably more stateful, their respective styles might be much more similar and your test, therefore, be met.
My own belief is that the ability to play chess well, let alone the ability to play chess in the style of a particular grandmaster, is not an accurate or even adequate measure of intelligence, so I will not be particularly hurt when the day comes on which computers at last surpass our chess playing skills, just as they have surpassed our (numerical) computational skills.
Well known, perhaps, by people who have never heard of Go.
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
Forget playing against a computer and losing all the time. At SICO we're on the opposite end of the spectrum -- you can play against thousands of idiots all around the world. Tired of the same old boring pieces? Well, we've got new pieces too. In fact, since you lead such a busy life, you don't even have to play a whole game! Just play a single move, and back to work!