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."
Hikaru no Go will slap this game around silly.... on a serious note, from what I've read previously on the Go AI attempts, if this is at all a good AI, then kudos to MS research.
Needs an Xbox 360 to play. Microsoft spam.
You don't capitalize "checkers" or "chess"; you shouldn't capitalize "go".
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.
Is it a dan yet?
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
Who cares about quality? The first result from that expensive human zoo called Microsoft Research is going to end up in a Microsoft product! That's the real news here.
Contrary to the popular belief, there indeed is no God.
Monte Carlo
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.
Creating a go AI is incredible difficult for mainly two reasons:
1) The search space is huge. With an average of 200 moves each turn and most of them are difficult to discard early, a brute force algorithm like the only so successfully used in chess is much less suitable for go.
2) It is difficult to evaluate a position. Good human players are really good at with a quick look get a feeling of what the situation on the board is, but this is something which it is very hard for computers. In chess the pieces remaining is a fairly good indication on who is leading, but in go no such simple and usable estimate exists.
Monte carlo is a solution to the second problem. What Microsoft's AI and all other good modern AIs does is to evaluate the position by make random moves until the game is finished and see who wins. Repeat a lot of times and take the average. The result is used as the heuristics in the search algorithm.
Intuitively this seems really bad. How can random moves give rise to a good game play? But, it has turned out to work out very well in practice, at least in comparison with other approaches. The playing strength of go AIs has increased by several stones since the introduction of this technique (but still not very good, though, compared to humans). It obviously require good hardware, so the xbox game will have a difficult task to compete with AIs running on better hardware, but I still expect it to work reasonably well.
Using shapes to is evaluate a local board position is something human player do extensively. This is the main method for finding what move candidates to look more carefully at. The human brain is very good at this, since it is visual information, but it is also possible for computers to use pattern databases from professional games to find which shapes are good. A problem though, is that whether a shape is good or bad is not absolute, it depends on the surrounding stones, the position on the board, what you try to achieve with the move, the stage of the game, etc. However, especially in the early part of the game and in local life and death situations it could be very useful.
Kifu, Hikaru! Nao!
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.
In practice the problem you see (ambiguities in the endgame) are only really an issue for computer Go. Human players rarely disagree over when a game is "over", as typically the outcome becomes obvious long before each stone is played out to the absolute end.
How many times people have considered something "obvious" that later turns out to be wrong, when you analyze it to the absolute end? There seems to exist a consensus that some positions are better than others, but how do you know it unless you play it to the end?
I've never played go, but I often see comments on how difficult it seems to be to implement a good software to play go. Perhaps that's because go isn't really that well understood by humans either. When computers start playing go better than humans, some of these winning positions may not be so good after all.
Funny, a saying sounds more impressive when you precede it with, "the Chinese have a saying..." Quoting the article, "The Chinese have a saying - Go takes just minutes to learn, but a lifetime to master." Perhaps, the Chinese do say it, but wasn't this the marketing tagline from the 1970's for the boardgame Othello.
Yeah, putting all engineers they have one those projects will certainly fix all problems, you can never have too many people on one project.
But sarcasm aside, If anything, I'd prefer they direct more resources to XNA and Xbox Live in general, rather than the other way around. They seem to be doing a much, much better job there than they do in windows/explorer/office, which are lost causes imo.
I don't see Clippy. GnuGo is way more than adequate as a backend for my abilities.
It is very hard for humans to beat a good chess program. It is, in comparison, relatively easy for humans to beat a good Go program. I didn't say it was relatively easy for me to beat a good Go program. Read more carefully Grasshopper. ;-)
Oh, that's a great idea. Grab a bunch of researchers, give them a buglist, and throw them at an enormous codebase like Windows which they've never seen before. They're sure to fix more bugs than they create.
Wow, you are a case study in the combination of people who are self-centered, loud-mouthed, and don't know a thing about computer science (or probably about software engineering). Quite interesting.
Maybe the Win7 problem you're having is actually your fault, have you thought of that? I've directly used over 100 Win7 machines, and worked indirectly with thousands of them (and their users) and remarkably enough nobody else has mentioned this problem. The closest is that sometimes pinned items lose their icons, and that was back in beta. Is it a common issue mentioned online? Is there any particular thing that everybody who experiences it has in common, like it's an OEM installation from Dell or they use a particular antivirus? Or do you just have a messed-up installation and a need to rant?
I'm going to give you the benefit of a doubt, and guess that you're an experienced software developer who is routinely assigned to fix bugs in various area, and you're simply naive about how the rest of the world works. It seems more likely that you have only the vaguest idea what the source code for a project the size of Windows looks like (based on your ridiculous "good idea") though. Pro tip: the MSR folks aren't code monkeys. They're computer scientists, in the scientific sense of the term. Many of them probably do write some code on a daily basis, but that's certainly not true of them all. In fact, many probably never work directly with code at all - they focus on things ranging from improved abstract data structures to new ways to interact with a computer to algorithms for Go. Fixing application bugs isn't their job, or even figuring out enough of the problem space to understand what causes the bug, what else will be impacted by changing that cause, or how to fix it without causing more bugs.
That said, there's lots of people who are hired to do exactly that. Have you sent them a bug report with a clear description and repro steps? Heck, have you sent one at all, or even tried? There are actually channels to do so, in case you're wondering.
There's no place I could be, since I've found Serenity...
From the title, I expected something completely different.
like... OMG... what if... like... the movie "Inception" is really just a game of Go?
Does retreating to chaotic gamespace work in other complex games too? It makes intuitive sense that if an opponent is better at you with pistols at ten paces, that you choose shotguns at twenty. If it is not considered bad form to refuse to acknowledge defeat until the last move, it seems this technique could turn Go into a game of mental endurance.
refactor the law, its bloated, confusing and unmaintainable.
It's Windows 7 Enterprise 64-bit with Microsoft Security Essentials. You're lucky not to have experienced this little annoying bug that is probably not enough of a time waster that it's worth seeking a solution online, let alone spending the time to submit a detailed bug report. Yes, I know approximately how big the Windows source code base is. Yes, I've made money writing software and also been paid to find workarounds to stupid bugs like this one. I would not allow them to actually change the code, just make suggestions to the "code monkeys." Serious point though: I think there is something wrong with a company that spends 9.5 billion annually on research yet they cannot manage to fix a bunch of six-month-old bugs in one of the most important parts of their flagship product.
The worst part of this I see is that Go now gets a storyline:
The game starts with the player receiving a letter from a Go master explaining that your twin is missing. When you visit the master, he tasks you with the Path of Go quest, through which you must find your twin. Through the experience, you learn and play the game. In the course of your journey you interact with a number of characters and challenge them in games of Go.
As much as I like good stories, there are situations where you just don't need a story. A computer adaptation of a casual game is one of those times.
Coming next year from Microsoft: The Great Solitaire Battle! As the evil sorcerer throws his magic cards at you, you must make order of them to build up your own magical reserves!
You do not have a moral or legal right to do absolutely anything you want.
You, sir, are a failure. They are MS researchers not MS developers but I can guess how someone with a IQ as low as yours might be confused by the way science works. You must be one of those people that loose even when the only stones on the table are theirs.
I am not a believer that a computer can ever beat top human players at its full 19x19 Go game. My Go playing ability is around 1 dan level. I played against the "Many Faces of Go" version 12 a while back, ranked at 2Q. There simply isn't "Artificial Intelligence". One way to tell if a program is up to the task is simply let it take back a poor move. No, it can't and simply plays the same move.
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]
Microsoft already has the money you payed for Windows 7, so there's no reason to invest any more money in Windows 7 unless it is so buggy that you'll avoid the next version.
However, it's not as if this is the first Microsoft OS you've used. Knowing that the previous iterations had glaring bugs, you still bought this version of Windows. Everyone is in this boat - Microsoft owns the desktop market and has for some time.
All that aside, I do find it odd that MS continues to invest so much in research that never bears fruit for them. Why bother when their only successes come from appropriating and integrating the ideas of others? Microsoft has been "researching" pen computing and touch technology for at least 15 years, and yet they can't hope to compete with the iPad unless they throw out their work and crib from Apple. The existing MS work is a sunk investment that they are clearly having difficulty abandoning.
MS would be much better off keeping the focus on their competitors and forgetting their own delusions of inventiveness and creativity.
This isn't impressive. 5x5 was solved (as in - optimal play has been mapped for the entire gamespace) around a decade ago. I wouldn't be surprised if 7x7 was also near to being solved by now (it's a mere 7.5 times as hard, probably) and I wouldn't be surprised to hear of 9x9 being solved while I'm still hearing with my ears instead of a machine. (Given the state of my ears, this is more challenging than it sounds. Pardon?)
But yeah - it's another competitor in the Computer Go stakes. It's unlikely to hurt the game. It may even help progress the art of Computer Go.
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
it's a lot easier to do it if you start with the XNA framework (with the .NET language of your choice, possibly even C++).
Ordinarily, when porting a game, one would start with a game that has been designed with proper separation of model and view and writing a graphics engine as a new view. For example, one could start with a Windows or Linux game written in standard C++ and add an Objective-C view for Mac OS X or iOS and a Java view for Android. But XNA doesn't support standard C++ because standard C++ doesn't compile to 100% pure verifiably type-safe IL. C++/CLI with /clr:safe does, but this language isn't standard C++: it uses an incompatible syntax for pointers and arrays, and as I understand it, porting a game written in standard C++ to XNA would involve a line-by-line rewrite of both the model and view.
Plenty of proper names are used with "the": The Czech Republic. The People's Republic of China. The New York Times. The Lord of the Rings.
I stated that the absence of "the" implies that the noun that follows is a proper noun.
Thank you for clarifying. Your example of "the United States" confused the issue, making me think it was intended as a biconditional. But I have plenty of counterexamples to this statement as well, such as the name of every sport invented prior to 1923: football, cricket, baseball, basketball, ice hockey, etc. I imagine that checkers, chess, and go fall under the same rule as *ball.