Re: [computer-go] How to properly implement RAVE?
No hurry, I will be away for a week next week. :-) Isaac, I haven't looked at this stuff for a while. I'm not at home so I can't look at it now. From the error I understand that tesuji/games/general/MoveIterator is missing. It is there in the Subversion source-tree however. So I don't know what could be wrong. Maybe it's somehow missing in the GoEngineGTP.jar If you can wait until Wednesday I'll fix it for you then. Mark -- Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01 ___ 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?
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? 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/.) 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. -- 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/
Re: [computer-go] How to properly implement RAVE?
I had a little spare time to look at it. It seems indeed I forgot to update the GoEngineGTP.jar file last time I made some changes. This was easy to fix even from here and I think it should work now. Just as a note, if you want to change the number of playouts to 50K, you need to change the minimumNrNodes from 4,000 to 50,000 in the ReferenceMonteCarloTreeSearch definition in the TesujiRefBot.xml. But you may also want to increase the 'nrSimulationsBeforeExpansion' value to something higher like 8 or even 32. It depends on how much memory you have available. You may want to set it to the same value you use for your own program to get a good comparison anyway. Use the MCTSRefBot to play, which means you'll be passing the following command to two-gtp: java -xmx512M -jar GoEngineGTP.jar MCTSRefBot Adjust the -xmx???M to whatever you think is suitable on your computer. I think if you set nrSimulationsBeforeExpansion=8 then 512M should be enough but you may have to experiment a little to find the optimal settings. Mark On Feb 8, 2009, at 7:06 AM, Isaac Deutsch wrote: No hurry, I will be away for a week next week. :-) Isaac, I haven't looked at this stuff for a while. I'm not at home so I can't look at it now. From the error I understand that tesuji/games/general/ MoveIterator is missing. It is there in the Subversion source-tree however. So I don't know what could be wrong. Maybe it's somehow missing in the GoEngineGTP.jar If you can wait until Wednesday I'll fix it for you then. Mark -- Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01 ___ 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?
Hi, Can you explain what minimumNrNodes and nrSimulations do? In my program I play 50k games regardless of the number of nodes, so I would like to adjust this accordingly. Otherwise, it works now. :) -ibd Original-Nachricht Datum: Sun, 8 Feb 2009 14:47:55 -0200 Von: Mark Boon tesujisoftw...@gmail.com An: computer-go computer-go@computer-go.org Betreff: Re: [computer-go] How to properly implement RAVE? I had a little spare time to look at it. It seems indeed I forgot to update the GoEngineGTP.jar file last time I made some changes. This was easy to fix even from here and I think it should work now. Just as a note, if you want to change the number of playouts to 50K, you need to change the minimumNrNodes from 4,000 to 50,000 in the ReferenceMonteCarloTreeSearch definition in the TesujiRefBot.xml. But you may also want to increase the 'nrSimulationsBeforeExpansion' value to something higher like 8 or even 32. It depends on how much memory you have available. You may want to set it to the same value you use for your own program to get a good comparison anyway. Use the MCTSRefBot to play, which means you'll be passing the following command to two-gtp: java -xmx512M -jar GoEngineGTP.jar MCTSRefBot Adjust the -xmx???M to whatever you think is suitable on your computer. I think if you set nrSimulationsBeforeExpansion=8 then 512M should be enough but you may have to experiment a little to find the optimal settings. Mark On Feb 8, 2009, at 7:06 AM, Isaac Deutsch wrote: No hurry, I will be away for a week next week. :-) Isaac, I haven't looked at this stuff for a while. I'm not at home so I can't look at it now. From the error I understand that tesuji/games/general/ MoveIterator is missing. It is there in the Subversion source-tree however. So I don't know what could be wrong. Maybe it's somehow missing in the GoEngineGTP.jar If you can wait until Wednesday I'll fix it for you then. Mark -- Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01 ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/ -- Pt! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01 ___ 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?
On Fri, 2009-02-06 at 18:55 +0100, Isaac Deutsch wrote: The rating of the bot still seems to be drifting upwards, but I think I can conclude my UCT implementation is OK afterall. Many thanks to the bots provided. Does someone have a bot that does 50k light playouts + RAVE? I would be most grateful if you could put them online for a few days of testing. :-) By the way, I've seen 2 games when checking my bot's status where one of the myCtest bots lost because of an illegal ko move. Maybe there's a bug in handling superko? Regards, Isaac hb-0.7-RAVE-50k is now online. It should be identical to hb-797-RAVE-50k (Please disregard hb-0.7-50k-RAVE since it had a serious bug) ___ 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?
On Sun, Feb 8, 2009 at 3:02 PM, Isaac Deutsch i...@gmx.ch wrote: Hi, Can you explain what minimumNrNodes and nrSimulations do? In my program I play 50k games regardless of the number of nodes, so I would like to adjust this accordingly. minimumNrNodes is the number of games played out. Originally I used to always create a new node when a playout happened. Maybe this should be renamed to minimumNrPlayouts. nrSimulationsBeforeExpansion is the minimum number of visits that have to be made to a node before the tree gets expanded any deeper. As an example, when the search begins, the root-node is expanded with all possible legal moves. But those children nodes are not expanded themselves until a certain number of simulations (playouts) have been done starting from the root-node. Until that time the children nodes are only used to store the AMAF values. I think this may be slightly different from how most people do it, but I figured it would be a waste to throw away the AMAF values for the first 'n' simulations in a node. Otherwise, it works now. :) Good. Mark ___ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/