Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Opponent specific learning...

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.