Your network blocks the Lichess assets!

lichess.org
Donate

Identifying Brilliant Moves With Leela Chess Zero

"since I imagine that the probability of a strong move is much lower, when there are many good moves to choose from."

Yes, this is a statistically accurate statement.

"since I imagine that the probability of a strong move is much lower, when there are many good moves to choose from." Yes, this is a statistically accurate statement.

Maybe the "Pigeonhole principle" could be applied to identify tactical patterns, which would then be considered a brilliant move.
A brilliant move could be an overloaded piece or square. If the best move matches the overloaded situation, than it would be considered a brilliant move. The brilliant move is not an instinctive move, but remains a best move, which most likely took time to find. A natural move is not a brilliant move. A brilliant move is not an expected (popular) move.
https://en.wikipedia.org/wiki/Pigeonhole_principle

Combinatorial_principles: Rule of sum, Rule of product, Inclusion–exclusion principle
When we look at the score in the link > https://www.chessdb.cn/queryc_en/
There are zeros (a) and negative signs (b). The total legal moves is (a + b) = 20
The sum of the legal moves is (15+5) = Sum of 20 legal moves, 5 moves favor black.
The product of the legal moves is (15*5) = Product of 75.
The brilliant game move, would be the move that had the largest product number. So each move needs to know the total legal moves and how many are positive and how many are negative. The move then gets a product number. At the end of the game the highest product number is the smartest (brilliant) move of that game. If we compare what black can move and what white can move, then the product of the two might just point to a peak to determine the smart moves for both players.

  1. e4 (2*18) = 36
  2. g4 (17*3) = 21

https://en.wikipedia.org/wiki/Combinatorial_principles

Maybe the "Pigeonhole principle" could be applied to identify tactical patterns, which would then be considered a brilliant move. A brilliant move could be an overloaded piece or square. If the best move matches the overloaded situation, than it would be considered a brilliant move. The brilliant move is not an instinctive move, but remains a best move, which most likely took time to find. A natural move is not a brilliant move. A brilliant move is not an expected (popular) move. https://en.wikipedia.org/wiki/Pigeonhole_principle Combinatorial_principles: Rule of sum, Rule of product, Inclusion–exclusion principle When we look at the score in the link > https://www.chessdb.cn/queryc_en/ There are zeros (a) and negative signs (b). The total legal moves is (a + b) = 20 The sum of the legal moves is (15+5) = Sum of 20 legal moves, 5 moves favor black. The product of the legal moves is (15*5) = Product of 75. The brilliant game move, would be the move that had the largest product number. So each move needs to know the total legal moves and how many are positive and how many are negative. The move then gets a product number. At the end of the game the highest product number is the smartest (brilliant) move of that game. If we compare what black can move and what white can move, then the product of the two might just point to a peak to determine the smart moves for both players. 1. e4 (2*18) = 36 1. g4 (17*3) = 21 https://en.wikipedia.org/wiki/Combinatorial_principles

@Toscani said in #17:

Brilliant move may just be a very good move, but I think it does not mean it's the best move. It all depends on who won the game by the brilliant move. As soon as two top engines don't agree on the same best move, than which one is brilliant? The engine that wins with the brilliant move. So to determine a brilliant move, I think games need to be analysed by different engines. As soon as a move is not agreed on by the top engines, than it might just very well fall under brilliancies.

Found some stuff about brilliancies and narrowness.
github.com/lukasmonk/lucaschessR2/blob/main/bin/Code/Analysis/AnalysisIndexes.py
lucaschess.blogspot.com/2022/10/setting-analysis-parameters.html#:~:text=be%20an%20inaccuracy.-,very_good_depth,-Default%20value%3A%208
chessionate.com/lucaswiki/index.php?title=Analyse_games

NARROWNESS: page 7 "... how crowded and/or narrow is a position ..."
lucaschess.pythonanywhere.com/static/pdf/english/advanced_info_%20in_LC8.pdf

Thanks for trying to focus this discussion thread where everyone has ideas and few have actual research.

