Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Opening Books and Chess programmes

Author: Don Dailey

Date: 19:16:25 12/29/97

Go up one level in this thread


>IE, somehow you find a line that works against Crafty for most any time
>control, and ends up +3 in your favor.  In that case, Crafty will follow
>that line *exactly* once, and will then vary somewhere earlier (maybe
>at the last point with a branch, or with a -3, it might even go back a
>branch or two earlier, believing the entire sub-tree is broken.  But it
>won't play it a second time, *ever*.

Hi Bob,

This makes a lot of sense to me and I like it a lot.  But I don't quite
understand how you determine which point to vary from?  This paragraph
is ambiguious to me. Can you elaborate a little more?

Anyway, since you talked about getting positions culled from PGN files,
that is exactly what I do.   Let me share my algorithm and some of
its justifications with you and everyone else:

First of all I do a frenquency of occurance count on every move played
in a large database  of Master games.  If  the frequency is above some
arbitrary value, I store the position  and every move ever played from
that  position.  I also flag the  high frequency  replies, but I don't
remember  the exact algorithm.  It's  based somewhat on the percentage
each move  was played  but  also has   some minimum  frequency   count
requirement to be considered high frequency.

Then I sort this file of positions by depth, deepest first.

I search each position (in the order I  sorted them) to some arbitrary
depth, the deeper the better!  When the final score is returned at the
root node I place it in a permanent hash  table which is active during
this whole procedure.  In this fashion each search gets the benefit of
the previous searches of the children  nodes.  Of course the "regular"
hash table is    also active but   this  special one never  forgets  a
position.  By the  time I search  the opening position information has
propogated back from the deepest book positions.

Please note   that  the searches are normal   searches  except for the
benefit of the extra information that gets propogated forward.

I make a note of each move  the computer selected and  add this to the
database.

Now  at this point  we have  this big database  of positions  with the
following information attached:

   f) High frequency human moves.
   l) Low frequency human moves.
   c) computer selected moves.
   h) see below

   -) depth of "book" process search
   -) score of position from book process


How  do we use this information  for the  book  selection process?  We
follow these steps in this order:

  1) If "cf" computer will play this move because it was high
     frequency AND the computer chose it.

  2) If the move is "cl" the computer will still play this move
     because some master played it AND the computer likes it.
     I have a comment on this a little later.

  3) If the computer prefers a move not played at all by the
     human masters, we avoid the move and pick a high frequency
     human move at random.

  4) If no high frequency master moves are  available  we avoid
     the move altogether and are out of book.



We also have a  provision for editing the book.   We attach an "h"  to
the   move  which means  it was  Human  selected.  This   serves as an
override    and we  also use  this   to  provide  variety.  With Larry
Kaufman's help I   forced in a  lot of  moves  very  near  the opening
position so it  wouldn't just play 1  move from  every position.  Note
that  there are cases anyway where  it will play  more that 1 move but
this is  not sufficient to provide enough  variety.  For instance from
the opening position it would only  play d4 so we  asked it to play e4
also.

So now the modified algorithm is:

  1. play an h move at random if available
  2. play a cf move at random if available (will only be 1)
  3. play a cl move at random if available (will only be 1)
  4. play an f move at random if available
  5. out of book


So  how well does  this work?  I can't give  you any scientific answer
but our "feelings" about it are very good.  The main reason we went to
all this  trouble  was because we  did not  have time  or access  to a
master willing to go to the tremendous effort to hand build a book for
us.   And last year at  the Dutch Computer  Chess championship we were
very  unhappy  with our  opening book   performance.  In almost  every
single game (there were 11 of them) we  were very unhappy on the first
move out of the opening book and struggled in almost all of our games.
We managed to win the tournament but not with any help whatsoever from
the opening book.

If you carefully look at  the procedure you  can see it was an attempt
to solve this  problem.  Basically each  move in our book is  searched
and contains some information propogated back from the final positions
in our book!

But we  think this procedure was  pretty successful.  Since we created
the book  we have noticed  a HUGE shift in  the computers assesment of
the first  positions out of book.    Typically we are very  happy with
white and very often even  think we are better  with the black pieces!
Also we have only been outbooked  a couple of  times in a large number
of games but I do not consider this a major benefit.

But of course we realize this is only  the computers opinion, and does
not really mean we are better off (indeed that is sometimes the case.)
But then again we  rarely  ever feel  the  urge to shuffle our  pieces
around right   out of book  (which has  been a problem  for  us in the
past.)  We are picking lines that if nothing else, are compatible with
the computers idea of what is good and bad.

I know I'm likely to get a slew of mail pointing out all the drawbacks
of this technique.  I  concede  that it   has  some flaws and is   not
perfect.  For instance  there are likely to be  some  refuted moves in
the database.  Theory is full of cases where  a once popular move gets
refuted and these  moves might very well show  up as "CF" moves  in my
book.  But at least the computer got to take a crack at it too!

Also note that this is not much worse than someone furiously typing in
moves somewhere without paying a  whole lot of attention  to them.  At
least each move  gets individual attention from  a strong master  (the
computer itself.)

But I do consider  it  a great  starting  point.  I also concede  that
there may be no good  substitute for a strong  master fine tuning your
book, but having this kind of book doesn't prevent this.

Another HUGE benefit of this procedure  is that your book contains all
this  great  theory whether  you use  it  or not!   Our  old  book was
specialized so there was no information at all  on lines that were not
selected.  If we wanted to add a new move  we would be required to add
all the subsequent  variations that  went with  it.   But  that is  no
longer a problem!   Now we simply change a  single move choice and the
computer will never miss a beat and take over gracefully, still trying
to maximize its final out of book score.

Now, concerning step 3:

  3. play a cl move at random if available.

This one is a little more open to debate.  Should  the computer play a
move that few people have  tried?  I  argue  that if the orignal  book
search depth is sufficient it will  not matter anyway.  Because if you
search a  position to 20  ply  before the  competition and would  only
search  12 ply during  the competition, why  not just play  the 20 ply
pre-searched    move?   The original  search   depth   might very well
determine whether to use this step or skip it.

There are some more ideas that go with this which I'll save for later.

Anyway, I thought I would share this  with you guys.  Does anyone have
any comments  or better yet  would anyone like to  share some of their
automated procedures with us?



-- Don





This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.