Re: [computer-go] KO in Hashtable-UCT?

2007-05-24 Thread Eduardo Sabbatella
 Alternatively, I wonder if there is some theoretical
 way to work it out?
 What is the most extreme example of being behind
 (either by X stones, or
 by some percentage, such as Heikki's 50% above)

I think the bias comes as MCGO needs to finish the
game up to the last stone/point... Killing a lot of
stupid stones... 

Also, as MC doesn't know anything about Go except
basic rules. Some very huge obvious moves aren't
obvious for the engine. (potentially creating huge
number of dead stones in the way to 'proof' it to
itself)

My 2 cents







__ 
Preguntá. Respondé. Descubrí. 
Todo lo que querías saber, y lo que ni imaginabas, 
está en Yahoo! Respuestas (Beta). 
¡Probalo ya! 
http://www.yahoo.com.ar/respuestas 

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread Eduardo Sabbatella
In my experience adding a captured stoned limit per
game biases the results. strongly.

The limit was a constant number. Perhaps it could be
good to define it as a function of current move
number.


 In UCT-Suzie I stop also when one side has a big
 material advantage 
 (captured much more stones). The length limit is
 related with this, because 
 when a big group is captured the empty points are
 afterwards filled up 
 again.






__ 
Preguntá. Respondé. Descubrí. 
Todo lo que querías saber, y lo que ni imaginabas, 
está en Yahoo! Respuestas (Beta). 
¡Probalo ya! 
http://www.yahoo.com.ar/respuestas 

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread Heikki Levanto
On Wed, May 23, 2007 at 06:47:58AM -0300, Eduardo Sabbatella wrote:
 In my experience adding a captured stoned limit per
 game biases the results. strongly.

In which direction?

 The limit was a constant number. Perhaps it could be
 good to define it as a function of current move
 number.

I don't make any tests for the first 20 moves. Thereafter, I resign if
   - I have no stones left on board
   - I have less than half the number of stones my opponent has
I also pass if my opponent has no stones left on board.

I should do these in the MC simulations too, but so far I have been
using Lew's libego unmodified.

- Heikki

-- 
Heikki Levanto   In Murphy We Turst heikki (at) lsd (dot) dk

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread Eduardo Sabbatella
  game biases the results. strongly.
 In which direction?

I was comparing my engine with GNUGO 3.6 level 1.
It looses more frequently.

 I don't make any tests for the first 20 moves.
 Thereafter, I resign if
- I have no stones left on board
- I have less than half the number of stones my
 opponent has
 I also pass if my opponent has no stones left on
 board.

My cut logic was: dead stone difference  X. stop the
game, wins the player with less dead stones.

I'm sure it was a very basic logic, using a more
complex one, as you describe, could make sense.

Cheers
Eduardo


  __ 
Preguntá. Respondé. Descubrí. 
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta). 
¡Probalo ya! 
http://www.yahoo.com.ar/respuestas 

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread dhillismail

-Original Message-
From: Eduardo Sabbatella [EMAIL PROTECTED]
To: computer-go computer-go@computer-go.org
Sent: Wed, 23 May 2007 8:20 am
Subject: Re: [computer-go] KO in Hashtable-UCT?



  game biases the results. strongly.
 In which direction?

I was comparing my engine with GNUGO 3.6 level 1.
It looses more frequently.

 I don't make any tests for the first 20 moves.
 Thereafter, I resign if
- I have no stones left on board
- I have less than half the number of stones my
 opponent has
 I also pass if my opponent has no stones left on
 board.

My cut logic was: dead stone difference  X. stop the
game, wins the player with less dead stones.

I'm sure it was a very basic logic, using a more
complex one, as you describe, could make sense.

Cheers
Eduardo





My guess is that you might just have the wrong threshold. If you only want to 
measure the winning percentage from a sequence of playout games, then, for a 
sufficiently high threshold 'X', you should get the correct value and still 
obtain a speedup worth having. Keep increasing the threshold until it stops 
making mistakes.

If you are doing something else as well (e.g. keeping track of the percentage 
of games where each intersection winds up as white or black territory), then 
stopping playout games early can certainly cause problems.

