First, my code is in no shape for sharing. Some time back, I experimented with training a neural net to predict ownership maps from 9x9 board positions. I wasn't looking for a static evaluator; I wanted something to speed up my MCTS bot. I used my own engine to generate ownership maps for training and testing sets from various board positions. I won't list all the things I tried. I will say that I am disenchanted with the idea of using a net to estimate ownership maps.
Perhaps the biggest problem came from an unexpected quarter. MC playouts are very fast and neural nets are a bit slow. (I am talking about the forward pass, not the off-line training.) In the short time it took to feed a board position to my net and get the results, I could have run enough MC playouts to obtain a better estimate of the ownership map. :/ === (Ha! While I was writing this, Darren beat me to it.) === If I were to pick this up again, this is the next thing I would try. Instead of using the net to estimate the ownership map, I would try to use it to predict the bias in the map generated by the MC playouts. MC playouts rather consistantly underestimate the safety of lightweight shapes, screw up ladders, etc.. To train it, I would take the ownership map from treeless MC playouts, and as my oracle, I would use my best-so-far MCTS to produce the desired map. The net would try to learn the difference between the two. Optimistically, I would incorporate the network into the best-so-far MCTS and bootstrap the system. Of course, I've swept some stuff under the rug here, but maybe it will trigger an idea. - Dave Hillis -----Original Message----- From: George Dahl <george.d...@gmail.com> To: computer-go <computer-go@computer-go.org> Sent: Tue, 17 Feb 2009 12:27 pm Subject: [computer-go] static evaluators for tree search At the moment I (and another member of my group) are doing research on applying machine learning to constructing a static evaluator for Go positions (generally by predicting the final ownership of each point on the board and then using this to estimate a probability of winning). We are looking for someone who might be willing to help us build a decent tree search bot that can have its static evaluator easily swapped out so we can create systems that actually play over GTP. As much as we try to find quantitative measures for how well our static evaluators work, the only real test is to build them into a bot. Also, if anyone knows of an open source simple tree search bot (perhaps alpha-beta or something almost chess like) for Go, we might be able to modify it ourselves. The expertise of my colleague and I is in machine learning, not in tree search (although if worst comes to worst I will write my own simple alpha-beta searcher). We would be eager to work together with someone on this list to try and create a competitive bot. We might at some point create a randomized evaluator that returns win or loss nondeterministically for a position instead of a deterministic score, so an ideal collaborator would also have some experience with implementing monte carlo tree search (we could replace playouts with our evaluator to some extent perhaps). But more important is traditional, chess-like searching algorithms. If anyone is interested in working with us on this, please let me know! We have a prototype static evaluator complete that is producing sane board ownership maps, but we will hopefully have many even better ones soon. - George _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/
_______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/