Re: [computer-go] Reference Montecarlo TreeDecision Bot.

2009-12-16 Thread Sylvain Gelly
I am not good at term definition, but I would say RAVE is the algorithm
extending AMAF in MCTS, including how to accumulate the counts at each node
 (trivial extension even though implementation can be tricky), how to
combine with UCT (or other move choice), and how to integrate with priors
(based on expert knowledge or previous learning).

Sylvain

On Tue, Dec 15, 2009 at 10:31 PM, Mark Boon tesujisoftw...@gmail.comwrote:

 I took AMAF as the process to consider all the moves regardless when
 they were played in the sequence (although a slight discount for later
 in the sequence seems to help a little) whereas RAVE is using an
 undefined method to favour some nodes over others prior to expanding
 them. The reason (as far as I understood so far) they get confused is
 because a popular method to use in RAVE is in fact using AMAF values.

 Mark

 On Tue, Dec 15, 2009 at 2:12 AM, Magnus Persson magnus.pers...@phmp.se
 wrote:
  Quoting Petr Baudis pa...@ucw.cz:
 
  On Mon, Dec 14, 2009 at 10:37:24PM -0800, Peter Drake wrote:
 
  It's easy to get confused -- different researchers use the terms
  slightly differently.
 
  They both gather data on moves other than a move made from the
  current board configuration. I would say that AMAF stores statistics
  on every move played from any position, while RAVE only stores info
  on moves played from descendants of the current position.
  Consequently, AMAF uses a global table, whereas RAVE data must be
  stored at every node.
 
  I guess that is a good definition; I assume this difference to arise
  from the fact whether you use tree or flat MC, so for me, AMAF in tree
  always means from descendants of the current position. Instead, to me
  AMAF is the data collected, while RAVE is the way to apply the data in
  the node urgency computation (which furthermore splits to what I call
  for myself Sylvain Gelly's RAVE vs David Silver's RAVE, of course...).
 
  This also how I have interpreting AMAF and RAVE after being confused
  initially thinking it was just two names for one thing.
 
  I think it's because I haven't seen this approach evolve and I'm not too
  familiar with the pre-RAVE AMAF, so perhaps I underestimate how
  revolutionary the descendants only idea was.
 
  AMAF was first used with programs that did not build a tree. Perhaps this
 is
  why Peter Drake makes this interpretation. When I implemented AMAF in
  Valkyria it was always self evident that descendants only is only the
 only
  good way of making use of it, since search was so deep that the positions
  cannot be compared.
 
  Best
  Magnus
  ___
  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/

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MoGo and passing

2009-06-30 Thread Sylvain Gelly
Hi,

Olivier answered for the new version.
On the downloadable version, I don't remember exactly (almost 2 years
back now...), but I think Mogo will still pass if all the other moves
are clearly loosing. So it should understand somehow Seki
situations.
If that is correct, the sentence is not completely accurate.
It should more be:
MoGo never consider a pass unless you pass first or all other moves
are obviously loosing the game.

Sylvain

On Wed, Jun 24, 2009 at 10:11 PM, Seth Pellegrinose...@lclark.edu wrote:
 Hello all,

 On http://www.lri.fr/~gelly/MoGo_Download.htm , under the FAQ section,
 I found the bullet point:

 MoGo continues playing after the game is over?: MoGo never consider
 a pass unless you pass first. If you think the game is over, simply
 pass.

 Is this still true? If so, how does MoGo deal with situations where
 the best move is to pass (e.g. seki).

 Thanks,

 Seth Pellegrino
 ___
 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/


Re: [computer-go] MoGo and passing

2009-06-30 Thread Sylvain Gelly
Obviously I should read better the emails before answering. Olivier
rightly answered for all versions.

Sorry,
Sylvain

On Tue, Jun 30, 2009 at 7:59 PM, Sylvain Gellysylvain.ge...@m4x.org wrote:
 Hi,

 Olivier answered for the new version.
 On the downloadable version, I don't remember exactly (almost 2 years
 back now...), but I think Mogo will still pass if all the other moves
 are clearly loosing. So it should understand somehow Seki
 situations.
 If that is correct, the sentence is not completely accurate.
 It should more be:
 MoGo never consider a pass unless you pass first or all other moves
 are obviously loosing the game.

 Sylvain

 On Wed, Jun 24, 2009 at 10:11 PM, Seth Pellegrinose...@lclark.edu wrote:
 Hello all,

 On http://www.lri.fr/~gelly/MoGo_Download.htm , under the FAQ section,
 I found the bullet point:

 MoGo continues playing after the game is over?: MoGo never consider
 a pass unless you pass first. If you think the game is over, simply
 pass.

 Is this still true? If so, how does MoGo deal with situations where
 the best move is to pass (e.g. seki).

 Thanks,

 Seth Pellegrino
 ___
 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/


Re: [computer-go] Rave coefficient

2009-06-30 Thread Sylvain Gelly
On Tue, Jun 30, 2009 at 12:47 AM, Peter Drakedr...@lclark.edu wrote:
 A while back, Sylvain Gelly posted this code:

 ChooseMove(node, board) {
  bias = 0.015  // I put a random number here, to be tuned
  b = bias * bias / 0.25
  best_value = -1
  best_move = PASSMOVE
  for (move in board.allmoves) {
    c = node.child(move).counts
    w = node.child(move).wins
    rc = node.rave_counts[move]
    rw = node.rave_wins[move]
    coefficient = 1 - rc / (rc + c + rc * c * b)
    value = w / c * coef + rw / rc * (1 - coef)  // please here take care of
 the c==0 and rc == 0 cases
    if (value  best_value) {
      best_value = value
      best_move = move
    }
  }
  return best_move
 }

 From this, it appears that each node knows about its own counts and wins, as
 well as the rave counts and wins of its children.

 I understand (correct me if I'm wrong!) that the value line is a weighted
 sum of the win rate among actual moves and the win rate among RAVE moves.

 My question is: what is the meaning of this line?

    coefficient = 1 - rc / (rc + c + rc * c * b)

 Why this formula?

You can look at a thread on this list
http://computer-go.org/pipermail/computer-go/2008-February/014095.html
and better the attachment explaining the formula.
http://computer-go.org/pipermail/computer-go/attachments/20080208/6519e9c5/rave.pdf

Hoping it helps,
Sylvain

 Thanks for any help you can offer,

 Peter Drake
 http://www.lclark.edu/~drake/



 ___
 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/


Re: [computer-go] Incorporating a prior estimate

2009-05-04 Thread Sylvain Gelly
2009/5/1 Brian Sheppard sheppar...@aol.com:
 In reading Sylvain Gelly's thesis, it seemed that incorporating a prior
 estimate of winning percentage is
 very important to the practical strength of Mogo.

 E.g., with 1 trials, Mogo achieved 2110 rating on CGOS, whereas my
 program attempts to
 reproduce existing research and is (maybe) 1900 rating with 2 to 3
 trials. The use of a
 prior is an important difference, so I want to understand it more deeply.

 Some questions:

 1) When you create a node, do you initialize

     number of simulations = C
     number of wins = C * PriorEstimate()

 where C is a constant  0? In Sylvain's thesis, the optimal C = 50,
 suggesting that
 incorporating a prior estimate was the equivalent of 50 UCT-RAVE trials.
Yes, but for number of RAVE simulations and number of RAVE wins.
I think the optimal range was between 20 and 50 (you can test values
in that range). The actual value certainly depends on your actual
prior.

 2) Two variations were suggested. In one variation, the prior was
 incorporated into the UCT
 statistics of the node. In the other, the prior was incorporated into the
 RAVE statistics. Charts
 in the thesis do not confirm which was actually being measured. In some
 cases it appears to
 be the UCT version, but elsewhere it seems to be the RAVE version. Does
 anyone know
 what was really done?

Doing it on the RAVE statistics is what is working best.

 3) Elsewhere I have seen information suggesting that Mogo initializes RAVE
 statistics to
 implement progressive widening. Does that conflict with the use of a prior
 for RAVE initialization,
 or is it in addition to the use of a prior for RAVE initialization?

Progressive widening and prior for RAVE initialization serve the same
purpose. The prior is maybe smoother but they should be more or less
equivalent in practice.

 4) When creating a node, do you estimate the prior for that node , or for
 that node's children?

I estimated the prior for all move for that node (I stored the RAVE
values in the node, not in the children).

Sylvain

 Thanks in advance,
 Brian

 ___
 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/


Re: [computer-go] Fast ways to evaluate program strength.

2009-04-08 Thread Sylvain Gelly
On Wed, Apr 8, 2009 at 10:46 AM, Darren Cook dar...@dcook.org wrote:
 End game is another issue. MC programs only aim on winning, so they
 endgame is nor perfect in sense human would define it, but perfect
 enough to win if the game is winnable.

 You can modify komi to get the human expert and MC program in agreement.

 This suggests how you could automate a set of endgame problems: run Mogo
 (or similar) with lots of time and keep increasing/reducing the komi
 until you get a sudden swing in winning probability (e.g. from 60% to
 20% for side to play). That should tell you the komi to use, and at
 least one of the winning moves.

 To find alternative winning moves you'd need to have some way to tell
 Mogo, or whatever, it cannot choose the existing winning move you have,
 and must choose a different move. Once winning probability suddenly
 drops again it tells you there are no more winning moves left.

 If a program can generate the test set, why bother? I think it is useful
 because you can tune against it. E.g. if you give Mogo 120s per move to
 generate the test suite moves, then you tune until it can find the
 correct moves for the whole test suite on 1s per move.

 Tuning the endgame play is very important for MCTS search, because every
 playout always goes to the endgame. Strong endgame play in the playouts
 should make a program stronger at all stages of a game.

 What do you think? Is such a endgame problem suite useful?

What I did to generate a test suite was to make Mogo play against
itself (on 9x9, 10s per move) and stop the game when it thinks was
clearly won for one of the player. That created a few hundred end game
positions where the result were clear enough, and I used that test
suite to evaluate the playouts. It was not precise enough (or I did
not have enough positions?) to actual optimize details of the
playouts, but it could make the difference between a clearly
better/worse policy.
However, I don't think it would be suitable to test the strength of
the actual player, but only the playout policy.

Sylvain

 Darren

 --
 Darren Cook, Software Researcher/Developer
 http://dcook.org/mlsn/ (English-Japanese-German-Chinese-Arabic
                        open source dictionary/semantic network)
 http://dcook.org/work/ (About me and my work)
 http://dcook.org/blogs.html (My blogs and articles)
 ___
 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/


Re: [computer-go] Transpositions in Monte-carlo tree search

2009-03-30 Thread Sylvain Gelly
Hi Mattew,

I cannot answer for the current version of Mogo but I can for the one
1.5 years ago. Maybe it still holds.
We had a transposition table as it was designed like that from the
beginning. However the prior value of the node, was initialized when
the node was created and indeed was depending of the previous move
played in the current sequence.
In practice, I think it does not change much.

Sylvain

On Mon, Mar 30, 2009 at 11:36 PM, Matthew Woodcraft
matt...@woodcraft.me.uk wrote:
 How are transpositions normally handled in monte-carlo tree search?

 I have been assuming that the natural thing would be to have a single
 shared node for each board position, so that simulations which reach the
 same position will use the same set of statistics (but when backing up
 the result, to only update the nodes for the simulation actually
 played).

 But I see in some of the Mogo papers that some of the contributions to
 the heuristic value of a node depend on the position of the previous
 move.

 So do MCTS programs not recognise transpositions at all? Or are the
 heuristics from the time when the node was first created allowed to
 stand, no matter what the simulation route is next time?

 -M-
 ___
 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/


Re: [computer-go] How to properly implement RAVE?

2009-01-30 Thread Sylvain Gelly
On Fri, Jan 30, 2009 at 9:29 AM, Magnus Persson magnus.pers...@phmp.sewrote:

 Quoting Sylvain Gelly sylvain.ge...@m4x.org:

  On Wed, Jan 28, 2009 at 10:01 PM, Isaac Deutsch i...@gmx.ch wrote:

  And a final question: You calculate the (beta) coefficient as
 c = rc / (rc+c+rc*c*BIAS);
 which looks similar to the formula proposed by David Silver (If I recall
 his name correctly). However, in his formula, the last term looks like
 rc*c*BIAS/(q_ur*(1-q_ur))
 Is it correct that we could get q_ur from the current UCT-RAVE mean
 value,
 and that it is used like that?



 Yes the formula looks very similar (David proposed that formula to me in
 the
 beginning of 2007). However my implementation did not contain
 the (q_ur*(1-q_ur) factor, that I approximated by a constant, taking q=0.5
 so the factor=0.25.
 I did not try the other formula, maybe it works better in practice, while
 I
 would expect it is similar in practice.


 Valkyria uses an even more complicated version of what David Silver
 proposed (I really did not understand it so I came up with something that
 looked plausible to me that actually estimated the bias for each candidate
 move rather than assuming it constant).

 When Sylvain proposed this simple version I tested that version against my
 own interpretation. On 9x9 my complicated version might have a win rate 3%
 better than the simple version for 3 data points (700 games each) near the
 maximum. The standard error according to twogtp is 1.9.

 On 19x19 I got results where there no difference at all but with much
 higher uncertainty because there was not many games played.


Did you try to tune the bias constant at all or just took the one I posted?
I wrote it from memory and I believe it is in the range of possibly good
values, but it is certainly not optimal, I can be off by a significant
factor in both directions.


 But the term is important for sure, the constant BIAS used should be larger
 than 0 but you should be careful to not set it too high. For Valkyria the
 0.015 value Sylvain posted here worked fine. But if it is higher for example
 0.15 leads to bad performance on 9x9 and catastrophic performance on 19x19.
 Initially I thought this parameter should be something like 1 and that was
 completely wrong. I was just lucky to get it right, just by visual
 inspection of the search behavior when I played around with the parameter.


The bias can't possibly be 1 because by definition it is the difference
between the expected value of the normal tree search and the expected value
of AMAF. As those two values are in [0,1] anyway, the bias is certainly not
1, and in most cases very small.



 The reason is that the bias term of the denominator should be close to zero
 initially is to allow AMAF to have strong impact on the search but at some
 point (which is delayed by having a small BIAS constant) there is a quick
 shift towards using the real win rate instead.

 -Magnus



 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-29 Thread Sylvain Gelly
On Wed, Jan 28, 2009 at 10:01 PM, Isaac Deutsch i...@gmx.ch wrote:

 Hi again ;)

 I found some time to actually implement this stuff. And, this has raised
 some small questions. In this part of the code:

  for (j = index; j  moves_played_in_tree.size(); j += 2) {
 //stuff
   }
  for (j = 0; j  moves_played_out_tree.size(); ++j) {
 //more stuff

// If it is either not the right color or the intersection is
// already played we ignore that move for that node
if (move  0 || already_played.AlreadyPlayed(move)) continue

already_played.Play(move)
 //stuff
  }

 1. Shouldn't the first loop start at j=index+1? Starting at j=index would
 mean that the RAVE value of the node is updated with the move of the node
 itself, wouldn't it? It makes more sense to me to actually start at the
 first child of the node that is being back-upped. Correct me if I'm wrong.