- Dave Hillis






Check Out the new free AIM(R) Mail -- 2 GB of storage and industry-leading spam 
and email virus protection.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread Darren Cook
Heikki Levanto wrote:
 I don't make any tests for the first 20 moves. Thereafter, I
 resign if
   - I have no stones left on board
   - I have less than half the number of stones my opponent has
 I also pass if my opponent has no stones left on board.

Eduardo Sabbatella wrote:
 My cut logic was: dead stone difference  X. stop the
 game, wins the player with less dead stones.

Dave Hillis wrote:
 ..., for a sufficiently high threshold 'X', you should get
 the correct value and still obtain a speedup worth having. Keep
 increasing the threshold until it stops making mistakes.

Alternatively, I wonder if there is some theoretical way to work it out?
What is the most extreme example of being behind (either by X stones, or
by some percentage, such as Heikki's 50% above) where the losing player
can make a comeback and win the game (assume perfect play by both
players from that point)?

It sounds like a puzzle the people who come up with the go bestiary [1]
or huge nakade [2] would enjoy.

(Of course, the nice thing about playouts is we don't need to be
perfect, just right most of the time; but, still, a theoretical basis is
always nice if one is available.)

Darren


[1]: http://www.goban.demon.co.uk/go/bestiary/rule_challenge.html

[2]: http://senseis.xmp.net/?BiggestKnownEyeSpaceForWhichThereIsANakade
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] KO in Hashtable-UCT?

