chrisw wrote: ↑Tue Sep 08, 2020 10:35 am
Anyway, I guess what this thread is about, is whether or not the NN paradigm in itself produces similar engine behaviour and thus means we are generating a lot of very similar products differing mostly in 'name'. Same question could probably be asked about Texel tuned engines.
I have been wondering about this. Because the author of RubiChess says that the chess engine becomes only a "player of the NNUE-file", that begs the question: wouldn't engines converge, if they would use ONLY the NNUE files, and thus each engine would indeed just be a "player", like a DVD-player reading a disc and outputting the result to a screen?
Same for Texel-tuning and CLOP-tuning. I've been asking myself the same question. The author of ICE says on his website somewhere that "ICE is still a CLOP-free zone" (
http://www.fam-petzke.de/cp_ice_en.shtml). I can understand this sentiment, because in the past, the evaluation was a MASSIVE part of the personality of an engine. HIARCS was noted for this. It had a huge evaluation for its time (and thus was very slow compared to other engines), but people really liked its playing style.
You could take three engines: one written in C, another in C++, and the third in Rust. Assuming they implement the same techniques (magic bit-boards, same search and pruning techniques), then they'd turn out the same. (I am also assuming that implementation and compiler efficiency are about equal, giving the engines similar speed on the same computer.) In that case, the evaluation would be the main differentiating part of each engine.
If you then replace the evaluation with a NNUE-net, the engines would turn out to be almost the same.
Even if you would use Texel or CLOP tuning on each engine, the evaluations would converge; most engines implement a basic set of evaluations (material count, PSQT, mobility...) and tuning those values with the same algorithm would therefore make the engines more alike.
Now the NNUE can be disabled or enabled. Maybe it would even be worthwhile for an engine to have two evaluations: one without tuning, for maximum personality, and one with tuning for maximum playing strength. My old chess computer from the 80's uses this approach already: it has four playing styles. "default", for the strongest play; "positional" (defensive play), "aggressive" (attacking play) and "desperate" (where it actually often makes unsound moves and sacrifices in the "I hope my opponent doesn't see the refutation" sort of way).