Re: [computer-go] Rules for remote play at the Computer Olympiad

2009-04-03 Thread Robert Jasiek

Vincent Diepeveen wrote:
If a program under no circumstance can reproduce a specific move and 
that for several occasions, then that's very clear proof of course.

[...]

Statistics prove everything here.


No. Rather it proves that the program cheats OR that the methods of 
detecting cheating are improper.


> One always must have a logfile

Good.

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


Re: [computer-go] Rules for remote play at the Computer Olympiad

2009-04-03 Thread Vincent Diepeveen

Hi,

I see there has been some discussion in this list about cheating remote.
In computerchess this toleration has grown out of hand.

Setting the rules clear and sharp there in computer-go might avoid
for the future a lot of problems.

There is a very simple manner to avoid cheating in go.

But let me adress a few points first.

1) neural nets

forget about neural nets and cheating. A year or 12+ ago we had a lot  
of neural net guys in computerchess
as well. ANN's are not even close to representing the human mind, as  
modern insights in how brains work shows
clearly already for quite a while. Most important is that the  
automatic learning techniques of neural nets are so

total inefficient that it is really difficult to use them well.

Soon anything that is neural net will be beaten by the rest major  
league.


The only case i remember that was a tad more stubborn was basically  
someone who tried to fool the rest;
he bought source code from someone and sold that as the 'neural net  
optimized version' engine. Yet the original
programmer of that code (Joost Buijs), he assured me that this  
program definitely used his parameters and not
some neural net optimized parameters, as he could reproduce even  
every score of it.


So in that case it was not the neural net that was there, it just was  
getting used as a sales reason.


Yet the neural nets will get beaten major league. If not next year,  
then some years later.
You can't forever improve a product without good debugging methods of  
what it actually is doing.


A black box that is real clever and intelligent doesn't exist.

2) sure on paper it is really easy to cheat.

IT IS ALSO REALLY EASY TO CHEAT WITHOUT REMOTE MACHINES IN FACT.

Oh in computerchess we've seen it all. There is a certain species of  
persons on the planet, they are not in big numbers there,
who are capable of fooling in a professional manner other persons,  
James Bond is nothing compared to the sneaky manners they

get things done.

For sure a bunch of them will also try it in computer-go.

For these guys, considering how weak for the coming few years go  
computers will play, there is not a big difference between remote
machines and local machines. It's too easy to cheat for them.  
Communication to and from a program is too difficult to 100% monitor.


So to speak just keeping the mouse at a certain spot is already  
enough to cheat, or having someone a fewmeters away at his laptop

signal something over blue tooth or whatever to the playing machine.

All been done.

The only real simple manner of catching crooks is by having a good  
tournament director who will enforce in case of suspected
moves played, that an engine must reproduce the move it played, with  
some reasonable decent score.


Now some of you will argue loud in one choir: "parallel search  
doesn't reproduce moves".
One move can make or break a game, yet those who cheat have the habit  
to cheat many moves a game
and for several games. So there should be many datapoints one  
complains about.


If a program basically cannot reproduce a move, at the discretion of  
the tournament leader who might want to see whether
a move in question has a very similar score to other alternatives (in  
which case of course you don't know which of the equal

scored moves or nearly equal scored moves can get played).

But the principle thing is reproduction of great moves.

If a program under no circumstance can reproduce a specific move and  
that for several occasions, then that's very clear proof of course.


That is a rule that should be introduced in computerchess also IMHO.

Note there is also the time constraint. And search depth constraint.

One always must have a logfile displaying which iterations or steps a  
program already has performed; if one searches in a
very selective manner, a rather easy form of cheating that is 'near  
undetectable', is when a program plays moves that it
normally spoken would not have found on that hardware, yet iterations  
deeper.


As in selective search you can assume that in a move sequence m0..mN  
that the moves 0..N represent the line that one needs
to see to find it, there will be of course selectively moves in that  
sequence that might have been reduced somehow.


So if one takes care that in the 'hashtable' such sequence already  
gets searched deeper, by manually enforcing that sequence,

then the program 'learns' itself from hashtable sooner that move.

Now in chess this is easier than go currently, as the search method  
used is reductions,

but it'll come in go also.

Really effective is giving in the 'mainlines' of your opponent to be  
searched fully by a number of cores.


Yet again the only way to really detect this is by forcing  
reproduction of the moves by the tournament director.
If a system can't reproduce enough of the great moves played, for  
whatever reason, bad luck.


