#Search NN

19 messages · Page 1 of 1 (latest)

plush lichen
#

The idea here is really simple: what if we fine-tune and integrate a neural network for search similar to the evaluation networks that could be trained on a plethora of different kinds of positions (simple endgames, basic opening lines, complicated middlegames, compositions) to adjust the search tree to the needs of varying different types of positions?

The crux of this idea is not just that neural networks are cool (although they are). I believe that, currently, the biggest setback for chess engine strength is that they have incredibly static search algorithms. Now, that does not mean their searches aren’t fantastic. It’s just that, unlike for, let’s say a strong grandmaster, engines think about searching on the chessboard in a way that is much more universal than humans.

This can lead to some notorious “stockfish doesn’t understand this position!!!!” scenarios. Those sporadic fortress misunderstandings, search horizon blunders, missed sacrifices, positional mistakes etc, are primarily caused by the search heuristics (occasionally evaluation functions) of the engine failing to account for a new corner case situation that rarely happens in its training or hasn’t been properly accounted for by our monkey brain search algorithm.

As I see it, it is virtually impossible to address these incredibly nuanced edge cases without oversimplifying the conditions for their existence and corrupting the search of the "would-be" typical scenarios elsewhere. That’s why I think the best option for addressing these edge cases is to create a neural network that can naturally create an understanding of what positions can be considered more fortress-like and what positions deserve a more brute-force approach. I expect that incorporating this neural network for search will probably take a toll on NPS, but if meaningful lines are searched more often, it might be worth it.

Feedback is appreciated! weirdge (this had to be shortened due to nonnitro limit lol)

autumn lily
#

this reads like you have very little idea of how search in a/b engines actually works

plush lichen
#

apologize if i sound too declarative.

#

I'd hope you'd give it a little more merit than just "how it reads"

autumn lily
#

well I chose the phrasing to give you the benefit of the doubt

#

policy nets of various types in a/b have been tried multiple times, with no workable results so far

#

it's the justification I'm talking about, like the "corner case situation that rarely happens in its training" for an algorithm that isn't "trained" on positions

#

(bonus points because a network would be)

plush lichen
#

Maybe i word it too layman. All I'm trying to say is neural networks would understand the values involved in search in more nuanced ways than simple tuned search parameters like currently

#

stockfish's search is still classical

simple quest
#

give an example of some inputs you would feed this NN to determine (say) RFP margin

#

I assume that's what you mean

plush lichen
#

This is my first post, so please don't expect anything special...

I would make it a deep (3-5 layer) network with a relatively small amount of parameters (simple representation of the board and maybe some other data like the relative player's time), and output many constants that can fill the tuned values littered throughout the search.

#

so comparatively more quantitative than the evaluation NNUE

simple quest
#

deep (3-5 layer) network
likely a mistake because it cannot be done incrementally; in chess it is more common (and better) to do a single hidden layer that is very fat

simple representation of the board and maybe some other data like the relative player's time
time is probably not the best idea, especially in the cases of go infinite which will break the search
I was more asking what parameters of say, the node state you would input, to sort of show the "nuance" because currently many of the margins in sf are indeed scaled with node state parameters already, but in simple/linear ways

#

iirc @thin flicker tried an LMR NN before? how did that go?

#

although feeding in the entire board is a new one

thin flicker
#

Not good, not possible to SPSA tune probably

zinc totem
#

i like the idea of having a network take in a board state and produce search values. but how would you train this network? and next, when someone wants to add a patch to stockfish, it becomes monumentally slower to do so as you will have to retrain the network. or instead you allow every patch to be “classical” and then a final network can be created when mergers are done.