2007-05-23 Thread Darren Cook
 What is the most extreme example of being behind (either by X stones, or
 by some percentage, such as Heikki's 50% above) where the losing player
 can make a comeback and win the game (assume perfect play by both
 players from that point)?

I realized this is quite trivial: a board position where  N black stones
are in atari, and N white stones are in atari, (where those two chains
are not touching). White captures black, then black captures white. You
need something for the chains around the stones in atari, so I'd
estimate on a 9x9 board N is roughly 30, and on a 19x19 board N is
roughly 160. The point being that N is high.

Going back to the original issue, how about not stopping a playout early
while there are multi-stone-chains in atari. This still leaves a few
exceptions (e.g. when the N white stones have 2 liberties but cannot do
anything to save themselves) but should take care of most situations.

Or, similarly, require one side to have been more than X (e.g. X=15)
points ahead for the last 3 or 4 moves.

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-19 Thread Don Dailey
On Sat, 2007-05-19 at 12:32 +0200, chrilly wrote:
 
  In the play-outs, I'm pretty sure infinite play-outs due to not using
  superko are possible - even with the randomness.But I have a limit
  on the length of the play-out games because when you use heavy play-outs
  the games can occasionally last for hundreds of moves.
 How do you evaluate a game which is stopped by reaching the length-limit?
 In UCT-Suzie I stop also when one side has a big material advantage 
 (captured much more stones). The length limit is related with this, because 
 when a big group is captured the empty points are afterwards filled up 
 again.

It's a rare occurrence that I have to stop a game early - but when I do
I simply score the board assuming all stones are alive.

Another thing you could do (if you're the anal type) is to finish the
game after a certain point with the superko rule turned back on.  You
would start having to track the keys again.   But this almost seems
silly because a random game is only a guess anyway.

 Chrilly
 

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-19 Thread Peter Drake

The first option is what we do, too.

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



On May 19, 2007, at 5:30 AM, Don Dailey wrote:


On Sat, 2007-05-19 at 12:32 +0200, chrilly wrote:


In the play-outs, I'm pretty sure infinite play-outs due to not  
using
superko are possible - even with the randomness.But I have a  
limit
on the length of the play-out games because when you use heavy  
play-outs

the games can occasionally last for hundreds of moves.
How do you evaluate a game which is stopped by reaching the length- 
limit?

In UCT-Suzie I stop also when one side has a big material advantage
(captured much more stones). The length limit is related with  
this, because
when a big group is captured the empty points are afterwards  
filled up

again.


It's a rare occurrence that I have to stop a game early - but when  
I do

I simply score the board assuming all stones are alive.

Another thing you could do (if you're the anal type) is to finish the
game after a certain point with the superko rule turned back on.  You
would start having to track the keys again.   But this almost seems
silly because a random game is only a guess anyway.


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] KO in Hashtable-UCT?

2007-05-18 Thread Chrilly


I have serious problems with KO. UCT-Suzie plays generally strong, but 
makes

terrible blunders in KO-positions. So far I do not even understand the
problem. Could you describe it more detailed?
I had also some serious SuperKO problems. UCT-Suzie was very clever to
find SuperKOs. We do not check for SuperKO in Alpha-Beta. The search is 
not

deep enough. Ignoring SuperKO in UCT is for a Hashtable version deadly.
GameStack-Overflow.

Chrilly



So does your hash function consider all previous board states (for
superKo)?  If so, how?  I can think of one way, but I don't use it
since I have a tree that handles the allowable moves independent of
the hashtable.

When going down a variation the Hash and other Board-State Information like 
e.g. the KO-Point are stored on a stack. Starting from the current Top of 
Stack the detection goes down and search for the same hash-key and Ko-Point. 
Its the Repeated Position Detection method of chess. The Gamestack-Pointer 
is decremented by 2, one can stop, when a non-capturing move is done (in 
chess its the other way round). One can start 4 Plies from the top of stack. 
Due to the stoping criterion one has to check only a few entries (most of 
the time none).
If a SuperKO occurs, the position is evaluated by the Material-Balance. 
BlackCaptures - WhiteCaptures + Komi. Probably a better way is to ignore the 
result. But I assumed that SuperKO is a rare event and the result has no 
significant impact on the search-tree.
Maybe there is something wrong with this approach and the Ko-Problems I have 
a related to this simple SuperKO handling. I noticed several times that a 
direct transformation of chess methods has some subtle flaws.


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] KO in Hashtable-UCT?

2007-05-18 Thread Erik van der Werf

On 5/18/07, Chrilly [EMAIL PROTECTED] wrote:

When going down a variation the Hash and other Board-State Information like
e.g. the KO-Point are stored on a stack. Starting from the current Top of
Stack the detection goes down and search for the same hash-key and Ko-Point.
Its the Repeated Position Detection method of chess. The Gamestack-Pointer
is decremented by 2, one can stop, when a non-capturing move is done (in
chess its the other way round).


Non-capturing moves can create repetition (but there will of course be
captures elsewhere in the cycle). Fortunately, there are other simple
criteria. E.g., you can stop whenever a move is played on an
intersection for the first time.


If a SuperKO occurs, the position is evaluated by the Material-Balance.
BlackCaptures - WhiteCaptures + Komi.


I guess you mean the *change* in material balance after one cycle. I
don't see why komi should be used here.


Probably a better way is to ignore the result.


Only for balanced cycles.

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread chrilly


Non-capturing moves can create repetition (but there will of course be
captures elsewhere in the cycle).

So far the SuperKOs I have found where a round-trip of KOs.

Fortunately, there are other simple

criteria. E.g., you can stop whenever a move is played on an
intersection for the first time.


Okay.


If a SuperKO occurs, the position is evaluated by the Material-Balance.
BlackCaptures - WhiteCaptures + Komi.


I guess you mean the *change* in material balance after one cycle. I
don't see why komi should be used here.

No. I assume the game is over. As there is usually no reliable method for 
counting territory I use the difference of the captured stones as a - first 
approximation - for the evaluation. If e.g. both sides have captured - in 
the whole game - the same amount of stones, the eval is 0, but white wins 
due to Komi.
At least for significant differences in captures this is true. MC-Runs are 
also stopped, when one sides leads in Capture by a large margin.

Depending on the margin it produces only a negible bias.



Only for balanced cycles.

The cycles I have found so far are balanced. Each side captures in turn 1 
stone.


Chrilly

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread Erik van der Werf

On 5/18/07, chrilly [EMAIL PROTECTED] wrote:


 Non-capturing moves can create repetition (but there will of course be
 captures elsewhere in the cycle).
So far the SuperKOs I have found where a round-trip of KOs.


Maybe the others are just hiding from you ;-)



 Fortunately, there are other simple
 criteria. E.g., you can stop whenever a move is played on an
 intersection for the first time.

