Side to Move Bonus---does it help?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Jan Brouwer
Posts: 201
Joined: Thu Mar 22, 2007 7:12 pm
Location: Netherlands

Re: Side to Move Bonus---does it help?

Post by Jan Brouwer »

diep wrote: Thing is that carried out correctly, a sense of activity (that's how Johan de Koning calls mobility) by means of a side to move bonus is not superior nor a good addition to well carried out mobility.
Vincent
I assume you talk about a symmetric mobility/activity here (so not using side to move other than for the sign)?
jwes
Posts: 778
Joined: Sat Jul 01, 2006 7:11 am

Re: Side to Move Bonus---does it help?

Post by jwes »

I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
Laszlo Gaspar
Posts: 64
Joined: Thu Mar 09, 2006 11:07 am
Location: Budapest, Hungary

Re: Side to Move Bonus---does it help?

Post by Laszlo Gaspar »

Hi all,

In my opinion the side_to_move bonus can also be less than zero. The reason is the stand pat rule which is applied at leaf nodes. It says: "I consider this position quiet because I don't have any good capture". But what if the opponent has threats hanging. Most of the programs (as mine :wink:) are blind to such cases and terminates early. This way they introduce errors and to have the right to move in the evaluation is not advantegous but hurts. So I think it depends on the implementation of the quiescent search.
A human is just very good at recognizing a quiet position unlike chess programs.
Regards,
László
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Side to Move Bonus---does it help?

Post by bob »

jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
I'm not sure you are measuring "side to move". You take positions where X is on move. If you search it with X on move, and then with Y on move, I would expect it to be much different for Y on move, since Y just got to play two consecutive moves without an intervening opponent reply. That would seem to me to bias the result in that direction. By picking positions like this from a real game, which might have only 60 moves, it would be very likely that you pick positions where side to move is critical, whereas deep in the tree, these errors have a much tougher time influencing the root move and/or score...
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: Side to Move Bonus---does it help?

Post by Eelco de Groot »

jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
It is interesting. Maybe as a supplement to what Bob is saying, you could run the same kind of test with Crafty only doing a nullmove search in the same positions that you let continue for thirty seconds and compare it with the outcome of a normal search for the side to move in the game run for thirty seconds. Would that not be the same test? 2.44 pawns seems a lot but what Robert says it would seem that it is the effect of side to move that is enlarged by a searchtree of approximately thirty seconds. It would imply that having the right to move twice in a row in a game is almost enough for making up the difference of a minor piece. Maybe it also means that deep nullmove searches should be treated different from shallow nullmove searches. I have never really tested anything like this, but if score differences grow quickly enough it would seem to mean that -a lot? - more moves get rejected because of a bad nullmove result on deeper searches. One may question if nullmove is always sound if nullmove enlarges the side to move advantage this much as your experiment seems to indicate it does, and this difference is proportional to searchdepth. (Like Robert say this side to move advantage is different from the side to move bonus, which has to be an average and only makes up for differences in evaluation in a one ply search, in my opinion).

I already do not trust deep nulmove searches much because they would in theory become more unrealistic with greater depth, but the difficulty is that if you replace it with other forward pruning techniques these have other drawbacks.

One would like to know what exactly the thoughts of programmers like Richard Lang and Ed Schröder are on this matter :) Because they are from the days before nullmove :)

Regards, Eelco
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
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: Side to Move Bonus---does it help?

Post by Eelco de Groot »

Eelco de Groot wrote: I have never really tested anything like this, but if score differences grow quickly enough it would seem to mean that -a lot? - more moves get rejected because of a bad nullmove result on deeper searches.
Excuse me, this would be incorrect, if the differences are enlarged, more moves will exceed beta, less moves will be rejected.
The second "repair move" as I like to call it becomes more effective so deficiencies in the first move will tend to be covered up by a deeper null move search. Deeper nullmove searches should probably be required to go higher above beta than shallow nullmove searches, to make up for this. I had tested something like this, nullmove should exceed beta by a fixed amount, in the modified Blueberry Togas but not yet some correction that is linear or proportionate with nullmove search depth.

Eelco
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
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Side to Move Bonus---does it help?

Post by bob »

Eelco de Groot wrote:
jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
It is interesting. Maybe as a supplement to what Bob is saying, you could run the same kind of test with Crafty only doing a nullmove search in the same positions that you let continue for thirty seconds and compare it with the outcome of a normal search for the side to move in the game run for thirty seconds. Would that not be the same test? 2.44 pawns seems a lot but what Robert says it would seem that it is the effect of side to move that is enlarged by a searchtree of approximately thirty seconds. It would imply that having the right to move twice in a row in a game is almost enough for making up the difference of a minor piece. Maybe it also means that deep nullmove searches should be treated different from shallow nullmove searches. I have never really tested anything like this, but if score differences grow quickly enough it would seem to mean that -a lot? - more moves get rejected because of a bad nullmove result on deeper searches. One may question if nullmove is always sound if nullmove enlarges the side to move advantage this much as your experiment seems to indicate it does, and this difference is proportional to searchdepth. (Like Robert say this side to move advantage is different from the side to move bonus, which has to be an average and only makes up for differences in evaluation in a one ply search, in my opinion).

I already do not trust deep nulmove searches much because they would in theory become more unrealistic with greater depth, but the difficulty is that if you replace it with other forward pruning techniques these have other drawbacks.

One would like to know what exactly the thoughts of programmers like Richard Lang and Ed Schröder are on this matter :) Because they are from the days before nullmove :)

