Perceptronet: vektet sum og terskel
Byggesteinen er et nevron. Det vekter inputene, legger til en bias og får scoren ƒnevronets score:
Vektene sier hvor mye hver input teller og i hvilken retning, og biasen flytter hvor lett nevronet slår til. Scoren sendes så gjennom en aktiveringsfunksjon , og outputen er .
Det klassiske eksempelet er et perceptron. Det bruker en heaviside-funksjon som aktivering. Formelen ƒheaviside-funksjon er en trapp:
Outputen er altså en ren ja/nei-beslutning. Geometrisk er en rett linje, eller et hyperplan i flere dimensjoner, og perceptronet svarer 1 på den ene siden og 0 på den andre. Det er en lineær klassifikator, akkurat som logistisk regresjon, men med en hard terskel i stedet for en sannsynlighet.
Perceptronet lærer med ƒperceptronregelen: for hvert treningspunkt regner det ut og oppdaterer
Er svaret riktig, er , og ingenting skjer. Svarte det 0 når fasiten var 1, dyttes vektene i retning av , slik at scoren for dette punktet øker neste gang. Kan dataene skilles av en rett linje, finner regelen en slik linje etter et endelig antall oppdateringer. Kan de ikke det, slutter den aldri å flytte seg.
Prøv: Gå gjennom ett punkt om gangen: se hva perceptronet svarer, hvor stor feilen er og hvordan vektene og linja flytter seg. Fortsett til alle fire er riktige.
RegneeksempelVis at og gir AND, og gjør én perceptronoppdatering fra og med .Vis løsningSkjul løsning
Steg 1. Med gir scoren , og gir , og gir . Heaviside gir , som er AND.
Steg 2. Med gir scoren , så , men fasiten for AND er . Feilen er .
Steg 3. Oppdatering: og .
Steg 4. Nå gir scoren , altså riktig svar . Men gir og dermed feil svar . Regelen fortsetter med neste feil til alle fire punktene er riktige.
Et perceptron har , og læringsrate . Det predikerer hvis og ellers . Det får treningspunktet med fasit . Gjør én oppdatering med perceptronregelen. Hva blir scoren for det samme punktet etter oppdateringen? Oppgi svaret med én desimal.
Ett perceptronsteg
Gjør ett steg med perceptronregelen for etiketter . Perceptronet predikerer hvis og ellers, og oppdaterer så
Signatur: perceptron_steg(w, b, eta, x, y) returnerer (y_hat, w_ny, b_ny).
Inndata: på første linje, og på andre, på tredje og på fjerde.
Utdata: på første linje og de nye vektene etterfulgt av ny på andre, med fire desimaler. Koden under den låste linjen leser inndata og skriver utdata, så du fyller bare inn funksjonen.
Eksempel
Inndata:
1 -1
0 0.5
1 3
1
Utdata:
0
1.5000 0.5000 0.5000Utregning: , så og . Da blir og .