For parallel systems that search total non-deterministic, there is  
also a simple lemma;

Re: [computer-go] Re: GCP on ICGA Events 2009 in Pamplona

2009-04-03 Thread Vincent Diepeveen

hi,

You're miscounting here completely again.

Counting the number of federation members is a bad idea.
Count the number of people who know a game and regurarly play it.

Draughts (internatoinal 10x10 checkers, using polish rules) is really  
tiny.


It is not culture to get a member of a club in a nation like  
Netherlands anymore,

netherlands is a very weird nation in that respect.

Yet many learn the game. You shouldn't let yourself get led by  
federation numbers,

but by the number of people who know a game and play it regurarly.

Active official competition players is simply a bad measure.

The online chess servers are indeed a bad measure.

It is spreaded over a number of servers. Yahoo has a daily load of  
about 7000 that are nonstop playing,
chessclub.com which used to be a paid club and still is, it has about  
a million who visit, yet as a membership
has a cost of 50 dollar, which is 500 yuan nearly a year, that's a  
price i'm not willing to pay either.


chessclub offers free membership to titled players. Yet i'm titled  
and i have to pay how about that?

Having 2 dutch titles and a fidemaster title seemingly doesn't count :)

The strongest players are at chessclub.com

It's about 2500 nonstop (so 24 hours load) now, chessbase is becoming  
a tad larger now, note also a paid
chess club. About 3000 load. Yet again you have to either buy a  
product of them for 50+ euro for a free 1 year

membership, or you have to pay 25 euro a year for membership.

There is a range of servers. Each one has about a 500-1000. Most are  
paid.


There chess is really doing bad of course.
Experience learns when you setup a free server with a good client  
that you soon get a huge load.

5000+ is very normal.

There is a lot of tiny communities with a 400+ players 24 hours a day  
online.


that's what you get when there is 105+ nations playing chess.
Each federation wants their own server.

Yet they do not want to pay for it. FIDE really is doing very bad there.
Their problem would be they go to commercial companies which have all  
their own
interest, instead of using a few of their guys who already work in  
organisations and are objective.


Vincent



On Jan 14, 2009, at 4:06 PM, Mark Boon wrote:



On Jan 14, 2009, at 12:43 PM, Thomas Lavergne wrote:


Couting xiangqi and shogi players as chess players is a bit unfair...


Sorry if I caused confusion, I didn't mean to count those as Chess- 
players. I just stated that to show that despite large population- 
numbers in say China, most of those people play Xiang-Qi rather  
than Wei-Qi.


This in contrast to a large country like Russia where I believe  
Chess is by far the most popular. In Holland however, Chess comes  
only at third place (or maybe even lower) after Bridge and Draughts.


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] Re: GCP on ICGA Events 2009 in Pamplona

2009-04-03 Thread Vincent Diepeveen


On Jan 14, 2009, at 1:42 PM, Mark Boon wrote:

It's difficult to get hard data about this. Go is only the most  
popular game in Korea. In other countries like Japan and China it  
comes second by far to a local chess variation.


Possibly Chess is more ingrained in Western culture than Go is in  
Asia, I don't know really. But Chess has the population-numbers of  
West vs. East against it. If there are more chess-players than Go- 
players in the world then it won't be by much. But the Go market is  
probably a lot bigger. Look only at the money in professional Go  
tournaments. It's probably an order of magnitude more than the  
money in professional Chess. But I must admit this is just a guess  
of mine.


Mark



Oh la la,

The origin of chess and go isn't far away from each. Chess originates  
from India,

go not far away from there, if you look at it from a global perspective.

Both go and chess are really similar in that they are symmetric games.

From strong player perspective there isn't that much difference in  
the game in

intellectual experience.

A good chessplayer can be a good go player and vice versa.
Quite the opposite with the zillions of checkers versions there are.
Checkers is NOT a symmetric game.

If Chess would get added again to the olympic sports (which i doubt  
happens,

but you never know how political decision taking takes place) that would
be good news for China's women team. Maybe they lose on board 1  
sometimes,

but the other boards they'll win all games.

Chess is becoming really big in China now (heh i'm still looking for  
a girlfriend,

know a Chinese female go or chessplayer?)

I'm quite sure chess is by now bigger in China than go there. Of  
course the step from

Chinese chess to chess is real real tiny as well.

Chess gets played in every nation on the planet. Tiniest chess is  
probably in Japan.

Shogi and go seem to be more popular there.

South Korea used to be real tiny also for chess, a new initiative  
there might boost it a tad more.


