diff options
| author | tslil <tslil@posteo.de> | 2026-09-10 14:12:41 +0100 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-09-10 21:04:40 +0100 |
| commit | 220a4b79e4b6d742a9ca7c278a1962b870500fbc (patch) | |
| tree | ba527c7ec1feac91c5d59772c05fe9d32af6bdb8 /include/tak.h | |
| parent | 710d5a5225edb44d171ca9ac6345e9a61aa4f125 (diff) | |
credit Mitchell Riley: we can drop 65 parameters for about the same strength; also train for longer
The idea is that the current model is M_theta(board, ply) = "score for player 0", but we can instead create a different model M'_theta(board) = "score for player 0 assuming that it's player 0's move" and for a certain pair of functions sigma, normalise, recover M_theta(board, ply) = sigma(ply) M'_theta(normalise(board, ply)).
This pair of functions is sigma(ply) = +/- 1 (parity), and normalise being a conditional interchange of pieces on the board depending on the parity of the ply. The only things stopping this from being completely straightforward is that nn_train.py evaluates M'_theta itself so we need to pass sigma(ply) to the training loop.
6x6 is still untrained.
Diffstat (limited to 'include/tak.h')
| -rw-r--r-- | include/tak.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/include/tak.h b/include/tak.h index 324c41f..43dd1bd 100644 --- a/include/tak.h +++ b/include/tak.h @@ -55,8 +55,6 @@ typedef struct tak_state_s { enum WIN_TYPE won; enum COLOUR current_colour; uint8_t white_count, black_count, ply, board_size; - // incremental zobrist hash; maintained by action_take/action_undo and - // re-anchored at the search root (see zobrist.h) uint64_t hash; } *tak_state_p; |
