Is there a way to implement learning in a more efficient way? A NNUE that changes and improves every time one plays or analyses a position? It could be the next revolution in chess engines, with personalized engines and evaluations.
the same question I had asked myself in the past, especially with Lc0,
no this is not possible, when the learning process of a NNUE or NN is finished, there are no further possibilities to "improve" this further, when the "Local Optimum" is reached, then learning process is finished, no further increase is possible.
the same question I had asked myself in the past, especially with Lc0,
no this is not possible, when the learning process of a NNUE or NN is finished, there are no further possibilities to "improve" this further, when the "Local Optimum" is reached, then learning process is finished, no further increase is possible.
You'll see that somebody will do it, in less than two years. An idea could be an additional small net, complementing the main one. Jonathan Kreuzer uses several nets in SCB. A small net could be retrained on the fly, or incrementally between games/tournaments. Somebody will figure it out -- the key is to think out of the box.
Is there a way to implement learning in a more efficient way? A NNUE that changes and improves every time one plays or analyses a position? It could be the next revolution in chess engines, with personalized engines and evaluations.
A good idea. Not wanting to be negative, but my answer is "no". An NNUE is an NN, and a human brain is an NN, so it's tempting to anthropomorphise an NNUE. However, I tend to like the "big picture", and here's what I see:
* a computer chess NN learns a tiny amount from each one of a HUGE number (billions) of positions
* a human GM learns a large amount by deep analysis of a small number of positions (probably in the region of 50,000)
So... for each single position a GM takes a good look at, the computer looks at well over 20,000. You can see that the process is so different that there's not much comparison.
My theory (and I see a lot of evidence to support this) is that the ANNs are finding a large number of shallow (simple) patterns whereas human GMs are finding a small number of deep (complex) patterns.
I believe that "small number of deep patterns" is highly superior to "large number of shallow patterns" in many ways - not least of which is that it would take less computer power (run on cheap / small / low powered computers, run in web browsers etc). I also believe it would produce very much better results in equivalent hardware. ANNs are a great step forward, but by themselves they might not get us to where we want to be in AI (they might be good enough for computer chess, which is moving in the direction of "death by draw").
matejst likes this post
Chris Whittington
Posts : 1254 Join date : 2020-11-17 Location : France
Ed, do you plan to release learn file (exp) in next version of Rebel ? So Rebel both contain learn file together with nnue, like Eman and Sugar do ? I think Rebel learn file will significantly boost Rebel strength even further.
But we already have a learner (NNUE) and a lot better one than (the old) position learning that only makes sense for the first x moves of a game. In the end what matters will be the size of the dataset. It is said the SF guys already have datasets over 40 billion.
Damir Desevac likes this post
Damir Desevac
Posts : 330 Join date : 2020-11-27 Age : 43 Location : Denmark
a learnfile will certainly not significantly increase the playing strength of Rebel.
There have been enough experiments in the past (e.g. by Stefan Pohl) that showed that a learnfile did not significantly improve the playing strength.
Eman and Sugar are nothing but SF clones, we will not test them in the ratinglists either.
And Stefan Pohl tests with learning file, there is however one drawback, he did not train the learning file before running his tests.
Thats is like running a NNUE with an empty file. Experience file or like it is called the learn file needs to be trained properly with thousands of games played. One can not
expect it to magically perform right at the start without any training games played before making the test..
Hi Chris, when you wrote "I am thinking about it " I suspect that you are thinking about using multiple NNUE for different sections of the game (opening, middlegame, endgame) and not a continuing learning NNUE.
I know that Slowchess uses multiple NNUE and is very successful with it.
The author of Little Goliath is also currently working on this development, but still has difficulties in determining the game phase at which to load the respective NNUE.
pohl4711
Posts : 160 Join date : 2022-03-01 Location : Berlin
And Stefan Pohl tests with learning file, there is however one drawback, he did not train the learning file before running his tests.
That is false. Perhaps you should read more carefully, what I did
"So I did 3 7000 games testruns, starting with no experience and then let Eman learn and learn. Each of the 3 testruns were 100% identical to the others, expcept, that Eman was allowed to learn and to keep the Eman.exp-file for the next testrun"
Hi Chris, when you wrote "I am thinking about it " I suspect that you are thinking about using multiple NNUE for different sections of the game (opening, middlegame, endgame) and not a continuing learning NNUE.
I know that Slowchess uses multiple NNUE and is very successful with it.
The author of Little Goliath is also currently working on this development, but still has difficulties in determining the game phase at which to load the respective NNUE.
I don't terribly want to do that specifically with multiple nnues, because it involves multiple training sessions instead of just one. I have built nets with humungous numbers of inputs (12 pieces*64squares*64kingpositions*8phases) but the size massively increases the training time - not enough patience. Also tried nets with phased layer stacks (SF paradigm) but found the smartness benefit was outweighed by the drop in nps. Both of those methods are basically multiple nnues, but packed into one. Also tried several different phasing concepts, so have the capability to build all manner of different net types on compiler switches, but not got round to comparative testing (Ed needs to catch up!)
Following your chat with matejst about "improving", well, you're right, improvement stops when net is done, or vice versa, but that is improvement along an Elo vector. Users might like to be able to actually tune a "finished" net, maybe sacrifice some Elo to get some style, or make some tuning in order to generate certain types of moves. I programmed the first shot at a tuner, and right now am training the net to go with it (Elo training). Not sure how busy Ed is, but I can probably get it to him to preliminary test by the weekend.
Thank you Chris for your clarification, regarding Lc0 there have been several attempts to use a specialized net instead of a general net at least for the endgame, the concept has always failed so far.
Our tests with Rebel 15.1 have started and look very good so far, meaningful results will be available only on Friday evening.
matejst likes this post
Damir Desevac
Posts : 330 Join date : 2020-11-27 Age : 43 Location : Denmark
72 mb learn file is nothing to give an impression on the strength of a learn file...
On Infinity server people have up to 5-8 GB learn files. A user there CumnorChessClub has very strong EXP file who is able to hold its own with just his learn file. He does not use nnue, against other nnue players. Like I said he has 5-8 GB learn file.
72 mb learn file is peanuts..
matejst likes this post
Admin Admin
Posts : 2608 Join date : 2020-11-17 Location : Netherlands
72 mb learn file is nothing to give an impression on the strength of a learn file...
On Infinity server people have up to 5-8 GB learn files. A user there CumnorChessClub has very strong EXP file who is able to hold its own with just his learn file. He does not use nnue, against other nnue players. Like I said he has 5-8 GB learn file.
72 mb learn file is peanuts..
And 8Gb is peanuts also
The year is 2100 and perhaps 16Tb as hash table will deliver 20-30 elo.