build opening book by Rodent

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

Moderators: hgm, Rebel, chrisw

PK
Posts: 893
Joined: Mon Jan 15, 2007 11:23 am
Location: Warsza

build opening book by Rodent

Post by PK »

This is of course inspired by Uri's thread. Rodent isn't Stockfish, but it has very simple learning algorithm. Basically it saves root search scores to a file (deeper or same depth results overwrite shallower) and retrieves them at ply two only. This is meant to make score backpropagation a bit slower, so that alternatives get chance to be explored.

I'm going to use self-play, occasionally inserting new moves, trying to expand width of the forming tree. Time is roughly 3 hrs per game, which gives 6 minutes for first moves, and I take liberty to break games when I want. The first couple of runs went as follows:

Code: Select all

1: e2e4 e7e6 d2d4 d7d5 e4d5 e6d5 b1c3 g8f6 g1f3 0.16
2: d2d4 d7d5 c2c4 e7e6 b1c3 g8f6 c4d5 e6d5 0.12
3: d2d4 g8f6 g1f3 d7d5 c2c4 e7e6 c1g5 f8e7 b1c3 e8g8 e2e3 h7h6 g5h4 0.40 (but black played suboptimal a7a6?)
4: d2d4 e7e6 e2e4 d7d5 e4d5 e6d5 b1c3 g8f6 f1d3 0.12
5: d2d4 e7e6 g1f3 g8f6 e2e3 c7c5 c2c4 c5d4 e3d4 d7d5 0.12 
Scores are given from White's POV.

I especially like what happened 4th and 5th run. Rodent already learned that Exchange French is near equal, attempted to use it as a defence to 1.d4, then started to look for alternatives.
JJJ
Posts: 1346
Joined: Sat Apr 19, 2014 1:47 pm

Re: build opening book by Rodent

Post by JJJ »

Nice !
PK
Posts: 893
Joined: Mon Jan 15, 2007 11:23 am
Location: Warsza

Re: build opening book by Rodent

Post by PK »

It seems that reading learned scores only at ply 2 slows the process down considerably. It also has the side effect that Rodent opts for somewhat strange move orders, trying to avoid lines it has already learned. Anyhow, things converge towards semi-Tarrasch.

Code: Select all

d2d4 g8f6 c2c4 e7e6 b1c3 d7d5 g1f3 c7c5 c1g5 c5d4 f3d4 f8e7 c4d5 0.28
d2d4 e7e6 c2c4 g8f6 b1c3 d7d5 g1f3 c7c5 c1g5 f8e7 d4c5 e8g8 e2e3 0.36
d2d4 e7e6 c2c4 g8f6 b1c3 d7d5 c1g5 c7c5 g1f3 d5c4 e2e3 c5d4 0.16
d2d4 e7e6 e2e3 g8f6 g1f3 c7c5 c2c4 c5d4 e3d4 d7d5 b1c3 b8c6 c4d5 f6d5 f1d3 0.04
d2d4 e7e6 e2e3 g8f6 g1f3 c7c5 c2c4 c5d4 e3d4 d7d5 c4d5 e6d5 f1d3 0.16
d2d4 e7e6 e2e3 c7c5 c2c4 c5d4 e3d4 g8f6 b1c3 d7d5 g1f3 b8c6 a2a3
d2d4 e7e6 e2e3 d7d5 g1f3 g8f6 c2c4 c7c5 c4d5 e6d5 f1d3 c5c4? 0.12
d2d4 e7e6 e2e3 f8e7 g1f3 g8f6 c2c4 d7d5 f1e2 e8g8 e1g1 d5c4 b1c3 c7c5 e2c4 c5d4 e3d4 b8c6 0.04
d2d4 e7e6 e2e3 d7d5 g1f3 c7c5 c2c4 g8f6 c4d5 e6d5 b1c3 b8c6 h2h3 0.04
User avatar
gleperlier
Posts: 1033
Joined: Sat Feb 04, 2012 10:03 pm

Re: build opening book by Rodent

Post by gleperlier »

Nice :D
PK
Posts: 893
Joined: Mon Jan 15, 2007 11:23 am
Location: Warsza

Re: build opening book by Rodent

Post by PK »

Changing the learning algorithm and starting from clean slate I get the following:

Code: Select all

e2e4 e7e6 d2d4 d7d5 e4d5 e6d5 b1c3 g8f6 g1f3 a7a6
d2d4 g8f6 g1f3 e7e6 e2e3 c7c5 g1f3 c5d4 e3d4 d7d5 c4d5 f6d5 b1c3 b8c6 f1c4 d5f6
e2e4 e7e5 g1f3 g8f6 b1c3 b8c6 f1b5 f8b4 b5c6 d7c6 e1g1 e8g8 f1e1
d2d4 g8f6 g1f3 e7e6 c2c4 c7c5 e2e3 c5d4 e3d4 d7d5 b1c3 b8c6 c4d5 f6d5 f1d3 f8e7
e2e4 e7e5 g1f3 g8f6 f3e5 d7d6 e5f3 f6e4 d2d3 e4f6 d3d4 d6d5 b1c3 f8d6 f1d3
d2d4 g8f6 g1f3 e7e6 c2c4 c7c5 e2e3 c5d4 e3d4 d7d5 b1c3 b8c6 c4d5 f6d5 f1d3 f8d6 e1g1 e8g8 a2a3
d2d4 d7d5 g1f3 g8f6 c2c4 e7e6 b1c3 c7c5 c4d5 c5d4 f3d4 f6d5 d4b5 d8a5 e2e3 a7a6 c1d2 a6b5 c3d5 b5b4 BAD FOR WHITE
d2d4 g8f6 c2c4 b8c6 g1f3 e7e6 b1c3 d7d5 e2e3 f8e7 f1e2 BAD FOR BLACK
d2d4 g8f6 g1f3 e7e6 c2c4 g8f6 b1c3 c7c5 c4d5 c5d4 d1a4 b8d7 f3d4 f6d5 c3d5 e6d5
d2d4 g8f6 c2c4 e7e6 b1c3 d7d5 c1g5 c7c5?
g1f3 g8f6 c2c4 c7c5 b1c3 b8c6 e2e3 e7e6 d2d4 d7d5 c4d5 e6d5 f1e2 c5d4 f3d4 f8d6 a2a3 e8g8 e1g1 [1st move forced]
d2d4 e7e6 c2c4 g8f6 b1c3 d7d5 c1g5 c7c5?
there is much more variance, but again semi-Tarrasch rules and assesment of exchange Frechn as equal, but White's best option makes Rodent fond of 1.d4 e6 move order. Next question is: how fast will it unlearn ...c5 in reply to Bg5?

EDIT: just played d2d4 e7e6 c2c4 g8f6 b1c3 d7d5 c1g5 f8e7 :)