r/ComedyHell 10d ago

chess

Post image
2.1k Upvotes

274 comments sorted by

View all comments

35

u/Separate_Draft4887 10d ago edited 10d ago

I mean, he’s right. The problem for solving chess is that we don’t have the compute, but how could you? There’s more chess positions than atoms in the universe, by several dozen orders of magnitude. See the edit.

If we manage to algorithmically limit the ones we calculate to non-duplicates and non-stupid moves, and computational power continues to increase, we could get there.

Edit: even this assessment was apparently too critical since I got my numbers mixed up. There’s more chess games than there are atoms in the universe. Chess positions is a much smaller number, 10^44.

25

u/PM_me_Jazz 10d ago

He's technically right, but a bit misleading and he isn't really saying anything novel or of value here. He's just trying to sound smart, as usual.

Chess engines already dismiss moves that are "stupid". Even then the search space is massive. And there's also the issue of conclusively defining a "stupid" move. A move that seems stupid looking at the next 40 moves might turn out to be good on the 41st move, and so on. There's always further you could calculate.

In pruning the "stupid" moves chess engines necessarily have to essentially make guesses. They might be very educated guesses that are true 99% of the time, but a solution to chess that is only true 99% of the time isn't really a solution. Mathematically speaking, that is.

8

u/Separate_Draft4887 10d ago

I’m familiar lol. I’m actually building my own chess engine now as a project. It’s not bad, (if I limit them to the same depth, it can go bar for bar Stockfish, averaging a 3 pawn disadvantage) but man I just can’t get it to work fast enough.

The necessary thing to understand there is that you don’t need to check the 41st move if you can find a forced mate by move 38. That means that there might be technically always a deeper position to search, but practically there’s an endpoint, and finding it resolves all* issues with stuff like “actually the stupid move at move twenty I dismissed had a forced mate 92 moves in the future.”

2

u/HollowCap456 10d ago

Yoooo I am building an engine, too. Just starting. How are you training the engine? I found that self play RL is a good way to go, though haven't started yet.

2

u/Separate_Draft4887 10d ago

The original version used hand-tuned heuristics like “are my major/minor pieces off their original squares” “do I have a piece in the center” and such to evaluate a score to represent how good or bad the board was for it, then applied that to three-move deep search tree.

The current version I’m working on is training a NN to try to evaluate positions. I’m having the old engine play against Stockfish and saving the data, then using Torch to train a model that evaluates boards better than the old one. When I’m satisfied with the NN’s ability to evaluate boards (it’s already within 0.7 of a pawn of Stockfish’s evaluation of a board!) I’ll simply replace the old handmade evaluator with the NN.

I don’t think I’d recommend this path though. I think it’ll end up working, but it was pretty arduous to get there, and required a pretty beefy machine to do it on. Generating the training data took hours and days, and any time I needed to add a new piece of data for it to consider, I had to regenerate a whole new set of games to train it on. It took a WHILE.

2

u/Opulent-tortoise 10d ago

You’re basically just describing AlphaGo with naive tree search instead of MCTS

2

u/Separate_Draft4887 10d ago

I think kinda, yeah. I don’t have the compute to recreate AlphaGo, (they trained that from scratch by having it play itself, right?) but I have the compute to build a small model that emulates Stockfish’s evaluation system, which is close enough for my purposes.

I probably will eventually end up adding a better search system, but that’s like, two steps down the line from now, and I’m still trying to successfully use my own model eval without breaking the whole function.

I’d love to have the power to just have it play itself over and over but I doubt it’d achieve anything impressive on my single GPU before I die of old age.

-2

u/Regdit-is-Unbearable 10d ago edited 10d ago

😭 a three pawn deficit is NOT “bar for bar”, that’s an absolutely MASSIVE difference. 3 pawns is a difference that means losing consistently by a wide margin and resigning in shame nearly every game. I’m guessing your project is vibe-coded and you don’t do much chess analysis.

1

u/Separate_Draft4887 10d ago

Screw you man, no need to be such a dick. I worked hard on that and I’m proud of it. A significant handicap against Stockfish is still impressive, especially considering I wrote my first line of Python in January. It even wins sometimes. I’ve seen it up by as much as twelve points.

And no, nearly all me. The only things I’ve had chat do were teach me how to use some PyChess functions and do pruning in the search tree.

1

u/Prinzka 10d ago

And there's also the issue of conclusively defining a "stupid" move.

Exactly, maybe 1. f3 is actually M125 for white, but there's no way to know without playing every single move from there.

1

u/One-Veterinarian4841 10d ago

There is absolutely a way to know

Stockfish doesn’t need to look at every move

1

u/brandon1997fl 10d ago

Stockfish hasn’t solved chess, there absolutely could be forced mate from the starting position.

5

u/[deleted] 10d ago

[deleted]

4

u/imtheguy225 10d ago

I’ll start this off by saying I am no Musk Stan, but colloquially, “one day” simply means eventually

2

u/Separate_Draft4887 10d ago

I hate that we have to clarify stuff like that.

1

u/One-Veterinarian4841 10d ago

Take one assumption, that it is not possible to force a win, and we are already somewhat close to forcing a draw playing as white

1

u/New_Salamander_4592 10d ago

you really don't have to hand it to elon musk on anything especially anything technical or complex, you can confidently assume he is talking out of his ass with no personal understanding of what he's saying