Hard pruning history

Code, algorithms, languages, construction...
mcostalba
Posts: 91
Joined: Thu Jun 10, 2010 11:45 pm
Real Name: Marco Costalba

Re: Hard pruning history

Post by mcostalba » Mon Dec 27, 2010 10:20 am

thorstenczub wrote: when null move was established, this asymmetric search was outsearched by symmetric null move programs
Perhaps could be interesting to note that null move is not symmetric, is applied only to the nodes above beta (although there are variations here, some engine uses a margin subtracted from beta as threshold, so that if a node is below beta but not by much is still eligible for a null search).

tom
Posts: 8
Joined: Sat Jul 17, 2010 8:08 am
Real Name: Tom King

Re: Hard pruning history

Post by tom » Tue Dec 28, 2010 8:14 pm

mcostalba wrote:
thorstenczub wrote: when null move was established, this asymmetric search was outsearched by symmetric null move programs
Perhaps could be interesting to note that null move is not symmetric, is applied only to the nodes above beta (although there are variations here, some engine uses a margin subtracted from beta as threshold, so that if a node is below beta but not by much is still eligible for a null search).
Hi,

Any ideas on how good this idea (only nullmove if score>=beta) is, in Stockfish? My bet is that its value is very low, perhaps just a few ELO. I'd be interested to hear any hard figures, e.g. "it was worth 20 elo for me", "it was worth nothing for me" etc.

It's not something I've ever tested seriously. I do null move whatever the current score is, and have always felt that was best.

Regards,
Tom

mcostalba
Posts: 91
Joined: Thu Jun 10, 2010 11:45 pm
Real Name: Marco Costalba

Re: Hard pruning history

Post by mcostalba » Wed Dec 29, 2010 8:02 am

tom wrote: Any ideas on how good this idea (only nullmove if score>=beta) is, in Stockfish?
In Glaurung null search was already implemented (in the 'added margin' version), we have never tried to remove it and see how much it is worth. First because we had something better to do with CPU time, second because has not a lot of sense IMHO: after removing the null search we should compensate with modifying other parameters like futility or LMR, in other words this kind of features are deeply integrated in the engine and simply cannot be evaluated alone.

We have removed the 'added margin' only recently: I had tried before but it didn't worked, then, after increasing LMR and futility I retried to use a pure score >= beta condition and it worked (although not by much). This is a perfect example of what I tried to explain above.

Richard Vida
Posts: 50
Joined: Thu Jun 10, 2010 12:48 am

Re: Hard pruning history

Post by Richard Vida » Wed Dec 29, 2010 11:34 am

mcostalba wrote:
tom wrote: Any ideas on how good this idea (only nullmove if score>=beta) is, in Stockfish?
In Glaurung null search was already implemented (in the 'added margin' version), we have never tried to remove it and see how much it is worth. First because we had something better to do with CPU time, second because has not a lot of sense IMHO: after removing the null search we should compensate with modifying other parameters like futility or LMR, in other words this kind of features are deeply integrated in the engine and simply cannot be evaluated alone.

We have removed the 'added margin' only recently: I had tried before but it didn't worked, then, after increasing LMR and futility I retried to use a pure score >= beta condition and it worked (although not by much). This is a perfect example of what I tried to explain above.
A little curiosity: There is a bug in current Critter related to this. My intention was to use margin=0 close to root and gradually raising it deeper in the tree (to a maximum of about 1.5 pawns). I made a mistake and coded it exactly opposite way than intended. After fixing this it made no strength difference at all (within +-5).

mcostalba
Posts: 91
Joined: Thu Jun 10, 2010 11:45 pm
Real Name: Marco Costalba

Re: Hard pruning history

Post by mcostalba » Wed Dec 29, 2010 12:37 pm

Richard Vida wrote:
mcostalba wrote:
tom wrote: Any ideas on how good this idea (only nullmove if score>=beta) is, in Stockfish?
In Glaurung null search was already implemented (in the 'added margin' version), we have never tried to remove it and see how much it is worth. First because we had something better to do with CPU time, second because has not a lot of sense IMHO: after removing the null search we should compensate with modifying other parameters like futility or LMR, in other words this kind of features are deeply integrated in the engine and simply cannot be evaluated alone.

We have removed the 'added margin' only recently: I had tried before but it didn't worked, then, after increasing LMR and futility I retried to use a pure score >= beta condition and it worked (although not by much). This is a perfect example of what I tried to explain above.
A little curiosity: There is a bug in current Critter related to this. My intention was to use margin=0 close to root and gradually raising it deeper in the tree (to a maximum of about 1.5 pawns). I made a mistake and coded it exactly opposite way than intended. After fixing this it made no strength difference at all (within +-5).
Intuitively I would say that is correct as you do now: evaluation is more and more less accurate as you move near the root so you may want to try a null search also on positions below beta when you are at the root, instead near the leaves evaluation becomes more accurate while null search is more and more less rewarding in term of saved time.

Anyhow I found that search parameters (LMR, futility, null search reductions, etc) are very insensible to variations: you need to kick them hard to see a change (good or bad).

Evaluation parameters are instead more fine-tunable.

Sentinel
Posts: 122
Joined: Thu Jun 10, 2010 12:49 am
Real Name: Milos Stanisavljevic

Re: Hard pruning history

Post by Sentinel » Wed Dec 29, 2010 2:35 pm

Richard Vida wrote:A little curiosity: There is a bug in current Critter related to this. My intention was to use margin=0 close to root and gradually raising it deeper in the tree (to a maximum of about 1.5 pawns). I made a mistake and coded it exactly opposite way than intended. After fixing this it made no strength difference at all (within +-5).
I tried all sorts of margins (positive, negative), bigger closer to root, bigger closer to leaves, etc.
I didn't go though to such extremes as you did (150cp), only to like 50 cp, but I didn't detect any measurable difference (all within error margins +/- 4 Elo).

tom
Posts: 8
Joined: Sat Jul 17, 2010 8:08 am
Real Name: Tom King

Re: Hard pruning history

Post by tom » Wed Dec 29, 2010 5:36 pm

mcostalba wrote: Anyhow I found that search parameters (LMR, futility, null search reductions, etc) are very insensible to variations: you need to kick them hard to see a change (good or bad).
Yeah, it's interesting how seemingly significant tweaks (or bugs) in this area have so little effect on strength..

Post Reply