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

2009-02-10 Thread Sylvain Gelly
On Sun, Feb 8, 2009 at 1:42 PM, Petr Baudis  wrote:

> On Sat, Jan 17, 2009 at 08:29:32PM +0100, Sylvain Gelly wrote:
> > 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).
>
> Thank you so much for this! I have switched my RAVE implementation to
> this formula and the bot has gotten noticeably stronger, though I
> apparently still have some bugs to chase, since it seems to have trouble
> considering strongest opponent's responses and frequently focuses on
> unreasonable opponent's replies instead of the obvious (e.g. keeping a
> group of stones in atari). Maybe I need better prior hinting...
>
> I have few questions. Of course, please feel free to skip questions
> about particular constants if you feel that's giving away too much. :-)
>
> > ChooseMove(node, board) {
> >   bias = 0.015  // I put a random number here, to be tuned
> >   b = bias * bias / 0.25
>
> Maybe it would be cleaner to define b = 1 / rave_equiv, where rave_equiv
> is the number of playouts RAVE is thought to be equivalent of? Or is the
> meaning of this constant actually different?
>

The meaning is supposed to be the difference between the expected value of
AMAF and the expected value of the tree. But at that point it is just a
constant, so I am not sure there is a "good" interpretation.


>
> What value works best for people? I did not do much tuning yet, but I
> use b=1/3000. I see Fuego uses b=1/5000. (This example b=1/.)


I believe the actually value depends on the other parts of your
implementation, namely the playouts, the prior you use in the tree and the
exploration term (there was none in the pseudo code I posted, but you might
use one).


>
>
> >   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
> > }
>
> I have two questions here:
>
> * Is the FPU concept abandoned? Or what values are reasonable? It seems
>  to me 1.0, which is usually recommended, is obviously too big here
>  since that's the upper bound of the value already. So far I have tried
>  0.6 and 0.7 but both just make my bot slightly weaker.



>
> * How to accomodate prior knowledge? (I'm using grand-parent heuristics,
>  atari liberties, and few patterns.) Do you use it to fill normal
>  counts, RAVE values or both? What count values work best for you?
>  I have settled on 50 playouts.


The FPU concept is here replaced by the prior value. I used
node.rave_wins[move]
and node.rave_counts[move] when the node is initialized. If you don't want
to use go knowledge, you can initialize those values to something like 7 and
14 respectively. Grand-parent heuristics did not work at all in my
experiments (was even very bad). The heuristics I was using were:
  - save a chain (positive prior)
  - self atari (negative prior)
  - match a simple 3x3 pattern (hane, cut, and a few others I don't
remember) (positive prior).

For node.rave_counts[move], 50 seems a little high. I think I was using
values around 15, but it was not very sensitive (50 was working almost as
well as 15). I give those numbers from memory, they may be quite off.

Sylvain

>
>
> --
>Petr "Pasky" Baudis
> The average, healthy, well-adjusted adult gets up at seven-thirty
> in the morning feeling just terrible. -- Jean Kerr
> ___
> 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] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Ingo Althöfer
Hello,

today MoGo (with 7 handicap stones) played
two games against the top Taiwan pro
Jun-Xun Zhou (9p).
MoGo won the first game, Jun-Xun Zhou the second one.
Time must have been with about 40 seconds per move
in the average.

sgf are under
http://www.gokgs.com/gameArchives.jsp?user=mogo
It are the two "handicap 7" games from February 10, 2009.

Cheers, Ingo.
-- 
Jetzt 1 Monat kostenlos! GMX FreeDSL - Telefonanschluss + DSL 
für nur 17,95 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Olivier Teytaud
>
> Time must have been with about 40 seconds per move
> in the average.
>

MoGo plays in 30s on the client machine - the 40s for KGS
is for ensuring that there's no problem with net lag.

Info on the game in chinese:
http://www.cdnews.com.tw/cdnews_site/docDetail.jsp?coluid=121&docid=100661355
Translation by a friend of the comment given by the human after the first
game at the end of this email.
Info about Zhou Junxun:http://en.wikipedia.org/wiki/Zhou_Junxun

The second game was lost very quickly after a semeai in the upper-right
part.

Best regards,
Olivier
 english translation =
He said during the first match(19L), Mogo appeared a high unprofessional
level(dan) in the middle of match and some times did professionals maneuvers
.
Mogo win the game easily and this is the first time the computer defeat the
professional player [[[Zhou Junxun won easily a few months ago against
mogo]]].
This made him a little sad when he was still amazed.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread terry mcintyre
Do you need a full 10s margin for netlag? 

 Terry McIntyre 


-- Libertarians Do It With Consent!





