- Can I apply my learning from this article (basically, change the model layout to suit chess, and maybe a way to represent positions) to building an NNUE? Or NNUE is an entirely different specie?
- I learnt that what makes NNUE so good, is how efficient it is to "evaluate a position" after make/unmake moves. However, looking at Koivisto and Ethereal, I didn't see any special handling for evaluation in make/unmake. Is it the small number of layers of the network that helps the eval to be efficiently updated, or there is something else?
- GoLang doesn't have an easy way to use AVX (or SMID) instructions, as your code compiles to an architecture independent instruction set. Does that mean I should not even bother with NNUE, because it is going to be too slow to be useful?
Last, Since I am a beginner, I don't have a test dataset to make sure that what I do is sensible. While I want to use my own data when I am done to train the network, but it will be nice to start with some data just to make it easier to jumpstart.
Thanks for your answers