[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

computer-go: Understanding lookahead revisited



Hi

It's over a year since I asked about lookahead (why does it work ?) and received a wide range of responses. I thought I'd do some empirical research into the problem tosee if that helped my understanding.

I do a minimax search (with alpha-beta cutoffs), no pruning, no quiescence searching. I build a game tree from a root node having value R. The tree has uniform branching factor B and depth D. At each node I assume that the best move leaves the value of the position unchanged, the next best move reduces the value of the position by 1, the next by 2 and so on. I clobber each position's actual value to give an evaluation value. The evaluation values are normally distributed with a mean of the actual value and a standard deviation of S.

With this setup I have investigated a huge number of game trees and played with the values of R, B, D and S. I found that lookahead is very useful. The deeper you look ahead the more likely you are to find the best move. I have given the mean of the backed up values (at the root node) and the standard deviation of this value in a couple of examples of my investigations below:

1000 tests: branchingfactor B=7 root value R=7 standard deviation S=17
Depth | best move | 2nd best | 3rd best | mean root   : standard
      |   chosen  |          |          | evaluation  : deviation
  1   |   183     |   201    |   145    |  26.88345   : 10.86960
  2   |   217     |   207    |   162    |  -2.37967   : 5.694094
  3   |   297     |   194    |   164    |  21.47438   : 3.553388
  4   |   392     |   250    |   177    |  -4.91499   : 2.112542
  5   |   489     |   274    |   162    |  19.98318   : 1.479812
  6   |   594     |   267    |   111    |  -5.42937   : 1.124261
  7   |   707     |   228    |    56    |  19.74062   : 0.905707
  8   |   771     |   200    |    25    |  -5.56029   : 0.766832
  9   |   790     |   186    |    23    |  19.64960   : 0.652859

1000 tests: branchingfactor B=37 root value R=7 standard deviation S=17
Depth | best move | 2nd best | 3rd best | mean root  : standard
      |  chosen   |          |          | evaluation : deviation
  1   |   102     |   107    |     87   |  31.07319  : 9.184497
  2   |   205     |   175    |    133   |  -8.45302  : 4.145862
  3   |   362     |   220    |    162   |  25.64635  : 2.518201
  4   |   457     |   285    |    148   |  -10.1639  : 1.599545
  5   |   570     |   284    |     99   |  24.82316  : 1.183593


In the first test the chances of picking the best move increase from 18.3% with a one ply search, up to 79% chance with a nine ply search. In the second test with a wider tree the results are even more impressive.

The difference between the backed up values from odd and even plies indicates that  handling lookahead on unbalanced trees needs some care.

I do have a lot more results lying around and can easily perform other experiments if anyone has some suggestions.

My feeling is that the relationship between the distribution of values across the successors to a particular node and the error function is particularly important. I am not convinced that a normal distribution is the right one, but it seemed a good place to start. In reality I am sure that both the  distribution of values across the successors to a particular node and the error function are dependent on the position and the evaluation function. For example, some evaluation function may exhibit a particular error distribution when the position involves a big semeai. 

Comments, suggestions ?? Confirmation - or refutation - of my results would be welcome.

Cheers

David