From f6ea541ce762b190c7d68f221a24b555ebf0c80b Mon Sep 17 00:00:00 2001 From: tslil Date: Sat, 5 Sep 2026 09:54:11 +0100 Subject: training rework, best weights so far* After quite a bit of experimentation it would appear that a far better way to train on self-play data in this setup is to randomise not the moves but the opening. The new selfplay and match binaries have lost the epsilon parameter and now play a random opening of some length before switching to pure, deterministic engine inference. This also resulted in a cleanup of nn_train.py. As an added bonus, in this configuration it makes sense to harvest training data from both sides in self-play and consequently the two sides are given distinct game ids (this was almost surely an oversight in the original version of TD(lambda) that i had). I also noticed that rand32 was not using the top 32bits of xorshitf*. *Under default settings nn_train.py produces a 5x5 weight set that doesn't lose a single game to any other cttei that i cared to look at, when measured using `racetrack` (which has a diverse balanced opening book). --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 37f8428..0060fb9 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ clean: rm -f src/*.o include/*.o native: CFLAGS += $(NATIVE_FLAGS) -native: clean ctlm cttei geminict +native: ctlm cttei geminict .PHONY: selfplay selfplay: -- cgit v1.3.1