Demo's

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.

InvoerVerborgen laagUitvoerGewicht 0,25Gewicht -0,99Gewicht 0,05Gewicht 0,96Gewicht 0,94Gewicht -0,44Gewicht 0,99Gewicht -0,09Gewicht -0,020,00x11,00x20,32b 0,230,80b 0,440,36b -0,150,38b -0,72
positief gewichtnegatief gewichtdikker is een groter gewicht

De vier voorbeelden

x1x2DoelUitvoerToon
0000,44 goed
0110,38 nog fout
1010,45 nog fout
1100,39 goed

Wat het netwerk denkt

uitvoer boven 0,5uitvoer onder 0,5 Elk punt in het vlak is een invoer: x1 naar rechts, x2 naar boven. De stippen zijn de vier voorbeelden.

De fout per stap

10,10,010,0010,000103000 stappen

Wat is XOR

XOR is een regel met twee invoeren. De uitkomst is 1 als precies één van de twee 1 is.

x1x2XOR
000
011
101
110

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:

  1. Vooruit. Voor elk van de vier voorbeelden: gewogen som en sigmoid in de verborgen laag, daarna hetzelfde in het uitvoerneuron.
  2. De fout. Per voorbeeld (uitvoer - doel)², gemiddeld over de vier. Dat is het getal in de grafiek.
  3. 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).
  4. 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".