Rendered at 22:49:49 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
matsemann 10 hours ago [-]
> This also helps the model maintain a more consistent playing style. Sometimes there’s a sacrifice available on the board, through many turns. A human would usually either decide he wants to do it or not, and stick with that decision until something concrete changes. But when I played this bot before adding recency, the bot would be ignoring the tactic for many moves then after an unrelated quiet move, go for it. It felt very alien and off-putting.
From the position history in the previous post. Good point. Same with bishops "sniping". If a bishop is moved to b2, and remains there or 20 moves, it can be "forgotten" and opponent suddenly has a pin or something underprotected. But if I saw the exact same board, but the previous move was moving the bishop to b2, I would be aware of it. That kind of local thinking is of course something I should learn to not do, but at my level (1700-1800 FIDE) it's how humans play.
fps-hero 9 hours ago [-]
There are some novel ideas in here worth appreciating. The classic “time scramble” is absolutely worth considering, even in top level human play.
It seems strange that even with fairly abundant datasets such as Lichess, that it is still difficult to approximate human strength with a bot.
As a “low strength human”, it’s very easy to see how traditional chess engines fail to emulate humans.
As far as actual calculation look ahead goes, humans aren’t calculating to chess engine depth. How often is a human really considering every possible move to greater than a 3 move depth?
Humans are moving with instinct. We cull the decision tree based on our evaluation of how promising a branch may be, not its objective calculated strength. This is where the chess engines break down.
Humans rely on instinct, pattern recognition, and strategy. None of this translates to a chess engine unless you are a top level player with near perfect instincts and pattern recognition.
My hunch is that for approximately human strength, the lowest ELO human makes moves completely at random, where the highest ELO human with follow the brute forced top lines. The challenge is tweaking the decision tree to match human evaluation of a branch based on skill level, and a second conditional probability of selecting a branch based on the player’s ELO.
The output of the chess engine shouldn’t be deterministic, but probabilistic. History has shown when you take a probabilistic approach to a problem, normally magic falls out. I’m yet to see a probabilistic chess engine.
xw333 5 hours ago [-]
I also found the approach interesting but I've also noticed real players have personalities, i.e. do they push for open or closed positions, and they have tactical strengths and weaknesses. So the probabilities of different events needs weighting.
I also coach kids and none of their moves are random in the mathematical sense. They dont play the best moves but the moves are understandable once you hear their reasoning, it's just their reasoning doesn't properly evaluate the immediate position, future shapes and transformations.
For example looking at my chess.com profile I find basically every hung piece, and I am excellent at taking advantage of pinned piece opportunities and almost never allow an imbalance due to pinned piece, but I have blind spot when it comes to clearance sacrifices both taking advantage of them and allowing them.
So I suspect a good way to approximate a human would be to bork the evaluation based on a profile and then pick from that narrowed set of candidate moves at random. Which is more or less my understanding of how the chess.com bots work
somenameforme 8 hours ago [-]
There have been a bunch of studies trying to evaluate something as ostensibly 'simple' as how complex a position is. And they're all terrible. It turns out that what's complex for a human is extremely difficult to define, because we can find very simple positions extremely complex (R+B v R for instance) and some very complex positions are very simple because correct plans are 'obvious'. Similarly some quiet positions can be very complex when it's difficult to find the correct plan.
And all of this also changes with level. I'm speaking of correct plans, drawing a technically drawn ending, and so on. If a player is weaker then complex for them might simply mean when there's lots of pieces doing lots of stuff, making them more likely to hang material to a simple threat. And the aforementioned RB v R ending might be trivial for them ( on the R side) because their opponents are not going to be strong enough to create plans that can apply pressure and try to make progress. They're just going to move their extra piece around hoping you blunder something.
So getting back to engine strength - I think figuring out what's complex for a human is a very basic prerequisite, amongst several, to making an engine that plays human-like. And we're just not there yet, or seemingly even especially close.
traceroute66 8 hours ago [-]
> As a “low strength human”, it’s very easy to see how traditional chess engines fail to emulate humans.
IIRC there have been attempts to introduce human-like behavior like with Shredder which was designed to introduce human-like mistakes.
marcusbuffett 1 days ago [-]
Here's a previous post outlining more about how the model works, whereas this post is more about how well it has turned out.
> Determining who has control of a square in chess is a pretty interesting problem. Is it the person with the most material aiming at that square? [...] The formula I decided on here was that each piece contributes the inverse of it’s piece value, squared.
This is the most interesting part for me in part because it seems arbitrary.
Back to the recent post:
> shapes the trunk; never feeds the policy logits
I didn't really understand that part.
babalobo 8 hours ago [-]
I'm not finding the bot realistic at all. It makes the exact same type of blunders you would expect a dumbed down bot to make. Just random, strange looking blunders.
As at 900 level, me playing white, it goes Bf3 in the opening as if I have a knight there, but there isn't a knight there anymore. I just moved it to e5. There's 3 pieces protecting that square. Would never see that in a real game except if it's a crazy premove (it did not move quickly).
At 1800 level, I'm about to double attack their knight on h6, so it moves its king out of g8 to get a flight square. But then it doesn't follow through on its plan, inexplicably ignoring my threat and giving me a piece. I have no other immediate threats.
babalobo2 4 hours ago [-]
That said, I spent some more time playing it and beyond the first impression it was fun and the games were mostly more realistic. It was more fun than playing weak stockfish.
The bigger annoyance now is that there seems to be a bug with premoves where the move registers (or appears to do so) but your timer just runs down and nothing can be done.
I was able to beat the max elo (2800) bot in bullet chess pretty consistently because if you manage to not get checkmated in some number of moves it just always runs out of time. Still fun though as it's kind of like playing an older GM who is playing on their phone.
hyperbolablabla 8 hours ago [-]
I thought maybe chessbook.com would allow me to just play a normal game against this bot, but I guess not?
marcusbuffett 8 hours ago [-]
http://chessbook.com/training-games is the direct link, for usual Chessbook users it's still gated behind an early-access flag since I'm still working on the UX of playing the bot.
jacquesm 8 hours ago [-]
I was expecting servos and latex... But, nice achievement.
From the position history in the previous post. Good point. Same with bishops "sniping". If a bishop is moved to b2, and remains there or 20 moves, it can be "forgotten" and opponent suddenly has a pin or something underprotected. But if I saw the exact same board, but the previous move was moving the bishop to b2, I would be aware of it. That kind of local thinking is of course something I should learn to not do, but at my level (1700-1800 FIDE) it's how humans play.
It seems strange that even with fairly abundant datasets such as Lichess, that it is still difficult to approximate human strength with a bot.
As a “low strength human”, it’s very easy to see how traditional chess engines fail to emulate humans.
As far as actual calculation look ahead goes, humans aren’t calculating to chess engine depth. How often is a human really considering every possible move to greater than a 3 move depth?
Humans are moving with instinct. We cull the decision tree based on our evaluation of how promising a branch may be, not its objective calculated strength. This is where the chess engines break down.
Humans rely on instinct, pattern recognition, and strategy. None of this translates to a chess engine unless you are a top level player with near perfect instincts and pattern recognition.
My hunch is that for approximately human strength, the lowest ELO human makes moves completely at random, where the highest ELO human with follow the brute forced top lines. The challenge is tweaking the decision tree to match human evaluation of a branch based on skill level, and a second conditional probability of selecting a branch based on the player’s ELO.
The output of the chess engine shouldn’t be deterministic, but probabilistic. History has shown when you take a probabilistic approach to a problem, normally magic falls out. I’m yet to see a probabilistic chess engine.
I also coach kids and none of their moves are random in the mathematical sense. They dont play the best moves but the moves are understandable once you hear their reasoning, it's just their reasoning doesn't properly evaluate the immediate position, future shapes and transformations.
For example looking at my chess.com profile I find basically every hung piece, and I am excellent at taking advantage of pinned piece opportunities and almost never allow an imbalance due to pinned piece, but I have blind spot when it comes to clearance sacrifices both taking advantage of them and allowing them.
So I suspect a good way to approximate a human would be to bork the evaluation based on a profile and then pick from that narrowed set of candidate moves at random. Which is more or less my understanding of how the chess.com bots work
And all of this also changes with level. I'm speaking of correct plans, drawing a technically drawn ending, and so on. If a player is weaker then complex for them might simply mean when there's lots of pieces doing lots of stuff, making them more likely to hang material to a simple threat. And the aforementioned RB v R ending might be trivial for them ( on the R side) because their opponents are not going to be strong enough to create plans that can apply pressure and try to make progress. They're just going to move their extra piece around hoping you blunder something.
So getting back to engine strength - I think figuring out what's complex for a human is a very basic prerequisite, amongst several, to making an engine that plays human-like. And we're just not there yet, or seemingly even especially close.
IIRC there have been attempts to introduce human-like behavior like with Shredder which was designed to introduce human-like mistakes.
https://mbuffett.com/posts/chess-move-prediction/
This is the most interesting part for me in part because it seems arbitrary.
Back to the recent post: > shapes the trunk; never feeds the policy logits
I didn't really understand that part.
As at 900 level, me playing white, it goes Bf3 in the opening as if I have a knight there, but there isn't a knight there anymore. I just moved it to e5. There's 3 pieces protecting that square. Would never see that in a real game except if it's a crazy premove (it did not move quickly).
At 1800 level, I'm about to double attack their knight on h6, so it moves its king out of g8 to get a flight square. But then it doesn't follow through on its plan, inexplicably ignoring my threat and giving me a piece. I have no other immediate threats.
The bigger annoyance now is that there seems to be a bug with premoves where the move registers (or appears to do so) but your timer just runs down and nothing can be done.
I was able to beat the max elo (2800) bot in bullet chess pretty consistently because if you manage to not get checkmated in some number of moves it just always runs out of time. Still fun though as it's kind of like playing an older GM who is playing on their phone.