Chess' advantage is of course the fact that the game is a lot quicker  
than go.


Now for serious, strong players, that is not an advantage, but for  
the 'big masses' it is.

Chess computers used to get exported to 105+ nations world wide.

As for the rest of the planet, with exception of Japan and Korea, go  
doesn't exist.


There is no doubt about that some very succesful chess and go players  
to be very very wealthy.
If you're good in that game, you have good brains of course, everyone  
likes to pay you, most chessplayers
even get asked to run a business of some billionair type guys. I  
don't doubt that's identical in go.


Whether 1 go player has more billions worth of wealth than a  
chessplayer, that's not very interesting.


As for the 'subtop', there chess is quadratic bigger than go. How  
many people live from chess?

Well thousands. Amazing yet true.

Whereas in a few nations like Netherlands the number of chessplayers  
that are a member of a federation
is getting less, realize the tiny size of the nation here,  
netherlands has exactly 16.5 million inhabitants.


Even then each town still has a chessclub.

Chess is total booming in India, China, Turkey and Spain.

Just these 3 nations are already nearly 3 billion people.

When i was in China, i saw zero go boards anywhere.

Vincent



On Jan 12, 2009, at 9:22 AM, steve uurtamo wrote:


i think you might be estimating this incorrectly.

s.

On Sat, Jan 10, 2009 at 9:00 AM, Gian-Carlo Pascutto  
 wrote:

Ingo Althöfer wrote:


What prevents you from freezing in your chess
activities for the next few months and hobbying
full (free) time on computer go.


The amount of chess players compared to the amount of go players.

--
GCP
___
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] Pseudo liberties: Detect 2 unique liberties?

2009-04-03 Thread wing
Isaac,

Most groups have only say 4 to 8 liberties. This is why simple arrays of
liberty locations work so well. The new Intel CPUs have instructions
that can search strings 16 bytes at a time, so it could run even faster.

Bit vectors also work, but if you want a true liberty count, then you have
to avoid counting (1 or 1) as 2, which is the pseudo liberty problem, and
which takes more code to write and more time to compute.

When I started, I wanted to find a better implementation than gnugo, and
I was unable to do so. Of course one can refine or simplify the gnugo code
in many different ways, but gnugo has all of the good ideas.

Michael Wing



PS: Here is the data for how many times the program tried to insert
a stone into a chain that has x liberties or x adjacencies. It was taken
from a run that combined monte carlo simulations and ladder reading
exercises. Note that there are only 2% as many liberties/adjacencies
of size 8 as there are of size 0. Chains with liberties/adjacency lists
of size 16 are so few as to be irrelevant.

0 => 4662825
1 => 3524214
2 => 2323725
3 => 1167185
4 => 368184
5 => 245659
6 => 167392
7 => 117655
8 => 84715
9 => 61126
10 => 44407
11 => 32309
12 => 24105
13 => 17639
14 => 13111
15 => 9935
16 => 7378
17 => 5417
18 => 3975
19 => 2900
20 => 2111
21 => 1566
22 => 1055
23 => 783
24 => 616
25 => 399
26 => 290
27 => 221
28 => 174
29 => 127
30 => 95
31 => 71
32 => 60
33 => 44
34 => 15
35 => 4
36 => 2
37 => 1
38 => 1
39 => 0
40 => 0
41 => 0
42 => 0


>> On Thu, Apr 2, 2009 at 5:14 AM,   wrote:
>>> Isaac,
>>>
>>> I implemented about 6 way to track liberties,
>>> a couple years ago, and measured the running
>>> performance, and by far the best is also the
>>> simplest: keep an array of liberties for each
>>> chain, and do a simple linear search.
>>>
>>> This may seem slow, but it has a couple real
>>> advantages. First, it works with the cache
>>> to maximize locality. Second it is very simple.
>>>
>
> This *does* seem slow, even when caching the number of liberties. You
> mentioned that you did this a couple years ago, do you think it still holds
> true? Thank you for the information.
>
>> This is what I do too. I never bothered with bit-arrays but possibly
>> that's simply because I fail to see how you can merge two chains and
>> count liberties in O(1).
>
> Merging would be a simple OR operation. Counting can be done, for example,
> with some kind of binary search. Counting the bits set has been well
> researched and many different algorithms exist.



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


Re: RE: [computer-go] Pseudo liberties: Detect 2 unique liberties?

2009-04-03 Thread terry mcintyre




From: Heikki Levanto 

