<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ctak/.gitignore, branch hybrid_rootstrap</title>
<subtitle>An implementation of Tak and a computer opponent in C</subtitle>
<id>https://git.l-3.space/ctak/atom/.gitignore?h=hybrid_rootstrap</id>
<link rel='self' href='https://git.l-3.space/ctak/atom/.gitignore?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>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>
<entry>
<title>TD(lambda), and a big rework</title>
<updated>2026-09-02T11:13:01Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-08-30T18:46:07Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=241156da6f35cb888253e6b8814e7b61a76b4fc7'/>
<id>urn:sha1:241156da6f35cb888253e6b8814e7b61a76b4fc7</id>
<content type='text'>
NOTE: 6x6 weights are as-yet untrained

On the performance side:
* switch from linked-list chaining hash table to direct mapping
* cache check_win by hash
* persist transposition tables across plies (this was a big deal and difficult to puzzle out)
* add align directives to the network floats
* prepare_nn_input gained a small LUT to avoid branching (i suppose you might call this 1D embedding)
* apply mtune=native for the native builds

On the correctness side:
* Zobrist has now includes the ply parity
* the network now predicts something in [-1, 1] using tanh (approximated by polynomials)
* the training object is now MSE because we're learning a value estimate
* use .clangd instead of compile_commands.json

On the training side:
* completely forgo human-derived data set
* implement td(lambda), self-play, tournaments
</content>
</entry>
<entry>
<title>fix longstanding negamax bug</title>
<updated>2026-05-05T21:16:39Z</updated>
<author>
<name>tslil</name>
<email>tslil@posteo.de</email>
</author>
<published>2026-05-05T21:06:02Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=696c3808220ea9d8c604939894a2d509f05cc4c6'/>
<id>urn:sha1:696c3808220ea9d8c604939894a2d509f05cc4c6</id>
<content type='text'>
we needed to be saving the alpha before the search loop in which we modified it. At this point, though i can't remember, i expect that this is the cause of whatever "instability" the comment was talking about that would have prevented us from using &gt;= in the TT lookup.
</content>
</entry>
<entry>
<title>new neural network arch (faster + better) &amp; minor changes + fixes</title>
<updated>2023-01-15T15:03:37Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2023-01-15T15:03:37Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=81213c273fd874aba95c45bd692e14079ebce434'/>
<id>urn:sha1:81213c273fd874aba95c45bd692e14079ebce434</id>
<content type='text'>
Gone is the convolutional neural network, for it turns out not only is
it more difficult to train, but all of the extra information about
board layers didn't make much of a difference at this size.

So cnn1986 has been replaced by nn1986, a standard, two-layer, dense
nn configured as a binary classifier and (mis)used in that capacity.
Note: total number of parameters is unchanged.

HARK: this new nn exposes a bug somewhere in ctak. Run ctlm with
self-play to see the completely borked board state at the end.
</content>
</entry>
<entry>
<title>Renamed binaries</title>
<updated>2021-02-05T19:02:36Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2021-02-05T19:02:36Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=ed070ebc252f6d6d392b51b3a836bd08965b3946'/>
<id>urn:sha1:ed070ebc252f6d6d392b51b3a836bd08965b3946</id>
<content type='text'>
</content>
</entry>
<entry>
<title>TEI interface working!</title>
<updated>2021-02-05T05:12:18Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2021-02-03T00:23:54Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=4f20d9fd63b6b3e30130c84c20f7cdbbbf2df76d'/>
<id>urn:sha1:4f20d9fd63b6b3e30130c84c20f7cdbbbf2df76d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>First steps towards character LCD</title>
<updated>2021-01-19T04:14:12Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2021-01-19T04:14:12Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=c99089f290e9cc8180d856e4150995107bc9f4e3'/>
<id>urn:sha1:c99089f290e9cc8180d856e4150995107bc9f4e3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Getting ready for cross compilation</title>
<updated>2021-01-19T01:19:18Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2021-01-19T01:19:18Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=ddc29d6bd8ff17123986bd5c36556c784476a8c7'/>
<id>urn:sha1:ddc29d6bd8ff17123986bd5c36556c784476a8c7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert "Starting work on MCU port"</title>
<updated>2021-01-18T02:06:04Z</updated>
<author>
<name>tslil clingman</name>
<email>tslil@posteo.de</email>
</author>
<published>2021-01-18T02:06:04Z</published>
<link rel='alternate' type='text/html' href='https://git.l-3.space/ctak/commit/?id=af3c5a9094d0c27bb49ec618f2a9a7af5f96f575'/>
<id>urn:sha1:af3c5a9094d0c27bb49ec618f2a9a7af5f96f575</id>
<content type='text'>
This reverts commit 43eec01361eb6174142180c29afef960e041514e.
</content>
</entry>
</feed>
