Author: Bob Durrett
Date: 09:30:44 01/05/04
Go up one level in this thread
On January 04, 2004 at 22:07:16, Mridul Muralidharan wrote: >On January 03, 2004 at 22:42:00, Bob Durrett wrote: > ><snip> >>I'll give my ideas later if someone wants my input, but I'm not a chess >>programmer. >> >>Bob D. > >Hi, > > Would like to hear them if it is not too much of a bother .... > >Mridul Now retired ten years, my career was in engineering and most of my formal education in Electrical Engineering [and graduate math/statistics]. One of the main interests of electrical engineering is control theory. I see some of the principles of control theory being applicable to this "book learning" topic. We are talking about a "system" which changes slowly over time in response to inputs. Stability is of particular concern. If I understood Bob Hyatt's "thumbnail" description of how he implements "book learning" into Crafty, he only changes the probabilities associated with book moves but does not use "book learning" to introduce new moves in real time into Crafty's book. Instead, he changes the moves in his book manually, "off-line." Hyatt's method looks very good and has worked well for him and so it is a "proven" method. That does not mean that there are no other good ways to do "book learning." There are several objectives of "book learning" and these objectives drive the design. Sadly, the primary objective [not just for Hyatt] is to make the chess-playing program stronger and achieve higher ratings in SSDF [and other] computer tournaments. There also seems to be a motivation to increase the performance rating on internet servers such as ICC. The deficiencies of the engine must be hidden as best as can be done by using openings which do that. Better would be to eliminate the deficiencies! Another important objective is diversity. The desire for diversity is not entirely for the benefit of human users, however. The main purpose for using diversity seems to be to avoid someone "booking" the chess-playing program and finding a line which always wins against it. Similarly, the use of "book learning" may not be for the benefit of human users either. In addition to improving the strength of the chess-playing program, it also "snips out" opening lines which might be used repeatedly by an opponent to whip the chess-playing program. In fact, this "snipping out" seems to be the essence of Crafty's "book learning." [ Snip, snip snip! : ) ] To me, the ultimate book learning scheme would not rely solely on human inputs for growth of the book. Before rejecting a line ["snipping it out"], it might be good if the engine could try some of it's own "opening ideas." On the other hand, there is much new innovation in openings coming from the community of top human [and other?] chessplayers. It would be a mistake to not introduce those new ideas into the book as they became available. Since the chess-playing program would have no way of "knowing" about such new ideas, it must rely on human input. One of the problems introduced by opening diversity is that some of the lines may put the chess-playing program at a disadvantage. In other words, the chess-playing program playing Black might find itself in a +/= position as soon as the opening book is exited. If the chess-playing program loses such games, who's fault is it? The chess-playing program should not be blamed for problems introduced by humans. Nevertheless, the chosen book learning scheme should make the best of this bad situation. One could imagine a continual "snipping away" at the book until only a few or even one line remained! : ) The "snipping out" of a line need not be done suddenly. It could, instead, be done gradually and that is probably the usual practice. This would be accomplished by gradual adjustment of the probability assignments of the various moves in the book. Adjustments of these pre-set probabilities might be larger for moves close to the leaf nodes and smaller as one goes back in the line approaching the initial position of the game. The amount of change of the values might have a lot to do with the long-term stability of the book modification process. Perhaps games won by the chess-playing engine might also be used to modify the opening book, or to impact the pre-set probabilities of occurrence associated with each move in the opening book. The danger in doing this would be that wins against beginners might be given more credit than they deserve. Using "snipping out" only avoids this problem. As a user, I am not so interested in seeing the chess-playing programs get a big ego. Instead, I want user benefits. [Maybe this makes me greedy or inconsiderate?] Changing the objectives of "book learning" might result in changes to the way it would be implemented in the chess-playing program. As a user, I might be interested in forcing the chess-playing program to use my own personal opening repertoire. In that case, my objective for "book learning" would be to find improvements in my own "opening book" [i.e. repertoire]. I would use the engine, playing many automated games on internet servers, to improve my own opening repertoire. This would be an ongoing process in which changes to the book would come both from the games and from my own inputs [based on my own games and my study of GM games]. I realize that the above neither provides code nor an algorithm for book learning in a chess-playing engine. Like I said, I am not a chess programmer. Bob D.
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.