Why does Stockfish NNUE flatline? Flatline - to produce a flat evaluation curve.
As I understand engine chess, engines &quot;flatline&quot; in fortress positions. In these positions there are a lot of effectively-equivalent positions that return the same static eval. For example, in a KR vs KB endgame, almost all positions are the same, so it's not surprising that the eval flatlines.
NNUE however is different, because it's a neural network. It's hard for me to imagine that all the computations that's needed in a NN can yield exactly the same number for many different positions. That's why for example Leela Chess Zero never flatlines. How, then, can Stockfish NNUE flatline?
Example of a game where Stockfish NNUE flatlines: first from move 24 to 32 at 0.13, and then from move 33 to 38 at 0.05.
It seems this is happening because for endgame positions, Stockfish uses its handcrafted eval function. This is why Stockfish still has a contempt setting, since it's unclear how to implement contempt with NNUE eval, but contempt is still applicable whenever Stockfish uses its handcrafted eval. The handcrafted eval can flatline, therefore Stockfish can flatline as well.