lichess.org
Donate

The Lichess Game Compressor's Analysis of Game 1

Yes, too much compression. It was not trolling as perhaps tongue in cheek. Going through the hypothesis and its consequences without spoiling it at the beginning that the conclusion was losing fine grain of chess.

I still have no clue about the bits and entropy (information theory, not physics) in terms of bits.. maybe i should find out. The information definition there. is it move chess or position chess, that is informative. And then sequential surprise or positional "entropy" or "information". looking again...

So this is about best move distributions. That kind of information. Trained on many games of what nature? I will guess high level games, those would reduce the uniform policy to high-level policies (very peaked).

Well, that is definitely imitation learning. Not enough patzer games in there. No logic of the board in there.

All the suboptimal hidden chess, is missing. That is what is not played in those games. But that is what needs to be learned. High-level chess is lots of pruning over the years.

And yet, that is how the tradition goes about learning chess from high level best chess. (well, a good part of it, as a caricature). But somehow here it is buried in bits and entropy notions.

Am I completely off base here?
@Chjabr0010 this is how it works: "We're trying to map moves to small integers. The first bit of chess knowledge we're going to use is move legality. [...] We could stop here, if we were satisfied with 1 byte per move [...] By ordering the candidate moves sensibly we can ensure that smaller indexes are picked on average. [...] If available, pawn promotions are more likely to be played than other moves. Prefer captures. Valuable pieces are rarely moved onto squares defended by pawns [the penalty is largest for the queen and lowest for another pawn]. Usually moves make sense positionally [...] We use a piece-square table ripped out of a chess engine. [...] details. Break ties lexicographically". (lichess.org/@/lichess/blog/developer-update-275-improved-game-compression/Wqa7GiAA)

Nb2 looks particularly bad to the compressor because the knight is on the side.
@thibault said in #2:
> Very cool post :)
>
>
>
> I like that too! Is the code available by any chance?

Thank you (for both the kind words and this wonderful website).

I dug up the code and put it here (in the compressor-bot branch): github.com/mcognetta/lichess-bot/tree/compressor-bot

For anyone else interested in running this:

- clone the repo
- add your bot key to `config.yml.default` (where it says `"xxxxxxxxxxxxxxxxxxxxxxx"`)
- run `python lichess-bot.py -v`
- challenge your bot

I have it set on no search right now so it just picks the highest scoring move according to the compression function and plays that. I implemented AB search for it, but it doesn't really do much to improve the strength haha. You can change that by editing the `MAX_DEPTH` variable on line ~200 of strategies.py.

The compression function values captures more than anything but promotions, so it basically sacrifices pieces whenever possible.
> Trained on millions of games, the Lichess compression model converts moves to bits depending on how good they are.

What about the games then. The previous explanation seem to be about move ordering, so if I am understanding it would be within and exhaustive search engine. Or is that a prior on some other type of training from some game set. The policy being coerced somehow to value the previous mode types.

So, I am lost between the "training" and the moves and the bits and the "how good" source of informationh.

in fact in most chess engine stuff I always get lost in the overall flow of information between the board itself, the knowledge, and the developper assumptions "hard-wired".

It might be just me not getting move chess in general. or not having tried hard enough.. I find there is missing context.

But interesting, potentially, nonetheless.