No, you need to update the RAVE value of the node for the first move (move
taken in the position of the node itself). So it is j=index, and that is
important to make the algorithm work.



 2. Shouldn't the order in the second loop be:
 -if (already played): continue;
 -update already played;
 -if (wrong color): continue;
 Otherwise, moves that are the wrong color don't get counted as already
 played (because they never get updated). I'm not sure if it makes a
 difference in this case because you check in the playouts, too, but maybe
 it does.


I think it is ok like that because indeed the check is already done in the
playout. The already_played.Play(move) is actually also unnecessary in the
second loop (not really rechecked as I speak, but I think so as far as I
remember).


 And a final question: You calculate the (beta) coefficient as
 c = rc / (rc+c+rc*c*BIAS);
 which looks similar to the formula proposed by David Silver (If I recall
 his name correctly). However, in his formula, the last term looks like
 rc*c*BIAS/(q_ur*(1-q_ur))
 Is it correct that we could get q_ur from the current UCT-RAVE mean value,
 and that it is used like that?


Yes the formula looks very similar (David proposed that formula to me in the
beginning of 2007). However my implementation did not contain
the (q_ur*(1-q_ur) factor, that I approximated by a constant, taking q=0.5
so the factor=0.25.
I did not try the other formula, maybe it works better in practice, while I
would expect it is similar in practice.

Sylvain



 Regards,
 Isaac Deutsch
 --
 Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
 http://www.gmx.net/de/go/multimessenger
 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-21 Thread Sylvain Gelly
Hi,

I did not mention here the prior initialization that is done in each node.
When you create a node, you can look at all possible move and if a pattern
matches (the exact same as in the playout) you initialize rw and rc to 14.
If the move saves a capture (same as in the playout), same initialization,
rw and rc to 14. If it is a self atari, you initialize rw to 0 and rc to 14.
Else you initialize rw to 7 and rc to 14.
Of course you can do put much more clever prior if you are a player and know
the subtleties of the game.

You can put an exploration term, but the cases where it is needed are rare.
I did a lot of experiments on that, and even at long thinking time, no
exploration term was always better (statistically).

Sylvain

2009/1/21 Mark Boon tesujisoftw...@gmail.com


 On Jan 21, 2009, at 10:23 AM, Magnus Persson wrote:

  Quoting Thomas Lavergne thomas.laver...@reveurs.org:

   - the best play is a good only if played immediatly and very bad if
   played later in the game :
  - the first playout for this play resulted in a lost.
 score and RAVE score will be very low and this play will never be
 considered again until a very long time.



 You raise an interesting concern.

 The simple solution to your question is to add an exploration term using
 UCT for example. Then it becomes an empirical question what parameter for
 exploration gives the strongest play. My experience is that the best
 parameter is so small it can be set to zero.


 Well, empirically, when I set the exploration component to zero it starts
 to play a lot worse. Like I wrote: the winning percentage drops to 24% vs.
 the same program with the exploration component, which is a huge difference.

 So if you have a different experience, you must have something else that
 overcomes this hurdle that's not part of a simple MCTS-RAVE implementation.
 I'd be very interested to learn what that is. Sylvain didn't take the bait
 ;-)

 Mark


 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-21 Thread Sylvain Gelly
2009/1/21 Olivier Teytaud olivier.teyt...@lri.fr


 Of course you can do put much more clever prior if you are a player and
 know the subtleties of the game.


 E.g. patterns extracted from databases - but it's not enough, carefully
 tune the coefficients for empty triangles (important!) and various other
 importants patterns/rules (don't just keep the empirical probabilities from
 datasets as coefficients). I'm afraid the coefficients are very
 implementation-dependent unless the bandit and the random player are
 specified with
 a lot of details.

 You can put an exploration term, but the cases where it is needed are rare.
 I did a lot of experiments on that, and even at long thinking time, no
 exploration term was always better (statistically).


 Well, now mogo has an exploration term - but not at all UCB-like.


I was talking about times where I was still there ... ages ago :)

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] RAVE and memory allocation considerations

2009-01-20 Thread Sylvain Gelly
Hi,
You should really look into never deallocate memory (by calling delete/free)
but keeping it in some memory pool. I did that for the main objects that you
deal with: nodes and small vectors (the one you create on the fly to keep
the moves that have been played in the playout). It really speeds up things
a lot.

Apart from that, I did the same as you, creating the thread after the
genmove and joining them at the end of the thinking time.

Sylvain

2009/1/20 Isaac Deutsch i...@gmx.ch

 Thanks again for your pseudo-implementation, Sylvain.

 At the moment I have a program that uses plain MCTS. With every genmove, it
 creates a certain number of
 threads (2), gives them some starting data, and lets them think for a
 while, then rejoins them, extracting the
 best move. During the thinking, the threads build a normal UCT tree. At the
 beginning, they allocate a
 certain number of nodes (100'000 as of now) and delete the nodes when
 thinking has finished.

 To add RAVE to this, each node would need up to size*size additional values
 for RAVE. I thought about
 allocating this memory when children are added (which seems logical to me),
 and deleting it also at the end
 of the thinking time. However, this seems (I don't have any data) *slow* to
 me , to allocate up to ˜50 MB of
 RAM every time, then destroying it again afterwards.

 Do you think the spent allocating could be critical?
 What do you think would be a good way to deal with this? I think to avoid
 the continuous allocation/deallocation,
 it's necessary to keep the threads running instead of creating/joining them
 for each genmove. This would
 allow them to only have to alloc/dealloc when the board size is changed.

 Regards,
 Isaac
 --
 Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
 http://www.gmx.net/de/go/multimessenger
 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-17 Thread Sylvain Gelly
Hi,

Sorry for the slow reply.
After those discussions, I figured out that pseudo code was the
fastest clear and not ambiguous way to describe how to precisely
implement the algorithm. I needed to find some time to write it.
Note that I did not write only the backup phase because to clearly
describe the backup you have to see the playouts as well. I also
describe the choice of the best move.
Note also the fact that the backup from the moves in the tree and from
the moves out of the tree is different. That is the somehow more
tricky part to check that a move has not been already played (that is
different for each node in the tree and we obviously don't want to
keep a vector of already played moves for each node).

Please forgive the mistakes that are in that code, of course I did not
make any test, and it has been quite a long time I am not in the
computer go trip anymore :). Please correct any mistake,
I hope it makes things clearer.

Best,
Sylvain

class AmafBoard {
  AmafBoard() {
offset = 0
fill(alread_played, 0)
  }
  Clear() {
offset++;
  }
  Play(move) {
already_played[move] = offset
  }
  AlreadyPlayed(move) {
return already_played[move] == offset
  }
  vector already_played
  int offset
}

ChooseMove(node, board) {
  bias = 0.015  // I put a random number here, to be tuned
  b = bias * bias / 0.25
  best_value = -1
  best_move = PASSMOVE
  for (move in board.allmoves) {
c = node.child(move).counts
w = node.child(move).wins
rc = node.rave_counts[move]
rw = node.rave_wins[move]
coefficient = 1 - rc * (rc + c + rc * c * b)
value = w / c * coef + rw / rc * (1 - coef)  // please here take
care of the c==0 and rc == 0 cases
if (value  best_value) {
  best_value = value
  best_move = move
}
  }
  return best_move
}
PlayoutInTree(board, moves_played_in_tree, nodes_seen_in_tree) {
  node = tree.root
  while (node) {
move = ChooseMove(node, board)
moves_played_in_tree.append(move)
nodes_seen_in_tree.append(node)
board.PlayMove(move)
node = node.child(move)
  }
}
PlayoutOutTree(board, AmafBoard played, moves) {
  int pass = 0
  while (pass  2) {
move = board.ChooseMoveAndPlay()
if (move == PASSMOVE) {
  pass ++
  continue
} else {
  pass = 0
}
if (!played.AlreadyPlayed(move)) {
  if (!board.last_move_was_black()) {
move = -move
  }
  moves.append(move)
}
  }
  return board.black_wins()
}

BackupNode(node, index, black_wins, moves_played_in_tree,
moves_played_out_tree, already_played) {
  already_played.Clear()
  win = node.is_black_to_play ? black_wins : !black_wins
  // normal backup
  node.wins += win
  node.counts ++
  // rave backup
  for (j = index; j  moves_played_in_tree.size(); j += 2) {
move = moves_played_in_tree[j]
if (already_played.AlreadyPlayed(move)) continue
already_played.Play(move)
node.rave_wins[move] += win
node.rave_counts[move] ++
  }
  for (j = 0; j  moves_played_out_tree.size(); ++j) {
move = moves_played_out_tree[j]
if (!node.is_black_to_play) move = -move
// If it is either not the right color or the intersection is
already played we ignore that move for that node
if (move  0 || already_played.AlreadyPlayed(move)) continue

already_played.Play(move)
node.rave_wins[move] += win
node.rave_counts[move] ++
  }
}

Backup(black_wins, nodes_seen_in_tree, moves_played_in_tree,
moves_played_out_tree, already_played) {
  for (i = 0; i  nodes_seen_in_tree.size(); ++i) {
node = nodes_seen_in_tree[i]
BackupNode(node, i, black_wins, moves_played_in_tree,
moves_played_out_tree, already_played)
  }
}
OneIteration(board_position, AmafBoard already_played) {
  board = board_position.Copy()
  already_played.Clear()

  vector moves_played_in_tree
  vector nodes_seen_in_tree
  PlayoutInTree(board, moves_played_in_tree, nodes_seen_in_tree)

  vector moves_played_out_tree
  bool black_wins = PlayoutOutTree(board, already_played,
moves_played_out_tree)
  Backup(black_wins, nodes_seen_in_tree, moves_played_in_tree,
moves_played_out_tree, already_played)
}
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] How to properly implement RAVE?

2009-01-17 Thread Sylvain Gelly
A small point: in PlayoutOutTree, just after if
(!played.AlreadyPlayed(move)) {, there should have a played.Play(move).
I believe it does not change the final result (as the check is also done in
the backup, and the move played in the backup), but I simply forgot that
line (that should make moves_played_out_tree smaller).

To avoid confusion, I repost the pseudo code with that correction (and
hoping the indentation is not broken by the email editor once again).

Sylvain


class AmafBoard {
  AmafBoard() {
offset = 0
fill(alread_played, 0)
  }
  Clear() {
offset++;
  }  Play(move) {
 already_played[move] = offset
  }
  AlreadyPlayed(move) {
 return already_played[move] == offset
  }
  vector already_played
  int offset
}

ChooseMove(node, board) {
  bias = 0.015  // I put a random number here, to be tuned
  b = bias * bias / 0.25
  best_value = -1
  best_move = PASSMOVE
  for (move in board.allmoves) {
c = node.child(move).counts
w = node.child(move).wins
rc = node.rave_counts[move]
rw = node.rave_wins[move]
coefficient = 1 - rc * (rc + c + rc * c * b)
value = w / c * coef + rw / rc * (1 - coef)  // please here take care of
the c==0 and rc == 0 cases
if (value  best_value) {
  best_value = value
  best_move = move
}
  }
  return best_move
}


PlayoutInTree(board, moves_played_in_tree, nodes_seen_in_tree) {
  node = tree.root
  while (node) {
move = ChooseMove(node, board)
moves_played_in_tree.append(move)
nodes_seen_in_tree.append(node)
board.PlayMove(move)
node = node.child(move)
  }
}


PlayoutOutTree(board, AmafBoard played, moves) {
  int pass = 0
  while (pass  2) {
move = board.ChooseMoveAndPlay()
if (move == PASSMOVE) {
  pass ++
  continue
} else {
  pass = 0
}
if (!played.AlreadyPlayed(move)) {
  played.Play(move)
  if (!board.last_move_was_black()) {
move = -move
  }
  moves.append(move)
}
  }
  return board.black_wins()
}


BackupNode(node, index, black_wins, moves_played_in_tree,
moves_played_out_tree, already_played) {
  already_played.Clear()
  win = node.is_black_to_play ? black_wins : !black_wins
  // normal backup
  node.wins += win
  node.counts ++
  // rave backup
  for (j = index; j  moves_played_in_tree.size(); j += 2) {
move = moves_played_in_tree[j]
if (already_played.AlreadyPlayed(move)) continue
already_played.Play(move)
node.rave_wins[move] += win
node.rave_counts[move] ++
  }
  for (j = 0; j  moves_played_out_tree.size(); ++j) {
move = moves_played_out_tree[j]
if (!node.is_black_to_play) move = -move

// If it is either not the right color or the intersection is
// already played we ignore that move for that node
if (move  0 || already_played.AlreadyPlayed(move)) continue

already_played.Play(move)
node.rave_wins[move] += win
node.rave_counts[move] ++
  }
}


Backup(black_wins, nodes_seen_in_tree, moves_played_in_tree,
moves_played_out_tree, already_played) {
  for (i = 0; i  nodes_seen_in_tree.size(); ++i) {
node = nodes_seen_in_tree[i]
BackupNode(node, i, black_wins, moves_played_in_tree,
moves_played_out_tree, already_played)
  }
}


OneIteration(board_position, AmafBoard already_played) {
  board = board_position.Copy()
  already_played.Clear()

  vector moves_played_in_tree
  vector nodes_seen_in_tree
  PlayoutInTree(board, moves_played_in_tree, nodes_seen_in_tree)

  vector moves_played_out_tree
  bool black_wins = PlayoutOutTree(board, already_played,
 moves_played_out_tree)
  Backup(black_wins, nodes_seen_in_tree, moves_played_in_tree,
  moves_played_out_tree, already_played)
}

2009/1/17 Sylvain Gelly sylvain.ge...@m4x.org:
 Hi,

 Sorry for the slow reply.
 After those discussions, I figured out that pseudo code was the
 fastest clear and not ambiguous way to describe how to precisely
 implement the algorithm. I needed to find some time to write it.
 Note that I did not write only the backup phase because to clearly
 describe the backup you have to see the playouts as well. I also
 describe the choice of the best move.
 Note also the fact that the backup from the moves in the tree and from
 the moves out of the tree is different. That is the somehow more
 tricky part to check that a move has not been already played (that is
 different for each node in the tree and we obviously don't want to
 keep a vector of already played moves for each node).

 Please forgive the mistakes that are in that code, of course I did not
 make any test, and it has been quite a long time I am not in the
 computer go trip anymore :). Please correct any mistake,
 I hope it makes things clearer.

 Best,
 Sylvain

 class AmafBoard {
  AmafBoard() {
offset = 0
fill(alread_played, 0)
  }
  Clear() {
offset++;
  }
  Play(move) {
already_played[move] = offset

Re: [computer-go] How to properly implement RAVE?

2009-01-17 Thread Sylvain Gelly
Hi Mark,
For the first difference you mention, as far as I remember it makes a small
but significant difference and is one of the main reason I was talking about
tricky details.
For the second difference, I also don't want to count a move if the
opposite color played on that point first, and, unless I am mistaken, I
indeed don't count them in the part of the playout which is outside the
tree.
However you are right for the part inside the tree, due to the j+=2. I am
a little confused and now believe it should not be a j+=2 but a j++,
updating the already_played map for each move inside the tree during the
backup, but doing the backup only once every too moves (to match the color).

It may be a bug in what I proposed, I cannot test it anymore. However, what
I am sure about is that this j+=2 is what I was using and gave very good
results. If what you point out is indeed a bug and makes a difference, then
it can only be even better :). I prefer not modifying the pseudo code I
posted until someone verifies it becomes better.

Thanks,
Sylvain

2009/1/17 Mark Boon tesujisoftw...@gmail.com

 Thanks for taking the time Sylvain. I took a quick look to see how your
 pseudo-code compared to the reference implementation I made. There are a few
 small differences, and I think the place(s) where I deviated is exactly what
 confused Daniel Waeber.

 The first difference is that when I check whether a point has been played,
 I always start from the position of the root-node, whereas you start from
 the position of the node where the moves_played_in_tree is played. The
 second difference is I also don't count a move if the opposite color played
 on that point first. The result is I only need to compute the alreadyPlayed
 map once (in my code these are called weightMap and colorMap, I need two
 maps because I use decreasing weights) instead of computing it at each step
 back up in the tree.

 The only time these 'deviations' make a difference is in case of ko and
 ishi-no-shita. When I have a little spare time I'll check to see if this
 actually makes a difference in playing strength. If there's any noticeable
 difference I'll try to modify the code in my reference implementation to
 reflect the 'correct' method.

 Mark



 On Jan 17, 2009, at 11:48 AM, Sylvain Gelly wrote:

  Hi,

 Sorry for the slow reply.
 After those discussions, I figured out that pseudo code was the
 fastest clear and not ambiguous way to describe how to precisely
 implement the algorithm. I needed to find some time to write it.
 Note that I did not write only the backup phase because to clearly
 describe the backup you have to see the playouts as well. I also
 describe the choice of the best move.
 Note also the fact that the backup from the moves in the tree and from
 the moves out of the tree is different. That is the somehow more
 tricky part to check that a move has not been already played (that is
 different for each node in the tree and we obviously don't want to
 keep a vector of already played moves for each node).

 Please forgive the mistakes that are in that code, of course I did not
 make any test, and it has been quite a long time I am not in the
 computer go trip anymore :). Please correct any mistake,
 I hope it makes things clearer.

 Best,
 Sylvain

 class AmafBoard {
  AmafBoard() {
   offset = 0
   fill(alread_played, 0)
  }
  Clear() {
   offset++;
  }
  Play(move) {
   already_played[move] = offset
  }
  AlreadyPlayed(move) {
   return already_played[move] == offset
  }
  vector already_played
  int offset
 }

 ChooseMove(node, board) {
  bias = 0.015  // I put a random number here, to be tuned
  b = bias * bias / 0.25
  best_value = -1
  best_move = PASSMOVE
  for (move in board.allmoves) {
   c = node.child(move).counts
   w = node.child(move).wins
   rc = node.rave_counts[move]
   rw = node.rave_wins[move]
   coefficient = 1 - rc * (rc + c + rc * c * b)
   value = w / c * coef + rw / rc * (1 - coef)  // please here take
 care of the c==0 and rc == 0 cases
   if (value  best_value) {
 best_value = value
 best_move = move
   }
  }
  return best_move
 }
 PlayoutInTree(board, moves_played_in_tree, nodes_seen_in_tree) {
  node = tree.root
  while (node) {
   move = ChooseMove(node, board)
   moves_played_in_tree.append(move)
   nodes_seen_in_tree.append(node)
   board.PlayMove(move)
   node = node.child(move)
  }
 }
 PlayoutOutTree(board, AmafBoard played, moves) {
  int pass = 0
  while (pass  2) {
   move = board.ChooseMoveAndPlay()
   if (move == PASSMOVE) {
 pass ++
 continue
   } else {
 pass = 0
   }
   if (!played.AlreadyPlayed(move)) {
 if (!board.last_move_was_black()) {
   move = -move
 }
 moves.append(move)
   }
  }
  return board.black_wins()
 }

 BackupNode(node, index, black_wins, moves_played_in_tree,
 moves_played_out_tree, already_played) {
  already_played.Clear()
  win = node.is_black_to_play ? black_wins : !black_wins
  // normal backup
  node.wins += win
  node.counts

Re: [computer-go] How to properly implement RAVE?

2009-01-17 Thread Sylvain Gelly
Hi Issac,
You are welcome, and I am happy there is finally a clearer of implementing
RAVE out there. I believe I should have done it much earlier, sorry for
that, but better late than never, no? :)

