Without the null move observation

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
hgm
Posts: 27789
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

Desperado wrote:if(standpat>=beta) return(standpat)

There it is, the NMO.
That says absolutely nothing about whether the standpat is an exact score or a lower bound. The beta cutoff would be allowed on both. And it would return a lower bound not based on the bound type of standpat, but based on the fact there are other, non-searched moves that could be better.

If you want to demonstrate that the stand-pat score is a bound, you would have to show that it can NOT be returned in a PV or fail-low node. Good luck!
User avatar
hgm
Posts: 27789
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

Sven Schüle wrote:CPW supports more what Michael wrote, and I have the same opinion.
Well, so you are all wrong then...

There are plenty of games where the null-move observation is not valid, and in fact a ridiculous proposition. (At least, if you don't want to erode its meaning to the completely trivial "this is just one possibility out of many moves, so one of the others is statistically likely to be better", which is not special to null move, but would be valid for any arbitrary move choice.) Yet engines for these games do exist, do stand pat at the leaves, and in fact play quite well.

It is so obvious that it isn't even worth discussing about.
User avatar
Desperado
Posts: 879
Joined: Mon Dec 15, 2008 11:45 am

Re: Without the null move observation

Post by Desperado »

bob wrote: Sorry, that is NOT null-move. ..
Well, a "null-move" is what it is. A move that passes the right to move,
without changing other attributes of the position.
There is no further criteria for a move to be defined as nullmove.
bob wrote:
...The null-move-observation, as defined by Beal, was simply "If one side makes two consecutive moves without an intervening move by the opponent, and he can not produce a significant advantage by doing so, then his position is very bad, or, in our parlance, the side playing the null have a very strong position.

In the above, there is no "second consecutive move" so there is no "null-move-observation criterion that has been satisfied. You have to do a null-move and then let the opponent move again, else it is not a valid "null-move search."

...
_For me_, the null move observation is, that there is a better move to
be expected than the nullmove. Nothing more nothing less. Like:

doNullmove()
value = -blackBoxValue()
undoNullmove()

"How" the value will be produced, by search or evaluation, isnt the matter of the assumption,
that at least one real move will produce a better result.

The only matter is to get a reasonable value for the nullmove.
Then you can check, based on the nullmove observation, and as logical
consequence of its definition, that a value resulting from a nullmove
and above beta is probably a fail high node.

IMHO, Michael
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Without the null move observation

Post by Sven »

bob wrote:
Desperado wrote:Well, if you really talk of the "null-move-observation", there is
a clear NO. The null-move-observation is the fundamental
base of every quiescence search in todays standard search techniques.

In context to pruning and reduction techniques it may be possible to
reallocate the gain to other known algorithms like mentioned by Matthew
or like Bob said, an improved LM-technique may do the job.

Michael
I don't agree. The null-move observation is, simply "If I pass, and let my opponent make two moves in succession, and he STILL can not come up with a winning advantage, then his position is very bad, and mine is very good."

I don't see that concept in q-search. That's not the same as either standing pat, or trying a check or capture.
What you are talking about is null move pruning (null move search, null move heuristic). The term "null move observation" seems to be a more general term, forming the base for null move pruning as well as other techniques, e.g. Fail high reductions (see bottom of page 2 and also the next page):
Rainer Feldmann (1996) wrote:Later, Beal (1989) again looked at his idea of the Null Move Heuristic (NMH). NMH is based on the observation that in many games and game like applications for the side to move there is almost always a better alternative (move) than doing nothing (the null move). We call this the Null Move Observation (NMO).
[...]
In this paper we describe a new selective search heuristic, called Fail High Reductions (FHR).
[...]
Like the NMH, FHR is based on the NMO.
That proves my statement about NMO being a more general term, even though NMP was first and the term NMO came up later. CPW gives an overview of techniques based on NMO. I hope nobody is going to rewrite all those definitions now ...

Clearly the stand-pat principle in QS is based on the same NMO, or are you going to redefine the term "stand-pat in QS" to mean something substantially different from "in QS, assuming no zugzwang nor in-check, the static eval can be used as a lower bound since there is almost always at least one quiet move which is better than doing nothing - knowing that this can fail sometimes".

What else are we all doing for years?

Wondering why this must be explained to you ;-)

Sven
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Without the null move observation

Post by Sven »

Desperado wrote:
bob wrote: Sorry, that is NOT null-move. ..
Well, a "null-move" is what it is. A move that passes the right to move,
without changing other attributes of the position.
There is no further criteria for a move to be defined as nullmove.
bob wrote:
...The null-move-observation, as defined by Beal, was simply "If one side makes two consecutive moves without an intervening move by the opponent, and he can not produce a significant advantage by doing so, then his position is very bad, or, in our parlance, the side playing the null have a very strong position.