Okay.

 If a SuperKO occurs, the position is evaluated by the Material-Balance.
 BlackCaptures - WhiteCaptures + Komi.

 I guess you mean the *change* in material balance after one cycle. I
 don't see why komi should be used here.

No. I assume the game is over. As there is usually no reliable method for
counting territory I use the difference of the captured stones as a - first
approximation - for the evaluation. If e.g. both sides have captured - in
the whole game - the same amount of stones, the eval is 0, but white wins
due to Komi.
At least for significant differences in captures this is true. MC-Runs are
also stopped, when one sides leads in Capture by a large margin.
Depending on the margin it produces only a negible bias.


Hmm... To me it seems more natural that the evaluation primarily
depends on the nature of the cycle. Your program may choose to play a
cycle because of some arbitrary material balance value, which will be
meaningless if you can't break out of that cycle. IMO you should
simply treat balanced cycles as draws.

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread Peter Drake
It took me a long time to get around my mental block and accept the  
advice of everyone here, but your intuition is correct: superko is so  
rare, and so expensive to detect, that you should NOT check for it on  
every move.


Orego's current approach is:

During search, just maintain a single ko point and ignore superko.  
(There is a maximum number of moves per game to prevent infinitely  
long games.)


After search, when actually making a move:
1) Make a copy of the board
2) Compute the Zobrist hash of the current position from scratch
3) Check for superko violations (against a stack of previous Zobrist  
hashes for positions in the real game,)
4) If there is a violation, go back to the copy and try the next best  
move


Thanks,

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



On May 17, 2007, at 11:00 PM, Chrilly wrote:



I have serious problems with KO. UCT-Suzie plays generally  
strong, but makes
terrible blunders in KO-positions. So far I do not even  
understand the

problem. Could you describe it more detailed?
I had also some serious SuperKO problems. UCT-Suzie was very  
clever to
find SuperKOs. We do not check for SuperKO in Alpha-Beta. The  
search is not
deep enough. Ignoring SuperKO in UCT is for a Hashtable version  
deadly.

GameStack-Overflow.

Chrilly



So does your hash function consider all previous board states (for
superKo)?  If so, how?  I can think of one way, but I don't use it
since I have a tree that handles the allowable moves independent of
the hashtable.

When going down a variation the Hash and other Board-State  
Information like e.g. the KO-Point are stored on a stack. Starting  
from the current Top of Stack the detection goes down and search  
for the same hash-key and Ko-Point. Its the Repeated Position  
Detection method of chess. The Gamestack-Pointer is decremented by  
2, one can stop, when a non-capturing move is done (in chess its  
the other way round). One can start 4 Plies from the top of stack.  
Due to the stoping criterion one has to check only a few entries  
(most of the time none).
If a SuperKO occurs, the position is evaluated by the Material- 
Balance. BlackCaptures - WhiteCaptures + Komi. Probably a better  
way is to ignore the result. But I assumed that SuperKO is a rare  
event and the result has no significant impact on the search-tree.
Maybe there is something wrong with this approach and the Ko- 
Problems I have a related to this simple SuperKO handling. I  
noticed several times that a direct transformation of chess methods  
has some subtle flaws.


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/


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

Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread John Tromp

On 5/18/07, Peter Drake [EMAIL PROTECTED] wrote:

It took me a long time to get around my mental block and accept the advice
of everyone here, but your intuition is correct: superko is so rare, and so
expensive to detect, that you should NOT check for it on every move.


In dimwit, we check for superko while descending the UCT tree,
and only check basic ko in the MC playouts. Our check involves
a single lookup (of the current, incrementally computed Zobrist key)
in a hash_map of previous Zobrist keys, which is not all that expensive.
I agree that doing superko checks in MC playouts would cause an
unnecesary slowdown.

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread Chris Fant

After search, when actually making a move:
1) Make a copy of the board
2) Compute the Zobrist hash of the current position from scratch
3) Check for superko violations (against a stack of previous Zobrist hashes
for positions in the real game,)
4) If there is a violation, go back to the copy and try the next best move


But then you have an engine which does not converge to perfect play
given infinite resources.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Keep the common case fast (was Re: [computer-go] KO in Hashtable-UCT?)

