RE: [computer-go] misconception about game(?)

2007-12-24 Thread Forrest Curo

for example, go books make a big deal about where to extend along the
side, or when to play in one corner or another, but the difference between
these various moves is usually only a few points.


The difference between similar-appearing various moves may well be one  
of efficiency--and that translates into sente or control of the game.


A typical technique of human analysis is to consider the shape of a  
position: If the same moves had been made in a different order, would  
all of them be necessary or even justifiable? Good shape normally  
gives you a stable, highly defensible position with the minimal number  
of moves and hence the best chance of keeping-or-recovering sente.


High-handicap games don't look playable if you think of a handicap  
position as having given the weaker player territory, which the  
higher-ranked player must take away...  What a handicap actually gives  
is First Move in many places. A higher-ranking opponent doesn't take  
away anything tangible that the weaker player possessed; what he  
takes, repeatedly, is the initiative. And that's enough to add up to a  
great many points!


Forrest Curo


This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go] Re: language efficiency

2007-12-18 Thread Forrest Curo

I'd like to know how well MoGo would have played if you let it think
for a week for every move.


Probably diminishing returns. Once a series of random playouts has  
given it a selection of the more significant points to consider, I'd  
expect move-order, forcing moves, the need to follow a sequence to a  
stable conclusion to become so critical that any number of pure-random  
playouts would fall short of giving a proper evaluation of a position.



Another matter:

I'm very fond of C, because my love-hate relation with computers goes  
back to the days when it was essential to know where your program was  
and what it was up to; I'm still happier with systems where I know  
they're doing pretty much what I asked for.


But for go I think I'll need a complex design with multiply-linked  
lists, which I can do in C, but not without my mind turning to  
sphagetti-knots for the duration.


So Scheme is one of the languages I've been considering, and in the  
process I stumbled upon a list of programs it was used to write. One  
of them: GIMP (Graphic Images Manipulation Program).  
Relevance?--Graphic images of any detail are enormous chunks of data;  
doing even a simple computation on one of these files has got to  
require a lot of bit-crunching, which used to be pretty time-consuming  
even when I was processing low-resolution grayscale photos for a  
monthly tabloid. I haven't run a direct comparison with GIMP's  
commercial rivals, but it's impressively fast by my standards...


Forrest Curo




This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go] How does MC do with ladders?

2007-12-13 Thread Forrest Curo

It's the approach I believe to be more human-like.   Not necessarily the
playing style.


Human beings chunk.

What all this fuss suggests to me is a meta-mc program... You  
include routines that work out good sequences, as a human would--and  
then you have the random part of the program include the more  
promising sequences, where applicable, as if they were individual moves.


Forrest Curo


This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go] How does MC do with ladders?

2007-12-13 Thread Forrest Curo

Quoting Álvaro Begué [EMAIL PROTECTED]:


On Dec 13, 2007 2:28 PM, Forrest Curo [EMAIL PROTECTED] wrote:


 It's the approach I believe to be more human-like.   Not necessarily the
 playing style.

Human beings chunk.

What all this fuss suggests to me is a meta-mc program... You
include routines that work out good sequences, as a human would--and
then you have the random part of the program include the more
promising sequences, where applicable, as if they were individual moves.



You can't do that in two-player games, unless you are convinced that the
opponent is forced throughout the entire sequence.


Humans do a sort of skinny alpha-beta, automatically narrowing the  
search by applying constraints based on what they see as possible  
outcomes. (In the case of a ladder, most of this is searching a long  
branch one-move wide!) So if an opponent fails to follow the sequence  
you've expected, he might be on to something you missed, or he may  
have missed the point of the sequence. An unexpected move thus  
suggests a pair of local searches, concentrating both on the vicinity  
of that move and on the vicinity of the expected move.


But for a program to do something similar, it does need some way of  
arriving at an idea of what moves in a certain area could reasonably  
be expected to accomplish. Seeing where the groups end up  in a large  
number of playoffs might give a hint...(?)


Forrest Curo


This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go]mc analogue

2007-12-13 Thread Forrest Curo
Here is a card game I thought of while considering how to chunk  
moves based on mc outcomes...


It is not in any way equivalent to programming go, but there are  
significant similarities.


You have a deck of 360 cards numbered sequentially. (This is not as  
complex as go, but the tree of potential moves is going to be of  
similar size, narrower in places but always extending to 360 moves  
total. The size could be changed without significantly changing the  
game, so long as the number is even.)


To make a legal move:

1) If your opponent has played a card, and there is a lower card  
available, you must play a lower card.


2) If 1) does not apply, you can play any card.

The game ends when all cards are played, and each player scores the  
total of the numbers on the cards it has played.


A human player can readily analyze the game, seeing that the first  
player wins with correct play, but loses against correct play if he  
misses the right first move.


Our computer players, however, are to be limited to whatever  
information they can derive from the final scores at the end of the  
potential playouts from a particular move. They aren't allowed to read  
the actual numbers on the cards or count the number of branches  
resulting from a move, although they can of course distinguish  
whichever moves they've made in a playout from those the opponent  
played, and when, as an aid to choosing which moves are better in the  
sense of working more often against limited-information play.


So--How many playouts to find the best line of play against 1) another  
computer with the same limitations or 2) a human? At what point in the  
game does it become possible for the poor artificially-handicapped  
program to find a winning line, if one remains?


If two programs play one another under these limitations, it is  
obvious that some moves will be more likely to win than others,  
depending on which cards have been played. Some responses, while  
falling short of ideal play, will still leave better odds of the  
opponent missing whatever winning lines they've left  open, and will  
thus be objectively better than others. Can an mc player recognize  
them? At what point?


Forrest Curo


This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go] The global search myth

