| ▲ | janalsncm 7 days ago |
| The author is looking for positions which are difficult for low rated players and easier for high rated players. Poor man’s version of this which requires no training would be to evaluate positions at low depth and high depth and select positions where the best move switches. Training neural nets to model behavior at different levels is also possible but high rated players are inherently more difficult to model. |
|
| ▲ | kadoban 7 days ago | parent | next [-] |
| > Poor man’s version of this which requires no training would be to evaluate positions at low depth and high depth and select positions where the best move switches. I've looked at the ~same problem in go instead of chess quite a bit. It turns out that that strategy does remarkably poorly, mostly because weak players don't just have low-depth thinking, they also do random weird shit and miss entire patterns. Eg in go if you run a strong go engine at _zero_ thinking (just take the model's best guess first move), it's already damn close to pro level. Getting them to play anything like a beginner, or even intermediate player is functionally impossible. You _may_ be able to trick one into playing as weak as a beginner player if you really try, but it would feel _nothing_ like one. > Training neural nets to model behavior at different levels is also possible but high rated players are inherently more difficult to model. Maybe more difficult to model (not sure tbh, but granted for the moment), but it's _far_ easier to generate training data for strong players via reinforcement learning approaches. |
| |
| ▲ | janalsncm 6 days ago | parent | next [-] | | > Maybe more difficult to model (not sure tbh, but granted for the moment), Two reasons. One, strong players are performing tree search, so you need to model their tree search process rather than a simple depth zero prediction. And two, there are far fewer high rated players so there is far less high quality training data. A lot of high rated games are also bullet, which aren’t as useful. > but it's _far_ easier to generate training data for strong players via reinforcement learning approaches. Can you say more about this? | |
| ▲ | vintermann 6 days ago | parent | prev [-] | | In go, I remember that there were rare positions/puzzles where old (pre-mcts) algorithms did better than humans, and that was artificial positions where there were a lot of complex recaptures in the same area. Which is rare in go, but common in chess. I do think that positions where the best move at depth N is a terrible move at N+1 are hard, especially if it isn't just recaptures on the same square. Chess engines used to have special heuristics to avoid such "horizon effects", don't know if they still do. |
|
|
| ▲ | adgjlsfhk1 7 days ago | parent | prev | next [-] |
| > high rated players are inherently more difficult to model yes and no. there's a bit of a bathtub curve here where below ~1000 elo lower ratings are harder to predict because their moves are closer to random. |
| |
| ▲ | kelipso 7 days ago | parent [-] | | I don't even think "high rated players are inherently more difficult to model" is correct, and the opposite is more likely to be correct. Top player, more than 2700 players, tend to play the engine moves the majority of the time, while lower rated players tend to stray from the engine lines. | | |
| ▲ | janalsncm 6 days ago | parent | next [-] | | https://arxiv.org/pdf/2006.01855 If you check figure 4, SF at depth 15 matches about 47% of the time which is lower than their NN. So quantitatively, SF isn’t amazing at move matching, and lower than the best NN at its relevant rating range (1900 -> 54%). Qualitatively, SF is pretty unsatisfying as a model of a pro human because a lot of its moves are counterintuitive. | |
| ▲ | adgjlsfhk1 7 days ago | parent | prev [-] | | top players are hard to model just because there aren't many of them. 1200-2200 has tons of players and they all make various degrees of sensible moves most of the time, so you can plausibly train a NN to sample from those distributions. for 2500+ you have far fewer players so the likely moves depend a lot more on the styles and blindspots of specific players. |
|
|
|
| ▲ | nilslindemann 7 days ago | parent | prev | next [-] |
| Seems like an excellent definition, mainly because I have no idea how to measure it otherwise. "Complexity is the time needed to solve a problem", why not. |
| |
| ▲ | Taek 7 days ago | parent [-] | | Well, there are a lot of shortcuts built into engines like stockfish that don't perfectly mirror how beginners vs advanced players think. For example, certain types of piece forks are easy for newer players to spot (knight forking a king+rook on the back rank) and others are harder (bishop forking a king and a pawn in the late game when nobody is on the back rank), but stockfish is going to find both just as easily. So if you want to get deep into complexity you do need a model of different players and what types of advantages are easy to see for them. | | |
|
|
| ▲ | chongli 7 days ago | parent | prev | next [-] |
| evaluate positions at low depth and high depth and select positions where the best move switches. Won’t that bias in favour of common sacrifices in the endgame? The issue with using depth is that humans don’t struggle with depth uniformly. Humans can calculate to a lot more depth with a sequence of obvious moves (recaptures, pawn races) than they can in more complex situations (closed positions in the midgame). |
| |
| ▲ | janalsncm 7 days ago | parent | next [-] | | Yeah, this is called the horizon effect: if I take your knight with my queen and stop calculating I’m up a knight, when in reality the queen will be taken on the next turn. | | |
| ▲ | lazyant 7 days ago | parent [-] | | One chess engine I saw long ago used a small depth (maybe even 1!) but with the exception of consecutive captures to avoid the biggest case for this issue (pawn promotion as well iirc) |
| |
| ▲ | nilslindemann 7 days ago | parent | prev [-] | | Seems to me that if it is common, it is better known, so the AI knows it better, so it is less komplex. |
|
|
| ▲ | codechicago277 7 days ago | parent | prev [-] |
| I had this idea of drilling games against an engine with a set depth evaluation, since beating a depth 1 engine should teach simpler concepts than level 4. I vibe coded this into a browser app, but the evaluation is slow around depth 5:
https://camjohnson26.github.io/chess-trainer/ |
| |
| ▲ | icelancer 7 days ago | parent [-] | | This is a thing you can do with Stockfish + SCID, is it not? | | |
| ▲ | nilslindemann 7 days ago | parent [-] | | Yes, though in the latest versions it is just a drop-down where one can choose between a few fixed values, and one has to make the move for the engine. Cute chess is a pretty GUI where one can do this too by setting the ply parameter. Castling is done by dragging the king on the rook! https://github.com/cutechess/cutechess |
|
|