What is the purpose of chess engines?

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

crem
Posts: 177
Joined: Wed May 23, 2018 9:29 pm

What is the purpose of chess engines?

Post by crem »

In LCZero we basically optimize for one metric: strength of the engine, measured as Elo rating compared to other engines and older version of itself, for games starting from startpos. While maximizing Elo seems like an obvious and pure goal, it may not be fully aligned with purpose of an engine.

So the question is: what the purpose of the engine is (both Lc0 and in general)? What are chess engines used for?
I’m not a chess player and don’t really understand know how exactly chess engines are used by humans.
I guess understanding of the usage would help adding some direction to the project.

So, here is a list of uses of chess engines that I can think of:

1. To participate in TCEC / CCCC / other competitions.
That one is the one I understand. And despite saying that we don’t optimize for competitions, this is what our current metrics aligned with the most.
What features would be useful if we wanted to optimize for that? Probably something like:
- Training on popular openings (e.g. KGA; it’s not possible to force LCZero to play KGA in some “automated” way. All our attempts to pick more diverse openings so that includes KGA made it also include openings like 1. Nh3 f6).
- Try to encourage more entertainment style (as competitions are for viewers more than for result tables).
- Training against specific opponents?

2. To play against humans.
That’s also understandable. Traditionally, people don’t like to play against engines, but supposedly LCZero has different kind of mistakes and is fun to play against.
It seems that to support this case better, we need to have pre-set set of configurations for different levels, maybe some variety of online bots, but for the engine itself I guess functionality is already there, just not exposed enough.

3. To help correspondence chess players.
Here it’s already vague. As far as I understand, correspondence chess nowadays is kind of the same as computer chess, so it has roughly the same requirements, namely to win more games against very strong opponents. Optimizations would include:
- Scale better and support very long thinking times (e.g. days on high-end hardware)
- Anything else?

4. To analyze your games.
Here is where I start to not understand it. Do you need more than one engine to do that? I assume people do many mistakes anyway, and those are much larger than subtleties between engines, so do people really need anything above lichess-level analysis?
It would be nice for an engine e.g. to be able to show not only which player stays better in a given position, but also why is the position good/bad, but we are not there yet. But that’s something to think about.

5. To assist opening preparation.
That I have no clue at all. Do I understand correctly that it’s mostly top GMs who use engines to find novelties, others mostly do opening preparation by looking at opening stats rather than engine?
And how exactly it happens? A person puts some “novelty” sequence and then starts an engine to see if there is an easily findable refutation? Or setting a “non-novelty” position and starts engine hoping that one of “novelty” moves will show up near the top? And then looks what is the possible answers and how to react on them?
Do they put engines overnight to calculate some positions or do they only keep it running for a few minutes? Is there any real benefit of using more than one engine? Is there any engine-driven preparation outside of openings (exact middlegame position will not occur, but maybe it’s useful to analyze example of some position “types”)?


So, my questions:
1. Is there anything I miss/got wrong in the list above?
2. Which of the use cases do you think are the most useful / used by the most people / should be a top priority for chess engine development? (Lc0 in particular, but other engines too).
3. How do you personally use chess engines?
User avatar
mclane
Posts: 18748
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: What is the purpose of chess engines?

Post by mclane »

CHESS is about checkmate the opponent king.
Most chess engines, if they can’t see the mate, try to capture material. And if there is no material advantage to get, they make a move that is not giving away the game.

Then the programmer call this chess.

But this is not chess.

CHESS is not a test suite you have to solve with a key move.

CHESS is to make moves in the appropriate order to mate the opposite king.

Therefore you need a plan.

Computerchess Engines do not plan. Therefore they do not play chess but solve test suites.

They reach a very high ELO doing it.
But they don’t play chess.
What seems like a fairy tale today may be reality tomorrow.
Here we have a fairy tale of the day after tomorrow....
mbabigian
Posts: 204
Joined: Tue Oct 15, 2013 2:34 am
Location: US
Full name: Mike Babigian

Re: What is the purpose of chess engines?

Post by mbabigian »

Opening prep and analyzing complex quiet positions. Opening prep is not just about finding novelties. I look for lines where the required moves look somewhat counterintuitive and have long sequences of "only moves."

