Saturday, February 19, 2011

It all started one day...

A few weeks ago I came across an interesting article by Feng - Hsiung Hsu, an IBM researcher, musing about the lessons gleaned in developing Deep Blue (the IBM chess computer that ultimately defeated Kasparov), and how they might soon be applicable to the game of Go (see http://spectrum.ieee.org/computing/software/cracking-go/0).  The gist of his thesis was that trying to mimic human thought processes, as traditional AI approaches do, is a dead end, and that brute-force searches of the game tree will win out in Go as they did in chess once hardware reaches a certain level of capability (which he believes it now is).

Having dabbled a little in trying to produce a Go-playing program many years ago, the article intrigued me, and got me thinking about some of the points it had made.  In particular, while I agree to some extent with much of his argument I suspect we'd differ about how much intelligence one can (or should) apply to the tree pruning.  A major strand of his argument is that humans are naturally good at spotting pattens, and that enables a different approach, whereas computers must look more exhaustively.  It's that statement - that humans are good at spotting patterns [and computers are not] - that really got me thinking.

Professionally I have a background in computer pattern matching in raw binary data, and some of my experiences there suggested to me that, actually, computers could be quite good at spotting patterns in Go positions.  In particular it was apparent to me that shape-recognition (something human Go players do all the time, and consciously talk about the results of, even if the actual recognition is subconcious) of a library of basic shapes that are significant in Go could be performed extremely efficiently.

I immediately wanted to try out my ideas and see how the combination of rapid shape recognition with fairly brute-force game tree searching (possibly using the shape recogniton to inform the pruning to an extent) would work out in reality.  Thus was born the second attempt in my life (and the first for 20 years) to try to write a Go program...

No comments:

Post a Comment