@Toscani said in #17: > Brilliant move may just be a very good move, but I think it does not mean it's the best move. It all depends on who won the game by the brilliant move. As soon as two top engines don't agree on the same best move, than which one is brilliant? The engine that wins with the brilliant move. So to determine a brilliant move, I think games need to be analysed by different engines. As soon as a move is not agreed on by the top engines, than it might just very well fall under brilliancies. > > Found some stuff about brilliancies and narrowness. > github.com/lukasmonk/lucaschessR2/blob/main/bin/Code/Analysis/AnalysisIndexes.py > lucaschess.blogspot.com/2022/10/setting-analysis-parameters.html#:~:text=be%20an%20inaccuracy.-,very_good_depth,-Default%20value%3A%208 > chessionate.com/lucaswiki/index.php?title=Analyse_games > > NARROWNESS: page 7 "... how crowded and/or narrow is a position ..." > lucaschess.pythonanywhere.com/static/pdf/english/advanced_info_%20in_LC8.pdf Thanks for trying to focus this discussion thread where everyone has ideas and few have actual research.

@EphemeralAdvantage said in #26:

The problem with using engines to determine when a move is brilliant has been shown by the hundreds of short videos that have flooded the internet since chess.com implemented it into their game analysis. It is simply impossible whether a move is actually brilliant by looking at its computer evaluation. There are two problems: Firstly the computer attaches "!!" too easily. Secondly, the computer does not know if the player playing the move actually understand why it is brilliant.

Of course, from a marketing perspective this makes sense. When your demographic is filled with players under a certain knowledge threshold it makes sense to lower the requirements for getting a "!" or "!!" move. That way, a largest part of your player base can get a sense of accomplishment that will make them want to come back for more.

In the end, whether a move is brilliant or not is not only based on the player looking at it, but also at their tactical, strategical and positional knowledge.

A good example is the mainlines of the King's Indian with 9. Ne1. When at some point ... Bxh3 comes whether you find it brilliant or not is based on your familiarity with the position. Player A that just started playing the KID might find it brilliant, Player B that has been playing mainline d4 theory finds it nice but typical and Player C who is experienced in the Mar de Plata structures might not even believe it is even worth discussing.

It is also a matter of when was the move played and when was it analyzed. Tal's Nd5, Ne6 and Nf5 sacrifices in the Sicilian could have been considered brilliant when he played them but know every slightly above average player knows about them. In 1950 Nd5 in the Sicilian was brilliant. In 2023 it is just typical.

Lastly, a big problem is that while many moves can be considered brilliant but the reason for them being so differs from move to move. Some may be tactically brilliant , meaning that the move is unexpected but it forcefully leads to some gain, and some may be strategically brilliant, meaning the move gives the player a good position even though nothing is forced.

For these reasons, I believe that a computer cannot be used to determine whether a move is brilliant or not.

I started with this project exactly because I felt that some sites gave brilliant moves too easily and that being the best move is only a necessary ingredient of being a brilliant move, but that moves are only brilliant if they are surprising (by that I mean not well known patterns as you have pointed out).

That's why I used LC0's policy, since leela is very strong on only one node and since it learns through playing games, it should "know" the common patterns. Looking through many games which were not included in the post, it was often striking to me that a piece sacrifice had a policy of over 10% which means that it was very obvious for LC0.

I obviously agree that computers cannot be used to determine brilliant moves, but a big part of the reason is that what makes a move brilliant is highly subjective, so I don't think that most players would agree on what counts as a truly brilliant move. But I think that engines can at least pick out some very good and striking moves.