Best,
Sylvain

2009/1/17 Isaac Deutsch i...@gmx.ch

  Hi,
 
  Sorry for the slow reply.

 Hi

 I'd prefer quality over speed anytime. ;)
 Your pseudo code is excellent and helped me to understand some of the
 trickier things. Thanks again!
 I think I will now be able to implement my own version. :)

 Regards,
 Isaac
 --
 Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
 http://www.gmx.net/de/go/multimessenger
 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-17 Thread Sylvain Gelly
Good catch :)Indeed it makes no sense with the *, sorry...

Sylvain

2009/1/17 Magnus Persson magnus.pers...@phmp.se

 I think I found a bug in ChooseMove

 Quoting Sylvain Gelly sylvain.ge...@m4x.org:

 coefficient = 1 - rc * (rc + c + rc * c * b)


 I think this has to be

 coefficient = 1 - rc / (rc + c + rc * c * b)

 thus when c is 0 (initially) the coefficient is 0
 when c goes towards infinity the coefficent goes 1

 which is how this function should behave.

 Magnus

 --
 Magnus Persson
 Berlin, Germany

 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-13 Thread Sylvain Gelly
2009/1/10 Isaac Deutsch i...@gmx.ch

 Hi Sylvain,

 I think it's starting to make sense now. :-)


  Sorry to be unclear. I wish we have a white board where we could discuss
  and
  that would sorted out in a few minutes :).

 Several results turn up in a google search ;p
 http://www.google.com/search?q=online+white+board


  What I tried to mean is that when you do the backup for a given node, you
  look at the part of the playout that happen after that node (including
  that
  node), and you do a normal AMAF backup for that part of the playout.
  Does it make sense?
  I hope we make progress and I am not making things more confusing :).
  I should write a pseudo code I guess, but for today I am too lazy :).
 
  Sylvain

 I tried putting this into pseudo code, but it already looks like C. ;p
 http://pastie.org/357231
 If you could look at it, I would be most grateful.

It sounds good but it seems to lack the check of whether a given move is
first played in a given intersection. When you add that, it because a little
more tricky to update in the tree. You also update the value of each move
independently of the color, i.e. a position in which it is black turn will
be update with white moves. You should restrict the update.

Hopes that helps,
Sylvain




 -Isaac

 --
 Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
 http://www.gmx.net/de/go/multimessenger
 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-09 Thread Sylvain Gelly
Hi Isaac,
in a nutshell RAVE is basically AMAF adapted for Monte Carlo Tree Search.
The original paper describing it is
http://www.machinelearning.org/proceedings/icml2007/papers/387.pdf and a
paper for broader audience can be found here:
http://www.lri.fr/~gelly/paper/MoGoNectar.pdf (the picture you posted comes
from that paper).

I think your description of RAVE is not completely correct, or at least I
don't understand it completely :). If I understand that sentence only the
siblings of the last node in the tree are updated accordingly, then it is
wrong.

There are two important parts in the algorithms: the backup and the use of
the RAVE value. The second is the hardest to tune and to make it right. The
proposed way of using the values in the original paper is not optimal (while
already very useful). A much better way (especially in 19x19) has been
described on that list by David Silver.
For the backup (as it is your original question), for each node traversed by
the simulation, back up the values exactly as it would be done in AMAF *if*
the playout began at that node. Note that I call playout the whole
simulation starting from the root and going to the end of the game.

Things you have to take care about, for each node, including the root,
including the last node in the tree (most of them obvious, but believe it is
really easy to forget small details and get something totally useless):
  - Count only moves that happen after the node.
  - Count only a move if it is played first on the intersection.
Be careful with captures, especially if they occur within the tree. It is
really easy to mess up the statistics.
  - Count only a move if it is the same color of the node (if in the
position of the node, black is to play, count only black moves for that
node)
  - Count all moves that happen after the node, including those happening
within the tree, and including the move that happen just after the node.

I hope it will help you write a correct implementation. Don't hesitate to
ask for precisions.

Sylvain

2009/1/9 Isaac Deutsch i...@gmx.ch

 I'm a bit confused about the difference between AMAF and RAVE (if there's
 one).
 As far as I understand, with AMAF, you sample in each playout (after it
 leaves
 the tree) the moves played (by both players), but only the first move at
 any
 position, then you reward all moves played either by a win or loss,
 depending on
 their colors.

 I tried comparing this to RAVE, as described in many papers. There might be
 multiple definitions of RAVE, but the one that seems the most clear to me
 is
 this one (picture used because of math stuff):

 http://img352.imageshack.us/img352/443/bild1pb3.png

 Is it correct that with RAVE, after a playout (after the tree), only the
 siblings of the last node in the tree are updated accordingly? The main
 difference to AMAF would be that instead of a single array with values of
 AMAFsumReward and AMAFnumPlayed, each node keeps for each of its children
 separate variables that hold these values. When a playout is finished, only
 the
 values of these children are updated instead of the single array.

 I hope you're able to make any sense out of this, sometimes a text can be
 confusing when the writer is confused. ;p

 Cheers, ibd
 --
 Sensationsangebot verlängert: GMX FreeDSL - Telefonanschluss + DSL
 für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K1308T4569a
 ___
 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/

Re: [computer-go] How to properly implement RAVE?

2009-01-09 Thread Sylvain Gelly
Hi Isaac,

2009/1/9 Isaac Deutsch i...@gmx.ch

 Hi Sylvain,

 Thanks for your quick answer.


  in a nutshell RAVE is basically AMAF adapted for Monte Carlo Tree Search.
  The original paper describing it is
  http://www.machinelearning.org/proceedings/icml2007/papers/387.pdf and a
  paper for broader audience can be found here:
  http://www.lri.fr/~gelly/paper/MoGoNectar.pdf (the picture you posted
  comes
  from that paper).

 Yes, I took a screenshot. Another paper I looked at was
 http://www.lri.fr/~teytaud/eg.pdf


  There are two important parts in the algorithms: the backup and the use
 of
  the RAVE value. The second is the hardest to tune and to make it right.
  The
  proposed way of using the values in the original paper is not optimal
  (while
  already very useful). A much better way (especially in 19x19) has been
  described on that list by David Silver.

 Do you mean the calculation of the factor beta that the RAVE value is
 multiplied with?


  For the backup (as it is your original question), for each node traversed
  by
  the simulation, back up the values exactly as it would be done in AMAF
  *if*
  the playout began at that node. Note that I call playout the whole
  simulation starting from the root and going to the end of the game.

 I see what you mean with the playout going from the root to the end of the
 game.
 How do you mean back up the values ... if the playout began at that node?
 Since every playout starts
 at the root (in my program, the root is the (previous) move of the opponent
 player), wouldn't that mean
 only updating the RAVE statistics for the root? I'm sorry if this question
 sounds stupid.


Sorry to be unclear. I wish we have a white board where we could discuss and
that would sorted out in a few minutes :).
In the quote of my sentence you did not put the as of the as if the
playout began... (the as and the if where separated by a part of the
sentence, which did not make things clearer, sorry...)
What I tried to mean is that when you do the backup for a given node, you
look at the part of the playout that happen after that node (including that
node), and you do a normal AMAF backup for that part of the playout.
Does it make sense?


- Count only moves that happen after the node.

 How do you measure if a move is after another move? The amount of moves
 taken from the root (i.e. the depth of the node in the tree/the playout)? Or
 do you mean that the node is effectively a (grand-grand-...) father of the
 move, so the playout has visited that node?

By after I mean after in the sequence.
If the playout is E5, A7, C4, D8, by after I mean that C4 is after E5, but
not after D8.

I hope we make progress and I am not making things more confusing :).
I should write a pseudo code I guess, but for today I am too lazy :).

Sylvain

 I hope it will help you write a correct implementation. Don't hesitate to
  ask for precisions.

 I really appreciate your help.

 -ibd
 --
 Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
 http://www.gmx.net/de/go/multimessenger
 ___
 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/

Re: [computer-go] Monte-Carlo Tree Search reference bot

2008-12-03 Thread Sylvain Gelly
What I did (was a long time ago, I don't know if it is still used in
Mogo), is to compute the m best moves every so often and most of the
time just do the max over those m moves.
m was on the order of 5, and every so often was an increasing
function like sqrt or log (I don't remember).
That speeds up quite a lot (when the max becomes the bottleneck), and
if you tune the parameters well you almost don't loose any strength at
a fixed number of playouts.

Sylvain

2008/12/3  [EMAIL PROTECTED]:
 There is another speedup trick that might interest you. IIRC Lukasz Lew came
 up with it, but I forget what he called it. After calculating the selected
 move for an internal node (going through UCT and RAVE and whatnot) store
 that move. Then, for the next N visits to that node (where N is 5 or 10 or
 so), just repeat that move without having to calculate what the move would
 be.

 - Dave Hillis

 -Original Message-
 From: Mark Boon [EMAIL PROTECTED]
 To: computer-go computer-go@computer-go.org
 Sent: Tue, 2 Dec 2008 11:17 pm
 Subject: Re: [computer-go] Monte-Carlo Tree Search reference bot

 I have made some minor performance improvements and this is as far as I
 intend to take this particular project. I might make some small changes if
 necessary, but most likely I'll leave this largely unchanged from now.

 I had set myself as an arbitrary goal that it should do at least 20K
 playouts. But with real liberties, AMAF and a RAVE formula I got stuck in
 the 16K-17K range. According to my profiler that is mostly due to the
 expensive formula used to compare nodes, where it says it spends 25% of
 total time. The formula I'm using is:

   beta * (virtual-win-ratio + RAVE) + (1-beta) * (win-ratio + UCT)

   beta = 1 - log(parent-visits) / 20
   UCT = exploration-factor *sqrt( log(parent-visits) / (nr-visits+1) )
   RAVE = exploration-factor *sqrt( log(parent-visits) /
 (nr-virtual-visits+1) )

 There are probably quite a few possibilities still to tune this program with
 regards to playing strength and performance. But I felt it doesn't help to
 obscure the implementation by too many details.

 The implementation of the search algorithm was entirely game-independent,
 until I introduced AMAF. I didn't see how to fix that, as there's no way
 getting around that it's based on the fact that a move is represented by a
 single coordinate, which is mapped to an array to store the statistical
 values. But strip the AMAF part, which is a block of 30 odd lines of code,
 and I think it can be used for other games basically as-is. I did this not
 because I ever see myself program another game, but because in my experience
 in doing so I get a cleaner separation between modules.

 At 2,000 playouts, it's still quite a bit weaker than the plain MC-AMAF
 refbot. It wins only about 33%. But that's probably because the 1,000-2,000
 playouts range is the sweet-spot for that particular type of playing engine.
 It doesn't scale from there, whereas the MCTS ref-bot only just gets warmed
 up with 2,000 playouts.

 This leads me to a question. I suppose it might be of some interest to put
 this bot up on CGOS. But what parameters to use? The main one being the
 number of playouts, naturally.

 Mark
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/

 
 Tis the season to save your money! Get the new AOL Holiday Toolbar for money
 saving offers and gift ideas.
 ___
 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/


Re: [computer-go] What was the specific design of the Mogo version which beat the pro...

2008-08-13 Thread Sylvain Gelly
C++ on linux (with a port on windows using cygwin libraries for the binary
release)

Sylvain

2008/8/13 steve uurtamo [EMAIL PROTECTED]

  And what language/platform is Mogo written in; C/C++, Java, Assembly,
 PHP,
  etc.?

 This made coffee spray out of my nose (PHP).

 I think that C is most likely, based upon how they parallelized it.  Did
 you
 read the list posting that mentioned (briefly) how they scaled it up?

 s.
 ___
 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/

Re: [computer-go] Correction in AGA eJournal...

2008-08-12 Thread Sylvain Gelly
 the mistaken comment (9 stones in a year, computer superiority real soon)
 is getting repeated a huge number of times.


As one of my computer science teacher said: if your editor has the
copy/paste feature, throw it away.

It obviously applies to programming and apparently to publication as well :)

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] What Do You Need Most?

