I did some experiments, mostly for fun, that you all may find fun as well.
I made stockfish play 20,000,000 random games to ply 60 at 1ms per move. Each game was made different by always picking a random move from its top 6 pvs.
For each (white) position I read Stockfish's score estimate and recorded it in a table, together with a binary vector representation of the board position.
I then used regression with l1 loss to find the best possible psqts for the given positions. I managed to get an average difference between Stockfish and the simple table evaluation of 1 pawn.
The (normalised) piece values always quickly converged to
Pawn 100, Knight 283, Bishop 323, Rook 481, Queen: 935
The following pictures show the heat map of each table:
Queen and Rook
Bishop and King
Knight and Pawn
I also tried enforcing symmetry, which allowed faster training, though the average loss was the same:
Queen and Rook
Knight and Pawn
Bishop and King
Clearly both of the King tables are somewhat noisy. Even with 20,000,000 games, the king just doesn't wander off to d8/e8 that often.
There are also artefacts coming from the ground truth containing possible future gains, such as the knights being encouraged to go to likely fork positions.
Overall however, the tables seem to have learned some useful things, such at positioning rooks in d1/e1 and promoting pawns.
Do you see any other useful things they have learned or things that are clearly mistakes?
Approximating Stockfish's Evaluation by PSQTs
Moderators: hgm, Rebel, chrisw
-
- Posts: 94
- Joined: Thu Feb 27, 2014 8:19 pm
-
- Posts: 12542
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Approximating Stockfish's Evaluation by PSQTs
I have seen with a heat map tool made by Les Fernandez that the shape of the black and white heat maps are not the same.
Yet you will often see PSQTs that are a single set of values mirrored for the other side. I think this is a mistake.
Yet you will often see PSQTs that are a single set of values mirrored for the other side. I think this is a mistake.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
- Posts: 94
- Joined: Thu Feb 27, 2014 8:19 pm
Re: Approximating Stockfish's Evaluation by PSQTs
Making different maps for black and white would be interesting. I chose this format because it made it easier to plug the tables into sunfish. My experiments also showed that sunfish played slightly stronger with the asymmetric tables.
Do you have a link to the heat maps you ate referencing?
Do you have a link to the heat maps you ate referencing?
-
- Posts: 1600
- Joined: Mon Feb 21, 2011 9:48 am
Re: Approximating Stockfish's Evaluation by PSQTs
Watch this link.
Hay takes you to a chessbasse article and to the author's blog, maybe it still exists.
http://www.talkchess.com/forum/viewtopi ... highlight=
Hay takes you to a chessbasse article and to the author's blog, maybe it still exists.
http://www.talkchess.com/forum/viewtopi ... highlight=
-
- Posts: 94
- Joined: Thu Feb 27, 2014 8:19 pm
Re: Approximating Stockfish's Evaluation by PSQTs
I see, but these are just based on where the piece most often goes, right? Not an indication if whether it goes there by its own will, or because it's forced.
-
- Posts: 12542
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Approximating Stockfish's Evaluation by PSQTs
http://rybkaforum.net/cgi-bin/rybkaforu ... heat%20mapthomasahle wrote:Making different maps for black and white would be interesting. I chose this format because it made it easier to plug the tables into sunfish. My experiments also showed that sunfish played slightly stronger with the asymmetric tables.
Do you have a link to the heat maps you ate referencing?
I have not made the detailed ones in a while. My friend Les just updated the tool set, so I will probably redo a really big pile.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
- Posts: 94
- Joined: Thu Feb 27, 2014 8:19 pm
Re: Approximating Stockfish's Evaluation by PSQTs
These are nice, but am I correct that they are simply based on how often a piece is seen on the particular square, rather than any kind of evaluation? So if a knight very often captured a rook in the corner, the corner would have a high value for the knight. Even though it is not a good position for the piece?Dann Corbit wrote:http://rybkaforum.net/cgi-bin/rybkaforu ... heat%20mapthomasahle wrote:Making different maps for black and white would be interesting. I chose this format because it made it easier to plug the tables into sunfish. My experiments also showed that sunfish played slightly stronger with the asymmetric tables.
Do you have a link to the heat maps you ate referencing?
I have not made the detailed ones in a while. My friend Les just updated the tool set, so I will probably redo a really big pile.
-
- Posts: 12542
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Approximating Stockfish's Evaluation by PSQTs
They are based on:thomasahle wrote:These are nice, but am I correct that they are simply based on how often a piece is seen on the particular square, rather than any kind of evaluation? So if a knight very often captured a rook in the corner, the corner would have a high value for the knight. Even though it is not a good position for the piece?Dann Corbit wrote:http://rybkaforum.net/cgi-bin/rybkaforu ... heat%20mapthomasahle wrote:Making different maps for black and white would be interesting. I chose this format because it made it easier to plug the tables into sunfish. My experiments also showed that sunfish played slightly stronger with the asymmetric tables.
Do you have a link to the heat maps you ate referencing?
I have not made the detailed ones in a while. My friend Les just updated the tool set, so I will probably redo a really big pile.
1. Being in a band of plies
2. Whether a particular side won/lost/drew {selectable by the tool user}
Hence, you could say it is outcome driven. This is a good approach if "the proof of the pudding is in the eating".
Of course, it is possible that early plies are played by rote {or by book, which amounts to the same thing} and bad moves are included for this reason.
On the other hand, when you insert a million or so high quality games, I would expect that things tend to even out.
It is up to the user to choose the data upon which to base the analysis.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
- Posts: 4833
- Joined: Sun Aug 10, 2008 3:15 pm
- Location: Philippines
Re: Approximating Stockfish's Evaluation by PSQTs
Thanks for posting this.thomasahle wrote:I did some experiments, mostly for fun, that you all may find fun as well.
I made stockfish play 20,000,000 random games to ply 60 at 1ms per move. Each game was made different by always picking a random move from its top 6 pvs.
For each (white) position I read Stockfish's score estimate and recorded it in a table, together with a binary vector representation of the board position.
I then used regression with l1 loss to find the best possible psqts for the given positions. I managed to get an average difference between Stockfish and the simple table evaluation of 1 pawn.
I have troubled understanding your process.
How do you find the best possible pst given the following example.
Code: Select all
Pos: 1, scorecp: 25, Q: e1, gameresult: 1-0
Pos: 2, scorecp: 30, Q: c2, gameresult: 1-0
Pos: 3, scorecp: 10, Q: e1, gameresult: 1/2-1/2
I understand that L1 loss is using sum of absolute difference. How do you map the score 25, 30, 10 to calculate the error?
-
- Posts: 94
- Joined: Thu Feb 27, 2014 8:19 pm
Re: Approximating Stockfish's Evaluation by PSQTs
I assume you mean that the positions each have only one piece on the board.I have troubled understanding your process.
How do you find the best possible pst given the following example.Code: Select all
Pos: 1, scorecp: 25, Q: e1, gameresult: 1-0 Pos: 2, scorecp: 30, Q: c2, gameresult: 1-0 Pos: 3, scorecp: 10, Q: e1, gameresult: 1/2-1/2
In this case, we want to mininmize
Code: Select all
|Val(Q,e1) - 25| + |Val(Q,c2) - 10| + |Val(Q,e1) - 10|