2007-12-04 Thread Forrest Curo

Relatively speaking chess eval of adding piece values together and
doing nothing else is far closer to optimal evaluation function that
what is currently available in Go.


A GOOD go evaluation function probably needs to incorporate lookahead...

Through most of the game, the difference between a dead group and a  
live group can only be distinguished by answering What happens here  
if I do THIS?


And to make that investigation supportable, you need a good  
move-evaluator. A pattern-recognizer with a taste for 'good shape.'


In other words, all these functions are interdependent and virtually  
need one another just to define (in an operational sense) what they  
need to consider!


Forrest Curo




This message was sent using IMP, the Internet Messaging Program.

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


Re: [computer-go] Intelligence

2007-07-21 Thread forrest curo




Intelligence is the ability to adapt or learn.

I would believe neural network is not a proper way on learning GO, as too 
many nodes would be needed for patterns, and storage and training may not be 
feasible.
  
But a variant on the neural network idea could work.  (If these cells 
are sending a bit to one another, there is no additional overhead in 
sending a 32-bit pattern,  not much in having different cells process 
the received patterns differently.)


The normal ways of training a network to recognize a human-generated 
set of correct responses aren't applicable; but you can always form a 
list of which cells were involved in a particular move, and use it to 
raise thresholds, reduce sensitivity to particular inputs, etc.


The problem someone here reminded me of yesterday--What subgoals can a 
program readily train itself to recognize?


Generate some ~180 moves, then see whether they led to a win, and 
reward/discourage itself retroactively? Clumsy!


So--How do most living beings do it? Pleasure/pain. Animate beings have 
internal indicators of How am I doing?


When these are high, there's a tendency to repeat whatever one was 
doing, try more, get adventurous; if low, to STOP THAT! (Since THAT 
may not be well-defined, pain/discouragement can be taken too far, but 
it does offer the best chance of not repeating the situation.)


The problem is, how to recognize when a program should 'pleasure 
itself'? Or suffer? Some kind of evolutionary scheme for generating good 
evaluators? We can't just indiscriminately let a program encourage 
whatever pathway leads it to encourage itself; it might decide it 
doesn't need to play that silly game! Ahhh!


Maybe some long-term setting based on wins/losses, weighted toward 
recent games? When this is high, continue to moderately encourage 
moves/positions that the evaluator likes-- when low, kick the 
evaluating net/subnet until it either dies or gets less 
indiscriminatingly encouraging?


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


Re: [computer-go] Sylvain's results

2007-04-12 Thread forrest curo



  In [ext]The Theory  Practice of Go, Korschelt describes an
experimental 21x21 goban that he constructed and turned over to his
Master, Murase Shuho, for testing. 
  
Anyone who wants to try this can play email-style games on 
dragongoserver.net -- up to 25X25.


Forrest Curo
___
computer-go mailing list
[EMAIL PROTECTED]
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] professional knowledge

2007-04-05 Thread forrest curo



The gap between a professional and, say, a 1-dan amateur is all to do
with tesuji knowledge, life/death knowledge, and (to a lesser extent)
tactical reading skill, accurate endgame counting and joseki knowledge.
All except joseki-knowledge is board-size independent.
There's also what you might call the meta-knowledge of joseki: Which 
joseki will accomplish worthwhile goals for me in this position vs which 
joseki might (while giving perfectly balanced results in a generic 
corner) entirely fail to make the best of this situation?


That is a separate type of knowledge, as in the proverb Learn joseki, 
lose ten ranks in strength.


The chief difference between a 9X9 game and a 19X19 is in the demands 
the larger board makes on our _strategic_ reading ability.


And that is not merely another board-size-dependent skill, among many. 
That is the most significant difference between a competent player and a 
strong one.


Forrest Curo
San Diego
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] another subject?

2007-03-25 Thread forrest curo
Since I signed up for this list, I've been receiving all sorts of 
material about how to test existing programs against one another.


Does this bunch ever get around to the merits of various ways of 
representing the board and arriving at moves?


For example, something I suggested the last time I was on a computer go 
list, back in the 90's: Take an array of 7 64-bit integers...


Put the top row of the board into bits 58-40 of the second integer, the 
next row into the same part of the third integer,  so-on until the 7th 
row fits into bits 38-20 of the first integer (and the 14th into bits 
19-1.) Bits 59-40 of the first integer, 18-0 of the 7th integer, are 
zeroed out (representing rows off the top and the bottom of the board, 
respectively.)


If we're showing the spaces on a vacant board, for example, that's

$0eenothing -row 7-row 14
$eee  row 1--row 8--row 15
$eee  row 2--row 9--row 16
$eee  row 3--row 10--row 17
$eee  row 4--row 11--row 18
$eee  row 5--row 12--row 19
$ee0row 6--row 13--nothing

Seven large numbers showing the presence or absence of one condition 
(in this case, an empty intersection) at each point.


Not useful? If you have an array like this, and another like it showing 
the location of all the black spaces, a few shifts and bitwise logical 
operations will give you a new array showing all the breathing spaces of 
all black chains on the board.


It takes at least two such arrays to fully represent a go position, with 
considerable redundancy at that, even more so if you use separate arrays 
for black stones, white stones, empties--but on a true 64-bit machine, 
one ought to be able to test for all sorts of local configurations 
really FAST.


Even on the plain old 32 bit pc I was using back when I actually worked 
on this, I found the representation above was good for quickly detecting 
captures (etc). These days, considering trying again, still on 32 bits, 
I'm inclined to use 19-integer arrays for the sake of keeping things 
simple  debuggable. But maybe someone else will find a use for this 
system--or suggest an arrangement I might find more useful?


Forrest Curo
San Diego
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/