Microsoft Research Takes On Go
mikejuk writes "Microsoft Research has used F# and AI to implement a consumer-quality game of Go — arguably the most difficult two-person game to implement. They have used an interesting approach to the problem of playing the game, which is a pragmatic cross between tree search with pruning and machine learning to spot moves with a 'good shape.' The whole lot has been packaged into an XNA-based game with a story."
When I saw "Microsoft takes on Go", I thought of Google Go. It only adds to the confusion that both F# and Go attempt to solve some concurrency issues, though I thought it odd to compete with an imperative language using a functional one. I had to do a double-take to understand it was talking about a game.
Sheesh, I need sleep. And perhaps to stop learning so many useless programming languages.
Go is not a game because it does not have rules that are clearly interpretable, except the new Tromp/Taylor rules.
One sign of this is that Japanese monks have for about 400 hundred years quarreled about how certain patterns should be interpreted.
When I started to learn the game, I was told that it was exceedingly simple, but learned that there was a thick book of how to interpret patterns, which obviously is not simple. And after playing it a little, and thinking about it, it became apparent to me that there were end game effects that were simply ignored. The Japanese versus Chinese "rules" give very different endgames, but the practice is to simply ignore that and pretend there is no problem. One just stops when the players agree that the rest of the game would be obvious and boring, without that necessarily being true.
Robert Jasiek has done extensive analysis of Go, and seems to be the only one actually understanding the game as it is played in practice.
Here are a short list of the major mistakes that Go rulesets contain.
Here are lots of short analyses of different scoring methods.
Here are some game patterns that give different problems in different rulesets.
When it is not even possible to analyze parts of games then true optimal play regresses to quarreling about it, which is precisely what the Japanese tradition has done for at least some hundred years. Robert Jasiek has made the only consistent interpretation of the Japanese "rules", and it is somewhat insane to read, with 3 levels of recursion. It means that instead of there just being an ordinary game tree, the rules at each node in the game tree are determined by hypothetical game trees at these nodes, and the same goes for the hypothetical game trees. Gaaahrgle!
Those programming Go players typically do statistics on games played by humans instead of having a scoring function, or they use the Tromp/Taylor rules.
So Go is riddled with quarrels and pretense. Not a game in practice. More like politics, or Zen.
Kim0+
I thought C++, (as a well established Programming language) would have more libraries than XNA, which I had not previously heard of?
Reading a research paper a few years ago that presented the idea that the best way to approach the game was through catastrophe avoidance. The idea was to identify the moves that would lead to a massive loss, then to take another move at random. I wonder how their AI would fare in comparison.
I got excited when I saw the story. Sigh. This won't appeal to people who already play Go. It may appeal to people who have never played. I'm guessing that the game itself won't produce many more Go players. On the other hand, people may read the story on Slashdot and become curious.
It is relatively easy to beat the existing Go games on a 19x19 board. On the other hand, the existing games are OK on a 9x9 board. On the smaller board, tactics rule. On the full size board, strategy rules. If you make a mistake on the small board, you will be ruthlessly punished.
What does "beat" mean in Go? In Go, it is possible for an expert and a beginner to have a satisfying game. The weaker player gets to place a certain number of stones on the board before the stronger player makes his first move. The handicap system is pretty reliable and is part of Go culture. If they are properly handicapped, the weaker player will beat the stronger player 50% of the time.
If we want to seriously talk about how strong a computer game is, we have to talk about handicap. A computer game that needs only a one stone handicap to keep up with an expert would be exciting. With a zero stone handicap, it wouldn't sound very good because it would lose most of the time. Currently, the best programs, running on heavy duty computers, can keep up if they are given a six or seven stone handicap. Wiki
Go's a pretty cool game, but maybe some of you have heard of Chess? It involves pieces that can do a lot of interesting moves and some of the existing boards out there can be incredibly ornate.
Sorry, I wanted to be the equivalent of "That Guy" that shows up to discuss Go every time there's a chess story anywhere on the planet.
The British Go Association would capitalise Go, Chess and Checkers, although it would be more likely to refer to the last one as Draughts.
I don't know whether they're correct.
Monte Carlo
Yes, it's just a variant of Monte Carlo, but don't knock it. Recent programs implementing the algorithm have improved their handicaps by up to 5 stones, which is huge. The top bots at the KGS Go server are now ranked up to 4 dan (like a good amateur player) in games against humans.
You may want to read this short article in the Guardian about these recent improvements in the MoGo go bot. In October 2009 (6 months after this article appeared) a version of MoGo finally beat a top-ranking (9 dan) professional in an even game on a 9x9 board.
This article reads like a commercial without any scientific background w.r.t. the algorithms used. They even state it does not perform as well as other available programs.
Still, interested giving the game a try? It is really simple.
Start here to learn the rules: http://playgo.to/iwtg/
Like the problem solving, this is a good site for problems: http://goproblems.com/ Note, 30kyu problems are the easiest, then 25kyu etc. Hardest are the dan problems. (Believe me, they are really difficult)
Want to play against the computer? GnuGo is your friend> http://www.gnu.org/software/gnugo/gnugo.html
Playing against real oponents on the web, there are 2 options: Turn-based (the slow progress variant) or real-time. I can recommend for the turn-based variant Dragon Go Server and Online Go Server: http://www.dragongoserver.net/ http://www.online-go.com/
Personally, I'm not into real-time, but KGS is an alternative: http://www.gokgs.com/ Note, people might not always be in the mood for chatting here.
Getting hooked, try to find a local club or check for players in your neighbourhood: http://igolocal.net/
Have fun.
Watashi ha Hikaru. Why I no go? I must know. Naze da! Naze da! Sabedu ka!
Please, Hikaru is good. Hikaru go, OK?
You don't capitalize "checkers" or "chess"; you shouldn't capitalize "go".
It's one of those areas in which you're dealing with shades of gray. You wouldn't say "the chess" or "the go," which is a characteristic of a proper noun. (not being preceded by "the") Proper nouns are, obviously, capitalized. It really comes down to whether or not "chess" and "go" are proper nouns. They are names, which are generally proper nouns, but it's usually more _brand_ names than anything. It's not really something I would criticize though. It could really go either way..
My mental image is a rabbit running into a thicket to avoid a fox, or eagle.
The Norwegian young chessmaster Magnus Karlsen is said to rely on making the game so complex that only he understands it.
Kim0+
You don't capitalize "checkers" or "chess"; you shouldn't capitalize "go".
The difference is, the words "checkers" and "chess" do not have any other meanings in the English language besides the games, so there is no ambiguity. The word "go", however, is a very common verb in the English language, so capitalizing the name of the game helps to clarify the meaning.
If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
Q: What groups are "alive"?
A: Those groups that Go masters agree are alive.
Q: Who is a Go master?
A: People who know which groups are alive.
As I said, circular reasoning.
Assuming a set of rules that is unambiguous and algorithmic, then the problem of writing a perfect software for playing Go should be only a question of having enough machine power, just like for chess.
It's interesting that after machines started beating the top chess players they discovered some endings that were formerly thought to be draws that actually could be won if played perfectly, although it would take a large number of plays to win. I'm willing to bet that some day the same will be found to be true for Go.
What you point out is a problem of Japanese rule, which is inherently flawed. Basically it replies on the agreement of both parties on the live/death of each group, and do not support playing out the actual result, because by playing out the result (like actually killing a group) can change your score and may alter the game winner. However, it's only a problem with the Japanese rules, not with the Chinese rules. In Chinese rules, all stones and territory are counted together, and if there's a dispute, the game can go on without affecting the score. Under Chinese rules, theoretically the ultimate end game is the entire board being filled up withe stones, except the empty spots you need to keep your groups alive. So, from this view, in practice all games did not actually end, but the rest of the game is too obvious to be played out. It's like entering check mate in chess, you don't need to really capture the king to know the game has ended.
It's a long story how the Japanese 'misunderstood' the rules when they imported Go into Japan at around 700AD. Since Japan dominated the Go world in the past 100 years up to the 1990s, and Go is introduced to the west mainly by the japanese, thus their rule set became the most taught and known to westerners. Ideally, the japanese rule set should be abandoned, but then nationalism and pride makes it very hard to do. The lucky thing is these issues are mostly theoretical, and do not affect practice much.
For those that would like to try Go on a PC, there is a good version on Go for DOS & Windows called IGO by David Fotland, and it's free.
I've been using the DOS version which runs fine in a DOS window on a Windows PC.
There is a Windows version called Igowin and a version for the iPhone or iPod Touch or iPad.
I haven't tried the iPhone version yet.
IGO plays on a reduced sized 9x9 board, but is good for an introduction to the game.
The fill size version with a 19x19 board is called The Many Faces of Go and is available for purchase.
The readme.txt file says:
This program contains the same go engine as The Many Faces of Go, but only uses the first 5 levels (out of 10). It uses the same graphics as The Many Faces of Go, but is limited to 9x9 boards only.
To download:
http://www.smart-games.com/igo.html
http://www.smart-games.com/igowin.html
[the Windows has info on the iPod version]