2007-05-18 Thread Peter Drake

Yes, that sounds reasonable too.

In thinking about optimization, the rule as always is keep the  
common case fast. The cases in UCT Go, in decreasing order of  
commonness, are:


1) Play a move in an MC playout
2) Play a UCT tree move
3) Start (or finish) a playout
4) Make (or accept) a move in the actual game
5) Initialize data structures and the beginning of the game

1 has to be blazingly fast. 2-3 have to be relatively fast. 4-5 don't  
matter much unless you're spending an outrageous amount of time on them.


Also note that almost all UCT moves are played from nodes with very  
few children (often 0 or 1).


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



On May 18, 2007, at 9:15 AM, John Tromp wrote:


On 5/18/07, Peter Drake [EMAIL PROTECTED] wrote:
It took me a long time to get around my mental block and accept  
the advice
of everyone here, but your intuition is correct: superko is so  
rare, and so

expensive to detect, that you should NOT check for it on every move.


In dimwit, we check for superko while descending the UCT tree,
and only check basic ko in the MC playouts. Our check involves
a single lookup (of the current, incrementally computed Zobrist key)
in a hash_map of previous Zobrist keys, which is not all that  
expensive.

I agree that doing superko checks in MC playouts would cause an
unnecesary slowdown.

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] KO in Hashtable-UCT?

2007-05-18 Thread Peter Drake

True...

My experience has been that (largely) ignoring the extremely rare  
case of superko is a better use of the finite resources we have.


Have others found the same thing?

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



On May 18, 2007, at 9:19 AM, Chris Fant wrote:


After search, when actually making a move:
1) Make a copy of the board
2) Compute the Zobrist hash of the current position from scratch
3) Check for superko violations (against a stack of previous  
Zobrist hashes

for positions in the real game,)
4) If there is a violation, go back to the copy and try the next  
best move


But then you have an engine which does not converge to perfect play
given infinite resources.
___
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] KO in Hashtable-UCT?

2007-05-18 Thread forrestc
Peter Drake said:
 It took me a long time to get around my mental block and accept the
 advice of everyone here, but your intuition is correct: superko is so
 rare, and so expensive to detect, that you should NOT check for it on
 every move.

Depending on how a program works, you may well need to check for
repetitions other than straight ko,

ie

black white
a2--pass
b2--pass
b1--a1
a2...

Forrest Curo


-
This email was sent using AIS WebMail.
http://www.americanis.net/


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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-18 Thread Don Dailey
I don't think you can ignore superko in the UCT search - you will lose
games.   You will also lose games even if you only check the move you
will actually play in the game.   

But in the play-outs, it has almost no value whatsoever, even if it 
was free.   (It probably has SOME value, but miniscule and clearly 
would weaken the program because you would do less play-outs in a
given amount of time.)

If you keep superko tests in the UCT tree, you have a scalable
program.

- Don



On Fri, 2007-05-18 at 09:33 -0700, Peter Drake wrote:
 True...
 
 
 My experience has been that (largely) ignoring the extremely rare case
 of superko is a better use of the finite resources we have.
 
 
 Have others found the same thing?
 
 Peter Drake
 http://www.lclark.edu/~drake/
 
 
 
 
 
 On May 18, 2007, at 9:19 AM, Chris Fant wrote:
 
   After search, when actually making a move:
   1) Make a copy of the board
   2) Compute the Zobrist hash of the current position from scratch
   3) Check for superko violations (against a stack of previous
   Zobrist hashes
   for positions in the real game,)
   4) If there is a violation, go back to the copy and try the next
   best move
  
  
  But then you have an engine which does not converge to perfect play
  given infinite resources.
  ___
  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] KO in Hashtable-UCT?

2007-05-18 Thread Don Dailey
John's post is almost identical to mine!   Sorry about that.  I could
have just said ditto for Lazarus.

- Don