2008-07-28 Thread Sylvain Gelly
2008/7/28 Ray Tayek [EMAIL PROTECTED]

 At 07:53 PM 7/27/2008, you wrote:

 The traditional programs are around 10 kyu, but the new ones are 2 to 4
 kyu,
 at least on KGS.  I've seen some handicap games against dan players that
 are
 consistent with these ratings.


 wow. that's impressive. can one buy these or just play the on kgs?


You can download for free an old version of MoGo (which reached 2k on KGS
on a 4 CPU machine) at:
 http://www.lri.fr/~gelly/MoGo_Download.htm

Enjoy,
Sylvain



  It wouldn't surprise me to see 1 dan from an MC program before 2010,
 running
 on an 8 processor mainstream system.

 David


 1-dan in two years? i must give your opinion a lot a weight, but i remain
 skeptical.

 how strong will the next version of manyfaces be? (and when can i buy it).



   -Original Message-
  From: [EMAIL PROTECTED] [mailto:computer-go-
  [EMAIL PROTECTED] On Behalf Of Ray Tayek
  Sent: Sunday, July 27, 2008 7:09 PM
  To: computer-go
  Subject: Re: [computer-go] What Do You Need Most?
 
  At 06:23 PM 7/27/2008, you wrote:
  I have a strong interest in seeing a 19x19 computer go program that is
  at least 3-dan by 2010.
 
  we all do. but as the programs are only about 10-kyu these days, we
  will be lucky to get to the small kyu ratings by 2010 and then you
  will hit a hard wall.
 
  i think michael is correct when he mentions incentive. there are not
  to many $'s out there to go after.
 
  some of us try to get the programs into tournaments (like
  http://www.cotsengotournament.com/), but the aga refuses to allow the
  games for credit. ...


 ---
 vice-chair http://ocjug.org/


 ___
 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/

Re: [computer-go] What Do You Need Most?

2008-07-28 Thread Sylvain Gelly

 You can download for free an old version of MoGo (which reached 2k on KGS
 on a 4 CPU machine) at:

 http://www.lri.fr/~gelly/MoGo_Download.htmhttp://www.lri.fr/%7Egelly/MoGo_Download.htm
 http://www.lri.fr/~gelly/MoGo_Download.htmhttp://www.lri.fr/%7Egelly/MoGo_Download.htm


 the exe just sits there. iirc, i need some sort of gui ? can you tell me
 what that is?

Yes you need some sort of gui. In the section Installation and use
instructions I give some name and links to some available gui. Did you try
the 2 first?
Drago gives specific instructions for MoGo at:
http://www.godrago.net/Engines.htm
GoGui should not be more difficult to use either.

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Representation of state-action pairs

2008-07-02 Thread Sylvain Gelly
MoGo has a notion of internal node in the tree (as most of the UCT
programs I think) and the state-action pairs are only kept for those.

Sylvain

2008/7/2 Jason Galbraith [EMAIL PROTECTED]:
 I've been looking at RAVE (Rapid Action Value Estimate), which MoGo uses.  The
 score of states during simulation is stored in state-action pairs, which are
 all updated with the playouts, rather than just those states visited in the
 tree.  How would you store these scores?  The number of potential states
 visited seems prohibitively large.

 Jason Galbraith
 Orego research group


 ___
 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/


Re: [computer-go] batch size and impact on strength

2008-05-25 Thread Sylvain Gelly

 This seems to be the case and I still do not really on some level
 understand why. Since with the chinese go rules the board should be
 effectively stateless (exempting ko information) all the information be
 contained in the the current position. Why additional information is needed
 i.e. an annotation of the last played move is required on some level is a
 mystery to me.


 One can build nice examples of that for some artificial games: the
 knowledge of the last move helps *for finite computational cost*.
 Sylvain has shown interesting elements around that, but as far as I know
 this was not in his ph.D. thesis and this is not published.


If I understand correctly what it is about, I do have something in my thesis
about that.
p153: 4.4.3 Mathematical insights: strength VS accuracy, and more
precisely Theorem 4.4.1 (Accurate simulation player without memory is
strong)
It is certainly not of direct practical application though.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MoGo/professional challenge

2008-03-21 Thread Sylvain Gelly
It was 2 cores 2.6GHz. (intel core2 duo).

2008/3/21, Olivier Teytaud [EMAIL PROTECTED]:
  What computing power did have that MoGo at its disposal?


 4 cores, 2.4 GHz.

 ___
  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/


Re: [computer-go] f(score) instead of sign(score)

2008-02-28 Thread Sylvain Gelly
 So MoGo may be
  using a floating point function to estimate the score of a playout,
  otherwise there would be no reason to use floating point. But I may be
  guessing wrong. Maybe they can tell us ?

We don't (at least up to the release, I don't know everything they are
doing now). Using the floats was for flexibility, because we did try
transformation as suggested and we also tried decays. We wrote things
before knowing what will work so the choices were always does it
allow us to experiment ideas?.

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 13x13 study. Time and memory

2008-02-22 Thread Sylvain Gelly
2008/2/22, Alain Baeckeroot [EMAIL PROTECTED]:
 Le jeudi 21 février 2008, Don Dailey a écrit :
   If you look at the table you will notice that going from level 4 to
   level 11 (which is 7 doublings  and should take 128X longer)  only takes
   59.43 X longer.
  

  So if we plot 9X9 rank vs time, maybe we have a straight line :)
It would indeed be very interesting to see that plot!

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 13x13 study.

2008-02-21 Thread Sylvain Gelly
Hi Don,

2008/2/21, Don Dailey [EMAIL PROTECTED]:

  If you look at the table you will notice that going from level 4 to level
 11 (which is 7 doublings  and should take 128X longer)  only takes 59.43 X
 longer.

 Mogo's stop early heuristic works better at longer levels.

That is actually very interesting, and may be a new hypothesis for the
scalability limits we saw in 9x9. There are two kind of stop early
heuristics
- a safe one, in the following case: if we began to always simulate
the second best move, it would not have more simulations that the
first best move at the end of the time limit. As the chosen move is
the one with the maximum number of simulations, there is no point to
continue thinking.
- a risky one, in the following case: if the first best move have more
than x% of all simulations, and the ratio first best move/second best
move (in number of simulations) is more than y, and the total number
of simulations is greater than expected total of simulations / 2, then
we stop.
There is also a hard stop early in the following case: if the first
best move have more than 1-(1-x%)/2 of all simulations, and the ratio
first best move/second best move (in number of simulations) is more
than 2 * y, and the total number of simulations is greater than
expected total of simulations / 4, then we stop

Maybe x and y are not adapted to long thinking time (stop too early in
a loosing move).
Or maybe they are, and it worth saving time :).

Anyway, it is normal that we longer thinking time, even the first
heuristic arrives much more often.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: MoGo 64 bits, mogo double

2008-02-14 Thread Sylvain Gelly
Hi Hideki,

Isn't possible to just redirect stderr?

Best,
Sylvain

2008/2/14, Hideki Kato [EMAIL PROTECTED]:
 Hi Olivier,

  New versions of MoGo don't put log files, which was very useful to
  study.  Don't you have plan to release such versions put log files?

  -Hideki

  Olivier Teytaud: [EMAIL PROTECTED]:

 For people requesting mogoRelease3 without the bug for long computation
  times due to a float instead of a double:
  
  http://www.lri.fr/~teytaud/mogo (32 bits version, with double instead of
 float)
  
  http://www.lri.fr/~teytaud/mogo64 (64 bits version, double also)
  
  Just compiled, almost untested, sorry;
  please email me in case of troubles.
  
  Best regards,
  Olivier
  ___
  computer-go mailing list
  computer-go@computer-go.org
  http://www.computer-go.org/mailman/listinfo/computer-go/

 --
  [EMAIL PROTECTED] (Kato)

 ___
  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/


Re: [computer-go] Re: computer-go Digest, Vol 43, Issue 8

2008-02-11 Thread Sylvain Gelly
 Thinking a little more about it, I think we have to add an hypothesis
 which is that, for a given move, the number of AMAF updates if  alpha
 (nb total UCT updates), with alpha  1. That seems to hold for most of
 the updates (with alpha close to 0.5), but there may be cases where it
 does not hold.
 
 
 If I understand well, you say that, in order to ensure consistency,
 we need some assumptions on the AMAF updates,
 i.e. the MC simulations which decide which move will have AMAF updates.

Yes.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: computer-go Digest, Vol 43, Issue 8

2008-02-11 Thread Sylvain Gelly
 As far as I see,
 if RAVE gives constant value 0 to one move, it will never be tested if
 other moves
 have non-zero AMAF values.

 A move
 with real empirical probability 0 of winning and AMAF value of 0.01
 will always be preferred to a non-simulated move with AMAF 0.0, whatever
 may be
 the number of simulations.
I agree, it is why I added a statement about the prior, which implies
that the AMAF value is never 0.0 but at worst decreases like 1/m if m
is the number of AMAF updates for that move.

Thinking a little more about it, I think we have to add an hypothesis
which is that, for a given move, the number of AMAF updates if  alpha
(nb total UCT updates), with alpha  1. That seems to hold for most of
the updates (with alpha close to 0.5), but there may be cases where it
does not hold.
Maybe I am confused and say unsound things, sorry for that. It is the
kind of things we should discuss in front of a black (or white) board.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] MoGo 64 bits, mogo double

2008-02-10 Thread Sylvain Gelly
Hi all,

I added those downloads on the MoGo's download page:
http://www.lri.fr/~gelly/MoGo_Download.htm

Cheers,
Sylvain

2008/2/9, Olivier Teytaud [EMAIL PROTECTED]:
 For people requesting mogoRelease3 without the bug for long computation
 times due to a float instead of a double:

 http://www.lri.fr/~teytaud/mogo (32 bits version, with double instead of
 float)

 http://www.lri.fr/~teytaud/mogo64 (64 bits version, double also)

 Just compiled, almost untested, sorry;
 please email me in case of troubles.

 Best regards,
 Olivier
 ___
 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/


Re: [computer-go] Re: computer-go Digest, Vol 43, Issue 8

2008-02-10 Thread Sylvain Gelly
A new position is always visited unless the leaf of the tree is the
end of the game. In that case, one player always win, so the other
always win. Then, the losing player will explore all the other moves
to avoid the sure loss. If all moves are still loosing, that will
propagate to the move before, and the exploration will begin and so
on.
There is indeed no forced exploration, but there is exploration as
soon as a move is loosing.
I can totally be wrong, but currently I don't see where this does not
hold. Does it?


Sylvain

2008/2/10, Olivier Teytaud [EMAIL PROTECTED]:
  - at each (or every n) iteration you add one node.

 As far as I see, new nodes are created only if new nodes are visited;
 if
 score(visited nodes)  score(unvisited nodes)
 why would mogo visit new nodes ?

 But (before the recent PDF file) I never understood completly
 the bandit in mogo, so you are probably right :-)
 ___
 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/


Re: [computer-go] More UCT / Monte-Carlo questions (Effect of rave)

2008-02-06 Thread Sylvain Gelly
Hi Erik,

 (1) They compared Rave to plain UCT. If they would have compared it to
 a more sophisticated implementation (like the best Mogo before Rave)
 they probably could not have shown a spectacular improvement.

The best Mogo before Rave was very close to plain UCT with the
sequence-like simulations. And indeed we exactly compared the best
Mogo before and after Rave. There is a table (I don't remember which
number), which show the incremental improvements from plain UCT, to
Rave, passing by plain UCT with sequence-like simulations. All
experiments have been done with MoGo's code, all other parts of the
code staying constant. There were not secret part of MoGo disabled
to make the improvement of Rave more interesting.

One discrepancy between our results and the one some of you observe,
as Gian-Carlo stated, is likely to come from the parameters and detail
of implementation. We heavily tuned those parameters and details
against gnugo, and that makes quite a big difference. I chatted more
closely with some of you about details and it did make a difference.
Maybe some of you can share what made a change, if you want.

Note as well that the current implementation of MoGo (not the one at
the time of the ICML paper) use a different tradeoff between UCT and
Rave value, thanks to an idea of David Silver, which brought
improvements in 19x19 (where the Rave values are the most useful),
while it was marginal (still better) in 9x9. But anyway we here are
talking about 9x9, so it can't explain what you are talking about.

 (2) () Depending on the playout
 policy, adding an upper confidence bound to the rave values can push
 some terrible bad moves up (like playing on 1-1). The reason seems to
 be that such moves are normally sampled very infrequently (so the UCB
 will be higher), and when they are selected (...)

That could be an explanation, but there are two points:
- the prior you put on top of Rave often avoid to first sample 1-1,
and even when you do, you very often loose just 1 playout because of
the UCT value you get right away.
- I never observed a big discrepancy between the number of Rave
samples for each move.

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] More UCT / Monte-Carlo questions (Effect of rave)

2008-02-06 Thread Sylvain Gelly
Hi Erik,

 In the ICML version of UCT without RAVE, you did not use your First
 Play Urgency, right?

 I think that using FPU has an effect similar to what others reported
 with their progressive widening. From what I've seen it looks like
 plain UCT, without FPU or progressive widening, has more to gain from
 RAVE.

 Am I wrong to assume that the strongest version of Mogo before you
 introduced RAVE used something like FPU or progressive widening?

You are right, but the effect of terms which were before is by far
negligeable. It may definitely be possible that stronger use of
knowledge like the progressive widening make the effect of RAVE much
less interesting. It was not our case at that time. I am also not sure
that it is the main reason of failure for people who tried and report
a small improvement. Of course, there can be so many reasons that it
is difficult to find out without looking at the implementation in
details :/.

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 19x19 Study

2008-01-31 Thread Sylvain Gelly
No problem for me. I did not want to multiply the number of versions not to
confuse people. With the double version, don't forget it will increase the
memory footprint for a given number of nodes.

Sylvain

2008/1/30, Olivier Teytaud [EMAIL PROTECTED]:

 I can provide a new release with double instead of float.
 (unless the other mogo-people reading this mailing-list do not agree for
 this; Sylvain, no problem for you ?).

  I don't know exactly when it begins to do bad moves. However, I know
 that
  after several hours, the estimated winning rate converges to 1 or 0,
 with
  crazy principal variations, and the cause is low resolution of single
  floats. In this study, it should no be a big factor of unscalability
 given
  the number of simulations.
 ___
 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/