From: Olivier Teytaud 
To: computer-go 
Sent: Tuesday, February 10, 2009 9:42:04 AM
Subject: Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)




Time must have been with about 40 seconds per move
in the average.


MoGo plays in 30s on the client machine - the 40s for KGS
is for ensuring that there's no problem with net lag.

Info on the game in chinese:
http://www.cdnews.com.tw/cdnews_site/docDetail.jsp?coluid=121&docid=100661355
Translation by a friend of the comment given by the human after the first
game at the end of this email.
Info about Zhou Junxun:http://en.wikipedia.org/wiki/Zhou_Junxun

The second game was lost very quickly after a semeai in the upper-right part.

Best regards,
Olivier
 english translation =
He said during the first match(19L), Mogo appeared a high
unprofessional level(dan) in the middle of match and some times did
professionals maneuvers .
Mogo win the game easily and this is the first time the computer defeat the 
professional player [[[Zhou Junxun won easily a few months ago against mogo]]].
This made him a little sad when he was still amazed.



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

Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Olivier Teytaud
Do you need a full 10s margin for netlag?
>

We have to take care of the variance of the lag more than of  the mean of
the lag I guess.
But I have not tested this myself, Arpad was the operator in Taiwan and
decided himself.
Best regards,
Olivier
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

[computer-go] Vacation reply

2009-02-10 Thread jhebl
Thanks to massive amounts of spam, I no longer monitor this account. Please update your address book with my new address (joe.hebl at gmail.com). Thanks, Joe
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread terry mcintyre
Wow! Do you happen to have measurements of the lag? 

 Terry McIntyre 


-- Libertarians Do It With Consent!





From: Olivier Teytaud 
To: computer-go 
Sent: Tuesday, February 10, 2009 9:52:00 AM
Subject: Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)





Do you need a full 10s margin for netlag? 


We have to take care of the variance of the lag more than of  the mean of the 
lag I guess.
But I have not tested this myself, Arpad was the operator in Taiwan and decided 
himself.
Best regards,
Olivier


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

Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Jason House
On Feb 10, 2009, at 12:42 PM, Olivier Teytaud   
wrote:





Time must have been with about 40 seconds per move
in the average.

MoGo plays in 30s on the client machine - the 40s for KGS
is for ensuring that there's no problem with net lag.

Info on the game in chinese:
http://www.cdnews.com.tw/cdnews_site/docDetail.jsp?coluid=121&docid=100661355
Translation by a friend of the comment given by the human after the  
first

game at the end of this email.
Info about Zhou Junxun:http://en.wikipedia.org/wiki/Zhou_Junxun

The second game was lost very quickly after a semeai in the upper- 
right part.




SGF files? I looked at the gokgs archives for MoGoTitan, but didn't  
see anything recent.








Best regards,
Olivier
 english translation =
He said during the first match(19L), Mogo appeared a high  
unprofessional level(dan) in the middle of match and some times did  
professionals maneuvers .
Mogo win the game easily and this is the first time the computer  
defeat the professional player [[[Zhou Junxun won easily a few  
months ago against mogo]]].

This made him a little sad when he was still amazed.
___
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: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Eric Dunham
> SGF files? I looked at the gokgs archives for MoGoTitan, but didn't see
> anything recent.
>

They are archived under Mogo, aren't they?

http://www.gokgs.com/gameArchives.jsp?user=mogo

The games that we've been talking about were the H7 games, I believe.

Eric Dunham
—
Ricky1, Owner and Administrator of the KGS Enclave and the Enclave Magazine
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] 19x19: MoGo (handicap 7) vs Jun-Xun Zhou (9p)

2009-02-10 Thread Olivier Teytaud
The game can be found here http://www.lri.fr/~teytaud/H7.sgf
or on KGS, for user "mogo".

I'm posting these results, but I must precise that I was not operating
myself - Arpad Rimmel did operate, and Guillaume Chaslot was also very
involved in the preparation. MoGo was running on Huygens (in Amsterdam) as
usual.

The lag is probably conservatively estimated (it's better to be too much
conservative than not enough conservative :-) ).

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

Re: [computer-go] GPGPU

2009-02-10 Thread terry mcintyre
- Original Message 

> From: Petr Baudis 

