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?
Centipawns and Millipawns
Moderators: hgm, Rebel, chrisw
-
- Posts: 6401
- Joined: Thu Mar 09, 2006 8:30 pm
- Location: Chicago, Illinois, USA
Re: Centipawns and Millipawns
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.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?
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
-
- Posts: 317
- Joined: Mon Jun 26, 2006 9:44 am
Re: Centipawns and Millipawns
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?michiguel wrote: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.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?
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
-
- Posts: 6401
- Joined: Thu Mar 09, 2006 8:30 pm
- Location: Chicago, Illinois, USA
Re: Centipawns and Millipawns
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.rjgibert wrote: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?michiguel wrote: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.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?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
Miguel
-
- Posts: 3196
- Joined: Fri May 26, 2006 3:00 am
- Location: WY, USA
- Full name: Michael Sherwin
Re: Centipawns and Millipawns
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.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?
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
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
-
- Posts: 10282
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: Centipawns and Millipawns
1)I think that most programmers did not really test it.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?
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
-
- Posts: 317
- Joined: Mon Jun 26, 2006 9:44 am
Re: Centipawns and Millipawns
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.Uri Blass wrote:1)I think that most programmers did not really test it.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?
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
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.
-
- Posts: 10282
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: Centipawns and Millipawns
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
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
-
- Posts: 317
- Joined: Mon Jun 26, 2006 9:44 am
Re: Centipawns and Millipawns
BTW, the following thread is related to this: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
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.
Re: Centipawns and Millipawns
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.
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.