Re: [computer-go] 9x9 study rolloff

2008-01-31 Thread Sylvain Gelly
Hi,

With such a large number of playouts, the tree size limit (and so
heavy pruning) is certainly a possible hypothesis. The simplest way to
test it would be to run the same MoGo_17 or _18 with a much bigger
tree (taking more memory). --collectorLimitTreeSize is by default
40 (number of nodes). If you want to increase beyond 100, you
should also add --limitTreeSize 200 (this limitTreeSize does not
make much sense with the pruning, but it is a hard limit which,
whatever happens, will not be reached... modulo bugs ;))

Sylvain

2008/1/31, Janzert [EMAIL PROTECTED]:
 I haven't seen anyone else mention this, although I may have missed it
 in one of the previous discussions.

 I find it pretty amazing that both Mogo and Fatman are leveling off at
 exactly, or almost exactly, the same number of playouts (i.e. Fatman lvl
 14 == Mogo lvl 18 == 8388608 playouts). Could it simply be that they
 have run out of memory to build a larger tree and are starting to prune
 branches that would become critical if they had the space to explore them?

 Janzert

 ___
 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/


Re: [computer-go] 19x19 Study

2008-01-30 Thread Sylvain Gelly
Hi,
I don't know exactly when it begins to do bad moves. However, I know that
after several hours, the estimated winning rate converges to 1 or 0, with
crazy principal variations, and the cause is low resolution of single
floats. In this study, it should no be a big factor of unscalability given
the number of simulations.

Sylvain

2008/1/29, terry mcintyre [EMAIL PROTECTED]:

 Sylvain, in the download notes, you mention that Mogo has some troubles
 with very long timescales, due to the low resolution of single floats. Do
 you have any estimate of how many simulations would lead to this situation?



 Terry McIntyre [EMAIL PROTECTED]
 - Original Message 
 From: Sylvain Gelly [EMAIL PROTECTED]
 To: computer-go computer-go@computer-go.org
 Sent: Tuesday, January 29, 2008 10:36:38 AM
 Subject: Re: [computer-go] 19x19 Study

 but not linearly and you can see a nice gradual curve in the plot.
 
  Now we have something we can argue about for weeks.   Why is it not
  mostly linear?   Could it be the memory issue I just mentioned?
 

 Hi Don and all participants to that study, that is very interesting!

 The memory constrains are certainly a valid hypothesis, especially the
 default settings of the release are rather conservative on that side,
 because it seemed better to have a weaker player than begin to make the
 player's machine swapping... Those settings are rather fitting your memory
 constrains as well, so it is fine.

 Reading your email and looking at the curve, I wonder if one possible
 explanation could be an artifact on how the ratings are computed? My
 question is: what curve would we see for that study if the involved players
 were exactly linearly scalable? That seems silly, but I wondered if there
 were an underestimating of higher levels, because of the way the bayeselo
 works. I am also looking at the curve after the 5-6th level (~gnugo), as
 behavior may be different for very low levels.

 I don't know if my hypothesis makes sense.
 Sylvain


 --
 Never miss a thing. Make Yahoo your 
 homepage.http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Sylvain Gelly thesis in english

2008-01-13 Thread Sylvain Gelly
  Google finds it:
  http://tao.lri.fr/Papers/thesesTAO/SylvainGellyThesis.pdf

That is NOT the latest version. Please at least let me put the latest
version on my web site, it took me so long to correct it :).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MoGoRel3_3550pps

2008-01-13 Thread Sylvain Gelly
 The reason I said that was this behavior from mogo.  If I start it without
 that switch and as for a move, it allocates 20 seconds.  If I then issue a
 small
 time_left command and ask for another move, it allocates a much smaller
 amount of time.  Here is the output:

 Because you give a time_left  20, so MoGo is in fast end mode, just
playing randomly to avoid loosing by time.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MoGoRel3_3550pps

2008-01-13 Thread Sylvain Gelly
Hi,

Nothing strange here. You tell MoGo to play 19x19 and you tell him that
there is only 60 s left. It can be understood that it takes only 1s for this
move...
BTW, if you see him play in 9x9, it is because while you told him to set his
parameters for a 19x19, by default the boardsize is 9x9 and MoGo expects a
gtp command to override it.

Cheers,
Sylvain

2008/1/13, Michael Williams [EMAIL PROTECTED]:

 Sylvain Gelly wrote:
 
  The reason I said that was this behavior from mogo.  If I start it
  without that switch and as for a move, it allocates 20 seconds.  If
  I then issue a small
  time_left command and ask for another move, it allocates a much
  smaller amount of time.  Here is the output:
 
  Because you give a time_left  20, so MoGo is in fast end mode, just
  playing randomly to avoid loosing by time.

 OK, here it is with 60 seconds (still no command-line switch):


 [EMAIL PROTECTED]:~/go$ ./mogo --19
 initiateNodeUrgencyForShisho at root node!
 Load opening database openingValues_19 succeed (nbEntries=60629)
 (nbIllegalMoves removed 0)
 tried to open openingValues_19, success 1
 time_left b 60 0
 =

 genmove b
 time left: 60 secs
 time given for this move:  1.0 sec time
 shishoCheck is called. Now we have 0 shishoLocations: and 0
 attackShishoLocation

 initiateNodeUrgencyForShisho at root node!
 Self train initiation time: 0.00
 0.443380(83%) ||   1148/ 1(11%)(93%)(58%/0.60) ||47 |12 || B2 C3
 D3 D4 E4 E3 D2 F4 E5||SSP:B2 C3 A1 H8 J1 ||PSP:B2 C3 A1 H8 J1
 earlyCut : max1 1364; max2 1120; sum 12061  max1/sum 0.113082 ; max1/max2
 1.216771 (hard 0)
 0.435484(16%) ||   1364/ 12061(11%)(82%)(65%/0.60) ||53 |12 || B2 C3
 D3 D4 E4 E3 D2 F4 E5||SSP:B2 C3 A1 H8 A6 ||PSP:B2 C3 A1 H8 A6
 12061 simulations(average length:0) done, time used:   0.96 seconds.(
 12563.5 games/sec)


 A  B  C  D  E  F  G  H  JABCD 
EFGHJ
   +---+
 +-+
   9   | .  .  .  .  .  .  .  .  . | |  0.0001   2.4427   2.4315
 0.0001   0.2353   0.3509   0.3750   0.3204   0.3867 |
   8   | .  .  .  .  .  .  .  .  . | |  2.4245   0.4698   2.4267
 0.0001   2.4426   0.5111   2.4430   0.4303   0.3468 |
   7   | .  .  .  .  .  .  .  .  . | |  0.5000   2.4244   2.4167
 2.4193   0.5317   2.4296   2.4360   0.4259   2.4463 |
   6   | .  .  .  .  .  .  .  .  . | |  0.4343   2.4323   2.4267
 0.5000   2.4398   2.4261   0.0001   0.3043   0.3857 |
   5   | .  .  .  .  .  .  .  .  . | |  0.3961   2.4463   2.4310
 2.4306   0.4898   0.5248   2.4324   0.4249   0.3109 |  Black to play
   4   | .  .  .  .  .  .  .  .  . | |  0.3663   0.0001   2.4404
 2.4231   2.4280   2.4326   2.4394   0.4268   0.3033 |  Black eaten
 stone(s): 0
   3   | .  .  .  .  .  .  .  .  . | |  0.3582   0.3846   0.4429
 0.5417   2.4329   2.4407   2.4381   2.4381   0.3387 |  White eaten
 stone(s): 0
   2   | .  .  .  .  .  .  .  .  . | |  0.2000   0.4355   0.5000
 0.4000   0.3438   2.4395   2.4387   0.3760   0.3895 |
   1   | .  .  .  .  .  .  .  .  . | |  0.4284   0.4000   0.3867
 0.3780   0.4011   0.3805   0.3782   0.4040   0.4129 |
   +---+
 +-+

 A  B  C  D  E  F  G  H  J A  B  C  D  E  F  G  H  J
   +---+ +---+
   9   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0 |
   8   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0 |
   7   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0 |
   6   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0
 |  Move 1: B2
   5   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0
 |  White to play
   4   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0
 |  Black eaten stone(s): 0
   3   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0
 |  White eaten stone(s): 0
   2   | . (@) .  .  .  .  .  .  . | | 0  1  0  0  0  0  0  0  0 |
   1   | .  .  .  .  .  .  .  .  . | | 0  0  0  0  0  0  0  0  0 |
   +---+ +---+
 B2
 = B2

 ___
 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/

Re: [computer-go] MoGoRel3_3550pps

2008-01-11 Thread Sylvain Gelly

 It looks like MoGo does respect the time_left commands from GTP, so I
 don't think the totalTime parameter is required in this case.

What do you mean? If you don't put --totalTime, then MoGo indeed ignores
time_left. If you put --totalTime, then it respect the time_left.

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] MoGoRel3_3550pps

2008-01-11 Thread Sylvain Gelly
2008/1/10, [EMAIL PROTECTED] [EMAIL PROTECTED]:

 Hi Sylvain,
   Have you finished your thesis? We are eager to read it:-)


Hi,

Yes I did! :).It is not on my website, but will (soon?).
However, you should not be so eager to read it :)

Cheers,
Sylvain


On 1/10/08, Sylvain Gelly [EMAIL PROTECTED] wrote:
  Hi,
 
  I guess the public version of MoGo was designed with a
   focus on 9x9 and not 19x19.
 
  It was not more on 9x9 that 19x19, it was more or less the best settings
 of
  MoGo against gnugo at the moment I left the developpement (early
 september)
  for both 9x9 and 19x19.
 
 
  Or is there something else I should be
   including on the command line?
 
  As other said, but just to confirm:
  --playsAgainstHuman 0
  Also you have to specify
  --totalTime 300
 
  if 300 is the number of seconds of the games. If not, MoGo does not care
  about the time left, and will just play a constant time per move,
 loosing by
  time with no other worry :).
 
  The release is designed to play against human on a server/client which
  supports a scoring taking into account the dead stones. On cgos you have
 to
  capture all dead stones.
  As for the rating, I don't know all the changes that has been done on
 CGOS
  since then, but on the old 19x19 one, the rating should be more than
 2100 or
  2200.
 
  Hoping this helps,
  Sylvain
 
 ___
 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/

Re: [computer-go] MoGoRel3_3550pps

2008-01-10 Thread Sylvain Gelly
Hi,

I guess the public version of MoGo was designed with a
 focus on 9x9 and not 19x19.

It was not more on 9x9 that 19x19, it was more or less the best settings of
MoGo against gnugo at the moment I left the developpement (early september)
for both 9x9 and 19x19.


Or is there something else I should be
 including on the command line?

As other said, but just to confirm:
--playsAgainstHuman 0
Also you have to specify
--totalTime 300

if 300 is the number of seconds of the games. If not, MoGo does not care
about the time left, and will just play a constant time per move, loosing by
time with no other worry :).

The release is designed to play against human on a server/client which
supports a scoring taking into account the dead stones. On cgos you have to
capture all dead stones.
As for the rating, I don't know all the changes that has been done on CGOS
since then, but on the old 19x19 one, the rating should be more than 2100 or
2200.

Hoping this helps,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] low-hanging fruit

2007-12-05 Thread Sylvain Gelly

 You should be using area scoring only and if you are playing handicap
 games then either YOU or MOGO is not counting them the same. Or
 perhaps Mogo has a bug in the handicap code.


MoGo uses KGS handicap counting (add 1 point to white for each handicap
stone) if the GTP set_handicap_stones (approximate spelling) is called.
MoGo never passes when it looses, it resign instead. So if MoGo passes, that
means that you lost :) (there are also sometimes bad interpretations of
nakade but that is not the case from what you describe).

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] RAVE in MoGo paper

2007-10-09 Thread Sylvain Gelly
Hi,


2007/10/8, Benjamin Teuber [EMAIL PROTECTED]:

 Hi everybody - especially Sylvain =)

 I'm wondering whether the formula to determine the balance between RAVE
 and UCT,
 beta = sqrt(c / 3 * parentVisits + c),
 has any mathematical background - or is it just a best guess for something
 that starts at 1 and is 1/2 after a certain number of visits?


No it is just a tuning :)


Another question is about the prior integration. Apparently the prior, RAVE
 and UCT values are three different estimators for the winning probability.
 So why not use the above formula for prior vs. RAVE balancing, too, instead
 of initializing RAVE with it?


Our prior is actually classical and equivalent to a Dirichlet prior for the
RAVE value. Of course we could put the prior in other ways, put I strongly
believe that at this point the relevance of the prior is more important that
the way you use it.

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Update of MoGo binary release, and windows version available!

2007-10-07 Thread Sylvain Gelly
Hi,

Yes you can:
--nbTotalSimulations 3000

Once you set this option it ignores all other time settings.

Cheers,
Sylvain

2007/10/7, Yamato [EMAIL PROTECTED]:

 Sylvain,

 Can I set the number of the simulations per move instead of the
 thinking time? (like --simulations 3000)
 If possible, it is very useful for the benchmark.

 --
 Yamato
 ___
 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/

Re: [computer-go] Mogo: nakade

2007-10-06 Thread Sylvain Gelly
Hi,

ok I understand.
Unfortunately MoGo is not multithreaded on windows due to the bad
performance of pthread. So it actually use only 1 thread.

However a side effect of --nbThreads x is that the time per move is
multiplied by x, because the time is computed as CPU time.
In your setting that means that MoGo actually uses twice as much time, ie 60
s.

Sorry for the confusion for you, and for other people who may have run into
it.

Cheers,
Sylvain

2007/10/6, [EMAIL PROTECTED] [EMAIL PROTECTED]:

 I used --19 --time 30 --nbThreads 2

 DL


 -Original Message-
 From: Sylvain Gelly [EMAIL PROTECTED]
 To: computer-go computer-go@computer-go.org
 Sent: Fri, 5 Oct 2007 5:48 am
 Subject: Re: [computer-go] Mogo: nakade

   I set 30 second playing
  time, but often it takes up to couple minutes for a move.
 That is not normal, could you post the command line you use?

 Cheers,
 Sylvain
 ___
 computer-go mailing list
 [EMAIL PROTECTED]://www.computer-go.org/mailman/listinfo/computer-go/

  --
 Email and AIM finally together. You've gotta check out free AOL 
 Mailhttp://o.aolcdn.com/cdn.webmail.aol.com/mailtour/aol/en-us/index.htm?ncid=AOLAOF0002000970
 !

 ___
 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/

Re: [computer-go] Mogo: nakade

2007-10-05 Thread Sylvain Gelly
 I set 30 second playing
 time, but often it takes up to couple minutes for a move.
That is not normal, could you post the command line you use?

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Mogo: nakade

2007-10-03 Thread Sylvain Gelly
Hi Darren,
Thank you for playing (I hope you enjoyed :)) and your report.

 Sylvain, can you explain more about why it has this particular weakness?
