Der Lehrer von innen: Aufbau des Netzes der Breite 1536

Diesen Beitrag anhören19 Min.

Von KI aus dem Text dieses Beitrags erstellt und von der synthetischen Stimme „Sulafat“ gelesen; keine wörtliche Fassung, Fehler sind möglich.

Der Lehrer T1536w-K64-v1 ist ein Bewertungsnetz der Breite 1536. Was er im Spiel leistet, stand im Beitrag „Die Netze von Coherent: Hauptnetz, Lehrer und Kaskade“. Hier geht es um sein Inneres: aus welchen Teilen er besteht, wie die Drohmerkmale gebildet werden, wie aus einer Stellung ein Wert wird und wie die Engine das während der Suche rechnet. Jede Zahl stammt aus der Netzdatei, der Ganzzahl-Referenz, der Trainerdefinition, dem Quelltext der Engine mit Lehrernetz oder den Prüfberichten dazu, oder sie ist daraus gerechnet. Stand: 5. November 2026.

Kurz

Der Aufbau im Überblick

Schema: Je Sicht ergeben die Steinmerkmale (8 Königseimer mal 768, höchstens 32 aktiv) und die Drohpaare (86.808 Zeilen) zusammen mit dem Bias 1.536 Werte, geklemmt auf 0 bis 255. Beide Sichten, die Seite am Zug zuerst, ergeben 3.072 Werte; es folgen Schichten mit 64 und 64 Neuronen und 1 Ausgang. Die Ausgangssumme wird mit 138 multipliziert, durch (255 × 16.384) geteilt und zur Null hin abgeschnitten.
Aufbau des Lehrernetzes (Skizze)

Das Netz betrachtet jede Stellung zweimal, einmal aus Sicht der Seite am Zug und einmal aus Sicht der Gegenseite. Beide Sichten benutzen dieselben Gewichte. Jede Sicht summiert die Zeilen ihrer aktiven Merkmale zu 1.536 Werten, dem Akkumulator. Beide Akkumulatoren, die Seite am Zug zuerst, ergeben 3.072 Eingänge für den Kopf. Der Kopf hat 2 Schichten mit je 64 Neuronen und einen Ausgang. Am Ende steht ein Wert in Centipawn aus Sicht der Seite am Zug.

Im Namen steht T für Lehrer, 1536 für die Breite, w für „funktionserhaltend aus dem Vorgänger verbreitert“, K64 für die Breite des Kopfes und v1 für die erste Version.

Was das Netz sieht

Steine. Je Sicht gibt es 768 Steinmerkmale: eigen oder fremd, mal 6 Figurenarten, Könige eingeschlossen, mal 64 Felder. Jeder Stein schaltet genau ein Merkmal ein, in einer regulären Stellung also höchstens 32. Schwarz sieht das Brett senkrecht gespiegelt und mit vertauschten Farben.

Königseimer. Das Feld des eigenen Königs wählt einen von 8 Eimern. Jeder Eimer hat eigene 768 Zeilen für die Steine, zusammen 8 · 768 = 6.144 Steinzeilen. Steht der eigene König auf den Linien e bis h, rechnet diese Sicht alle Felder gespiegelt (a ↔ h). Die Eimertafel ist dieselbe wie im Hauptnetz.

Tafel der Königseimer aus Sicht einer Seite: Reihe 1: a, b, g, h Eimer 0, c bis f Eimer 1; Reihe 2: a, b, g, h Eimer 2, c bis f Eimer 3; Reihe 3 Eimer 4; Reihe 4 Eimer 5; Reihen 5 und 6 Eimer 6; Reihen 7 und 8 Eimer 7. Steht der König auf den Linien e bis h, wird gespiegelt.
Tafel der Königseimer (Skizze)

Was nicht eingeht. Rochaderechte, en passant, Halbzugzähler und Wiederholungen bekommt das Netz nicht. Wer am Zug ist, sieht es nur an der Reihenfolge der beiden Sichten.

Drohmerkmale: Paare aus Angreifer und Ziel

Ein Drohpaar besteht aus 4 Teilen: dem angreifenden Stein, seinem Feld, dem angegriffenen Feld und dem Stein, der dort steht. Ein Paar ist aktiv, wenn auf dem Zielfeld ein Stein steht und der Angreifer ihn erreicht. Gezählt wird die Angriffsgeometrie, unabhängig von Fesselungen und davon, wer am Zug ist. Für Läufer, Turm und Dame zählt je Richtung nur der erste Stein. Bauern zählen mit ihren Schlagfeldern, nicht mit dem Zug nach vorn. Der angegriffene Stein kann ein gegnerischer oder ein eigener sein. Ein Paar auf einen eigenen Stein ist eine Deckung.