In the above, there is no "second consecutive move" so there is no "null-move-observation criterion that has been satisfied. You have to do a null-move and then let the opponent move again, else it is not a valid "null-move search."

...
_For me_, the null move observation is, that there is a better move to
be expected than the nullmove. Nothing more nothing less. Like:

doNullmove()
value = -blackBoxValue()
undoNullmove()

"How" the value will be produced, by search or evaluation, isnt the matter of the assumption,
that at least one real move will produce a better result.

The only matter is to get a reasonable value for the nullmove.
Then you can check, based on the nullmove observation, and as logical
consequence of its definition, that a value resulting from a nullmove
and above beta is probably a fail high node.

IMHO, Michael
+1 (see also my reply to Bob)
Sven
User avatar
Desperado
Posts: 879
Joined: Mon Dec 15, 2008 11:45 am

Re: Without the null move observation

Post by Desperado »

hgm wrote:
Sven Schüle wrote:CPW supports more what Michael wrote, and I have the same opinion.
Well, so you are all wrong then...

There are plenty of games where the null-move observation is not valid, and in fact a ridiculous proposition. (At least, if you don't want to erode its meaning to the completely trivial "this is just one possibility out of many moves, so one of the others is statistically likely to be better", which is not special to null move, but would be valid for any arbitrary move choice.) Yet engines for these games do exist, do stand pat at the leaves, and in fact play quite well.

It is so obvious that it isn't even worth discussing about.
Hi, HG,

well, maybe i should rename my variable "standPat" into nullScore,
because there are other definitions for this state out there. I simply
dont know it.

But i know for sure, that my branch termination scheme is based
on the above given definitions (reply to Bob). And in _that_ context,
_if_ someone agrees with these definitions, the "standpat"
score (nullScore), is to be an expected lower bound.

Changing definitions, will of course change viewpoints.

cheers, Michael
Uri Blass
Posts: 10269
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Without the null move observation

Post by Uri Blass »

Desperado wrote:Well, if you really talk of the "null-move-observation", there is
a clear NO. The null-move-observation is the fundamental
base of every quiescence search in todays standard search techniques.

In context to pruning and reduction techniques it may be possible to
reallocate the gain to other known algorithms like mentioned by Matthew
or like Bob said, an improved LM-technique may do the job.

Michael
I disagree.
The qsearch is not based on the observation that you usually have something better than null move but on the observation that non captures usually do not have a significant effect on the evaluation.

I expect similiar qsearch to work also in games when there is often nothing better than null move but you have a set of moves that gives a big change in the evaluation that you try them in the qsearch.

I also do not believe that you need normal qsearch for 2800 engines and using some good static exchange evaluator instead of the qsearch may be enough to get a 2800 engine that is clearly weaker than the engines of today.

Uri
User avatar
hgm
Posts: 27789
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

Sven Schüle wrote:[..., or are you going to redefine the term "stand-pat in QS" to mean something substantially different from "in QS, assuming no zugzwang nor in-check, the static eval can be used as a lower bound since there is almost always at least one quiet move which is better than doing nothing - knowing that this can fail sometimes".
That is not a 'redefinition', because stand pat was never defined like you mention above

Stand pat = do nothing

Nothing more, nothing less. And it works when doing something will not have a much different effect than doing nothing on the evaluation. In which case the position is known as 'quiet'. Hence stand-pat will work only in quiet positions, and you need a QS to search those first.
kbhearn
Posts: 411
Joined: Thu Dec 30, 2010 4:48 am

Re: Without the null move observation

Post by kbhearn »

While the null move observation is one way you can justify standing pat in QS, an alternative way to look at it is 'this is the best guess i can afford to make as to the quality of this position unless i have a good capture, if it's worse i'll find out in further iterations when i search deeper'. I don't think you need to remove QS to 'remove the null move observation', just change your justification for it to lack of resources.
User avatar
hgm
Posts: 27789
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

kbhearn wrote: 'this is the best guess i can afford to make as to the quality of this position
Exactly! In fact, in a game where the null-move observation holds, like Chess, using the current board evaluation as score for the node is sub-optimal, because it is needlessly pessimistic. Many programs therefore add a side-to-move bonus to remove the harmful bias caused by the validity of the null-move observation there.

Of course there are games where zugzwang is the rule, rather than the exception, and their engines stand pat as happily as any other...