>   There has been some talk about implementing monte-carlo playouts on
> GPUs in the past, I have heard rumours about Polish bachelor student
> doing libego -> GPGPU conversion as a project, etc. but I know of
> nothing concrete ever materializing - is anybody aware of anything?
> 
>   We have recently bought very high-end nVidia card at our university
> department for trying out GPGPU and I'm thinking of a little project for
> myself, maybe...
> 
>   I'm not much skilled in this kind of programming though, so I'm not
> quite sure what the best design approach to take would be... my current
> ideas so far are either
> 
>   (i) Have one game per pipeline, and in each cycle, take a board and
> transform it by playing a random move (or possibly have an extra cleanup
> cycles if capturing stones would take too long); you should be able to
> do some neat pattern matching and so too
> 
>   (ii) Have one intersection per pipeline, in one cycle play a random
> move, then have board_height cycles for captures and liberty updates
> to ripple through to all the neighbors. The code would be much more
> streamlined, but I'm not sure yet if there is a good way to do the
> rippling - ORing bitmaps?
> 
>   I guess there is a lot of things to try out.

There may be ways to implement monte carlo effectively on GPUs - but some other 
algorithms might make more effective use of the different capabilities of the 
GPU. For instance, neural networks might map well to a GPU. It might also be 
possible to collect a lot of useful information about shapes using cellular 
automata. 

The GPU might be the main engine, or it might be deployed to collect 
information about the current board situation ( such as the most interesting 
plays ) which is then fed to the CPU for creation of a tree structure. 

Hard to say a priori -- lots of room for experimentation!


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


Re: [computer-go] GPGPU

2009-02-10 Thread Michael Williams

Maybe it's possible to rewrite the playout such that there is no branching.


Álvaro Begué wrote:

I've thought about this a bit, although I haven't implemented
anything. I think one has to try for (i), but given the huge penalties
you pay for branching if not all processors in a group follow the same
path, I can't see how to make it work. (ii) would be a lot easier, and
one can then do quite a bit of work at each intersection, but the end
result might not be much better than with a traditional single core.
It's unclear to me how cleaning up captured stones would be
implemented in either case, and I don't see why you think that
board_height cycles would be enough.

If you make any progress with either approach, I would love to hear about it.

Álvaro.


On Mon, Feb 9, 2009 at 7:44 PM, Petr Baudis  wrote:

 Hi!

 There has been some talk about implementing monte-carlo playouts on
GPUs in the past, I have heard rumours about Polish bachelor student
doing libego -> GPGPU conversion as a project, etc. but I know of
nothing concrete ever materializing - is anybody aware of anything?

 We have recently bought very high-end nVidia card at our university
department for trying out GPGPU and I'm thinking of a little project for
myself, maybe...

 I'm not much skilled in this kind of programming though, so I'm not
quite sure what the best design approach to take would be... my current
ideas so far are either

 (i) Have one game per pipeline, and in each cycle, take a board and
transform it by playing a random move (or possibly have an extra cleanup
cycles if capturing stones would take too long); you should be able to
do some neat pattern matching and so too

 (ii) Have one intersection per pipeline, in one cycle play a random
move, then have board_height cycles for captures and liberty updates
to ripple through to all the neighbors. The code would be much more
streamlined, but I'm not sure yet if there is a good way to do the
rippling - ORing bitmaps?

 I guess there is a lot of things to try out.

--
   Petr "Pasky" Baudis
The average, healthy, well-adjusted adult gets up at seven-thirty
in the morning feeling just terrible. -- Jean Kerr
___
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] GPGPU

2009-02-10 Thread Mark Boon
I don't know if that's what you're already looking at, but recently  
Apple announced their new version of OS X called 'Snow Leopard' which  
supposedly focuses mostly on improvements in the use of multiple  
processing. And that includes the GPU. The module that binds it all  
together is called 'Grand Central'. I don't know much of the details,  
just picked up some buzz-words from articles like these:


http://gizmodo.com/5017615/giz-explains-mac-os-106-snow-leopard-parallel-processing-and-gpu-computing

If you google around a bit you may easily find more information about  
it.


Mark

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


Re: [computer-go] GPGPU

2009-02-10 Thread Gunnar Farnebäck

Mark Boon wrote:
I don't know if that's what you're already looking at, but recently 
Apple announced their new version of OS X called 'Snow Leopard' which 
supposedly focuses mostly on improvements in the use of multiple 
processing. And that includes the GPU. The module that binds it all 
together is called 'Grand Central'. I don't know much of the details, 
just picked up some buzz-words from articles like these:


http://gizmodo.com/5017615/giz-explains-mac-os-106-snow-leopard-parallel-processing-and-gpu-computing 


If you google around a bit you may easily find more information about it.


The most relevant part for GPU programming is OpenCL, which is expected 
to have about the same expressive power as nvidia's CUDA. But it won't 
change the processing and communication characteristics of the GPU. You 
still need to come up with some really clever vectorization tricks 
yourself, if you want to make good use of the GPU for go algorithms.


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