<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ctak/src/nn_train.py, branch hybrid_rootstrap</title>
<subtitle>An implementation of Tak and a computer opponent in C</subtitle>
<id>https://git.l-3.space/ctak/atom/src/nn_train.py?h=hybrid_rootstrap</id>
<link rel='self' href='https://git.l-3.space/ctak/atom/src/nn_train.py?h=hybrid_rootstrap'/>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/'/>
<updated>2026-09-25T15:18:21Z</updated>
<entry>
<title>factor out nn_train.py into a separate python project to make it more manageable, add plotting and offline strength fit</title>
<updated>2026-09-25T15:18:21Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-25T13:46:31Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=61e5b8949b2f5e8973c58f0dcc7c20c4bdade029'/>
<id>urn:sha1:61e5b8949b2f5e8973c58f0dcc7c20c4bdade029</id>
<content type='text'>
</content>
</entry>
<entry>
<title>try combining loops</title>
<updated>2026-09-20T07:29:22Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-20T07:28:09Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=6a2197328065fe38ac62d9e76e3e943fd297e73c'/>
<id>urn:sha1:6a2197328065fe38ac62d9e76e3e943fd297e73c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>transposing the weights gives ~2.5x speedup</title>
<updated>2026-09-19T19:32:46Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-19T19:24:08Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=9f5f953a95c8617cd2fdd24f7402af632c1b07c2'/>
<id>urn:sha1:9f5f953a95c8617cd2fdd24f7402af632c1b07c2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>big refactor</title>
<updated>2026-09-19T18:23:34Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-19T08:59:29Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=fe7268110d93e2abe4d4b51ac64e83521a8d6382'/>
<id>urn:sha1:fe7268110d93e2abe4d4b51ac64e83521a8d6382</id>
<content type='text'>
* use elo
* optionally train on only diagonal
* train-inference nonlinearity alignment
</content>
</entry>
<entry>
<title>grid search</title>
<updated>2026-09-18T20:19:33Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-18T14:12:13Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=3f918be9b31026ae546f66c565b9494dab6d82a2'/>
<id>urn:sha1:3f918be9b31026ae546f66c565b9494dab6d82a2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>working towards hybrid rootstrap</title>
<updated>2026-09-18T14:12:19Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-17T06:01:29Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=0dba02072e9a89e35885d9078c0c8b58956448ce'/>
<id>urn:sha1:0dba02072e9a89e35885d9078c0c8b58956448ce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>move data generation into the epoch loop</title>
<updated>2026-09-13T19:15:31Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-12T18:37:56Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=7f1566fb21dfe8c99bc770885cc2cc4e478e16b4'/>
<id>urn:sha1:7f1566fb21dfe8c99bc770885cc2cc4e478e16b4</id>
<content type='text'>
Previously we would spend all of the training epochs on making the network a better predictor of the *initial* TD-leaf values that we computed before the start of the first epoch. There's definitely something stale about this, given that the TD-leaf training targets involved the net evaluation at PVs. I'm not overly confident that this makes sense, but as a kind of compromise between fully on-line TD-leaf and the fully stale version we had before, we now recompute the TD-leaf values in each epoch with the fine-tuned net instead of the epoch 0 net.

Perhaps we were just lucky, but this seems to train a strong network under the default setting.

More experimentation is required.
</content>
</entry>
<entry>
<title>still observing non-monotonic improvements between training generations</title>
<updated>2026-09-12T14:54:20Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-12T14:51:16Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=f3ed463e8a215b0ca3219aebbb14c4a7073a0f9f'/>
<id>urn:sha1:f3ed463e8a215b0ca3219aebbb14c4a7073a0f9f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>flood fill for roads, fix dragon, memoise leaf eval, enable diagonal in nn_train.py</title>
<updated>2026-09-12T14:47:15Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-11T17:36:10Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=a361728f39812e25599323c52510c0eb3131bd90'/>
<id>urn:sha1:a361728f39812e25599323c52510c0eb3131bd90</id>
<content type='text'>
</content>
</entry>
<entry>
<title>move from single candidate td-leaf with gating to tournament of a population</title>
<updated>2026-09-11T16:00:18Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-09-11T11:56:12Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=6e90f1145b2c5c0f2dcc82d21ec45432274b8cad'/>
<id>urn:sha1:6e90f1145b2c5c0f2dcc82d21ec45432274b8cad</id>
<content type='text'>
The goal in this change was to overcome the rock-paper-scissors phenomenon that was happening in capability space by having on a single candidate learn to beat the most recent version of itself. In some sense this lead to rotating around in capability space instead of chasing monotonic improvements.

I hope that flipping to a system in which many (N=5) candidates play each other and learn from their own set of diverse games in this pool, combined with --replay-iters, will lead to a given network having to have a much more comprehensive understanding of the space of tactics. I haven't yet had time to train this thorougly, will run those experiments on my desktop computer.
</content>
</entry>
</feed>