What you describe is exactly the issue I describe in the FAQ.
From my analysis this come from the fact that the simulations are more
likely to make the dead group to live than to die. It happens only on
some situations, but when it happens, and you are in a part which is
not explored by the tree, the probability for the group to die is low
so MoGo simply consider that there is more important part of the board
to analyse. Of course you can be more agressive on exploration and
then get rid of this problem, but what I want is the best playing
level in average, not solve some particular positions.
I guess an overall fix of the simulation would be the best way to go for that.

 Also, is there a plan to fix it?
Not by me at least ;). As I said earlier I am not working on it anymore...

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] IEEE Spectrum article by Deep Blue creator

2007-10-02 Thread Sylvain Gelly
Hi,

 Has anyone else done scaling experiments with 19x19 and UCT?


I did some months ago, and reported them in that list with the title
19x19 Go, scalability with time vs handicap
(http://www.mail-archive.com/computer-go%40computer-go.org/msg02775.html)

The results are old, but now everyone can do those experiments as
you all have the newest binaries ;) (you can only do the experiments
with time but not number of simulations, so you would have to run
on the same type of machines).

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Mogo: tree preservation

2007-09-28 Thread Sylvain Gelly
Hi Darren,

It preserves the tree if and only if you add:
--pondering 1

If you don't want to use pondering, but you still want to keep the tree
between moves, add
--keepTreeIfPossible 1

(not documented, and from my memory, it may be not the right option :p)

Hoping this helps,
Sylvain

2007/9/28, Darren Cook [EMAIL PROTECTED]:

 Hi Sylvain,
 I've had chance to play Mogo a fair bit recently, and have a couple of
 questions. The 2nd requires I make a diagram so I'll just ask the easy
 first one: is Mogo preserving the tree between moves, or does it start
 fresh each time?

 Surprisingly it seems to be the latter. E.g. we're mostly following its
 prime variation, but after my move in that line its first 20-30,000
 nodes are sometimes spent re-exploring the lines we both know won't work
 before it rediscovers the variation we were following.

 (If it is in fact preserving part of the tree is there any number in the
 debug output that says how many nodes it is carrying over?)

 Darren


 --
 Darren Cook
 http://dcook.org/mlsn/ (English-Japanese-German-Chinese free dictionary)
 http://dcook.org/work/ (About me and my work)
 http://dcook.org/work/charts/  (My flash charting demos)
 ___
 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/

Re: [computer-go] Update of MoGo binary release, and windows version available!

2007-09-20 Thread Sylvain Gelly
Hi Gilles,


yes they are some problems to use MoGo with Drago. The main issue is the
 initial message written to stderr as guessed by Dave. Actually, Drago
 handles incorrectly stdout and stderr in the same way but this is easily
 corrected.


Good news!

I have uploaded a patch for using MoGo with Drago:
 www.godrago.net/DragoForMogoPatch.zip. The zip contains an exe file which
 should replace the one from the current Drago install.


Why is it only a patch for MoGo? Is it only a change to handle stderr in a
good way?


As MoGo does not implement the GTP command final_result, an error message is
 displayed at the end of the game and the user must count the result. (By
 the
 way, is there a problem with 'final_status_list alive' ?)


I don't about all those GTP commands. MoGo implements a subset of GTP which
is enough for cgos, KGS and gogui.
For the scoring, of course cgos is the minimal :), but the scoring works
very well on KGS and gogui. I don't know which commands they send, but it
seems enough :).
Yet, it would be good for MoGo to support Drago as it seems pretty trivial
to do so, I will at some point look into it (without giving a date :)).

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Re: Update of MoGo binary release, and windows version available!

2007-09-20 Thread Sylvain Gelly
Hi Hideki,


The Windows version, however, seems much weaker than MoGo that running
 on KGS these days on 19x19, even giving much longer time setting such
 as --time 300 for example.  I guess some other settings than time
 are necessary.


Sorry, you are right the 19x19 settings always put the time management on.
So either play with --totalTime xx (instead of --time xx) and use some
frontend sending the time_left command, or add --timeManagementMode 0, or
wait for me to fix ;).
The 9x9 is not affected by that.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Re: Update of MoGo binary release, and windows version available!

2007-09-20 Thread Sylvain Gelly
Dear Hideki, Dear all,

I addressed some of the issues some of you mentioned. Thank you very much
for the reports. Now the collision between time management and --time xx in
19x19 is no more here (while you assuming there is no time_left sent).
There is also now a --13 option.
The --dontDisplay 1 removes all the displays (rather than most of).

For the issues reported by Gilles for Drago concerning the final_status
and final_status_list alive gtp commands, I read the GTP doc, and I
understand now :).
MoGo implements a subset of GTP which is sufficient for CGOS, KGS and gogui,
so the final_status_list dead works well, and should be enough to compute
the score. The others are simply unfortunately not supported.
I am very sorry for the inconvenience.

Best,
Sylvain




2007/9/20, Hideki Kato [EMAIL PROTECTED]:

 Hi Sylvain,

 Thank you for the releases of the Windows version and the Linux
 version for older processors.

 The Windows version, however, seems much weaker than MoGo that running
 on KGS these days on 19x19, even giving much longer time setting such
 as --time 300 for example.  I guess some other settings than time
 are necessary.

 So, my question is what setting allows Windows version being the same
 strength as KGS version?

 Regards,
 Hideki

 Sylvain Gelly: 
 [EMAIL PROTECTED]:
 Hi all,
 
 you can find here:
 http://www.lri.fr/~gelly/MoGo_Download.htm
 
 an update of MoGo's release, especially binary for non pentium4
 compatible processors, some other options explained, and maybe more
 interesting, an option for time management (I stupidly did not think
 that people would use MoGo with frontend sending time_left). It is
 basically adding simple interface to what existed before, but I hope
 it will be useful for you.
 
 In the same time of this update, you can finally download a windows
 version! Unfortunately, it is not multithread, and still 30% slower
 than the linux version, but at least it works :).
 
 Hopefully a Mac version will come.
 
 Please feel free to share the link to any player you know who may be
 interested.
 
 Best,
 Sylvain
 
 PS: I had no time to check everything. Hopefully it works, but if you
 find problems please report (and don't be upset ;-))
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 --
 [EMAIL PROTECTED] (Kato)
 ___
 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/

Re: [computer-go] Update of MoGo binary release, and windows version available!

2007-09-19 Thread Sylvain Gelly
Hi Dave and thanks,

  Drago works well for Gnugo and also for my program. Mogo starts but then
 exits prematurely with a message from Drago abnormal termination of
 engine.
:-(

   One thing, when I run it from the command line, it spits out a lot of
 non-gtp format diagnostic information even with the setting --dontDisplay
 1. That would upset some clients, including probably Drago, although I'd
 expect different symptoms if that were the only problem.

Normally not, the diagnostic information are sent to stderr, and
should not be a problem. So shall I understand MoGo at least works for
you on command line?

  I put an extra copy of cygwin1.dll in the WINDOWS\system32 directory, so
 mogo can find it from anywhere and I used --9 --time 12
 --useOpeningDatabase 0 --dontDisplay 1. That got it connected to Drago and
 actually set up a game.
You mean that with the .dll in WINDOWS\system32 that goes further? I
thought that the .dll in the same directory as the .exe was enough.

 But it terminates as soon as it gets a genmove
 comand.
:-(
With no error message?

 It creates a logfile in the directory where it is supposed to be
 running. There is one line that says
  MoGo GTP log file.
Lol. That means it did not get very far :)

  My best guess, right now, is that the non-gtp diagnostic messages are
 causing trouble. I'll look at it some more when I have time.
Sorry for the trouble.
I'll look at it as soon as I find some time, ie I don't know when :).

Sorry again for the trouble :-/
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


[computer-go] Update of MoGo binary release, and windows version available!

2007-09-17 Thread Sylvain Gelly
Hi all,

you can find here:
http://www.lri.fr/~gelly/MoGo_Download.htm

an update of MoGo's release, especially binary for non pentium4
compatible processors, some other options explained, and maybe more
interesting, an option for time management (I stupidly did not think
that people would use MoGo with frontend sending time_left). It is
basically adding simple interface to what existed before, but I hope
it will be useful for you.

In the same time of this update, you can finally download a windows
version! Unfortunately, it is not multithread, and still 30% slower
than the linux version, but at least it works :).

Hopefully a Mac version will come.

Please feel free to share the link to any player you know who may be interested.

Best,
Sylvain

PS: I had no time to check everything. Hopefully it works, but if you
find problems please report (and don't be upset ;-))
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-16 Thread Sylvain Gelly
Hi Hideki,

 Some computer-go friends in Japan have reported that even current
 binary of MoGo doesn't work on Athlon XP or Celeron.  Both (and
 Pentium III) have no SSE2 instructions while Pentium 4 has.

Ok, I have to compile for older processor too then (I did not expect
so old proc were still existing :))

 Could you please try -march=athlon-xp, pentium3 or generic?
I will.
I do it ASAP and let you know.

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 I had a similar issue where pthread/gcc/cygwin combination produced a very
 slow application. I had better success with Visual C++ and Boost (for
 portable threads).

You are right, I should have used Boost for the threads...
Unfortunately, I used pthread, and that mean that the threading part
have to be rewritten to use boost instead :-(.

 Where and when can we read your paper?
You mean my thesis? I defend the 25th september, and then I have to
make some corrections to it, so let's say beginning of november?
Yet, you can read our papers, available on MoGo's page, which contain
almost everything.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [spam probable] Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
2007/9/10, David Stafford [EMAIL PROTECTED]:
 What are the options for someone who would like a dan-level opponent (even if 
 it's 9x9)
 but doesn't have a Linux system currently?  Are there choices other than 
 MoGo?  If not,
 I'm willing to build a Linux box but I have some questions:

 - Is a quad-core Xeon better for MoGo than a higher-clocked Core 2 Duo?
 - How much RAM?
 - Which Linux distribution has it been tested with?
It has been tested by myself on Mandriva 2006, Mandriva 2007, debian
a recent one, ubuntu a recent one, and be others on this list
which reported a working MoGo :).

For the hardware question, 512 Mo RAM is enough in common use, and the
tree garbage collector is by default set to use less than 400 Mo
RAM. Of course you can change it to use more RAM.
For the speed, it is difficult to say, but let's say that you loose
20% to go from 2 CPUs to 4 CPUs at same clock. It is an approximate
rule, and it also depends on how long you let him think: the longer it
thinks, the bigger is the tree, the more time it spends in the tree,
the less efficient is the multihreading.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 Have you tried Visual C++?
 http://msdn2.microsoft.com/en-us/express/aa975050.aspx

The thing is that VC++ does not have the pthread library.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
2007/9/10, Don Dailey [EMAIL PROTECTED]:
 The command line parameter to change board size does nothing.

 I tried:

./mogo --19
./mogo  -19

 and it only seemed to want to play on 9x9 boards.Am I doing
 something wrong?


As I explained earlier in an answer, the command line parameters only
affects some tuning, but MoGo trusts the GTP commands. You have to
specify at some point boardsize xx

 A similar problem with the levels - it doesn't seem to matter what time I set.
Ah, that would be a problem. I can't test from here, I will test tonight.

 Does the command line parsing work?
It would be a shame if it does not work, does it ;)

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 I'm a little confused.   If I operate with no parameters it works ok,

No parameters means --19

 but if I do ./mogo --7  (for instance) it goes into some kind of 
 self-training mode.

Did you see a --7 option on the manual? :-p
There is no --7 option, nor a --13 one. You should put a --9 or a --19.
BTW, I am not sure this version can actually play in 7x7 (maybe, maybe
not). For the 13x13, I guess the --19 is more appropriate.

 If I go with no command line options, I can set any board using gtp
 commands but I can't change the number of processes used.

The number of processes can only set using --nbThreads x in the
command line. It really does not work for you? That is puzzling!

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 Well, I'm hoping for a Mac version someday...

Hopefully it will happen. As I don't have a Mac, I rely on external
help. I'll let you know :).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
  tried to open opening, success 0-- in grey
 Here it does not find the file, because the file is with the binaries
 and gogui (at least your version) looks into the gogui/bin directory.
 But that does not prevent MoGo to work.

 I guess so, as when I added --useOpeningDatabase 0 it's almost the
 same except the message.

As I read my sentence, it was not clear :). I meant because the
opening file is in the same directory as the mogo binary

 MoGo works fine with command line. Say,
 genmove b
 = E5
 genmove w
 = G6
 with lots of trace messages and the board in ascii.

Ok, so obviously it is something in the communication with gogui, that
is so strange, especially that it does not happen for me...

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 when I run the Linux exeutable on my Fedora 8/Athlon XP, I get a
 coredump:

 $ mogo --9 --time 12
 Load opening database opening succeed (nbEntries=618) (nbIllegalMoves removed
 0)
 tried to open opening, success 1
 Illegal instruction (core dumped)

 could it be that it is compiled for specific CPU architecture?

Of course it is :).
Ok, good (well, rather sad :)), to know that it does not work on
Athlon XP. I should rebuild with an older architecture then (but it
will be slower :-( ).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 Is there a option like gnugo's --capture-all-dead?
 In my test(./mogo --9 --time 1),  seems mogo  passed when not  capture 
 alldead stones.

As this release is mainly for humans to play, it is set to play
against humans, so passing as soon as the opponent passes and it is
safe to pass.
If you really want it not to pass, you should add a
--playsAgainstHuman 0

(I am not exactly sure of the exact spelling of the option and I can't
test from here. Let me know if it does not work).

 By the way, is --time 0.1 valid?
Yes


Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 I think gogui is in fact looking for files in the directory from which
 it is launched. Try this to copy the opening database in this directory.
Yes exactly, thank you Guillaume for explaining better than I can :p


 It runs perfectly on an Opteron 2.6GHz.
Good!
 But not on a Power5+ processor.
What is that? Never heard about such a processor :).
What is the error?

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


[computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
Hi all,

Thank you for all your comments and reports, and I am pleased some of
you are happy to use it. Please feel free to share the links,
especially for players who do not read this list.

I am sorry it does not work for some of you. I will look into it as
soon as I can.
BTW, I tried to answer everyone question, but as there were many
emails, maybe I missed some. Please don't be offended, and ask again
the question ;).

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 I guess the search path you've coded is something wrong or different
 depends on the distributions.
The search path is simply .

 I'd like to suggest to use some
 environment variable dedicated to mogo.
I think the recent version of gogui let you define the working
directory. Also, as Guillaume, said, you can simply copy the files
into gogui/bin, or not play with database :p.


 I think it's not so strange.  It's just depending on the distribution
 or dynamic libraries mogo uses, I guess.
It should not depend!! I simply use fprintf, which is standard!

 Are you flushing stdout and stderr explicitly with or without lock?  If so, 
 when and from
 what thread?
The communication is not multithreaded, and everything is flushed.
The strangest thing is that it works almost everywhere but not on your
machine. That is really confusing :(.

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: Solved! Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
Ah, now that makes sense, the additional number you posted on your
email was actually sent to MoGo, and I understand now why it did not
work.

Thank you for having solving it, and let us know :)

Sylvain

