Centipawns and Millipawns

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Centipawns and Millipawns

Post by rjgibert »

I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Centipawns and Millipawns

Post by michiguel »

rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
You can argue that even centipawns is too coarse. I used 1/256 th of a pawn. If if was not because of performance, the optimum will be to used floating point numbers. The argument is not necessarily related to the final score, but to all the internal calculations. As in engineering or experimental science, you do not want to carry errors all over the calculations. You round at the end.

In addition, what it important is not the absolute score, but the difference of scores between two positions. You can have a big error in both positions, but you could be much more accurate to calculate the difference of both scores.

If I have to design my engine again, I may probably do it in millipawns (but I am lazy to do it now). IIRC, Diep uses millipawns.

Miguel
rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Re: Centipawns and Millipawns

Post by rjgibert »

michiguel wrote:
rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
You can argue that even centipawns is too coarse. I used 1/256 th of a pawn. If if was not because of performance, the optimum will be to used floating point numbers. The argument is not necessarily related to the final score, but to all the internal calculations. As in engineering or experimental science, you do not want to carry errors all over the calculations. You round at the end.
Okay, but chess programmers don't "round at the end." Why? Failing high or low, because of a difference of a centipawn or millipawn? What sense is there to that? Why isn't that just wasting time and effort?
In addition, what it important is not the absolute score, but the difference of scores between two positions. You can have a big error in both positions, but you could be much more accurate to calculate the difference of both scores.

If I have to design my engine again, I may probably do it in millipawns (but I am lazy to do it now). IIRC, Diep uses millipawns.

Miguel
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Centipawns and Millipawns

Post by michiguel »

rjgibert wrote:
michiguel wrote:
rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
You can argue that even centipawns is too coarse. I used 1/256 th of a pawn. If if was not because of performance, the optimum will be to used floating point numbers. The argument is not necessarily related to the final score, but to all the internal calculations. As in engineering or experimental science, you do not want to carry errors all over the calculations. You round at the end.
Okay, but chess programmers don't "round at the end." Why? Failing high or low, because of a difference of a centipawn or millipawn? What sense is there to that? Why isn't that just wasting time and effort?
In addition, what it important is not the absolute score, but the difference of scores between two positions. You can have a big error in both positions, but you could be much more accurate to calculate the difference of both scores.

If I have to design my engine again, I may probably do it in millipawns (but I am lazy to do it now). IIRC, Diep uses millipawns.

Miguel
Some do round at the end. At least, this has been discussed in order to reduce nodes. However, at that point, rounding is extra code (no much though). I round to cp in the output, but not in the alpha-beta comparison.

Miguel
Michael Sherwin
Posts: 3196
Joined: Fri May 26, 2006 3:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: Centipawns and Millipawns

Post by Michael Sherwin »

rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
centipawn is more convenient when combining it with various eval parameters that more easily scale to a range between 0 to a hundred. decipawn would make for slower code.
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through
Uri Blass
Posts: 10282
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Centipawns and Millipawns

Post by Uri Blass »

rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
1)I think that most programmers did not really test it.

2)The error in evaluation may be more than 0.1 pawn but the error in the difference between evaluation of different moves is smaller.

I suspect that the program is going to play inferior positional moves if you use 0.1 pawns units

I think that
"position X appears to be better than position Y even though I might quantify them as having the same evaluation." is not something that programs have in their evaluation so they need to have 0.01 units.

Uri
rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Re: Centipawns and Millipawns

Post by rjgibert »

Uri Blass wrote:
rjgibert wrote:I can't imagine what a centipawn means. What is the reason for using such a fine grained evaluation unit? Is there really any benefit? I understand mate-in-N evaluations and maybe what a decipawn means, but that is as far as I can go with my 2234 rating.

The only other thing I can relate to is a judgement call that position X appears to be better than position Y even though I might quantify them as having the same evaluation.

So my question is, do centipawns evaluations really help chess engines and why? What would you lose by using say 1/20th of a pawn as the finest grain for your evaluations as opposed to the finer grained evaluations? It appears to me that chess programmers are doing something akin to measuring something to the nearest hundredths, while having a standard deviation of as much as a quarter of a pawn.

In engineering, 1.234 +/- 0.1 is just silly. Why isn't it just as silly in computer chess?

And then there even are engines that use millipawns. What's that about?
1)I think that most programmers did not really test it.

2)The error in evaluation may be more than 0.1 pawn but the error in the difference between evaluation of different moves is smaller.

I suspect that the program is going to play inferior positional moves if you use 0.1 pawns units

I think that
"position X appears to be better than position Y even though I might quantify them as having the same evaluation." is not something that programs have in their evaluation so they need to have 0.01 units.

Uri
This argument is why I suggested 1/20th of a pawn and perhaps 1/32nd of pawn is easier for a program, but 1/100th of a pawn is stretching this argument pretty thin. There must be some better reason for this.

One thing I do remember reading somewhere is that a coarser eval leads to a faster search. This makes sense, since you are not failing low due some inconsequential difference in eval.

I would think that a faster search would not be something to relinquish without a strong reason.
Uri Blass
Posts: 10282
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Centipawns and Millipawns

Post by Uri Blass »

I think that it may be better not to have constant difference.

In other words it may be better to start with 0.01 accuracy evaluation and when the depth becomes bigger to increase it to 0.02 accuracy evaluation or to 0.05 accuracy evaluation.

In this case the problem of slow search will not be a problem because the first plies are fast and you may get better positional moves from the beginning that you may never get if you start with 0.05 accuracy evaluation.

The only way to know what is better is by testing and Bob can do it with his cluster.

Uri
rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Re: Centipawns and Millipawns

Post by rjgibert »

Uri Blass wrote:I think that it may be better not to have constant difference.

In other words it may be better to start with 0.01 accuracy evaluation and when the depth becomes bigger to increase it to 0.02 accuracy evaluation or to 0.05 accuracy evaluation.

In this case the problem of slow search will not be a problem because the first plies are fast and you may get better positional moves from the beginning that you may never get if you start with 0.05 accuracy evaluation.

The only way to know what is better is by testing and Bob can do it with his cluster.

Uri
BTW, the following thread is related to this:

http://www.talkchess.com/forum/viewtopic.php?t=29471

You think, you might lose the ability to get better positional moves, but I think all that you will lose is random eval noise and gain a faster/deeper searcher.
Sergei Markoff

Re: Centipawns and Millipawns

Post by Sergei Markoff »

Since eval function has logistic nature, the error is not constant.
Centipawns is ok to store eval in 2-byte machine word and also suitable for human players, I think it's the true source of such a quantification :) There are a lot of eval components which is evaluated in 1, 2, 3 centipawns (mobility components, tempo and so on). Statistical research shows that we can't get a really significant improvement using millipawns.
More coarse-grained eval is may be a good idea for MTD but in current framework it only can complicate a lot of thing which is better not to complicate.