Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Multiple Linear Regression - Secret of the Commercial Chess Programm

Author: Anthony Cozzie

Date: 05:54:55 04/30/04

Go up one level in this thread


On April 30, 2004 at 07:26:55, rasjid chan wrote:

>On April 30, 2004 at 06:59:15, Uri Blass wrote:
>
>>On April 30, 2004 at 04:27:23, rasjid chan wrote:
>>
>>>
>>>The Secret of the Commercial Chess Programmers IMNSHO.
>>>
>>>Omid mentioned Falcon reached 2600 after improvements in search and
>>>now he runs out of ideas to push search further and had to try
>>>to improve on his eval. Again eval would reach a barrier as most
>>>programs with 2600 has a very good eval and the eval curve again
>>>shows diminishing returns for code-increase / additional factors.
>>>The only way is to be able to have a vertical upward displacement
>>>for this eval-curve which is basically logarithmic - it may be +100 elo
>>>by just using the correctly tuned weights.
>>>
>>>The Deep Blue team mentioned they used MLR and since it can be done,
>>>it means it should not be too difficult as MLR itself is not very high
>>>mathematics. I used MLR before and has a not-yet-complete idea of using
>>>it to tune weights.
>>>
>>>The requirement is we need a collection of say 100 drawn game-files, the
>>>more the bettter as reading and applying eval() at all nodes for a 1000
>>>games files may just take a second more.
>>>
>>>MLR tuning is logically based and it should not be too bad, at least
>>>we have some indications, but again we may not know it could be the BEST
>>>way to do weights tuning. Also it has a very high return if it works. It is
>>>a one time investment and once the tuner is written and we keep the
>>>100 game-files, it could be re-used anytime we change our eval(), we only
>>>need 10 mins to do a rerun and we have all the weights re-tuned and we
>>>never need to worry too much what weights we assign when we add a
>>>new factor.
>>>
>>>The following is what I arrive at on first thought, it may be triple dumb!
>>>
>>>MLR is about finding a set of constants c0,c1,c2... for
>>>
>>>Y = c0 + c1*X1 + c2*X2 + .....
>>>
>>>As I have not think it through completely, others may be able to
>>>complete the picture and let's see if it can be done easily.
>>>
>>>MLR requires us to collect a set of table data :
>>>
>>>per row:
>>>
>>>Y , X1,  X2,  X3,...., Xn
>>>
>>>a row/more is added to the table after applying our tuner to list thru the
>>>game-files and making the moves and apply score = eval() to the
>>>"neutral nodes".
>>>
>>>scheme 1:-
>>>Y is the should-be-near-zero score.
>>>Xn is our current weights used.
>>>
>>>scheme 2 - a "dumb" improvement :-
>>>Instead of using Xn we use del_Xn,the change in Xn alone(when only Xn is allowed
>>>to change) needed to make score == zero.
>>>After computing all del_Xn, we use
>>>Y = score = eval() using Xn + del_Xn instead of Xn.
>>>This may be better as weights not activated in certain nodes
>>>will have del_Xn = 0;
>>>Is this scheme ok ?
>>>
>>>Also in general for MLR, Y and Xn in should be scaled using a
>>>weighted average. Most common weights may vary about a certain mean value.
>>>Nodes should also be weighted, the nodes that eval() to far-from-
>>>zero are given less emphasis/weights/rows as the games are supposed to
>>>be drawn games.
>>>
>>>After running MLR, we obtain solution to
>>>c0,c1,c2... etc and this enables us to compute the optimal change
>>>needed to our weights. The correlation coefficient R2 from MLR may indicate
>>>how reliable the proposed changes is, or it may throw some lights
>>>on the quality of our eval(), etc.
>>>
>>>Also recording how often a factor is activated on average can let us decide
>>>if it may be discarded or used with a more conservative weight.
>>>MLR may also give us other indications when we may know certain factors
>>>are not important/or unstable when the tuned weights indicate an
>>>exceptionally high change needed, ie the weight or the factor itself may be
>>>suspect and should to be discarded.
>>>
>>>Should I do it now when my program is at 1900 ?
>>>
>>>Rasjid
>>
>>No
>>
>>I believe that Crafty never used MPL and it is clearly better than 1900.
>>
>
>
>>I also believe that the secret of Shredder is mainly better search than Crafty
>>and not better evaluation(I do not say that it does not have better evaluation
>>but I guess that most of the rating difference between Crafty and Shredder is
>>because of the fact that Shredder has a better search).
>
>Not much dispute. But we know one thing. After a commercial chess program
>reaches ELO 2600+, you either tell the author he's redundant or we can
>imagine he goes all way to to seek even little improvements... like someone
>testing with 2/3 computers running for days/weeks(months ???).
>
>Top programs must be top in BOTH SEARCH AND EVALUATION - no short cut
>as none have suggested that one can completely replace the need for the
>other, or even that we can have one very good and the other plain and
>simple.
>
>But if my guess is correct, and if MLR tuning works good, then it is
>HIGHLY BENEFICIAL as a one time investment. Commercial chess programmers
>have been on their programs for years and my guess is they should have
>tried MLR tuning, at least to see if it is reliable.
>
>I see MLR tuning may not be difficult and I definetly would spend a few
>weeks to test if my program ever reach ELO2500
>
>Rasjid

Don't feel bad about Uri.  He begins all his posts with "no" :)

BTW, if your program is rated 1900, you almost certainly have bugs.  IMO
2200-2300 ICC rating is the "more-or-less-bugfree" zone.  That is with a basic
eval, searching 9-10 ply with null move, PVS, killers, history, transposition
table, etc.

anthony

>>
>>
>>Uri



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.