Author: Robert Hyatt
Date: 06:03:10 04/01/98
Go up one level in this thread
On March 31, 1998 at 15:45:32, Edward Screven wrote: >On March 30, 1998 at 23:18:54, Robert Hyatt wrote: > >>On March 30, 1998 at 17:36:03, Edward Screven wrote: >> >>>at a minimum, i think you would want to know the overall strength >>>of each member. if your program wins against a weak player, that's >>>not very interesting, and neither is losing to a very strong player. >>>in both cases, whatever experience you glean from such games should >>>have less weight than extracts from games lossed to weak players or >>>won against strong players. >>> >>>a half-assed way to do this on a server would be to only learn from >>>losses, which makes since if you think your program is stronger than >>>most opponents. >> >> >>Learning from losses only won't work. I did it. You simply learn that >>*no* book move is playable, because you will likely lose one game in >>each >>opening if you play strong enough players. You also have to fold in >>wins >>and "equal games" or run the risk of having no book. Think about the >>limit of the equation where all scores are "losses"... :) >> > >of course, good point. but do you weight the recorded results by >opponent strength? crafty would most likely beat me even after >opening with an awful line. using a victory against me to encourage >play of that line in general would be a mistake. > I weigh the learning based on (crafty's rating and opponent's rating, both obtained from the chess server or the operator if it is a non-ICS type game, but I also factor in the search depth, so that slower machines or rapid time controls don't influence learning as much as a deep search on faster hardware at longer time limits. I also calculate a "trustworthy" factor, in that if crafty is better than the opponent, it doesn't trust "positive" scores since it should win anyway, but it *really* trusts negative scores in that case because it should not get a negative search score against a weak opponent. Ditto for higher rated players. Negative scores are expected, while positive scores are a little more trustworthy, but not a lot since there is always a "blunder factor". you can check out "LearnFunction" in learn.c to see what I do here.. this function simply takes a "score" and modifies it based on how it thinks it can "trust" the score... >i have implemented simple learning in my own program. since i don't >play on servers, it has only a small roster of opponents, so i haven't >needed to attack this problem. but if the time comes, i might >try something like this for book learning: > > + for each opponent, estimate a probability of win, loss, and draw > (call them Pw, Pl, and Pd.) > > + instead of just accumulating a unit win, loss, or draw at each > node of the book, accumulate -log2(Pw), -log2(Pl), or -log2(Pd) > depending on the outcome. > >in other words, estimate how many bits of information each outcome >carries, and use that as the book learning weight.
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.