Een netwerk dat XOR leert
Een klein neuraal netwerk in je browser. Druk op start en kijk hoe het met backpropagation de gewichten bijstelt tot het XOR kan.
Stap 0, fout 0,2575.
De vier voorbeelden
| x1 | x2 | Doel | Uitvoer | Toon |
|---|---|---|---|---|
| 0 | 0 | 0 | 0,44 goed | |
| 0 | 1 | 1 | 0,38 nog fout | |
| 1 | 0 | 1 | 0,45 nog fout | |
| 1 | 1 | 0 | 0,39 goed |
Wat het netwerk denkt
De fout per stap
Wat is XOR
XOR is een regel met twee invoeren. De uitkomst is 1 als precies één van de twee 1 is.
| x1 | x2 | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Waarom één neuron het niet kan
Eén neuron rekent een gewogen som uit, z = x1·w1 + x2·w2 + b, en stopt die in een sigmoid. Alle invoeren waarvoor z precies 0 is, liggen op een rechte lijn. Aan de ene kant van die lijn is de uitvoer hoger dan 0,5, aan de andere kant lager.
Bij XOR liggen de twee enen schuin tegenover elkaar, op (0, 1) en (1, 0). Er bestaat geen rechte lijn die die twee scheidt van (0, 0) en (1, 1). Daarom zit er een verborgen laag tussen. Elk verborgen neuron trekt zijn eigen lijn, en het uitvoerneuron combineert die lijnen. In de kaart hierboven zie je dat terug: het gebied wordt een strook in plaats van een helft.
Hoe het leert
Elke stap gaat zo:
- Vooruit. Voor elk van de vier voorbeelden: gewogen som en sigmoid in de verborgen laag, daarna hetzelfde in het uitvoerneuron.
- De fout. Per voorbeeld
(uitvoer - doel)², gemiddeld over de vier. Dat is het getal in de grafiek. - Terug. Met de kettingregel wordt per gewicht uitgerekend hoe de fout verandert als dat gewicht een klein beetje groter wordt. Door een sigmoid heen is dat steeds
uitvoer · (1 - uitvoer). - Bijstellen. Elk gewicht schuift een klein stukje tegen die richting in:
gewicht = gewicht - leersnelheid · gradiënt.
Met "Eén stap" kun je één ronde bekijken. Met 2 verborgen neuronen blijft het netwerk soms hangen, afhankelijk van de startgewichten. Druk dan op "Opnieuw".