[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: computer-go: minimax and go



   From: Heikki Levanto <heikki@xxxxxxxxxxxxxxxxx>

   Don Dailey <drd@xxxxxxxxxxxxxxxxx> wrote:
   > How would you write  a program on that computer we 
   > will have in 60 years that doesn't do any kind of search?

   I do not think that anyone here is claiming to have a better 
   way for a go program in 60 (or 600) years. 

Which is  the point I hoped to  make.  I don't  mind criticism  but it
should be tempered with some useful suggestions,  and I have not heard
any from those being critical.


   ...  I think that most of 
   us who think in the practical line consider 60 (or even 10) years 
   to be far in the future. Our focus is not in what is theoretically
   possible, but in how can we improve on today's systems.

I'm one of those people too.  My main argument,  which I realize isn't
being expressed very well is this:

  1. We are not taking very good advantage of the power of our 
     computers.  (I think probably most of us agree on this)

  2. If we were, then our algorithms would automatically scale,
     as a by-product of this.
 
  3. But they don't, therefore, I believe  we haven't figured out 
     yet how to write good programs for Go.


No  one really  knows how  good  a program  "should"  be.  Everyone is
critical of how lousy even the  best programs are,  but no one can say
for  sure that it's  possible to  write one  significantly  better.  I
believe  someone can probably  do much much  better,  but I don't know
how.   I'm not going to  be shooting down  everyone elses ideas when I
don't know how myself.

   I must also object to your "doesn't do any kind of search". You seem 
   to divide the approaches to comuter go into 
     a) those that are based on global search, and
     b) those that don't do any kind of searh

Actually, YOU are making this division.  I did a thought expermient to
describe scalability, but  people, including  you, completely  ignored
the point of the  experiment and focused  entirely on the experimental
apparatus.  It's almost   as  if  I was   trying  to  illustrate   the
uncertainty principle    in physics  by    using "Schrodingers    cat"
illustration,  and then having people come  after me for animal abuse.
That's about how silly it was.

Yes, I DID say  doesn't do any  kind of  search.   Again, look at  the
context of the discussion and stop  picking on me.   I was replying to
someone   who   was being critical   (and   sarcastic)  of the scaling
argument.  He didn't pay any attention to the scaling argument either,
he only wanted to know why I would want to hurt a poor cat.

I have proposed ONE possible algorithm that  does indeed scale just to
illustrate that it is possible.  I tried  to convince you that this is
a very  useful property  to have  in  a  good program.   If  you don't
believe that then  you probably, at least  in principle, feel that the
quality of  the  programming, is the  only thing  that  matters, which
directly implies  that it shouldn't  matter  how powerful the computer
is.  If that's how you feel then that is  what divides our thinking on
this, not whether there is a global search or not.   


   May I humbly propose that searching is one of the many ways to get 
   towards a better go playing program. That in the theoretically perfect
   program there will be some searching, but that it may possibly not be
   the main ingredience - just like we use boolean algebra in various
   ways, without claiming that it is the one and only thing that makes 
   computers (or programs) work...

   -H

Yes, that is a good proposal and I agree with you.  

Computer power  is often measured in  2 ways, by  the amount of memory
your computer has and the execution  speed of the program.  Very often
one can  be replaced by another  (square roots  by table lookup versus
calculation for instance.)

For Go programs to get better, they have to simulate more knowledge of
the game.  This can be done in only 2  fundamental ways, with space or
time.  Space usually also involves time.  Examples of space are adding
knowledge  by making the opening library  bigger (takes a lot of extra
memory), adding  pattern databases (takes a lot   of extra memory) and
adding  code to evaluate  things (also takes  memory for  the code AND
time.)

Fundamentally, there is  NO way around this,  you have to  invest BOTH
space and time to play Go by computer, and  I don't care how GOOD your
program  is.  To improve it  you have to ADD either  time  or space or
both.

Some of us imagine  that the ultimate Go  program will just require  a
nice smart program, not more hardware.  This is a fundamentally flawed
notion.  Again,  you  never get something  for  nothing, you  MUST add
space or time and that means more powerful hardware.

You  might  legitimately argue that   current  programs are incredibly
wasteful of space  and time, and so  much  more is possible given  the
current usage  of resources.  That's a  good and  reasonable argument.
As long as you understand that  you are not  really getting around the
time/space issue I'm ok with that.

Personally, I think we  are very wasteful   and our programs could  be
much better on  current hardware (I know  mine certainly could be  :-)
That's why I promote any approach that tries to utilize to the fullest
extent  possible,  the  potential  of  the hardware,    and that means
automatically that  it will scale superbly  well.  And I don't care if
it involves global search or not.


Don