Stellung Weiß Kg1, Td1, Lc4, Be4; Schwarz Kg8, Dd5, Sf6; Weiß am Zug. 11 aktive Paare, 7 auf gegnerische Steine, 4 auf eigene. Die schwarze Dame auf d5 wird von Bauer, Läufer und Turm angegriffen und vom Springer gedeckt.
Drohpaare einer Beispielstellung (berechnet)

In der Beispielstellung sind 11 Paare aktiv, 7 auf gegnerische Steine und 4 auf eigene:

AngreiferZielArt
Turm d1Dame d5Angriff
Läufer c4Dame d5Angriff
Bauer e4Dame d5Angriff
Dame d5Turm d1Angriff
Dame d5Läufer c4Angriff
Dame d5Bauer e4Angriff
Springer f6Bauer e4Angriff
Turm d1König g1Deckung
Dame d5König g8Deckung
Springer f6König g8Deckung
Springer f6Dame d5Deckung

Die schwarze Dame ist dreifach angegriffen und einfach gedeckt. Diese Beziehungen gehen als einzelne Paare direkt in die Eingänge ein; ohne Drohmerkmale sieht ein Netz nur, welcher Stein auf welchem Feld steht. In der Grundstellung sind es je Sicht 40 Paare, alle Deckungen.

Wie viele Zeilen. Jede Kombination aus Angreifer (12 Steine), Feld, erreichbarem Zielfeld auf leerem Brett und Zielstein bekommt eine eigene Zeile. Auf leerem Brett gibt es 7.504 Kombinationen aus Angreifer, Feld und Zielfeld; Bauern stehen dabei nie auf Reihe 1 oder 8. Auf jedem Zielfeld sind 12 Zielsteine möglich, auf Reihe 1 und 8 nur 10, weil dort keine Bauern stehen. 1.620 der Kombinationen haben ihr Zielfeld auf Reihe 1 oder 8:

12 · 7.504 − 2 · 1.620 = 86.808 Drohzeilen
Bauer: 1.960; Springer: 7.856; Läufer: 12.992; Turm: 20.608; Dame: 33.600; König: 9.792
Drohzeilen je Angreiferart (berechnet)

Fein und grob. Im Training hat jedes Paar zwei Zeilen: eine feine für genau dieses Paar und eine grobe für alle Paare mit derselben Farbe und Art von Angreifer und Zielstein auf demselben Zielfeld (2 · 6 · 2 · 6 · 64 = 9.216 grobe Zeilen). Beim Export werden beide addiert; die Engine kennt nur noch 86.808 zusammengelegte Zeilen. Die Drohzeilen hängen nicht vom Königseimer ab, wohl aber vom Spiegel: Die Felder eines Paars werden genauso gespiegelt wie die Felder der Steine. 12.166 der 86.808 Zeilen (14,0 %) sind nach dem Export ganz null.

Herkunft. Die Drohpaare gab es im Projekt schon vor dem Lehrer, in einem Forschungsnetz der Breite 768. Der Lehrer übernahm Paarregel und Anbindung in der Engine und verallgemeinerte sie auf andere Breiten und Köpfe. Eine viel kleinere Form von Drohmerkmalen beschrieb der Beitrag „Drohmerkmale: Zwischenstand zur kleinen Form D16“.

Die Rechnung in Formeln

Alle Werte sind ganze Zahlen. Für eine Sicht mit Königseimer e, aktiven Steinmerkmalen m und aktiven Drohpaaren p gilt für jedes der 1.536 Neuronen j:

a[j]  = clamp( b[j] + Σ_m W[e·768 + m][j] + Σ_p D[p][j], 0, 255 )
x     = ( a der Seite am Zug, a der Gegenseite )                 3.072 Werte
h2[k] = clamp( (c2[k] + Σ_i x[i] · V2[k][i]) >> 14, 0, 255 )      k = 1 … 64
h3[k] = clamp( (c3[k] + Σ_i h2[i] · V3[k][i]) >> 14, 0, 255 )     k = 1 … 64
Wert  = trunc( (c4 + Σ_i h3[i] · V4[i]) · 138 / (255 · 16.384) )  Centipawn
TeilEin → ausGewichteBias
Steinzeilen6.144 → 1.5369.437.1841.536
Drohzeilen86.808 → 1.536133.337.088–
Schicht 23.072 → 64196.60864
Schicht 364 → 644.09664
Ausgang64 → 1641

Zusammen sind das 142.976.705 Parameter, 99,86 % davon in der ersten Schicht. Das Hauptnetz hat mit Breite 768, ohne Drohzeilen und mit einem Kopf aus 16 und 32 Neuronen 4.744.529 Parameter.

Drohzeilen: 266,7 MB (93,3 %); Steinzeilen: 18,9 MB (6,6 %); Schicht 2: 0,39 MB (0,1 %); Rest: 0,01 MB (unter 0,1 %)
Speicher je Bestandteil (berechnet)

Der Ablauf in der Engine