Regards, Eelco
I'd almost believe that having the right to move twice at a point of my choosing _is_ worth a minor piece. You can not not move your queen to any square that can be attacked in one move, because I will attack and capture it with my two moves and the game will likely be over. Ditto for rooks or minors, where you can't put a minor on any unprotected square where it can be attacked in one move or it will be lost.

We used to play a variation of chess based on this idea at our chess club years ago and this really is a devastating advantage to have. But it isn't the same as the "side to move bonus" in any shape or form. The side to move bonus still has a full material count, a full positional score, and does not let one side move twice. It is just a "it is my move, so I can improve my position by some small amount, normally, so I will adjust fhe score to compensate for that."
Uri Blass
Posts: 10268
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Side to Move Bonus---does it help?

Post by Uri Blass »

jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
I do not think that it seems bizarre.
Chess is a tactical game and in many position you threat to win material.

The actual value of the side to move is simply not relevant because there are non quiet positions that you cannot get as leaf position

1.e4 e5 2.Nf3 Qh4

The value of the side to move here is a queen but you simply never evaluate it as leaf position when white to move.

Uri
jwes
Posts: 778
Joined: Sat Jul 01, 2006 7:11 am

Re: Side to Move Bonus---does it help?

Post by jwes »

Eelco de Groot wrote:
jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
It is interesting. Maybe as a supplement to what Bob is saying, you could run the same kind of test with Crafty only doing a nullmove search in the same positions that you let continue for thirty seconds and compare it with the outcome of a normal search for the side to move in the game run for thirty seconds. Would that not be the same test? 2.44 pawns seems a lot but what Robert says it would seem that it is the effect of side to move that is enlarged by a searchtree of approximately thirty seconds. It would imply that having the right to move twice in a row in a game is almost enough for making up the difference of a minor piece. Maybe it also means that deep nullmove searches should be treated different from shallow nullmove searches. I have never really tested anything like this, but if score differences grow quickly enough it would seem to mean that -a lot? - more moves get rejected because of a bad nullmove result on deeper searches. One may question if nullmove is always sound if nullmove enlarges the side to move advantage this much as your experiment seems to indicate it does, and this difference is proportional to searchdepth. (Like Robert say this side to move advantage is different from the side to move bonus, which has to be an average and only makes up for differences in evaluation in a one ply search, in my opinion).

I already do not trust deep nulmove searches much because they would in theory become more unrealistic with greater depth, but the difficulty is that if you replace it with other forward pruning techniques these have other drawbacks.

One would like to know what exactly the thoughts of programmers like Richard Lang and Ed Schröder are on this matter :) Because they are from the days before nullmove :)

Regards, Eelco
A few notes:
The actual difference is twice the side to move bonus, so for random positions when Evaluate is called, the difference is almost a rook.
I ran two more tests:
1. Searched the first test set for 1 second instead of 30 seconds. The side to move bonus dropped slightly to 2.29 pawns.
2. Searched positions taken from grandmaster games rather than after a short search. The side to move bonus was 1.09 pawns.
mjlef
Posts: 1494
Joined: Thu Mar 30, 2006 2:08 pm

Re: Side to Move Bonus---does it help?

Post by mjlef »

jwes wrote:
Eelco de Groot wrote:
jwes wrote:I ran a small experiment. I hacked crafty to save the position at the call to Evaluate once for every million calls. I then analyzed a file of grandmaster games at a low depth, and got roughly one position per game. I then analyzed these positions for 30 seconds with white to move and with black to move. I removed positions with either side in check and positions where a mate was found. I calculated the side to move bonus that would make the evaluations equal and it came out 2.44 pawns. This seemed bizarre but when I looked at a number of positions, there was that much difference in scores. I then reran the experiment taking only positions where the score was between alpha and beta and there are no more good captures. This time the side to move bonus was .93 pawns. I am sometimes amazed that alpha-beta works at all for chess. I would be interested in any explanations on how no or small side to move bonuses work when the actual value of the move is much higher.
It is interesting. Maybe as a supplement to what Bob is saying, you could run the same kind of test with Crafty only doing a nullmove search in the same positions that you let continue for thirty seconds and compare it with the outcome of a normal search for the side to move in the game run for thirty seconds. Would that not be the same test? 2.44 pawns seems a lot but what Robert says it would seem that it is the effect of side to move that is enlarged by a searchtree of approximately thirty seconds. It would imply that having the right to move twice in a row in a game is almost enough for making up the difference of a minor piece. Maybe it also means that deep nullmove searches should be treated different from shallow nullmove searches. I have never really tested anything like this, but if score differences grow quickly enough it would seem to mean that -a lot? - more moves get rejected because of a bad nullmove result on deeper searches. One may question if nullmove is always sound if nullmove enlarges the side to move advantage this much as your experiment seems to indicate it does, and this difference is proportional to searchdepth. (Like Robert say this side to move advantage is different from the side to move bonus, which has to be an average and only makes up for differences in evaluation in a one ply search, in my opinion).

I already do not trust deep nulmove searches much because they would in theory become more unrealistic with greater depth, but the difficulty is that if you replace it with other forward pruning techniques these have other drawbacks.

One would like to know what exactly the thoughts of programmers like Richard Lang and Ed Schröder are on this matter :) Because they are from the days before nullmove :)

Regards, Eelco
A few notes:
The actual difference is twice the side to move bonus, so for random positions when Evaluate is called, the difference is almost a rook.
I ran two more tests:
1. Searched the first test set for 1 second instead of 30 seconds. The side to move bonus dropped slightly to 2.29 pawns.
2. Searched positions taken from grandmaster games rather than after a short search. The side to move bonus was 1.09 pawns.
could these values be used to make a more agressive null search? If a double move is not worth this amount, might it be safe to prune?