Little Goliath - Neural Network Version, UCI chess engine.
Author: Michael Borgstädt Rating CEDR=3243
Little Goliath ("Evolution") - Neural Network Version
The engine uses a neural network for positional evaluation. In direct
comparison with the old engine, which uses manually generated evaluation
functions, this engine achieves almost 100% in over 1000 test games (only
a few draw games). This is obviously significantly more than other
programmes have achieved when switching to neural networks.
However, it
does not seem to be due to the net itself but to its effect on a pruning
system, which I call "path finding pruning" and which seems to depend
essentially on an exact position evaluation. If this pruning is
deactivated in both engines, the NN version "only" wins with about 70%.
If I leave the pruning activated in the classic engine and play against
the same version without it, the version with pruning is only just ahead
(approx. 52%).
On fast hardware, this also corresponds to the results
from about 16 years ago. Consequently, the neural network or the more
exact positional evaluation seems to have an extreme effect here.
This is
an important approach for future programme versions, perhaps much more
can be achieved by tuning (also other techniques). Another effect is the
significantly lower search depth overall. Here, too, the network seems to
have an effect, the search is shallower, but more accurate. Again, it
will be an approach to pruning even more aggressively. I always thought
the pruning in Little Goliath was very aggressive.
However, when I look
at Stockfish, it doesn't come close to being aggressive either. I rejected
similar approaches at the time, because as a chess player I was of the
opinion that tactical variants are of decisive importance for the strength
of the game and that the pruning here should not be too intensive.
Obviously a misjudgement, which I will look at more closely.
In addition, "Sigular Extensions" are now activated by default.
This was not
the case before. Here, too, the net seems to have a positive effect. Since I
am often asked, here is the information that I use singular extensions in the
classic form. That is, as described by Hsu with regard to Deep Blue.
I have
only changed the conditions and considerably reduced the effort for testing
for singularity (at the expense of accuracy). The method of controlling
singular extensions via the hash tables, which is apparently used as
"state-of-the-art" today, was already tested by me 20 years ago in many
programme versions without success.
Even today, with a 1:1 implementation as
in Stockfish, I cannot achieve any improvement with Little Goliath (the
opposite is rather the case). Why this is so will certainly be the subject
of further investigation.
Apart from that, I have not made any changes. As I said, my initial aim is
to highlight the differences between the two versions (classic and NN).
Unfortunately, that's why all the bugs (there were some back then, I didn't
keep track) of the old version (from 2006) are still included then.
The engine is available as a 32-bit version, which should also run on old
hardware. There is also a 64-bit version that is about 25% faster.
A completely revised version will follow in a few weeks, then also with the
extended networks. I am personally very curious to see what will be possible here.
v.3.17:
Adjustment of some parameters for better use of the networks for extension and pruning decisions.
Fixed some bugs, including a rare memory leak (only occurred with certain CPU/chipset combinations).
First attempts with multiprocessor support (more effort is needed here). 30 years ago this was not an issue, the subsequent adaptation is more elaborate than I thought.
I have adapted my old bitboard code (formerly for 32-bit in "Goliath Pro"), but am dissatisfied with the speed (nps). Further optimisations are needed here, so this version still runs here with the old design. Accordingly, the pattern recognition is not yet active. These points are on the roadmap for version 4.0
Individual statistics: Little Goliath 3.15.4 - 129 games (+ 71,= 37,- 21), 69.4 %
Andscacs 0.95092 : 2 (+ 1,= 1,- 0), 75.0 %
Critter 1.6a : 2 (+ 0,= 1,- 1), 25.0 %
Vajolet2 2.8 : 2 (+ 0,= 0,- 2), 0.0 %
Fizbo 2 : 2 (+ 0,= 0,- 2), 0.0 %
Deuterium 2019.2.37.73 : 2 (+ 1,= 1,- 0), 75.0 %
Dimitri 5.2.3 : 1 (+ 1,= 0,- 0), 100.0 %
Fritz 17 : 2 (+ 0,= 1,- 1), 25.0 %
SeeChess 1.2 : 2 (+ 2,= 0,- 0), 100.0 %
Jinx 1.0 : 2 (+ 2,= 0,- 0), 100.0 %
Asymptote 0.8 : 1 (+ 0,= 0,- 1), 0.0 %
NoC 4.20 : 2 (+ 2,= 0,- 0), 100.0 %
Badchess 0.4.4 : 2 (+ 2,= 0,- 0), 100.0 %
Devel 4.0.2.3 : 1 (+ 0,= 1,- 0), 50.0 %
Lozza 2.2 : 2 (+ 2,= 0,- 0), 100.0 %
Barbarossa 0.6.0 : 2 (+ 2,= 0,- 0), 100.0 %
Zahak 10.0 : 2 (+ 0,= 1,- 1), 25.0 %
Hiarcs 15.5 : 4 (+ 0,= 4,- 0), 50.0 %
Admete 1.5.0 : 2 (+ 2,= 0,- 0), 100.0 %
Expositor 2WQ23 : 2 (+ 1,= 1,- 0), 75.0 %
Protej 0.6.2 : 2 (+ 1,= 0,- 1), 50.0 %
CT800 1.43 : 2 (+ 2,= 0,- 0), 100.0 %
FoxSEE 7.35.0 : 2 (+ 2,= 0,- 0), 100.0 %
Waxman 2020 : 2 (+ 2,= 0,- 0), 100.0 %
Loki 3.5.0 : 2 (+ 2,= 0,- 0), 100.0 %
Galjoen 0.41.2 : 2 (+ 2,= 0,- 0), 100.0 %
MagiC 2 : 1 (+ 1,= 0,- 0), 100.0 %
Cosette 5.1 : 3 (+ 3,= 0,- 0), 100.0 %
Ceechess 1.4 : 2 (+ 2,= 0,- 0), 100.0 %
MinimalChess 0.6 : 2 (+ 2,= 0,- 0), 100.0 %
FrankyGo 1.0.3 : 2 (+ 2,= 0,- 0), 100.0 %
Blunder 7.6 : 2 (+ 2,= 0,- 0), 100.0 %
Eubos 2.10 : 2 (+ 2,= 0,- 0), 100.0 %
Tinman 0.41 dev : 2 (+ 2,= 0,- 0), 100.0 %
ChessKISS 1.8 : 2 (+ 2,= 0,- 0), 100.0 %
Cinnamon 2.4 : 2 (+ 2,= 0,- 0), 100.0 %
Hopper 1.7 : 2 (+ 2,= 0,- 0), 100.0 %
Pawn 2021-09-22 : 2 (+ 2,= 0,- 0), 100.0 %
Gunborg 1.65 : 2 (+ 2,= 0,- 0), 100.0 %
Xoron b196 : 2 (+ 2,= 0,- 0), 100.0 %
Coiled 1.1 : 2 (+ 0,= 0,- 2), 0.0 %
Combusken 2.0.0 : 2 (+ 0,= 1,- 1), 25.0 %
Slowchess 2.9 : 2 (+ 0,= 1,- 1), 25.0 %
Protej 0.6.3 : 2 (+ 1,= 1,- 0), 75.0 %
Journeyman 2.1 : 1 (+ 1,= 0,- 0), 100.0 %
Nirvanachess 2.5 : 2 (+ 1,= 1,- 0), 75.0 %
Demolito 2021-10-21 : 2 (+ 0,= 2,- 0), 50.0 %
Beef 0.3.6 : 1 (+ 1,= 0,- 0), 100.0 %
FabChess 1.16 : 2 (+ 0,= 2,- 0), 50.0 %
Gargantua 1.0 : 2 (+ 0,= 2,- 0), 50.0 %
Odonata 0.6.2 : 2 (+ 1,= 1,- 0), 75.0 %
ISA 2.0.83 : 2 (+ 2,= 0,- 0), 100.0 %
Smallbrain 5.0 : 1 (+ 0,= 1,- 0), 50.0 %
Dumb 1.11 : 1 (+ 0,= 1,- 0), 50.0 %
Velvet 4.1.0 : 2 (+ 0,= 2,- 0), 50.0 %
Devre 4.0 : 2 (+ 0,= 1,- 1), 25.0 %
Revenge 3.0 : 2 (+ 0,= 0,- 2), 0.0 %
Alexandria 2.4 : 1 (+ 1,= 0,- 0), 100.0 %
Fornax 3.0 : 1 (+ 1,= 0,- 0), 100.0 %
Weiss 2.1 dev : 2 (+ 0,= 2,- 0), 50.0 %
StockNemo 5.6.0.0 : 1 (+ 1,= 0,- 0), 100.0 %
StockNemo 5.7.0.0 : 2 (+ 0,= 1,- 1), 25.0 %
Marvin 6.1.0 : 2 (+ 1,= 1,- 0), 75.0 %
Caissa 1.1 : 2 (+ 0,= 2,- 0), 50.0 %
Frozenight 5.1.0 : 2 (+ 2,= 0,- 0), 100.0 %
Caissa 1.3 : 2 (+ 0,= 1,- 1), 25.0 %
Alexandria 3.0.2 : 2 (+ 0,= 2,- 0), 50.0 %
Mayhem 7.7 : 1 (+ 1,= 0,- 0), 100.0 %
RubiChess 20221120 : 2 (+ 0,= 1,- 1), 25.0 %
Seer 2.4.0 : 2 (+ 0,= 0,- 2), 0.0 %
Critter 1.6a : 2 (+ 0,= 1,- 1), 25.0 %
Vajolet2 2.8 : 2 (+ 0,= 0,- 2), 0.0 %
Fizbo 2 : 2 (+ 0,= 0,- 2), 0.0 %
Deuterium 2019.2.37.73 : 2 (+ 1,= 1,- 0), 75.0 %
Dimitri 5.2.3 : 1 (+ 1,= 0,- 0), 100.0 %
Fritz 17 : 2 (+ 0,= 1,- 1), 25.0 %
SeeChess 1.2 : 2 (+ 2,= 0,- 0), 100.0 %
Jinx 1.0 : 2 (+ 2,= 0,- 0), 100.0 %
Asymptote 0.8 : 1 (+ 0,= 0,- 1), 0.0 %
NoC 4.20 : 2 (+ 2,= 0,- 0), 100.0 %
Badchess 0.4.4 : 2 (+ 2,= 0,- 0), 100.0 %
Devel 4.0.2.3 : 1 (+ 0,= 1,- 0), 50.0 %
Lozza 2.2 : 2 (+ 2,= 0,- 0), 100.0 %
Barbarossa 0.6.0 : 2 (+ 2,= 0,- 0), 100.0 %
Zahak 10.0 : 2 (+ 0,= 1,- 1), 25.0 %
Hiarcs 15.5 : 4 (+ 0,= 4,- 0), 50.0 %
Admete 1.5.0 : 2 (+ 2,= 0,- 0), 100.0 %
Expositor 2WQ23 : 2 (+ 1,= 1,- 0), 75.0 %
Protej 0.6.2 : 2 (+ 1,= 0,- 1), 50.0 %
CT800 1.43 : 2 (+ 2,= 0,- 0), 100.0 %
FoxSEE 7.35.0 : 2 (+ 2,= 0,- 0), 100.0 %
Waxman 2020 : 2 (+ 2,= 0,- 0), 100.0 %
Loki 3.5.0 : 2 (+ 2,= 0,- 0), 100.0 %
Galjoen 0.41.2 : 2 (+ 2,= 0,- 0), 100.0 %
MagiC 2 : 1 (+ 1,= 0,- 0), 100.0 %
Cosette 5.1 : 3 (+ 3,= 0,- 0), 100.0 %
Ceechess 1.4 : 2 (+ 2,= 0,- 0), 100.0 %
MinimalChess 0.6 : 2 (+ 2,= 0,- 0), 100.0 %
FrankyGo 1.0.3 : 2 (+ 2,= 0,- 0), 100.0 %
Blunder 7.6 : 2 (+ 2,= 0,- 0), 100.0 %
Eubos 2.10 : 2 (+ 2,= 0,- 0), 100.0 %
Tinman 0.41 dev : 2 (+ 2,= 0,- 0), 100.0 %
ChessKISS 1.8 : 2 (+ 2,= 0,- 0), 100.0 %
Cinnamon 2.4 : 2 (+ 2,= 0,- 0), 100.0 %
Hopper 1.7 : 2 (+ 2,= 0,- 0), 100.0 %
Pawn 2021-09-22 : 2 (+ 2,= 0,- 0), 100.0 %
Gunborg 1.65 : 2 (+ 2,= 0,- 0), 100.0 %
Xoron b196 : 2 (+ 2,= 0,- 0), 100.0 %
Coiled 1.1 : 2 (+ 0,= 0,- 2), 0.0 %
Combusken 2.0.0 : 2 (+ 0,= 1,- 1), 25.0 %
Slowchess 2.9 : 2 (+ 0,= 1,- 1), 25.0 %
Protej 0.6.3 : 2 (+ 1,= 1,- 0), 75.0 %
Journeyman 2.1 : 1 (+ 1,= 0,- 0), 100.0 %
Nirvanachess 2.5 : 2 (+ 1,= 1,- 0), 75.0 %
Demolito 2021-10-21 : 2 (+ 0,= 2,- 0), 50.0 %
Beef 0.3.6 : 1 (+ 1,= 0,- 0), 100.0 %
FabChess 1.16 : 2 (+ 0,= 2,- 0), 50.0 %
Gargantua 1.0 : 2 (+ 0,= 2,- 0), 50.0 %
Odonata 0.6.2 : 2 (+ 1,= 1,- 0), 75.0 %
ISA 2.0.83 : 2 (+ 2,= 0,- 0), 100.0 %
Smallbrain 5.0 : 1 (+ 0,= 1,- 0), 50.0 %
Dumb 1.11 : 1 (+ 0,= 1,- 0), 50.0 %
Velvet 4.1.0 : 2 (+ 0,= 2,- 0), 50.0 %
Devre 4.0 : 2 (+ 0,= 1,- 1), 25.0 %
Revenge 3.0 : 2 (+ 0,= 0,- 2), 0.0 %
Alexandria 2.4 : 1 (+ 1,= 0,- 0), 100.0 %
Fornax 3.0 : 1 (+ 1,= 0,- 0), 100.0 %
Weiss 2.1 dev : 2 (+ 0,= 2,- 0), 50.0 %
StockNemo 5.6.0.0 : 1 (+ 1,= 0,- 0), 100.0 %
StockNemo 5.7.0.0 : 2 (+ 0,= 1,- 1), 25.0 %
Marvin 6.1.0 : 2 (+ 1,= 1,- 0), 75.0 %
Caissa 1.1 : 2 (+ 0,= 2,- 0), 50.0 %
Frozenight 5.1.0 : 2 (+ 2,= 0,- 0), 100.0 %
Caissa 1.3 : 2 (+ 0,= 1,- 1), 25.0 %
Alexandria 3.0.2 : 2 (+ 0,= 2,- 0), 50.0 %
Mayhem 7.7 : 1 (+ 1,= 0,- 0), 100.0 %
RubiChess 20221120 : 2 (+ 0,= 1,- 1), 25.0 %
Seer 2.4.0 : 2 (+ 0,= 0,- 2), 0.0 %
Comments
Post a Comment