Van neuron tot taalmodel

Overzicht · het volledige boek

Van losse neuronen tot een echt taalmodel

Een boek in twee delen. Deel I bouwt deep learning op vanaf nul: de basisbegrippen, een netwerk dat leert optellen (met de volledige wiskunde en draaiende code), een groter netwerk voor vier bewerkingen, en de vragen die er echt toe doen — generaliseren en slimmer trainen. Deel II maakt daarna een echt taalmodel open, bestand en bytes en al, en vindt daarin precies dezelfde bouwstenen terug. Deel I met alle code in Java én Python en live demo's in je browser; Deel II in pure Java. Lees op volgorde, of spring naar wat je interesseert.

a b 10 invoer 2 × one-hot(5) ⋮ 16 verborgen ReLU 0 1 2 3 4 5 6 7 8 9 uitvoer softmax · sommen 0–8
Het eerste netwerk dat we bouwen — dat leert optellen. Twee getallen komen binnen als one-hot code (links), gaan door een verborgen laag (midden), en eruit komt een kans voor elke mogelijke som 0–8 (rechts). De gekleurde vlakken betekenen: elke laag is volledig verbonden met de volgende.
00 — het idee

Een netwerk dat zichzelf leert rekenen

De rode draad door het hele boek: we laten een netwerk een rekenregel zelf ontdekken door het de juiste antwoorden te tonen — precies zoals een netwerk in het echt taal, beelden of geluid leert. We bouwen op van klein naar groot: eerst de begrippen (De basis), dan een netwerk dat leert optellen, dan een complexer netwerk voor vier bewerkingen — en in Deel II een echt taalmodel van 494 miljoen parameters.

Rekenen met de getallen 0 tot en met 4 is daarvoor een ideaal speelveld: klein genoeg om volledig te begrijpen, en je kan elk antwoord meteen zelf controleren. Toch begint elk netwerk volledig blanco en moet het alles uit de voorbeelden halen.

01 — eerlijk vooraf

Een eerlijke kanttekening

Optellen is wiskundig gezien een makkelijke taak: het is “lineair”, en in principe zou een piepklein netwerkje al volstaan. We bouwen tóch een volwaardig netwerk mét verborgen laag, om een goede reden: het laat alle onderdelen van echt leren zien — codering van invoer, een verborgen laag, softmax, een verliesfunctie en backpropagatie — en het geeft je een patroon dat je daarna op moeilijkere problemen kan loslaten. De optelling is hier het lesvoorbeeld, niet het einddoel.

Heb je de begrippen neuron, laag, activatiefunctie of gradient descent nog niet scherp? Lees dan eerst De basis. Deze reeks bouwt daar rechtstreeks op voort.
02 — de route

Het pad, stap voor stap

Begin bij de basisbegrippen en werk van daaruit op. Je kan alles op volgorde lezen, of meteen naar een hoofdstuk springen dat je interesseert.

03 — het wordt complexer

Verder: van optellen naar vier bewerkingen

Klaar met optellen? Dan kan je zien wat er gebeurt als de taak moeilijker wordt. In deze vervolgreeks leert één netwerk niet één maar vier bewerkingen — optellen, aftrekken, vermenigvuldigen en (gehele) delen — en kijken we, met echte metingen, hoe en waarom het netwerk daarvoor moet groeien. De vorige hoofdstukken blijven gewoon staan; dit bouwt erop voort.

04 — beter leren

Generaliseren en slimmer trainen

Onze netwerken haalden 100% — maar op sommen die ze al kenden. De echte vraag van machine learning is of een netwerk ook werkt op wat het nooit zag. En daarna: kan het leren zelf sneller en slimmer?

05 — deel II · een echt taalmodel

Dezelfde bouwstenen, 494 miljoen keer

Alles tot hier was leerzaam speelgoed: netwerken van hooguit een paar duizend gewichten die we volledig konden overzien. In Deel II maken we een echt taalmodel open — Qwen2.5, een half miljard parameters, zoals het op een gewone computer draait — en ontdekken we dat er binnenin niets nieuws zit: gewichten in roosters, een uitvoerlaag die kansen over hokjes legt, en een lange rij geleerde getallen. Alleen de schaal is anders. Deze hoofdstukken horen bij het Q_LLM-project, dat zo'n model in pure Java nabouwt.

