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.