Verified q-search

Discussion of chess software programming and technical issues.

Moderator: Ras

matthewlai
Posts: 793
Joined: Sun Aug 03, 2014 4:48 am
Location: London, UK

Verified q-search

Post by matthewlai »

Suppose you have a very expensive evaluation function, would it help to have another simpler evaluation function to check for blunders?

There are a few ways this can be implemented. For example, when we would normally call eval and return (quiet position in q-search), how about we first call full width search on that node, with a much simpler eval function (for example, material only), and only return the actual static eval if the simple eval of this node is the same as the score of this "blunder check"? If they are the same, the position would have been verified to be quiet.

This can be used in normal search as well, for move ordering for example.
Disclosure: I work for DeepMind on the AlphaZero project, but everything I say here is personal opinion and does not reflect the views of DeepMind / Alphabet.
tpetzke
Posts: 686
Joined: Thu Mar 03, 2011 4:57 pm
Location: Germany

Re: Verified q-search

Post by tpetzke »

we first call full width search on that node, with a much simpler eval function (for example, material only)
You might want to search for "lazy eval". This uses a reduced eval in nodes where material and some easy to evaluate stuff is likely not able to raise eval above alpha or below beta.

I once used it in iCE but dropped it a while ago. It wasn't really helping.
Thomas...

=======
http://macechess.blogspot.com - iCE Chess Engine
matthewlai
Posts: 793
Joined: Sun Aug 03, 2014 4:48 am
Location: London, UK

Re: Verified q-search

Post by matthewlai »

tpetzke wrote:
we first call full width search on that node, with a much simpler eval function (for example, material only)
You might want to search for "lazy eval". This uses a reduced eval in nodes where material and some easy to evaluate stuff is likely not able to raise eval above alpha or below beta.

I once used it in iCE but dropped it a while ago. It wasn't really helping.
I am familiar with lazy eval. This is totally different.
Disclosure: I work for DeepMind on the AlphaZero project, but everything I say here is personal opinion and does not reflect the views of DeepMind / Alphabet.
User avatar
Eelco de Groot
Posts: 4697
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Verified q-search

Post by Eelco de Groot »

Even with a very expensive eval function, calling search with the same eval or even a simpler eval is always more expensive than just returning the eval. So if you are still calling search to verify the simple eval, you are not going to gain much. Unless like Thomas is saying, you can just return a lazy eval without doing anything else. But you can not use the lazy eval as a real static eval for later purposes like LMR, and if alpha changes, your lazy eval is more quickly out of date than a real static eval. So I always felt it is better to have full static eval. It is important in quiescence search too, because without a real static eval you can not reliably stand pat. It is counterintuitive, because you are in the middle of a tactical exchange here, so the side that is down in material will not likely stand pat so why does it need the expensive eval? But things are not as simple as that, because the positional evaluation, positional compensation, may still mean that the side with a material deficit can stand pat. There seems to be no easy way to only do a full static eval if the position has quieted down enough.
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
cdani
Posts: 2204
Joined: Sat Jan 18, 2014 10:24 am
Location: Andorra

Re: Verified q-search

Post by cdani »

As you have a really heavy eval function, may be you can try really different things as you say. I like the idea about create a type of extended quiescence or SEE that resolves most tactical shots quickly to decide to which moves you wil apply your heavy eval. This extended quiescence maybe can also have a more standard evaluation that includes some positional parameters to help to obtain better move ordering, and probably his own independent hash.
User avatar
hgm
Posts: 28461
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Verified q-search

Post by hgm »

Eelco de Groot wrote:Even with a very expensive eval function, calling search with the same eval or even a simpler eval is always more expensive than just returning the eval.
I would not be so sure of that. I understood his engine uses a neural network for evaluation.
jdart
Posts: 4423
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Verified q-search

Post by jdart »

If you have a quiet position then your blunder check should very rarely find a blunder. If a tactical shot exists it would have to be one that involved an initial quiet move, since quiet positions (end of the qsearch) do not have captures or promotions available.

I think something like your idea is already used higher in the search tree - razoring and static futility pruning cut off nodes that look very bad or very good, before the qsearch is hit. But the whole idea of qsearch is to get to a position that can be statically evaluated.

--Jon