01 · Problem
Wofür braucht man das?
Ein dichtes neuronales Netz approximiert eine Funktion, indem es gewichtete Summen durch nichtlineare Aktivierungen schickt und Fehler rückwärts verteilt.
02 · Denkmodell
Das mentale Modell
Layer sind Matrizen statt rekursiver Objektgraphen. Forward erzeugt Aktivierungen; Backprop berechnet Deltas; ein Optimizer aktualisiert Gewichte und Biases.
Führt numerische Vorwärtsberechnung und gradientenbasiertes Lernen mit Formprüfungen aus. Das didaktische Sigmoid-Netz nutzt Gradienten des quadratischen Fehlers. Es ist kein Tensor- oder GPU-Framework.
03 · Kontrollfluss
Was passiert in welcher Reihenfolge?
- Eingabevektor auf erwartete Layerbreite prüfen.
- Pro Layer Matrix-Vektor-Produkt plus Bias berechnen und aktivieren.
- Loss zwischen Ausgabe und Ziel bestimmen.
- Deltas mit Ableitungen rückwärts durch die Layer propagieren.
- Gewichte und Biases um Learning-Rate mal Gradient aktualisieren.
04 · Bauteile
Die entscheidenden Verträge
Neuron / LayerRepräsentiert numerische Aktivierungen und gewichtete Verbindungen.Network.activate / trainBerechnet Vorwärtsausgaben und aktualisiert Parameter.toObject()Serialisiert Graph-IDs ohne Zyklen.05 · Selbst bauen
Selbst implementieren
Implementiere ein kleines numerisches Dense-Netz und beweise Lernen zunächst an XOR, bevor du Generics oder Graphen ergänzt.
- Speichere Gewichte als number[][] und Biases als number[] mit validierten Shapes.
- Implementiere Forward inklusive Aktivierung und bewahre Zwischenwerte für Backprop auf.
- Berechne Gradienten und aktualisiere Parameter mit einer expliziten Learning Rate.
type Layer = { weights: number[][]; biases: number[] };
function forward(input: number[], layers: Layer[]) {
const activations = [input];
for (const layer of layers) {
const previous = activations.at(-1) as number[];
const next = layer.weights.map((row, output) => {
const sum = row.reduce((value, weight, i) => value + weight * previous[i], 0);
return 1 / (1 + Math.exp(-(sum + layer.biases[output])));
});
activations.push(next);
}
return activations;
}06 · Verifizieren
Was solltest du testen?
- Forward eines kleinen Netzes stimmt mit handberechneten Werten überein.
- Numerischer Gradient und Backprop-Gradient liegen innerhalb einer engen Toleranz.
- XOR-Loss sinkt reproduzierbar unter einen festgelegten Wert.
Selbst ausprobieren
Formuliere die erste Prüfaussage als fehlschlagenden Test, implementiere die kleinste Korrektur und ergänze einen Grenzfall.
Forward eines kleinen Netzes stimmt mit handberechneten Werten überein.
Ansatz vergleichen
Dein Test sollte beim gezielten Verletzen der Invariante fehlschlagen und nach der Korrektur wieder bestehen. Halte den Aufbau deterministisch und prüfe ein beobachtbares Ergebnis.
07 · Grenzen
Kompromisse und Stolperfallen
- Objektgraphen sind anschaulich, Matrizen aber einfacher, schneller und serialisierbar.
- Math.random ohne Seed verhindert reproduzierbare Trainingsfehler.
- Ein Lernbeispiel ist keine produktive ML-Bibliothek; numerische Stabilität und Batching fehlen.
Das didaktische Sigmoid-Netz nutzt Gradienten des quadratischen Fehlers. Es ist kein Tensor- oder GPU-Framework.
08 · Weiterdenken
Quellcode und verwandte Ideen
yarn tsx packages/neuronal-network/examples/basic.ts