Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Strength of the engine in chess programs

Author: José Carlos

Date: 14:43:26 05/21/02

Go up one level in this thread


On May 21, 2002 at 17:03:32, Torstein Hall wrote:

>On May 21, 2002 at 12:46:41, José Carlos wrote:
>
>>
>>>But I think it would be interesting if someone could make a program that would
>>>work on the openingface of the game, not just copy human moves. Perhaps the
>>>programs could add something to our opening knowledge, not just copy human
>>>analysis. I imagine a program that experiment with different opening lines it
>>>calculated itself, learn, try new lines and do some real learning.  Slowly
>>>building its own openingbook. But this just dreaming I guess.
>>>
>>>Torstein
>>
>>  No it isn't. It's not dreaming at all. My mediocre program is able to do that,
>>so I guess most top programs are. As a matter of fact, I'm performing an
>>experiment with my program regarding opening books. I'm comparing three
>>possibilities:
>>
>>  1. Empty opening book. The program creates it's own by playing games and
>>storing information about it's own moves (note that it doesn't copy the
>>opponents moves).
>>  2. Narrow and deep opening book. Just some main lines getting very deep. In
>>this case, the learning tries to make the book wider.
>>  3. Wide but not deep book. A lot of options for the first moves, but none very
>>deep. The learning tries to choose among the many possible lines which give
>>better results and get deeper on those lines.
>>
>>  I don't have conclusive results yet but, at first sight, it seems that 1 gets
>>the best results for my program.
>>  It is important to note that the program can, at some point, decide a book or
>>learnt line is not good and search to find another one.
>>  It's not a dream at all. Actually, it's much easier than it seems.
>>
>>  José C.
>
>Your program looks like an interesting attempt to do some new stuff with book
>learning. I have always belived that most program just started with bunch of GM
>games or had a handbuilt book. And adjusted the score for each line based on its
>own results. So this is new to me.
>
>Anyway it must take quite a while to build more than a very narrow book if you
>start empty? Or how do you get your program into expanding? By playing different
>strong oponents? Or do's it just expand when a line is found to be bad?
>
>Torstein

  My approach is, at this point, still very simple.
  Let's first take the case of empty book:
  The program starts searching the first move. After moving, it stores the spent
time, depth reached and eval. I have configurable parameters everywhere, but
lets say I set the program to learn up to 10 moves each game. Search after
search, the program saves this information. If at a certain point the score
drops below the previous search, a small penalty is given to the previous move.
Once the game is over, the program assesses a small bonus if it won, and a small
penalty if it loses, to all learned moves.
  The following games, if the assigned time to think is <= the stored time, the
program moves immediately, with the exception that if the move has a very bad
score (below a certain threashold) the program stores that move in the hash
table and searches, which can provide a new and more interesting move. If the
assigned time is > then the program stores the previous depth+score in the hash
table and searchs. A new move can be played (and thus learned) or the previous
one, in which case the new seach (longer than the stored) is saved to the book.
As the penalty for losing is assessed to the whole variation (from the 1st move
of the game), if the program selected 1.e4 and loses some games, it eventually
search again for the first move and choose, for example, 1.d4.
  If the book is not empty, the "book moves" can be modified by results and
"score drops in the next search". If for any of either reasons the score for
book moves at a certain position gets below the threashold, the program will
choose to search (with the relevant information in the hash table) and hopefully
find a better move.
  There're some other small details, but this is basically how it works.
  For this learning to work best, the pool of opponents must be same level or
slighty stronger than my program. Too weak opponents make the program believe
everything is good, and too strong opponents make it believe everything is bad.
  Feel free to ask anything else you want about this. I enjoy speaking about
these topics.

  José C.



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.