@EphemeralAdvantage said in #26: > The problem with using engines to determine when a move is brilliant has been shown by the hundreds of short videos that have flooded the internet since chess.com implemented it into their game analysis. It is simply impossible whether a move is actually brilliant by looking at its computer evaluation. There are two problems: Firstly the computer attaches "!!" too easily. Secondly, the computer does not know if the player playing the move actually understand why it is brilliant. > > Of course, from a marketing perspective this makes sense. When your demographic is filled with players under a certain knowledge threshold it makes sense to lower the requirements for getting a "!" or "!!" move. That way, a largest part of your player base can get a sense of accomplishment that will make them want to come back for more. > > In the end, whether a move is brilliant or not is not only based on the player looking at it, but also at their tactical, strategical and positional knowledge. > > A good example is the mainlines of the King's Indian with 9. Ne1. When at some point ... Bxh3 comes whether you find it brilliant or not is based on your familiarity with the position. Player A that just started playing the KID might find it brilliant, Player B that has been playing mainline d4 theory finds it nice but typical and Player C who is experienced in the Mar de Plata structures might not even believe it is even worth discussing. > > It is also a matter of when was the move played and when was it analyzed. Tal's Nd5, Ne6 and Nf5 sacrifices in the Sicilian could have been considered brilliant when he played them but know every slightly above average player knows about them. In 1950 Nd5 in the Sicilian was brilliant. In 2023 it is just typical. > > Lastly, a big problem is that while many moves can be considered brilliant but the reason for them being so differs from move to move. Some may be tactically brilliant , meaning that the move is unexpected but it forcefully leads to some gain, and some may be strategically brilliant, meaning the move gives the player a good position even though nothing is forced. > > For these reasons, I believe that a computer cannot be used to determine whether a move is brilliant or not. I started with this project exactly because I felt that some sites gave brilliant moves too easily and that being the best move is only a necessary ingredient of being a brilliant move, but that moves are only brilliant if they are surprising (by that I mean not well known patterns as you have pointed out). That's why I used LC0's policy, since leela is very strong on only one node and since it learns through playing games, it should "know" the common patterns. Looking through many games which were not included in the post, it was often striking to me that a piece sacrifice had a policy of over 10% which means that it was very obvious for LC0. I obviously agree that computers cannot be used to determine brilliant moves, but a big part of the reason is that what makes a move brilliant is highly subjective, so I don't think that most players would agree on what counts as a truly brilliant move. But I think that engines can at least pick out some very good and striking moves.

@dboing said in #23:

I took time to read more.. And you actually did explain a lot more your process and reasoning. thanks.
I am glad you are actually keeping a question period. That is where things are best explained finally.

I did not pay attention, is there some place we can see the details of the work. Is that from the links in the external journal site? (going back to blog.. to check is I skipped something).

I haven't posted the code anywhere, mostly because it's a bit of a mess and because in this case it's not too interesting: I went through the moves of each game and if a move had a policy of less than 2%, I evaluated the position with SF in order to see whether it was the best move.

I will try to share my code for future projects, especially if they require more work from me rather than mostly using LC0 and SF.

@dboing said in #23: > I took time to read more.. And you actually did explain a lot more your process and reasoning. thanks. > I am glad you are actually keeping a question period. That is where things are best explained finally. > > I did not pay attention, is there some place we can see the details of the work. Is that from the links in the external journal site? (going back to blog.. to check is I skipped something). I haven't posted the code anywhere, mostly because it's a bit of a mess and because in this case it's not too interesting: I went through the moves of each game and if a move had a policy of less than 2%, I evaluated the position with SF in order to see whether it was the best move. I will try to share my code for future projects, especially if they require more work from me rather than mostly using LC0 and SF.

@dboing said in #25:

