3 ms·
I can't speak as to how to individual particular programs work, but at least as of a year ago, most of the good AIs used something called Monte Carlo Upper Conf
by slashcom 11y ago
I can't speak as to how to individual particular programs work, but at least as of a year ago, most of the good AIs used something called Monte Carlo Upper Confidence Trees.
They're, unfortunately, not based on intuition. Just statistics.
Basically, the machine plays many, many random games. The more winning games which play a particular stone, the more valuable that particular position is. Then the position with the highest value is chosen.
This alleviates the need of brute force search (which is just too large for Go).
As far as I understand, most of the more successful AIs use UCT for the general game, but then fall back to heuristics and brute search for small, local conflicts (like if forced some stones to be played until death) and counting stones.
Sensei's library has some nice high level information written about the topic:
http://senseis.xmp.net/?UCT http://senseis.xmp.net/?UCT
More recently, DeepMind (and someone else independently at Edinburgh, I believe) has published a couple papers about training a neural network to play by teaching it to predict the next move of pros given the board state. These use modern computer vision techniques and data. Last paper I saw, this did much better than GNU Go (which doesn't use UCT, and is very weak), but still not as good as monte carlo based methods. There has yet to be a combination of the Neural Network and Monte Carlo methods, but they're quite complimentary.
I believe we'll see that combination in the next year or so, and this will nearly close the AI-human gap.
Edit: Monte Carlo. :P Hooray for autocorrect.
- apetresc 11y agoNot to be pedantic, but it's "Monte Carlo", not "Money Carlo". In case OP wanted to search the phrase.
- eutectic 11y agoThe idea that top-level programs use UCT is just folklore at this point. I know that at least MoGo uses a greedy version of Monte-Carlo Tree Search enhanced with RAVE (Rapid Action Value Estimation), a way to share information between branches of the search tree, a pattern database which runs an evaluation function on small patches of the board, and a set of simple heuristics. The consensus is that UCT is bad because it tries to minimize cumulative regret (the average performance over all simulations) at each node, rather than the strength of the chosen move, and that the various heuristic strategies used by strong engines introduce enough noise to make greedy playouts the better option. If you want to learn more, you might want to check out these two papers: http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Applications_files/mcrave.pdf http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Applications_fil... http://arxiv.org/pdf/1206.3382.pdf http://arxiv.org/pdf/1206.3382.pdf