Jesper Nielsen (1) [Avatar] Offline

I was really excited about the publication of the Alpha Zero paper on using machine learning to play Chess, Shogi and Go!

Having previously implemented a standard Alpha Beta based Chess engine, I thought: "I want a machine learning Chess engine!"

And then this book arrives! Perfect!

I plan on programming along with the chapters as they are released, making simultaneously a Go engine and a Chess engine.

The first four chapters have been really good, and I am looking very much forward to the ones to follow!

I have a couple of comments after having read the first 4 chapters:

I noticed in your Zobrist implementation in chapter 3.5 that you represent the empty points as separate Zobrist values. This is not necessary.
You can omit them, and simply XOR a white stone value when a white stone is placed or removed etc.
That way the empty board is represented by a value of zero.

This will simplify the code a little bit.

Also you can represent the "side to move" as a special Zobrist value that you XOR on the combined value every time the side to move changes. That way you only need one set of frozen states.

Just a few thoughts! smilie

With kind regards,
KevinF (8) [Avatar] Online
Hi Jesper, thanks for your comments! Good point on the empty Zobrist codes, that's a good simplification.

We'd be very interested to hear about your progress adapting the techniques in the book to chess. Lots of interesting choices to make, like how to encode the board and moves, whether convolution layers or fully connected work better, etc.