Ablauf: Bei jedem Zug merkt sich die Suche nur Steinwechsel, Brett und Belegung. Wird bewertet, prüft die Engine zuerst den Wertspeicher; bei einem Treffer gilt der gespeicherte Wert. Sonst zieht sie beide Akkumulatoren vom letzten fertigen Halbzug nach: Hat eine Sicht Königseimer oder Spiegel gewechselt, wird sie neu aufgebaut, die Steine über den Auffrischspeicher, die Drohpaare vollständig; sonst werden Steinzeilen und die Drohpaare der betroffenen Angreifer abgezogen und addiert. Dann folgen Klemmen, Kopf und Skalierung, danach derselbe Code wie beim Hauptnetz; der Wert kommt in den Wertspeicher.
Ablauf einer Bewertung (Skizze)

Von Grund auf summiert eine Sicht bis zu 32 Steinzeilen und alle aktiven Drohzeilen, jede 1.536 Zahlen breit. Das tut die Engine nur in bestimmten Fällen; sonst schreibt sie fort.

Der schnellste Bau hat zwei weitere Hilfen. Ein Wertspeicher mit 65.536 Plätzen je Suchfaden merkt sich fertige Bewertungen; trifft eine Stellung, gilt der gespeicherte Wert, und Netz und Nachziehen entfallen. Die Drohzeilen in 8 Bit: Fast alle Zeilen passen ganz in −127 bis 127 und werden aus einer 8-Bit-Kopie gelesen, die halb so viel Speicher bewegt. Die übrigen tragen eine Marke und werden aus der 16-Bit-Tafel gelesen. In den Prüfungen änderte keine der beiden Hilfen einen Wert oder den Suchbaum.

Nach dem Netz geht der Wert denselben Weg wie beim Hauptnetz: Die Anpassung für das Lehrernetz ändert nur die Netzrechnung, den Wertspeicher und das kleinste zulässige Budget der Hash-Tabelle, nicht die Verarbeitung danach.

16 Bit reichen. Der Akkumulator liegt in 16-Bit-Zahlen. Damit die Summe mit den Drohzeilen dort sicher Platz hat, berechnet der Export für jedes Neuron konservative Grenzen der Zeilensumme ohne Bias, für Stellungen mit höchstens 32 Steinen, und legt einen festen Nullpunkt in ihre Mitte. Die Engine speichert die Summe minus Nullpunkt; nach diesen Grenzen bleibt der Betrag höchstens 9.524, die Grenze der 16-Bit-Zahl liegt bei 32.767. Nullpunkt und Eingangsbias kommen erst nach der Erweiterung auf 32 Bit hinzu. In der Prüfung mit 796.868 Suchknoten lag das gemessene Maximum bei 3.781.

Was es kostet. Die Netzdatei hat 285.953.780 Byte. Das Programm mit eingebettetem Netz und 8-Bit-Kopie hat 423 MB. In der ersten Tempomessung rechnete die Engine mit Lehrer 1,24 Millionen Knoten je Sekunde, dieselbe Engine mit Hauptnetz 3,46 Millionen; gemessen wurde an einem Bau, der sich nur in der Ausgabeskala unterschied. Zwei spätere Bauten wurden um 17,3 % und um weitere 11,7 % schneller, bei bitgleicher Bewertung.

Wie er trainiert wurde

Lernziel und Fehler je Stellung:

Ziel   = 0,5 · Ergebnis + 0,5 · sigmoid(Bewertung / 205)
Fehler = ( sigmoid(Netzausgang) − Ziel )²

Ergebnis ist der Partieausgang aus Sicht der Seite am Zug (1, 0,5 oder 0), Bewertung das Etikett der Suche in Centipawn.

Netzmittlerer Fehler auf der Prüfmenge
Hauptnetz0,015426
K2: Breite 768 ohne Drohzeilen, gleiche Daten0,014967
Lehrer0,013900
Lehrer mit abgeschalteten Drohzeilen0,020629

Gemessen auf allen 256.206.514 Zeilen der Prüfmenge. Für die Unterschiede Hauptnetz gegen K2, K2 gegen Lehrer und Hauptnetz gegen Lehrer liegen die einseitigen 99-%-Schranken (Bootstrap über die Datenpakete) jeweils deutlich über null. Schaltet man im fertigen Lehrer die Drohzeilen ab, wird sein Fehler größer als der des Hauptnetzes. Seine übrigen Gewichte wurden zusammen mit den Drohzeilen trainiert. Wie viel die Drohzeilen allein bringen, misst dieser Vergleich nicht.

Die Rundung auf ganze Zahlen änderte den mittleren Fehler in der Prüfung der Engine um 1,23 · 10^−5, von 0,013892 auf 0,013904.

Wie die Engine geprüft wurde

Was dieser Beitrag nicht sagt

Wie das geprüft wurde