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.
Verified q-search
Moderator: Ras
-
matthewlai
- Posts: 793
- Joined: Sun Aug 03, 2014 4:48 am
- Location: London, UK
Verified q-search
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
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.we first call full width search on that node, with a much simpler eval function (for example, material only)
I once used it in iCE but dropped it a while ago. It wasn't really helping.
-
matthewlai
- Posts: 793
- Joined: Sun Aug 03, 2014 4:48 am
- Location: London, UK
Re: Verified q-search
I am familiar with lazy eval. This is totally different.tpetzke wrote: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.we first call full width search on that node, with a much simpler eval function (for example, material only)
I once used it in iCE but dropped it a while ago. It wasn't really helping.
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.
-
Eelco de Groot
- Posts: 4697
- Joined: Sun Mar 12, 2006 2:40 am
- Full name: Eelco de Groot
Re: Verified q-search
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
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
-
cdani
- Posts: 2204
- Joined: Sat Jan 18, 2014 10:24 am
- Location: Andorra
Re: Verified q-search
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.
Daniel José -
http://www.andscacs.com
-
hgm
- Posts: 28461
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Verified q-search
I would not be so sure of that. I understood his engine uses a neural network for evaluation.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.
-
jdart
- Posts: 4423
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
Re: Verified q-search
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
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