On Fri, 2007-05-18 at 12:15 -0400, John Tromp wrote:
 On 5/18/07, Peter Drake [EMAIL PROTECTED] wrote:
  It took me a long time to get around my mental block and accept the advice
  of everyone here, but your intuition is correct: superko is so rare, and so
  expensive to detect, that you should NOT check for it on every move.
 
 In dimwit, we check for superko while descending the UCT tree,
 and only check basic ko in the MC playouts. Our check involves
 a single lookup (of the current, incrementally computed Zobrist key)
 in a hash_map of previous Zobrist keys, which is not all that expensive.
 I agree that doing superko checks in MC playouts would cause an
 unnecesary slowdown.
 
 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] KO in Hashtable-UCT?

2007-05-18 Thread Don Dailey
Lazarus does full superko in the UCT search - but the play-out only look
at
simple KO.   

In the play-outs, I'm pretty sure infinite play-outs due to not using
superko are possible - even with the randomness.But I have a limit
on the length of the play-out games because when you use heavy play-outs
the games can occasionally last for hundreds of moves.The more
randomness you take out of the play-outs the more likely you will get
ridiculously long loops.  Superko would solve this, but it would also
slow down the play-outs significantly.I see no reason to have the
refinement of superko in a random play-out.

- Don

On Fri, 2007-05-18 at 09:01 -0700, Peter Drake wrote:
 It took me a long time to get around my mental block and accept the
 advice of everyone here, but your intuition is correct: superko is so
 rare, and so expensive to detect, that you should NOT check for it on
 every move.
 
 
 Orego's current approach is:
 
 
 During search, just maintain a single ko point and ignore superko.
 (There is a maximum number of moves per game to prevent infinitely
 long games.)
 
 
 After search, when actually making a move:
 1) Make a copy of the board
 2) Compute the Zobrist hash of the current position from scratch
 3) Check for superko violations (against a stack of previous Zobrist
 hashes for positions in the real game,)
 4) If there is a violation, go back to the copy and try the next best
 move
 
 
 Thanks,
 
 Peter Drake
 http://www.lclark.edu/~drake/
 
 
 
 
 
 On May 17, 2007, at 11:00 PM, Chrilly wrote:
 

I have serious problems with KO. UCT-Suzie plays generally
strong, but makes
terrible blunders in KO-positions. So far I do not even
understand the
problem. Could you describe it more detailed?
I had also some serious SuperKO problems. UCT-Suzie was very
clever to
find SuperKOs. We do not check for SuperKO in Alpha-Beta. The
search is not
deep enough. Ignoring SuperKO in UCT is for a Hashtable version
deadly.
GameStack-Overflow.


Chrilly
   
   
   
   
   So does your hash function consider all previous board states (for
   superKo)?  If so, how?  I can think of one way, but I don't use it
   since I have a tree that handles the allowable moves independent
   of
   the hashtable.
   
   
  When going down a variation the Hash and other Board-State
  Information like e.g. the KO-Point are stored on a stack. Starting
  from the current Top of Stack the detection goes down and search for
  the same hash-key and Ko-Point. Its the Repeated Position
  Detection method of chess. The Gamestack-Pointer is decremented by
  2, one can stop, when a non-capturing move is done (in chess its the
  other way round). One can start 4 Plies from the top of stack. Due
  to the stoping criterion one has to check only a few entries (most
  of the time none).
  If a SuperKO occurs, the position is evaluated by the
  Material-Balance. BlackCaptures - WhiteCaptures + Komi. Probably a
  better way is to ignore the result. But I assumed that SuperKO is a
  rare event and the result has no significant impact on the
  search-tree.
  Maybe there is something wrong with this approach and the
  Ko-Problems I have a related to this simple SuperKO handling. I
  noticed several times that a direct transformation of chess methods
  has some subtle flaws.
  
  
  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/
 
 
 ___
 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] KO in Hashtable-UCT?

2007-05-18 Thread Chris Fant

 But then you have an engine which does not converge to perfect play
 given infinite resources.

I assume that you're joking, given: a) a current lack of infinite resources,
and b) a current lack of convergence of any kind.


No, but I can rephrase for those spooked by the concept of infinity:

But then you have an engine that stops scaling at an unknown point.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] KO in Hashtable-UCT?