2007/9/10, Hideki Kato [EMAIL PROTECTED]:
 It's just setting of Gogui.  When I turned off the auto-number
 feature, mogo worked fine.
 # Settings - Configure Shell - Auto number

 Cheers,
 Hideki

 Sylvain Gelly: [EMAIL PROTECTED]:
  I guess the search path you've coded is something wrong or different
  depends on the distributions.
 The search path is simply .
 
  I'd like to suggest to use some
  environment variable dedicated to mogo.
 I think the recent version of gogui let you define the working
 directory. Also, as Guillaume, said, you can simply copy the files
 into gogui/bin, or not play with database :p.
 
 
  I think it's not so strange.  It's just depending on the distribution
  or dynamic libraries mogo uses, I guess.
 It should not depend!! I simply use fprintf, which is standard!
 
  Are you flushing stdout and stderr explicitly with or without lock?  If 
  so, when and from
  what thread?
 The communication is not multithreaded, and everything is flushed.
 The strangest thing is that it works almost everywhere but not on your
 machine. That is really confusing :(.
 
 Best,
 Sylvain
 ___
 computer-go mailing list
 computer-go@computer-go.org
 http://www.computer-go.org/mailman/listinfo/computer-go/
 --
 [EMAIL PROTECTED] (Kato)
 ___
 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/


Re: Solved! Re: [computer-go] Re: Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
 auto-numbering in GoGui prepends all commands with an integer ID,
 which is sent to the program and should be used by the program in
 its response, see the GTP specification.

Ok, I did not know that, thanks. So that part of GTP is simply not
supported in MoGo :).

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-10 Thread Sylvain Gelly
Hi Markus, Hi all,

I updated the package to fix the issues you get and some other minor
ones. Please update before reporting a problem, and please report any
further problem :-).

 I don't know about Ubuntu, but the default GCC configuration on Fedora
 does not set CPU-specific compiler options, so an executable should
 run on the whole family of i386 processors.
I don't use the default gcc options, you can make it significantly
faster tuning the options.

 If you add some Intel-Core 2 specific options yourself, I would be
 interested, what they are, and in what speedup they really result.
 For Athlons, I never found a significant difference between enabling
 AMD architecture or just using the default configuration.
I used --march=opteron, and that gives a +3% on a core2duo compared to
--march=pentium4, while working on all recent machines (but apparently
not on your Athlon XP :) ). I switched back to --march=pentium4

Tell me if it works now (hopefully),
Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


[computer-go] Binary release of MoGo

2007-09-09 Thread Sylvain Gelly
Hi all,

I am pleased to announce a binary release of current version of MoGo.
It is specially designed for players but of course it may be
interesting for some of you as a benchmark.
You download it and see the instructions there:
http://www.lri.fr/~gelly/MoGo.htm

Of course, please feel free to talk of it around you, share the link,
and put the link on your webpage :). Please distribute the link but
not the package directly, so that I keep track of the distribution,
and maybe put some fixes, so that people always get the latest
version.

Unfortunately, only the linux version is available (for the moment?).
I wanted to wait for the windows version to be available at the same
time, but it is 2 times slower than the linux version(!!), so I
decided not to distribute it for the moment. I use cygwin for that,
and maybe the reason is that cygwin has only gcc 3.4.2, and which
produce a much slower binary. If anyone has a solution, I would be
pleased to put the windows version as soon as possible.

I would also take this occasion to say goodbye to you all, and thank
you for all the discussions. I now finished (and almost defended :))
my PhD, and my work on MoGo is finished. So it is very likely that I
will not make any further contribution to MoGo. I would like to say
that I spent a very good year in the computer Go community, with of course a
warm special thank to Yizao. Of course, I will follow the future
discussions on this list with pleasure.

Best,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Binary release of MoGo

2007-09-09 Thread Sylvain Gelly
2007/9/9, Brian Slesinsky [EMAIL PROTECTED]:
 Are there any plans to release the source?
I don't think so. Plus, some will work on MoGo source code, so it is
their decision, not mine.

 Perhaps someone else will figure out how to port it.
Well, it actually builds and work on windows, only the speed is an
issue. I should try if the speed is the same on linux with such an old
compiler. My guess is that it is really a matter of compiler version.
(even if it seems incredible to have a +100% speed only with the
compiler!).
Maybe it is also a question of libc version?

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Binary release of MoGo

2007-09-09 Thread Sylvain Gelly
 Try MinGW (and MSYS).  MinGW has GCC ver. 4.2.1.
 http://sourceforge.net/project/showfiles.php?group_id=2435

Yes, I saw that and tried. But the thing is that MoGo use pthread
library for multitreading, and, as far as I know, MinGW does not
provide pthread (does it?). It is why I needed cygwin. It seems that
some succeed in compiling gcc 4.2 on cygwin, but it seems really
painful, and I can't allocate so much time to do that... I guess that
cygwin will eventually release a modern compiler :-).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Slides for Villach-EC Lecture

2007-07-21 Thread Sylvain Gelly

Hi Chrilly,

I am sorry about your fight with a dog, and I hope you are ok!

I read your slides: interesting point of view, whereas you seem a
little frustrated. Thank you for sharing your opinion.

However, I have to disagree with this statement:
UCT: Complete Antithesis to AI-approach

I really thing it is exactly a modern AI approach!! Also it is a
general algorithm applied to many different domains (and many are not
two player games, ie max-max problems and not min-max).

I think it is exactly the bad example for the anti-drosophila thesis...

Cheers,
Sylvain

2007/7/21, chrilly [EMAIL PROTECTED]:

Attached are Powerpoint-Slides for a computer-Go-lecture I should have given
tomorrow (Sunday 21.07.07) at the European-Championship in Villach/Austria.
I think the final conclusion fits to the cancellation of the Gifu
tournament. I did not know this when preparing the slides.

Unfortunately I had to cancel the lectures, because at an attempt to stop
the fighting between my dog Bello and his village-rival Max I was
considerable bitten by Max. Normally the owner of Max and myself let them
fight. It looks like they would kill each other, but in fact nothing serious
happens. But this time I wanted to play the hero and Max was not pleased
that I interferre into dog-internal affairs (neither was Bello).

Maybe the slides are of interest.

Chrilly

___
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/


Re: [computer-go] Slides for Villach-EC Lecture

2007-07-21 Thread Sylvain Gelly

Hi Chrilly,

It was always the goal of McCarthy and his followers to simulate and to surpass
the human mind. (...)
UCT has nothing to do with human Go. It has some similarity to the behaviour
of ant-collonies (its not in the technical sense an ant-colony algo). It was
never the goal of AI to explain ants.


Ok I understand your point. For me the goal of AI is not to explain
the human mind, and even less to try to imitate it. Intelligence is
not about how it works, but what it does. If it seems intelligent,
then it is. Are animals and human intelligent? They seem so they are:
it is simply an ill-defined question.



How would you define modern AI? Obviously it is not the classic approach to
mimic humans anymore. But what is it?

For me it is when we (I was not there :-)) become less philosophical
and more precise about what we want. We want a system which use data
to improve itself in order to adapt to unseen situations. What is a
good learning? In supervised learning we have some answers, as what is
over-fitting, how to avoid it, how to handle well non linear and
structured data (e.g. with kernel methods). In control problem, ie
reinforcement learning, which is for me the big challenge, and were
big applications are, many questions are still fuzzy, but modern AI is
for me trying to make them well-posed, not doing philosophy on how
intelligence could arise, or how it works in human mind (which is so
complicated).



What do we learn about the human mind from UCT?

Nothing and that's not the goal, I simply don't care. If you really
want to learn from human mind, do cognitive science, not AI. Maybe one
interesting thing we can learn is that there is not only one way to
make things intelligent, but many.

Sorry to have been somehow philosophical here, I'll stop :-).
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Why are different rule sets?

2007-07-12 Thread Sylvain Gelly

Hi Chrilly,

Take a look at this list, there are already maybe more than 100 posts
on this subject. While I agree with you, just don't worry, almost all
computer go games are with the same set of rules, just ignore the
rest.

Cheers,
Sylvain

2007/7/12, chrilly [EMAIL PROTECTED]:

I am playing competitive tennis-table. There were for years a heated debatte
if the ball-diamater should be increased from 38 to 40mm and if the set
shall go to 11 instead of to 21. A few years ago, the decision was taken to
play with the 40mm ball to make the game slower and in turn to reduce the
set to 11.
Since then Chinese, Japanese, Korean and the rest of the world play with
40mm and stop at 11. After a short transition time, there is no discussion
at all about the new rules. Tennis, soccer, chess  is played all over
the world in the same way.
Why is it not possible to establish uniform rules in Go? Is there not
something like a FIDE or a FIFA ?

Chrilly

___
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/


Re: [computer-go] Explanation to MoGo paper wanted.

2007-07-10 Thread Sylvain Gelly

Hi David,


 (...) I cannot imagine that progress will be
 made without a great deal of domain knowledge.
 Depending on what you exactly mean I disagree.
I mean progress by the standard usually applied to computer Go:
programs that can beat 1D humans on a full board, and then get
better.


For me progress meant an improvement, not a goal :-).
Anyway, very few months ago almost everyone in this list said that
UCT/MC was only suitable for 9x9 Go, which was said not representing
the Real Game Of Go, and will never (in near future, or even in far
future) do well in 19x19. Today, some UCT/MC based programs, e.g.
MoGo, can give 5 stones to gnugo on 19x19 in 30 minutes game, without
any additional go knowledge. For me it is an evidence that progress
can be made very quickly without great deal of domain knowledge. Why
we (by we I mean the all community) could not imagine other
improvements? 1D humans on a full board is not so far, contrary as you
seem to say...



I am less sure that knowledge representation in the
classical programs is the right expertise for its representation in the MC
playouts.

Yes, maybe you are right, I don't know. But I think it is not a bad
expertise :-). And also it is a very expensive expertise (in the
sense that it takes a lot of time to get).


So many thing yet to do!

To me it sounds like a good news, don't you think? :-)

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 9x9 games wanted and the next big challenge

2007-07-08 Thread Sylvain Gelly

Hi Chrilly,

1) there are database of thousands of professional games for few
dollards. There are not 9x9, but (i) making database is not making
progress in the field, it is just having some temporary advantage in
tournaments. (ii) Opening is much less important in Go than in Chess,
it is why we are not so crazy about opening. At least at the current
level of programs. (iii) 19x19 Go is the real game, and you can get as
many games as you want, just clicking on three links.
2) interfaces are good enough for what we need, and tournaments as
CGOS or KGS are good tools to take the current temperature of field.
3) seriousness can't be measured as the short term money you can make
directly selling your work. I understand that you think that
researchers are paid just to play writing useless papers for themself.
But there are not more stupid than others, and maybe they think they
are doing something useful, even if it can't be measured by the direct
sell of what they produce.
4) I guess people that sell commercial programs are making money.

All that said, I agree that computer go is certainly much less mature
than computer chess.

Sylvain


I have read dozens of times that computer-Go is the next big challenge.
But in fact it is a completly amateuristic field where even the most basic
things are missing. As a chess programmer I did not even think about, that
it is a problem to get a good game collection. There are no proper
interfaces, no serious tournaments, a wired data standard...
AND there is no money involved:  For professional programming I get 60Euro/h
(1Euro=1.35$).
2.000h x 60 = 120.000 Euro.
This equation is of course completly wrong. One can not make in 2000h a very
strong Go programm and one can not earn 120.000 Euro with it.
A more realistic equation is;
20.000 Euro/5000h = 4Euro/h.

The minimum wage (by law) is in Austria 6Euro/h. Obviously Go programming is
even more unqualified than washing dishes in a restaurant.

If it would be really a big challenge, there would be some money. In chess
nowadays there is also no money. But once it was a good business and there
was some considerable money for Deep Blue and on a smaller scale also for
Hydra, there was Don's project at MIT, one got a big Cray for Cray-Blitz,
Ken Thompson build a chess engine
Its like some hobbyst engineers and hobby-pilots would try to fly to the
moon.
Its probably only good for to write some academic papers. In this case its
even an advantage that everything is so amateuristic. The general level is
low and one can be the one-eyed king under blind ones.

Its clear to me that things are as they are in the West. Go is played only
by a small freak community. But if it is so important in China/Korea/Japan
why is'nt there something like Fritz and ChessBase? Or does it exist and we
are living in a completly other Go-world?

Chrilly

P.S.: I do not want to offend anyone in this list. Everybody here does his
best. I am just feed up with the things as they are.



___
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/


___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [spam probable] [computer-go] scalability study - final results

2007-06-25 Thread Sylvain Gelly

Hi Don,

This is a very interesting study!

Sylvain

2007/6/25, Don Dailey [EMAIL PROTECTED]:


Someone just reminded me of the scalability study I did a few months
back and I reported that I would continue to run it for perhaps a few
more weeks.

I did run about 20% more games, but the data was quite useful because
it increased the number of games sampled for the highest levels.  I had
started the highest level program late but the auto-tester is designed
to try to equalize the number of games played for each player.

As a reminder, the study was designed to test the improvement of
modern UCT programs as the number of play-outs increase.  In the
study, I had two basic versions, each testing at 12 different levels.

The L series is Lazarus running with lite play-outs and the H series
is Lazarus running with heavy play-outs.  Since the study, Lazarus
has actually improved significantly, so these are both older versions
of Lazarus - still relatively strong and perhaps better candidates for
a study of this type since the older programs tend to be more
universal (less prone to serious intransitives.)

I don't have a graph like I did before, but one can easily be
constructed by the data:

--- Player Key ---

   H_  is heavy play-out version of Lazarus
   L_  is light play-out version of Lazarus

   The numeric portion of the player name describes how
   many play-outs were executed to play each move.


PLAYERTIME/GME   RATING  GAMES   Total games: 2895
    ---  -
H_204813350.17   2830.2168
H_1024 6693.84   2768.0169
H_0512 3147.28   2547.3168
H_0256 1547.30   2399.3168
L_2048 4549.37   2375.5168
H_0128  758.64   2315.7168
L_1024 2203.88   2287.8169
H_0064  381.00   2240.3339
L_0512 1064.80   2174.1168
H_0032  214.12   2129.2318
L_0256  523.12   2105.7168
L_0128  258.54   2097.8170
gg-3.7.9 68.97   2000.0307Standard GnuGo 3.7.9
L_0064  134.17   1981.7293
H_0016  125.93   1950.2284
L_0032   72.72   1941.5284
H_0008   62.27   1872.4276
L_0016   43.49   1758.6261
H_0004   31.22   1679.1253
L_0008   21.07   1556.2248
H_0002   14.90   1402.1250
L_0004   10.55   1347.0248
L_00025.03   1123.6248
H_00017.44   1031.6249
L_00012.49863.6248



Observations:

If you look at the entire range of the HEAVY player, you will notice
that each doubling (on average) was worth 164 ELO points.

You will also notice a gradual falloff in improvement as the levels
increase.

As a general rule of thumb, there is about 150 ELO per doubling.  I
figured this by throwing out the highest and lowest rated HEAVY player
and averaging the increase per doubling.  It seems pragmatic to throw
out the 2 extremes based on empirical observation - I have always
noticed that in a pool of players the highest and lowest often have
at least somewhat distorted ratings.