other thought of possible knobs from LC0. When used with policy, typical the stopping criterion is about confidence interval to reach for distinguishing each candidate move from root as nodes set explored is increasing in breadth (how the nodes are being expanded is not something I fully understand**). I bet that does not really compute with existing UCI, so it have to be node count, and LC0 has some conversion curve to fit in. but the reasoning is that the node expansion is based on some confidence estimator being somehow available. Or what does the PUCT acronym really stand for? So, my suggestion, if I am not completely off base already, is that while using one node profiling of moves, maybe that current confidence interval among how moves successor evaluation differ is significant per such confidence estimator, would be an interesting variable.. (it might even have some human analogy, in that historically evolving knowledge, and perception or theory of the board, might also have been factors in evolution of what would have been called brilliancy.. I guess, given similar position, a previously known moves having been called brilliant once, won't be called brilliant anymore for all those sufficiently similar positions and that move.

** I did try, but those GO diagrams don't help me much somehow, or they are not at the mathematical level the A0 paper actually presented the whole framework, which I could understand there, in that state-action model formulation. it was so clear. It can also be my lack of satisfaction a game tree being able to completely describe all the information of the game world (all the games, that contribute to all the node evaluation, where being part of a pair of players solo game tree of decisions to consider, or all the possible pair of players decisions tree combined). my problem.. one day I will surrender to game trees being all there is... for now I would rather start with the state space and the action Siamese space (it can be described in the state space), where all pairs of players of the universe would have to navigate, even if each have their own game trees, which in their instances once cranked in depth, don't care about other branches nodes from other paths.. (yet the evaluation backprop. of outcome data, well it cares about all the paths taken from the position being evaluated). just spilling my current guts about my fog.

PUCT stands for Predictor + UCT meaning that LC0 uses a prediction (the policy of the neural network) to determine the value of a new node before choosing which node to append.
I'm not sure I understand what you mean by "while using one node profiling of moves, maybe that current confidence interval among how moves successor evaluation differ is significant per such confidence estimator" so it would be nice if you could elaborate on that for me.

@dboing said in #25: > other thought of possible knobs from LC0. When used with policy, typical the stopping criterion is about confidence interval to reach for distinguishing each candidate move from root as nodes set explored is increasing in breadth (how the nodes are being expanded is not something I fully understand**). I bet that does not really compute with existing UCI, so it have to be node count, and LC0 has some conversion curve to fit in. but the reasoning is that the node expansion is based on some confidence estimator being somehow available. Or what does the PUCT acronym really stand for? So, my suggestion, if I am not completely off base already, is that while using one node profiling of moves, maybe that current confidence interval among how moves successor evaluation differ is significant per such confidence estimator, would be an interesting variable.. (it might even have some human analogy, in that historically evolving knowledge, and perception or theory of the board, might also have been factors in evolution of what would have been called brilliancy.. I guess, given similar position, a previously known moves having been called brilliant once, won't be called brilliant anymore for all those sufficiently similar positions and that move. > > ** I did try, but those GO diagrams don't help me much somehow, or they are not at the mathematical level the A0 paper actually presented the whole framework, which I could understand there, in that state-action model formulation. it was so clear. It can also be my lack of satisfaction a game tree being able to completely describe all the information of the game world (all the games, that contribute to all the node evaluation, where being part of a pair of players solo game tree of decisions to consider, or all the possible pair of players decisions tree combined). my problem.. one day I will surrender to game trees being all there is... for now I would rather start with the state space and the action Siamese space (it can be described in the state space), where all pairs of players of the universe would have to navigate, even if each have their own game trees, which in their instances once cranked in depth, don't care about other branches nodes from other paths.. (yet the evaluation backprop. of outcome data, well it cares about all the paths taken from the position being evaluated). just spilling my current guts about my fog. PUCT stands for Predictor + UCT meaning that LC0 uses a prediction (the policy of the neural network) to determine the value of a new node before choosing which node to append. I'm not sure I understand what you mean by "while using one node profiling of moves, maybe that current confidence interval among how moves successor evaluation differ is significant per such confidence estimator" so it would be nice if you could elaborate on that for me.

ideas are often at the base of research.. It does not fall from the sky. And often ideas hide under the rocks. Still not from the sky. I guess the computational view of research is looking a lot at the products and not at the hidden conceptual framework. There is a difference between development and research. Dear toad of the sky.

In development the result is the product. In research the question takes precedence in my developed opinion. How many discoveries, did need attention to the conceptual ambient framework, to be able to be seen.

Lasers, speed of light. Yes accidental, but how much so? They all required the ideas and questions, even if the answer was not the thesis sought, the framework built for such erroneous-in-hindsight was needed to be able to even realize it was there to be uncovered.

And now back to chess. closing that apparent detour.. This blog is about research. It needs to dissect and formalize its questions.. It is not yet a technology of the board, where instance outcomes averages would be enough to convince some of us.

Look at it as question research. maybe that is the inner mathematician talking to the inner physicist, and there might also be a biologist, able to look at complex questions too...

where does the computational scientist fit? I might not have that in my chorus.. (or it is on vacation, or it got pain in the neck and gave up).

Anyway, chess is far from having explicit formalisms. And my interest in this blog is about that.. This is some mutation in that direction.

ideas are often at the base of research.. It does not fall from the sky. And often ideas hide under the rocks. Still not from the sky. I guess the computational view of research is looking a lot at the products and not at the hidden conceptual framework. There is a difference between development and research. Dear toad of the sky. In development the result is the product. In research the question takes precedence in my developed opinion. How many discoveries, did need attention to the conceptual ambient framework, to be able to be seen. Lasers, speed of light. Yes accidental, but how much so? They all required the ideas and questions, even if the answer was not the thesis sought, the framework built for such erroneous-in-hindsight was needed to be able to even realize it was there to be uncovered. And now back to chess. closing that apparent detour.. This blog is about research. It needs to dissect and formalize its questions.. It is not yet a technology of the board, where instance outcomes averages would be enough to convince some of us. Look at it as question research. maybe that is the inner mathematician talking to the inner physicist, and there might also be a biologist, able to look at complex questions too... where does the computational scientist fit? I might not have that in my chorus.. (or it is on vacation, or it got pain in the neck and gave up). Anyway, chess is far from having explicit formalisms. And my interest in this blog is about that.. This is some mutation in that direction.

@Toscani said in #32:

en.wikipedia.org/wiki/Combinatorial_principles

Look within that article, figure linked below, the ambient space of it. The combinatorial can be about different things. The rules don't all have to be turn-by-turn only. I think there are emerging things that our small rational brain receptacle of the complexity out there could fathom or create a language for, that would stem from all those equally distant moves you are counting toward some autonomous definition of brilliant (probably close to an analogous notion of surprise, the sequence of distinct move decisions). The board is not just a graph of nodes and links. One can look at the characteristics of the links and link that to what we know without any math. that the board is laying flat on some table.. That is not about the thickness of the wooden or plastic pieces we move around. It is no coincidence, that the game of chess has been using a flat 2D board and kept insisting on making the basic 4 lines (horiz, vert, diag1, diag2) very salient by painting diagonal lines of different colors.

I agree and appreciate you wanting to put some order in the thinking here, I am just commenting on top that it might also apply at a level we have not been working hard on in chess theory, explicitly. We have been hiding such ideas as we all come to chess loaded with such spatial intuition, that it need not much saying. However, this blog (not "this watch", sorry popped up). "This blog" is not about constructing from branching proportions only. Although it could use that as another pair of goggles, linking this to scoring distributions profiles for max out PV # knobs of SF. This is a discussion space by the way, dear 2 @Toadofsky. Bathe in it. It is exotic to compiler expectations. I am sure op is happy for the stimulation, well I hope, I dare be pretentious that way.

I am also omitting mentally but not in writing, that this branching view is very local (in chess tempi), which is why I am talking about turn by turn above, I guess. That it may be computable for each chess position, what the branching degree is, but chess can be looked at from further, and not just the one player challenge, during the game, which is also that local view. To understand chess many games and make automatic definitions we do have to, under we go exhaustive during each and every game, because we only trust such evidence, we need to accept the statistical view due to big chess uncertainty. but random, is a vague word. Buried in any probability law other than the uniform over some bounded region we call legal for each position, there is some information that can be tied to the fact that chess has not local random transition logic (sorry for the precision and weird language, it computes though), but deterministic complete positon information transition logic. transition = full information move, move is so vague or vaguely toted or hand waved around.. that I can trust context for my point to be shared. New things lack the words maybe. and this is new to me.. what I write.. well. should I go back to my cave.. delete this post?

We can't keep making definitions one game at a time.. we need memory of all the games.. i.e. stastistics in its most abstract sense does it. Is it about using the many to understand the few, to generate shareable concepts, not enough in itself, it needs what you are posting about. Venn Diagram spatial logic. (hallf-kidding, that is where I think best, not in counting critters, but hey, big world...).

https://commons.wikimedia.org/wiki/File:Inclusion-exclusion.svg#/media/File:Inclusion-exclusion.svg

https://i.postimg.cc/RZbNS4wk/Inclusion-exclusion.png

@Toscani said in #32: > > en.wikipedia.org/wiki/Combinatorial_principles Look within that article, figure linked below, the ambient space of it. The combinatorial can be about different things. The rules don't all have to be turn-by-turn only. I think there are emerging things that our small rational brain receptacle of the complexity out there could fathom or create a language for, that would stem from all those equally distant moves you are counting toward some autonomous definition of brilliant (probably close to an analogous notion of surprise, the sequence of distinct move decisions). The board is not just a graph of nodes and links. One can look at the characteristics of the links and link that to what we know without any math. that the board is laying flat on some table.. That is not about the thickness of the wooden or plastic pieces we move around. It is no coincidence, that the game of chess has been using a flat 2D board and kept insisting on making the basic 4 lines (horiz, vert, diag1, diag2) very salient by painting diagonal lines of different colors. I agree and appreciate you wanting to put some order in the thinking here, I am just commenting on top that it might also apply at a level we have not been working hard on in chess theory, explicitly. We have been hiding such ideas as we all come to chess loaded with such spatial intuition, that it need not much saying. However, this blog (not "this watch", sorry popped up). "This blog" is not about constructing from branching proportions only. Although it could use that as another pair of goggles, linking this to scoring distributions profiles for max out PV # knobs of SF. This is a discussion space by the way, dear 2 @Toadofsky. Bathe in it. It is exotic to compiler expectations. I am sure op is happy for the stimulation, well I hope, I dare be pretentious that way. I am also omitting mentally but not in writing, that this branching view is very local (in chess tempi), which is why I am talking about turn by turn above, I guess. That it may be computable for each chess position, what the branching degree is, but chess can be looked at from further, and not just the one player challenge, during the game, which is also that local view. To understand chess many games and make automatic definitions we do have to, under we go exhaustive during each and every game, because we only trust such evidence, we need to accept the statistical view due to big chess uncertainty. but random, is a vague word. Buried in any probability law other than the uniform over some bounded region we call legal for each position, there is some information that can be tied to the fact that chess has not local random transition logic (sorry for the precision and weird language, it computes though), but deterministic complete positon information transition logic. transition = full information move, move is so vague or vaguely toted or hand waved around.. that I can trust context for my point to be shared. New things lack the words maybe. and this is new to me.. what I write.. well. should I go back to my cave.. delete this post? We can't keep making definitions one game at a time.. we need memory of all the games.. i.e. stastistics in its most abstract sense does it. Is it about using the many to understand the few, to generate shareable concepts, not enough in itself, it needs what you are posting about. Venn Diagram spatial logic. (hallf-kidding, that is where I think best, not in counting critters, but hey, big world...). https://commons.wikimedia.org/wiki/File:Inclusion-exclusion.svg#/media/File:Inclusion-exclusion.svg https://i.postimg.cc/RZbNS4wk/Inclusion-exclusion.png

not my fault. lichess does not relinquish graphic control to writers, not even in blog. so big tiles in our face. I am being shy suddenly with my vertical space footprint...

not my fault. lichess does not relinquish graphic control to writers, not even in blog. so big tiles in our face. I am being shy suddenly with my vertical space footprint...

@dboing said in #37:

ideas are often at the base of research.. It does not fall from the sky. And often ideas hide under the rocks. Still not from the sky. I guess the computational view of research is looking a lot at the products and not at the hidden conceptual framework. There is a difference between development and research. Dear toad of the sky.

Last time an "ideas person" offered to collaborate w/ me on research on this same topic (and I dropped work on all my other projects to help them), they quickly ghosted me. Research is hard.

@dboing said in #37: > ideas are often at the base of research.. It does not fall from the sky. And often ideas hide under the rocks. Still not from the sky. I guess the computational view of research is looking a lot at the products and not at the hidden conceptual framework. There is a difference between development and research. Dear toad of the sky. Last time an "ideas person" offered to collaborate w/ me on research on this same topic (and I dropped work on all my other projects to help them), they quickly ghosted me. Research is hard.