2007-05-17 Thread Chrilly
I have now also finished a first version of UCT-Suzie (in parallel the Peter 
Woitke works on the Alpha-Beta Version). UCT-Suzie uses a hashtable, mainly 
because I found the programming of the tree too complicated. The Monte-Carlo 
part uses some simple patterns according the MoGo article. Progress is 
rather slow, because I am working (more than) full-time on FPGA-projects in 
Computer-Tomography.


Here are the problems with hash tables as a tree:

1. Time - it is more expensive - you must gather the children together
when making decisions about which node to expand (which generally
involves re-generating the keys by making all the legal moves.)   There
are ways around this that trade space for time but in either case it is
more expensive.

I do not understand this. In UCT-Suzie the moves are generated, when a new 
leaf-node is reached. The Hashtable has a link to the move-list. When the 
node is reached the next time, the moves must not be generated again. Just 
the calculation of the UCT-Urgency value (WinRate + sqrt() ) has to be 
done. I assume that this calculation has to be done also in a tree 
representation. I see no difference in this respect with Gunnars Gnu-GO UCT 
code.
Memory is at least for 9x9 no problem. The number of Monte-Carlo runs/sec. 
is about 17K (9x9). This can be improved, because the UCT-Player uses the 
Alpha-Beta DoMove/UndoMove functions which are overkill for UCT.



2. GHI - you must take special care to deal with Graph History
Interaction - primarly recognizing that ko situations are different.
You can get by with relatively simple solutions that don't fully address
this issue but it's still imperfect.

I have serious problems with KO. UCT-Suzie plays generally strong, but makes 
terrible blunders in KO-positions. So far I do not even understand the 
problem. Could you describe it more detailed?
I had also some serious SuperKO problems. UCT-Suzie was very clever to 
find SuperKOs. We do not check for SuperKO in Alpha-Beta. The search is not 
deep enough. Ignoring SuperKO in UCT is for a Hashtable version deadly. 
GameStack-Overflow.


Chrilly

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


Re: [computer-go] KO in Hashtable-UCT?

2007-05-17 Thread Chris Fant

On 5/17/07, Chrilly [EMAIL PROTECTED] wrote:

I have now also finished a first version of UCT-Suzie (in parallel the Peter
Woitke works on the Alpha-Beta Version). UCT-Suzie uses a hashtable, mainly
because I found the programming of the tree too complicated. The Monte-Carlo
part uses some simple patterns according the MoGo article. Progress is
rather slow, because I am working (more than) full-time on FPGA-projects in
Computer-Tomography.

 Here are the problems with hash tables as a tree:

 1. Time - it is more expensive - you must gather the children together
 when making decisions about which node to expand (which generally
 involves re-generating the keys by making all the legal moves.)   There
 are ways around this that trade space for time but in either case it is
 more expensive.

I do not understand this. In UCT-Suzie the moves are generated, when a new
leaf-node is reached. The Hashtable has a link to the move-list. When the
node is reached the next time, the moves must not be generated again. Just
the calculation of the UCT-Urgency value (WinRate + sqrt() ) has to be
done. I assume that this calculation has to be done also in a tree
representation. I see no difference in this respect with Gunnars Gnu-GO UCT
code.
Memory is at least for 9x9 no problem. The number of Monte-Carlo runs/sec.
is about 17K (9x9). This can be improved, because the UCT-Player uses the
Alpha-Beta DoMove/UndoMove functions which are overkill for UCT.

 2. GHI - you must take special care to deal with Graph History
 Interaction - primarly recognizing that ko situations are different.
 You can get by with relatively simple solutions that don't fully address
 this issue but it's still imperfect.

I have serious problems with KO. UCT-Suzie plays generally strong, but makes
terrible blunders in KO-positions. So far I do not even understand the
problem. Could you describe it more detailed?
I had also some serious SuperKO problems. UCT-Suzie was very clever to
find SuperKOs. We do not check for SuperKO in Alpha-Beta. The search is not
deep enough. Ignoring SuperKO in UCT is for a Hashtable version deadly.
GameStack-Overflow.

Chrilly



So does your hash function consider all previous board states (for
superKo)?  If so, how?  I can think of one way, but I don't use it
since I have a tree that handles the allowable moves independent of
the hashtable.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/