After throwing out the low and high ratings the top 5 players average
about 132 ELO per doubling and the bottom 5 average an increase of
about 210 per doubling.

So there is a definite decrease per doubling, but it's quite gradual.


I did a similar study with 7x7 and found that the tapering is extremely
pronounced.  It was quite obvious which komi to use, because if it was
too low black won every games, if it was too high white won every
game.  The tapering was pronounced because at higher levels the play
was very close to perfect.  If you are playing perfect, there is no
improvement to be had by doubling.

It appears as a general rule of thumb, (and is supported by empirical
evidence in similar studies of other games) that the rating/resource
curve is almost linear when you are far away from perfect play but
gets pronounced as you approach perfect play.  I suspect Lazarus at
the highest level I tested is within a few hundred ELO points of
perfect play.  It's still a long way off, especially considering that
Lazarus at the highest level was spending almost 4 hours on each 9x9
game!

My auto-tester stores all data, including configuration in a single
sqlite3 database.  In it are the SGF game records, individual results
and even time spent on each move and it's available to anyone who
wants it upon request - so you can analyze the results for yourself
and come to your own conclusions!

- Don



___
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/

Re: [computer-go] MoGo paper at ICML

2007-06-23 Thread Sylvain Gelly

2007/6/23, Yamato [EMAIL PROTECTED]:


Using prior knowledge on normal uct, and this was the use of prior
knowledge brought about the same improvement.

You mean, there is more improvement when using both?



I mean that there is no need to have AMAF to get improvement by using prior
knowledge.


It was gnugo default level, and we thought default was 8, but default is
actually 10. I don't see why it is so surprising, I guess it does not
change
really the level of gnugo.

Because I have tested my program against GNU Go level 8 to compare the
winning rate with MoGo. Now I see surely there is almost no change.



Ok, I understand.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

[computer-go] MoGo paper at ICML

2007-06-22 Thread Sylvain Gelly

Hello all,

We just presented our paper describing MoGo's improvements at ICML,
and we thought we would pass on some of the feedback and corrections
we have received.
(http://www.machinelearning.org/proceedings/icml2007/papers/387.pdf)

The way that we incorporate prior knowledge in UCT can be seen as a
bayesian prior, and corresponds exactly to the dirichlet prior (more
precisely to the beta prior as we here get binomials).

The cumulative result is only given using the prior knowledge on top
of RAVE, but it could have been done the other way round and give the
same type of results. Each particular improvement is somehow
independent of the others.

On figure 5, the legend of horizontal axis should be m_prior rather
than n_prior.

All experiments (except the default policy) were played against GnuGo
level 10, not level 8.

Any other comments are welcome!
Sylvain  David
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] ICGA 2007 MoGo-Steenvreter

2007-06-15 Thread Sylvain Gelly

Hello all,

thank you all for all your precise comments. It becomes pretty
complicated and technical for me, I'll try to find out everything :).

Bye,
Sylvain

2007/6/15, Łukasz Lew [EMAIL PROTECTED]:

This is my analysis. It may be flawed but I hope it has some value.

It would be very interesting to see what mogo thinks on those variations.

Best Regards,
Lukasz


On 6/14/07, Sylvain Gelly [EMAIL PROTECTED] wrote:
 Hello Sanghyeon, thank you for your comments.

   After white (mogo) H2, MoGo was estimating 74%, and expecting:
   H2 G1 H3 B1 A1 B3 H1 F8 B5 H4
  This is far too optimistic. Why would black play H2? :-)
 Sorry, white played H2. The sequence I gave starts with white move :).
 Black was expecting to play G1 :).

   Black played H3, and estimation increased to 81%, white B3 and expecting:
   B3 B1 A1 B4 C5 C4 A3 C6 B6 B5
  After B3 B1 A1, black G1 and then B1 F1 D1 B4 and white is dead.
 Ok thanks. So good white actually played G1 instead of A1 after black B1 then.


   Actually during pondering MoGo realized that it was lost then, because
   black played the expected move (B1), but the estimation was then 
   50%.
  MoGo realized too. Actually G1 is an interesting move. After white 48,
  all groups on the board is alive and white actually wins by my counting.
  So I think that white 50 is a losing move.

 Oh, so contrary to what I believed, you say (if I understand you
 correctly) that the mistake was done in the upper left group and not
 in the bottom center group?


 Thank you,
 Sylvain
 ___
 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/

Re: [computer-go] ICGA 2007 MoGo-Steenvreter

2007-06-14 Thread Sylvain Gelly

Hello Sanghyeon, thank you for your comments.


 After white (mogo) H2, MoGo was estimating 74%, and expecting:
 H2 G1 H3 B1 A1 B3 H1 F8 B5 H4
This is far too optimistic. Why would black play H2? :-)

Sorry, white played H2. The sequence I gave starts with white move :).
Black was expecting to play G1 :).


 Black played H3, and estimation increased to 81%, white B3 and expecting:
 B3 B1 A1 B4 C5 C4 A3 C6 B6 B5
After B3 B1 A1, black G1 and then B1 F1 D1 B4 and white is dead.

Ok thanks. So good white actually played G1 instead of A1 after black B1 then.



 Actually during pondering MoGo realized that it was lost then, because
 black played the expected move (B1), but the estimation was then 
 50%.
MoGo realized too. Actually G1 is an interesting move. After white 48,
all groups on the board is alive and white actually wins by my counting.
So I think that white 50 is a losing move.


Oh, so contrary to what I believed, you say (if I understand you
correctly) that the mistake was done in the upper left group and not
in the bottom center group?


Thank you,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Amsterdam 2007 paper

2007-06-11 Thread Sylvain Gelly

Hello John,

Thank you for your interest.


Figure 3 in your UCT paper shows the accuracy of different simulation policies.
Could you repeat these experiments for accuracy of win/loss determination only?

Actually the labelled positions are rather end game positions, and are
labelled as 0/1 (loss/win). So we already are in the case you propose.

BTW, experiments in actual play using the best simulation policy
with RLGO (by best I mean giving the best MSE) has also been done
(given in one table, I don't remember which) and showed the relevance
of the MSE measure. (winning rate vs gnugo was around 9% against 8%
with random simulation policy).

Sylvain


So for each test position, you determine if it's won or lost under perfect play,
and then see how close each policy gets to either 0% or 100% wins.
One might think that this measure of accuracy is what actually matters to UCT,
since it is not concerned with margin of victory.
Is the advantage of Mogo's policy still as pronounced?

regards,
-John
___
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/


Re: [computer-go] Efficiently selecting a point to play in a random playout

2007-05-31 Thread Sylvain Gelly

Hello,

When writing C/C++ for multi-platform student assignments using gcc,

we always used the args:

-ansi -Wall -pedantic



Maybe it depends on the gcc versions, but I always use -Wall -W rather
than only -Wall. -W turns on (important) warnings which are not turned
on with only -Wall, and as usual warnings are much more important than
errors :-).
I agree that it is not related to what is reported here, sorry :).
Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Amsterdam 2007 paper

2007-05-17 Thread Sylvain Gelly

Hi Rémi,

Thank you for this paper. I found the work very interesting, well
written, and the paper is clear and pleasant to read.
As two things are modified in the same time (simulation policy and
tree search), I wonder what is the contribution of each part in the
overall improvement. For example I wonder what is the exact
improvement of the new policy simulation on itself (without modifying
UCT) over the one of MoGo. I guess you already have those results, but
don't have enough room to put it on this paper. For example, if I
remember correctly plain UCT with MoGo's simulation policy at 70k per
move was 83% against gnugo 3.6. What is the result with your
simulation policy? 85%/90%/95 %/ more?
That would help to know where this approach is more usefull:
simulation, tree or even both. I mean it is possible that combining
the two improvements makes a stronger player that taking the sum of
each improvement. If so, that would mean that some win-win effect
arises, and the tree search part type has to be related to the
simulation type.

Again, very interesting work.
Sylvain

2007/5/17, Rémi Coulom [EMAIL PROTECTED]:

Hi,

I first thought I would keep my ideas secret until the Asmterdam
tournament, but now that I have submitted my paper, I cannot wait to
share it. So, here it is:

http://remi.coulom.free.fr/Amsterdam2007/

Comments and questions are very welcome.

Rémi
___
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/


Re: [computer-go] Re: Amsterdam 2007 paper

2007-05-17 Thread Sylvain Gelly

Hi Rémi,

2007/5/17, Rémi Coulom [EMAIL PROTECTED]:

to Sylvain: Here are tests of Crazy Stone at 90s/game 1CPU against GNU
3.6 level 10, measured over about 200 games
[...]


Thank you for your answer. These numbers are interesting.
The improvement in the tree search is really huge. It is what I
expected and is consistent with my own experiments (different of
course, but comparing in the same class).
That is good to be consistent, at least we have a chance to understand
something :-p.

Unfortunately I don't have time in the next weeks to read it really
carefully and make (I hope) more interesting comments. But there are
already so many interesting comments on the list ;-).

Again thank you for this interesting work.

Cheers,
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 19x19 Go, scalability with time vs handicap

2007-04-22 Thread Sylvain Gelly

Hello Daniel,

With the addition of fuseki and joseki library will its rating increase?

Especially a fuseki library. Will a fuseki library be consistent with its
playing style?


That is an interesting and not trivial question. The problem is that the
player has somewhere to understand the opening not to destroy it after. The
problem is not that MoGo is playing some strange moves, it is that it is
happy with them :-).

For human players a difference of 2 kyu means that the winning ratio of the

stronger player is almost 100%.


Is it? Do you have some statistics? If so, that is interesting, because that
means that neither MoGo nor GnuGo exploit well (comparing to humans) the
handicap stones (see results of handicaps with settings which make them even
at H0).



My feeling is that it's going to take more than double of speed for MoGo
to reach 3kyu.


Actually my goal was not to argue about how to reach some rating, but what
happens when giving more time against a fixed player with handicap. Also, I
feel like the KGS rating is not well adapted to bots rating, because of the
inertia. Bots are playing so many games a week that once they reach one
stable rating, the rating will change very slowly.
Also, strange results happen in MoGo vs human games: white almost always
wins! That means the stronger player, no matter the handicap, manages to win
the game. That is quite asymetrical. BTW it was one of the reason I launch
those experiments, expecting asymetrical results when playing black or white
with handicap. This did not appears in those experiments.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The dominance of search (Suzie v. GnuGo)

2007-04-11 Thread Sylvain Gelly

2007/4/11, [EMAIL PROTECTED] [EMAIL PROTECTED]:


I watched MoGo playing with different rank of players. Usually 5d players
has no problem winning. Starting from 4d begin to lose games. However, part
of it is due to most players are not familar with 9x9 Go. Taking this into
consideration I place MoGo at about amateur 2d. For professional players
consider 9x9 is solved. This is all my opinion.

Gnu plays at about 5k on 19x19. Let's place MoGo at 4k on 19x19. Besides
the 32 times, it also need to make up the difference between 4k and 2d.



I just reported precise and objective experiments which may be interesting
results for some. I have no opinion watching the program play, and no way to
measure it precisely by subjective opinions.

However, maybe it lacks some numbers in my report. On KGS, 9x9, MoGo uses
about 40s per move, and on 19x19 (when rated 4kyu) used 15s per move. So it
almost 3 times less and I reported that it should be 32 times more (so
around 21 minutes per move). In the other way, these 15s per move would be
0.5s per move on 9x9.  Maybe it does not continue to scale so well with
time, I don't know. However with the times I tested, the scale with the
board size is what I reported, and at least the number are precise (many
dozen thousands of games).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] (no subject)

2007-04-11 Thread Sylvain Gelly

Hello,

I'm curious to know, how many playouts (in Sensei's 100k

is mentioned for CGOS) MoGoBot plays, i.e., how serious
version is it?



This version plays on a intel core2 duo, and on a 10 minutes game, it makes
between 40 and 5 playouts per move (more at the beginning). The
current version is the one which participated to last KGS tournament this
sunday, and is called MoGo_G3.4bb on the new CGOS. BTW, on CGOS it is rated
incredibly weaker than the G3.4 version (lesson n°1 never try new untested
parameters on a tournament :-p).
I still don't understand how it can change so much between G3.4 and G3.4bb,
maybe it is not noticeable for humans? It is really a surprise for me.
BTW Don, is it possible to have access to crosstables of old standings on
old CGOS (http://cgos.boardspace.net/9x9.html), it may useful for some in
some situations to see old versions (at least for some time).

I hope I answer here your questions.
Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The dominance of search (Suzie v. GnuGo)

2007-04-11 Thread Sylvain Gelly

I also find this kind of information very interesting and useful. Now I have
a better feel for what kind of scaling is realistic to try for and how to
measure it.

Putting some recent data points together, it look like giving Mogo 2 orders
of magnitude more computer power would result in low dan level 19x19 play?
Not the sort of thing one can pull out of a back pocket, but tantalizing.


That is quite an large extrapolation.
I would rather conclude that we have to find new improvements in the
algorithms. But keeping in mind that the scalability with the board
size is not impossible.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] The dominance of search (Suzie v. GnuGo)

2007-04-10 Thread Sylvain Gelly

Hello,

2007/4/6, Tom Cooper [EMAIL PROTECTED]:


My guess is that the complexity of achieving a fixed standard of play
(eg 1 dan) using a global alpha-beta or MC search is an exponential
function of the board size.



(...)

To some extent, this is testable today by finding how a global search
program's strength scales with board size and with thinking
time



I have experiments of MoGo's playing strength against a fixed player (Gnugo
3.7.10 level 8) on different board sizes and different thinking times.
Of course, to meet your statement we have here to assume that the level of
gnugo level 8 is a constant with the board size.

The results are that in order to keep the same winning rate, you have to
increase the number of simulations by something a little larger than linear
in the board area. From 9x9 to 13x13, you need something like 3 times more
simulations for the same winning rate. Same thing from 13x13 to 19x19. As
the time of one simulation is linear in the board area, to keep the same
level you have to give a time which increases as power ~2.5 of the board
area. So between 9x9 and 19x19, you have to give 32x more time per move for
the same play level (always defined as winning rate against gnugo).
This is far from being exponential. (maybe if it was exponential, there
would be little interest to work on 9x9 go).

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The dominance of search (Suzie v. GnuGo)

2007-04-10 Thread Sylvain Gelly


Here's another way to test this sort of thing that is completely
intrinsic to the engine (doesn't require gnugo):

Start with and empty board and zero komi.  Analyze using UCT until the
winning percentage at the root reaches X.  Note the number of
simulations required (or the amount of time).  Repeat for a larger
board size.  One should probably average N trials at each board size
for more reliable numbers.


Is that a better measure of playing strength? I don't think so.
And if the only advantage is that it does not require gnugo, I don't see the
point as gnugo is a marvellous tool, why avoid it?

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [spam probable] [computer-go] MoGo

2007-04-07 Thread Sylvain Gelly


I can turn the difficulty settings way down so that I have a chance to
actually win a game or two.


You can always decrease the time per move and at some limit, you'll reach
random play. Even if I can't win against MoGo with 300 playouts per move (I
am so bad :-( ), but can I beat a random player? :-)


Are there any plans for a commercial version of MoGo?



No, at least in near future.

Sylvain
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

  1   2   >