On Fri, Apr 03, 2009 at 05:07:41PM +0200, Isaac Deutsch wrote:
> > > This may seem slow, but it has a couple real
> > > advantages. First, it works with the cache
> > > to maximize locality. Second it is very simple.
> 
> This *does* seem slow, even when caching the number of liberties. You
> mentioned that you did this a couple years ago, do you think it still holds
> true? Thank you for the information.
> 
> > This is what I do too. I never bothered with bit-arrays but possibly
> > that's simply because I fail to see how you can merge two chains and
> > count liberties in O(1).
> 
> Merging would be a simple OR operation. Counting can be done, for example,
> with some kind of binary search. Counting the bits set has been well
> researched and many different algorithms exist.

> besides, most often you only need to know if a string has zero, one, two, or
many liberties, so the counting can be aborted early.

Most cases do test for zero/one/two/many, but if we want smart playouts, it 
helps to know in advance exactly how many liberties some strings have, compared 
to others in a capturing race. Any program which assumes that "n liberties is 
enough to live" may be tricked by a player who can count to n+1.


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

Re: RE: [computer-go] Pseudo liberties: Detect 2 unique liberties?

2009-04-03 Thread Heikki Levanto
On Fri, Apr 03, 2009 at 05:07:41PM +0200, Isaac Deutsch wrote:
> > > This may seem slow, but it has a couple real
> > > advantages. First, it works with the cache
> > > to maximize locality. Second it is very simple.
> 
> This *does* seem slow, even when caching the number of liberties. You
> mentioned that you did this a couple years ago, do you think it still holds
> true? Thank you for the information.
> 
> > This is what I do too. I never bothered with bit-arrays but possibly
> > that's simply because I fail to see how you can merge two chains and
> > count liberties in O(1).
> 
> Merging would be a simple OR operation. Counting can be done, for example,
> with some kind of binary search. Counting the bits set has been well
> researched and many different algorithms exist.

besides, most often you only need to know if a string has zero, one, two, or
many liberties, so the counting can be aborted early.

  -H

-- 
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: RE: [computer-go] Pseudo liberties: Detect 2 unique liberties?

2009-04-03 Thread Isaac Deutsch



> On Thu, Apr 2, 2009 at 5:14 AM,   wrote:
> > Isaac,
> >
> > I implemented about 6 way to track liberties,
> > a couple years ago, and measured the running
> > performance, and by far the best is also the
> > simplest: keep an array of liberties for each
> > chain, and do a simple linear search.
> >
> > This may seem slow, but it has a couple real
> > advantages. First, it works with the cache
> > to maximize locality. Second it is very simple.
> >

This *does* seem slow, even when caching the number of liberties. You
mentioned that you did this a couple years ago, do you think it still holds
true? Thank you for the information.

> This is what I do too. I never bothered with bit-arrays but possibly
> that's simply because I fail to see how you can merge two chains and
> count liberties in O(1).

Merging would be a simple OR operation. Counting can be done, for example,
with some kind of binary search. Counting the bits set has been well
researched and many different algorithms exist.
-- 
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] UCT: Artificially increasing the number of visits to a node.

2009-04-03 Thread Greg Schmidt
Hi,
 
While recently implementing UCT, I've come across two cases where one may want 
to increase the number of visits to a node by something greater than 1.
 
A) Leaf nodes - Artifically set the number of visits to some very high number.  
The rationale for this is to accelerate propagation of the leaf condition "up 
the tree" so as not to waste future time descending on parts of the tree which 
have a known outcome.  Does that make sense?
 
B) In the section "UCT with Prior Knowledge" within the paper "Combining Online 
and Offline Knowledge in UCT' Gelly/Silver mention seeding the visits with the 
"equivalent experience" contained in the prior value function, eg.
 
n(s,a) <- n-prior(s,a)
 
Therefoe, I assume that in Gelly/Silver's "updateValue(node,value), the line:
 
node[i].nb = node[i].nb + 1;
 
is replaced with something like:
 
node[i].nb = node[i].nb + k;
 
where k >= 1
 
This raises two questions:
 
1) What is an effective way of dealing with leaf nodes?  Is what I describe 
above in A) typical?
 
2) Is it really OK to increase the number of visits and propagate them "up the 
tree" this way?  Does it break any of the statistical assumptions inherent in 
the algorithm.  I suppose it must be "OK" in that it is mentioned in the paper.
 
Sorry if these questions seem basic, but I think it's important to get the 
details right.
 
Thanks, I appreciate any further insights.
-- Greg


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