Let me clarify "only moves." I'm not talking about moves necessary to avoid instant loss although those occasionally occur. I'm talking about leading an opponent into a line where each time he does not play the "only move" his position gets harder to play such that if he fails to make say 3 or 4 specific moves he's either lost or in very big trouble. Identifying opening lines like these takes a great deal of work and are extremely valuable in all types of competitions. Finding these types of lines for correspondence use is even more difficult. Doing this requires the engine be tied to a database that stores scores and at present I know of no such system that isn't complete junk (a.k.a. Aquarium).

I have never played "engine matches. This is only valuable to make rating lists and provides no amusement for me to have my computer trying to beat someone else's computer.

Many times very complex positions arise where it is not clear whats the best plan. Computers can often answer these questions. (Complex quiet positions).

So to your direct numbered points. 1) is just an extension of ratings lists. The competition is just to better understand strength on non-joke hardware used by the fast rating list makers. 2) For players wanting to practice when humans are not available, an engine that makes human like mistakes when scaled to near their strength would be a valuable sparing partner. 3) Is a combination of opening prep and deep analysis where longer thinks and search tricks (manual or automated) are useful. 4) Hell yes, but an engine without a connected database with stored scores is like a Indy Race Car with no tires. No super strong engine alone is much use for "opening prep."

My two cents.
“Censorship is telling a man he can't have a steak just because a baby can't chew it.” ― Mark Twain
corres
Posts: 3657
Joined: Wed Nov 18, 2015 11:41 am
Location: hungary

Re: What is the purpose of chess engines?

Post by corres »

I think you would follow the method of Stockfish: You would seek after creating the most powerful NN engine.
And the user will find how they can employ your engine for different aims. The auxiliary programs should have tasks to help user in different field of chess.
If you think about a commercial engine there are lot of examples (Fritz, Houdini, Komodo, Hiarcs, Shredder, etc) what are expected from a commercial chess program.
Last edited by corres on Sat Nov 16, 2019 7:15 pm, edited 1 time in total.
User avatar
Ozymandias
Posts: 1532
Joined: Sun Oct 25, 2009 2:30 am

Re: What is the purpose of chess engines?

Post by Ozymandias »

crem wrote: Sat Nov 16, 2019 5:21 pmWhat are chess engines used for?
You may want to check this really old thread.
leavenfish
Posts: 282
Joined: Mon Sep 02, 2013 8:23 am

Re: What is the purpose of chess engines?

Post by leavenfish »

The answer is of course that it varies by the individuals needs.

The most benignly purposeful uses being:

1. To analyse ones own games - but seriously, a programmed GUI is needed for that - you can use any old engine for that. Engines just power the search and one is about as good as the other.
2. Preparing openings - this is the most important in my view and mainly for OTB play ('correspondence'...eh...that's for people who think THEY are doing something in real time) to work out lines where my opponent has more chances to 'go wrong' or slip into a worse position.

For the latter in particular, you really cannot beat analysis with Komodo MCTS !!
mbabigian
Posts: 204
Joined: Tue Oct 15, 2013 2:34 am
Location: US
Full name: Mike Babigian

Re: What is the purpose of chess engines?

Post by mbabigian »

Right now LC0 is a tactical failure. If you are looking only for engine improvements, work on search. Perhaps AB rollouts to augment MCTS like tried in Komodo. Perhaps this can also keep additional CPU cores loaded. As it stands now LC0 cannot be trusted for analysis alone without tactical checks with an AB engine. A huge waste of time.

A 1024x80b net won't fix the problem. For decades all developers virtually ignored evaluation functions and made massive search discoveries. This powered huge elo gains prompting more focus on search/pruning. LC0 is the exact opposite. Huge gains were made in evaluation and all focus is on training better networks as search is summarily ignore. Start trying the successful search strategies that took decades to develop.

That's my opinion and it should be yours. ;)
“Censorship is telling a man he can't have a steak just because a baby can't chew it.” ― Mark Twain
jp
Posts: 1470
Joined: Mon Apr 23, 2018 7:54 am

Re: What is the purpose of chess engines?

Post by jp »

crem wrote: Sat Nov 16, 2019 5:21 pm So the question is: what the purpose of the engine is (both Lc0 and in general)? What are chess engines used for?

So, here is a list of uses of chess engines that I can think of:

1. To participate in TCEC / CCCC / other competitions.

2. To play against humans.

3. To help correspondence chess players.

4. To analyze your games.

5. To assist opening preparation.

6. To (try to) discover chess truth.

A bit like e.g. use 4. and use 5., but it doesn't have to be a particular person's games, certainly not "your" games, and it doesn't have to be opening preparation or preparation that will be used in a tournament game.
PK
Posts: 893
Joined: Mon Jan 15, 2007 11:23 am
Location: Warsza

Re: What is the purpose of chess engines?

Post by PK »

7. To play games that are pleasurable for humans to watch.
Uri Blass
Posts: 10268
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: What is the purpose of chess engines?

Post by Uri Blass »

crem wrote: Sat Nov 16, 2019 5:21 pm In LCZero we basically optimize for one metric: strength of the engine, measured as Elo rating compared to other engines and older version of itself, for games starting from startpos. While maximizing Elo seems like an obvious and pure goal, it may not be fully aligned with purpose of an engine.

So the question is: what the purpose of the engine is (both Lc0 and in general)? What are chess engines used for?
I’m not a chess player and don’t really understand know how exactly chess engines are used by humans.
I guess understanding of the usage would help adding some direction to the project.

So, here is a list of uses of chess engines that I can think of:

1. To participate in TCEC / CCCC / other competitions.
That one is the one I understand. And despite saying that we don’t optimize for competitions, this is what our current metrics aligned with the most.
What features would be useful if we wanted to optimize for that? Probably something like:
- Training on popular openings (e.g. KGA; it’s not possible to force LCZero to play KGA in some “automated” way. All our attempts to pick more diverse openings so that includes KGA made it also include openings like 1. Nh3 f6).
- Try to encourage more entertainment style (as competitions are for viewers more than for result tables).
- Training against specific opponents?

2. To play against humans.
That’s also understandable. Traditionally, people don’t like to play against engines, but supposedly LCZero has different kind of mistakes and is fun to play against.
It seems that to support this case better, we need to have pre-set set of configurations for different levels, maybe some variety of online bots, but for the engine itself I guess functionality is already there, just not exposed enough.

3. To help correspondence chess players.
Here it’s already vague. As far as I understand, correspondence chess nowadays is kind of the same as computer chess, so it has roughly the same requirements, namely to win more games against very strong opponents. Optimizations would include:
- Scale better and support very long thinking times (e.g. days on high-end hardware)
- Anything else?

4. To analyze your games.
Here is where I start to not understand it. Do you need more than one engine to do that? I assume people do many mistakes anyway, and those are much larger than subtleties between engines, so do people really need anything above lichess-level analysis?
It would be nice for an engine e.g. to be able to show not only which player stays better in a given position, but also why is the position good/bad, but we are not there yet. But that’s something to think about.

5. To assist opening preparation.
That I have no clue at all. Do I understand correctly that it’s mostly top GMs who use engines to find novelties, others mostly do opening preparation by looking at opening stats rather than engine?
And how exactly it happens? A person puts some “novelty” sequence and then starts an engine to see if there is an easily findable refutation? Or setting a “non-novelty” position and starts engine hoping that one of “novelty” moves will show up near the top? And then looks what is the possible answers and how to react on them?
Do they put engines overnight to calculate some positions or do they only keep it running for a few minutes? Is there any real benefit of using more than one engine? Is there any engine-driven preparation outside of openings (exact middlegame position will not occur, but maybe it’s useful to analyze example of some position “types”)?


So, my questions:
1. Is there anything I miss/got wrong in the list above?
2. Which of the use cases do you think are the most useful / used by the most people / should be a top priority for chess engine development? (Lc0 in particular, but other engines too).
3. How do you personally use chess engines?
I think that you miss the following:
1)Getting better results in odd games.

for example when you start without a knight against a human or against relatively weak engine.

2)Finding a forced mate or a forced draw for one side.
The last case is clearly missing for engines and if they say 0.00 I do not know if one side has a forced draw or the position is simply equal.

3)Option to find winning material in n moves.
Again something that is missing from strong engines that are usually not very materialistic so I have no idea if evaluation of +2 that they have is based on material or based on positional evaluation.

I prefer to have an option to search for winning material in n plies to have candidates for tactical exercises for humans when they need to answer also how much material they win.

Of course winning material may be wrong for positional reasons but even if it is wrong the position can be good as a tactical exercise for humans when humans know that the target is not to win the game but to win material.

part b of the exercise can ask the user if the move that wins material is really the best move or not.