•

Het plan

Kan dit überhaupt, een taalmodel in pure Java? De haalbaarheidsstudie: wat de JDK meebrengt, de anatomie van zo'n programma, echte metingen op een echte MacBook, en het traject in zeven mijlpalen.

12

Het GGUF-bestand

Wat zit er in dat bestand van 379 MB dat "een taalmodel" heet? Laag voor laag opengemaakt, met de echte bytes: header, woordenschat, en 494 miljoen samengeperste gewichten.

13

De tokenizer

Hoe leest een taalmodel tekst? Byte-pair encoding vanaf nul: de samenvoegregels, het teken Ġ, waarom Nederlands 43% duurder is dan Engels — en waarom een model de letters van een woord niet ziet.

14

De forward pass

De motor zelf: hoe één token door 24 blokken stroomt en een kansverdeling wordt. Aandacht, RoPE, de KV-cache — en het bewijs: 8 van 8 reeksen exact gelijk aan llama.cpp — sinds de Vector API-kernen aan 36 tokens per seconde.

15

De chat

Sampling (temperatuur, top-k, top-p), het echte gesprekssjabloon uit het bestand, en een geheugen dat over de beurten blijft staan. Bewijs: 4 van 4 gesprekken woord voor woord gelijk aan llama.cpp — "Your name is Willy."

16

De proef: Qwen3.8

Naschrift: twee dagen na de release wordt de toolchain losgelaten op Qwen3.8-27B. De lader en de tokenizer reizen mee (296 van 296 tokenreeksen gelijk aan de HuggingFace-referentie); de motor weigert — om de goede reden.

17

De agent

Het model gaat aan het werk: het bouwt een HTML-pagina met gereedschap, automatische controles na elke stap, en een poortwachter die pas "klaar" zegt als alles groen is. Gemeten les: bij een half miljard parameters gaat bouwen maar verbouwen niet; bij drie miljard kantelt dat — en de betrouwbaarheid zit in beide gevallen in de lus.

18

De tweede motor

De weigering van hoofdstuk 16 wordt opgeheven: de hybride Gated DeltaNet-graf van Qwen3.5/3.8 draait nu in pure Java — een geheugenmatrix van vaste grootte die per token leert van zijn fout. Bewijs: 8 van 8 greedy reeksen identiek aan llama.cpp.

06 — wat je nodig hebt

Om mee te doen

Voor de code heb je Java (versie 11 of nieuwer) of Python 3 nodig — beide versies staan volledig uitgewerkt, je hoeft niets anders te installeren. Voor de live demo heb je enkel deze pagina's en een moderne browser nodig — daar draait alles in JavaScript, geen installatie. Voor Deel II volstaat een recente JDK (22 of nieuwer) en de map code/ die bij dit boek zit, hieronder ook als zip te downloaden: daarmee draai je de GGUF-lezer, de tokenizer én het model zelf — hoofdstuk 15 eindigt met een echte chat op je eigen machine. Voor dat pratende model heb je daarnaast een Qwen2.5-GGUF-bestand nodig; gebruik je ollama, dan staat het er al.

07 — colofon

Over dit boek

Een doorlopend leerproces

Deep learning leer je niet op één avond. Het is een doorlopend proces: begrippen vallen vaak pas na de tweede of derde keer op hun plek, en elk nieuw voorbeeld scherpt het inzicht verder aan. Dit boek is in dat licht bedoeld als een groeiend geheel. Deel I is volledig uitgewerkt met Claude Opus 4.8; Deel II — het echte taalmodel — kwam er later bij met Claude Opus 5, samen met een redactieronde over het geheel. Alle metingen en programma-uitvoer in dit boek zijn echt en nagerekend.

En daarin zit meteen de kern: dit toont hoe AI een leerproces kan versterken. Niet om het eigen denkvermogen te vervangen, maar om het te vergroten — als een geduldige hulp die moeilijke stof helder maakt, voorbeelden uitwerkt en code laat draaien, terwijl het begrijpen, de keuzes en de nieuwsgierigheid bij de mens blijven. De mens stuurt, de AI versnelt.

Concept en richting: Willy Poelmans  ·  uitwerking: Claude Opus 4.8 & Opus 5 (Anthropic)