ARTIFICIELLA NEURALA NÄT MARCO KUHLMANN Institutionen för datavetenskap
Example Alt Bar Fri Hun Pat Price Rain Res Type Est WillWait 1 Yes No No Yes Some $$$ No Yes French 0 10 Yes 2 Yes No No Yes Full $ No No Thai 30 60 No 3 No Yes No No Some $ No No Burger 0 10 Yes 4 Yes No Yes Yes Full $ No No Thai 10 30 Yes 5 Yes No Yes No Full $$$ No Yes French >60 No 6 No Yes No Yes Some $$ Yes Yes Italian 0 10 Yes 7 No Yes No No None $ Yes No Burger 0 10 No 8 No No No Yes Some $$ Yes Yes Thai 0 10 Yes 9 No Yes Yes No Full $ Yes No Burger >60 No 10 Yes Yes Yes Yes Full $$$ No Yes Italian 10 30 No 11 No No No No None $ No No Thai 0 10 No 12 Yes Yes Yes Yes Full $ No No Burger 30 60 Yes
Klassificering Klassificering är en övervakad maskininlärningsuppgift som går ut på att tilldela ett indatum en klass. Exempel: Givet en situation, vilken aktion ska agenten utföra? Datamängden består av par (datum, klass). Exempel: (restaurangsituation, värd att vänta?) Under träningen ser systemet både datumet och dess klass. I testfasen ser systemet endast datumet och ska predicera klassen.
MNIST MNIST-databasen består av 70 000 handskrivna siffror (bilder) tillsammans med ett facit (rätt siffra) för varje bild.!! Hur bygger man ett system som tar in en bild och identifierar vilken siffra bilden föreställler?
Översikt Perceptroner Perceptroninlärning Sigmoid-neuroner Inlärning i neurala nät Backpropagation
Perceptroner
Perceptroner Perceptronen är en av de enklaste artificiella neuroner. Modellen utvecklades kring 1960 av den amerikanska psykologen och datalogen Frank Rosenblatt. Perceptronen är inspirerad av neurobiologiska arbeten, men är själv ingen neurobiologisk utan en datalogisk modell.
En neuron dendriter synapser med andra neuroner axon cellkropp
Kommunikation mellan neuroner Neuroner kan kommunicera via synapser, kopplingar mellan en sändande och en mottagande neuron. En neuron mottar signaler via dess dendriter. De mottagna signalerna ackumuleras i cellkroppen. Om den ackumulerade signalen är tillräckligt stor alstras en nervimpuls. Nervimpulsen alstrar signaler till andra neuroner.
Perceptron-modellen in-signal x 1 w 1 viktad koppling y ut-signal, aktivering x 2 w 2 1. Beräkna invärdet som den viktade summan av alla in-signaler. 2. Beräkna ut-signalen med en aktiveringsfunktion.
Stegfunktionen med tröskelvärde y 1 tröskelvärde 0 in
Exempel in-signal x 1 w 1 viktad koppling y ut-signal, aktivering x 2 w 2 in = w 1 x 1 + w 2 x 2 y = f(in) = f(w 1 x 1 + w 2 x 2 )
In-signaler och vikter som vektorer Vi modellerar in-signaler och vikter som vektorer. Med detta perspektiv är invärdet identisk med skalärprodukten av viktvektorn w och in-signalvektorn x: in = =
Bias istället för tröskelvärde med tröskelvärde y = 0 om 1 om w x w x > tröskelvärdet tröskelvärdet med bias b y = 0 om 1 om w x + b 0 w x + b > 0
Perceptron med bias 1 x 1 w 1 b bias y x 2 w 2 in = w 1 x 1 + w 2 x 2 + b y = f(in) = f(w 1 x 1 + w 2 x 2 + b)
Stegfunktionen y 1 0 in
Exempel: NAND Perceptron med w 1 = w 2 = 2 och b = 3 x1 x2 w1 x1 + w2 x2 + b y 0 0 0 1 1 0 1 1
Exempel: NAND Perceptron med w 1 = w 2 = 2 och b = 3 x1 x2 w1 x1 + w2 x2 + b y 0 0 3 1 0 1 1 1 1 0 1 1 1 1 1 0
Perceptroninlärning
Perceptroninlärning Perceptroner kan lära sig linjärt separerbara problem. Inlärningen går ut på att lära sig vikterna (= viktvektorn).
Förenkling För att beskriva inlärningsalgoritmerna bortser vi från bias; den kan modelleras som en extra insignal som alltid är på.
Inlärningsalgoritm Börja med att sätta w 0 (nollvektorn). För varje par (x, y*) i träningsmängden: 1. Beräkna utsignalen: y f(w x) 2. Uppdatera vikterna: w w + (y* y)x
Analys av inlärningsalgoritmen Fall 1: y* = y w w + 0 Vikterna förblir oförändrade. Fall 2: y* = 1, y = 0 Fall 3: y* = 0, y = 1 w w + x w w x Vikterna flyttas bort från träningsexemplet, i riktning mot guldstandarden.
Skalärprodukt w = (+1, +1) x = (+1, +1) w x = +2
Skalärprodukt w = (+1, +1) x = ( 1, 1) w x = 2
Skalärprodukt x = ( 1, +1) w = (+1, +1) w x = ±0
Skalärprodukt w w x > 0 w x < 0 w x ± 0
Korrekt klassificerat negativt exempel y y 0 0 w 0 1 1 0 1 1 x
Korrekt klassificerat positivt exempel y y 0 0 0 1 1 0 w 1 1 x
Felaktigt klassificerat negativt exempel y y 0 0 x 0 1 1 0 w 1 1 x
Felaktigt klassificerat negativt exempel y y 0 0 w 0 1 1 0 1 1 x
Felaktigt klassificerat positivt exempel y y 0 0 w 0 1 1 0 +x 1 1 x
Felaktigt klassificerat positivt exempel y y 0 0 0 1 1 0 w 1 1 x
Analys av inlärningsalgoritmen Fall 1: y* = y w w + 0 Vikterna förblir oförändrade. Fall 2: y* = 1, y = 0 Fall 3: y* = 0, y = 1 w w + x w w x Vikterna flyttas bort från träningsexemplet, i riktning mot guldstandarden.
Generalisering till flera klasser x 1 x 2 x 3 x 4 1. en perceptron för varje klass 2. ingen stegfunktion utdata är en vektor 3. predicerad klass = perceptron med högst aktivering
Generalisering till flera klasser x 1 a x 2 x 3 x 4 b c score(a) = w a x score(b) = w b x score(c) = w c x
Generalisering till flera klasser x 1 a x 2 x 3 x 4 b c score(a) = w a x score(b) = w b x score(c) = w c x
Generalisering till flera klasser x 1 a x 2 x 3 x 4 b c score(a) = w a x score(b) = w b x score(c) = w c x
Generalisering till flera klasser x 1 a x 2 x 3 x 4 b c score(a) = w a x score(b) = w b x score(c) = w c x
Generalisering till flera klasser x 1 a x 2 x 3 x 4 b c score(a) = w a x score(b) = w b x score(c) = w c x predicerad klass = argmax x score(x)
Inlärningsalgoritm Börja med att sätta w 0 (nollvektorn). För varje par (x, y*) i träningsmängden: 1. Beräkna utsignalen: y w x 2. Uppdatera vikterna: w w + (y* y)
Sigmoid-neuroner
Sigmoid-neuroner Sigmoid-neuroner har samma uppbyggnad som perceptroner, men en annan aktiveringsfunktion. De kan inte bara signalera 0 eller 1 som perceptroner, men godtyckliga reella tal i denna intervall.
Sigmoidfunktionen y 1 (in) = 1 1 + in 0 in
Jämförelse av aktiveringsfunktionerna y y 1 1 0 in 0 in stegfunktionen sigmoidfunktionen
Vad kan ett neuralt nät lära sig? perceptroner sigmoid-neuroner linjärt separerbart inte linjärt separerbart
Flerlagersnätverk indatalagret (input layer) utdatalagret (output layer) dolda lagret (hidden layer)
Ett enkelt flerlagersnätverk w 12 w 23 1 2 3 y 1 in 2 y 2 in 3 y 3
Ett enkelt flerlagersnätverk w 12 w 23 1 2 3 y 1 in 2 y 2 in 3 y 3 y 1 = x in 2 = w 12 y 1 y 2 = σ(in 2 ) in 3 = w 23 y 2 y 3 = σ(in 3 )
Inlärning i neurala nät
Grundidé Vid övervakad inlärning består träningsdatan av par (x, y*) där x är ett indatum och y* är målvärdet. Idé för en inlärningsalgoritm: Prova att ändra vikterna och testa om nätets utsignal kommer närmare målvärdet. Sigmoid-funktionens jämna form gör att små ändringar i vikterna resulterar i endast en liten ändring i utsignalen.
Att mäta hur mycket fel nätet gör Vi behöver kunna mäta hur bra vårt nät har lärt sig. För att göra detta mäter vi avvikelsen mellan målvärdet och nätets utsignal, dvs. hur mycket fel nätet gör. Ett konkret mått är mean squared error som kvantifiera felet för utsignalen y relativt till målvärdet y som () = 1 2 2
Mean squared error E y* y
Gradient descent: Intuition Vi vill ändra nätets vikter på ett sådant sätt att felet minimeras. Utan vidare information kan vi bara ändra vikterna på måfå och hoppas att felet blir mindre med tiden. Men om felfunktionen är snäll (deriverbar) så kan vi räkna ut dess gradient och gå i den riktningen.
Gradient descent: Intuition w 23 felets dal w 12
Gradient descent: Intuition w 23 felets dal gradient w 12
Gradient descent, matematiskt Om vi förflyttar oss en liten bit Δw 12 i w 12 -riktningen och en liten bit Δw 23 i w 23 -riktningen, då ändras felet E som så: 12 + 12 23 23 partiell derivata av E med avseende på w12
Gradient descent, matematiskt Gradient descent väljer Δw 12 och Δw 12 så att ΔE blir negativt, dvs. felet blir mindre över tiden:!! 12 = 12 23 = 23 Värdet η heter inlärningsparametern. Genom att höja eller sänka den kan man ta inflytande över hur stora steg gradient descent tar.
Hur man räknar ut gradienten w 23 E w 12
Hur man räknar ut gradienten w 23 E/ w 23 E/ w 12 w 12
Gradient descent Börja med en godtycklig viktvektor w. Upprepa följande steg tills felet blir tillräckligt litet: Givet den aktuella viktvektorn w, räkna ut E. Sätt den nya viktvektorn till w η E.
Stochastic gradient descent Vid gradient descent måste man gå över hela träningsdatan för att beräkna uppdateringen till vikterna. Vid stochastic gradient descent tar man ett datum i taget. En kompromiss är att dela upp data i små buntar (minibatches) och uppdatera efter att ha sett all data i en bunt.
Backpropagation
Backpropagation-algoritmen Backpropagation-algoritmen är en effektiv algoritm för att räkna ut gradienten E, vektorn med alla partiella derivator E/ w i.
Ett enkelt flerlagersnätverk w 12 w 23 1 2 3 y 1 in 2 y 2 in 3 y 3 y 1 = x in 2 = w 12 y 1 y 2 = σ(in 2 ) in 3 = w 23 y 2 y 3 = σ(in 3 )
Ett enkelt flerlagersnätverk w 12 w 23 y 1 σ σ E in 2 y 2 in 3 y 3 e x y Vi vill beräkna E/ w 12 och E/ w 23.
Kedjeregeln till hjälp Kedjeregeln för derivator ger oss följande ekvationer: = 3 in 3 23 3 in 3 23 = 3 in 3 2 in 2 12 3 in 3 2 in 2 12 Viktigt: Alla funktioner i nätet måste vara deriverbara! 3 = 3 3 in 3 = (in 3 )(1 (in 3 )) in 3 23 = 2 in 3 2 = 23
Backpropagation-algoritmen Forward pass: räkna ut alla invärden (in 2, in 3 ) och aktiveringar (y 2, y 3 ) Backward pass: räkna ut alla partiella derivata (använder forward-värdena)
Backpropagation-algoritmen Beräkningarna av de partiella derivatorna kan återanvända partiella derivator som räknats ut tidigare i backward pass. Man kan därför räkna ut gradienterna lager för lager, med utlagret som början. Detta är effektivt även för djupa nät. Beräkningstiden är linjär i antalet lager.
Översikt Perceptroner Perceptroninlärning Sigmoid-neuroner Inlärning i neurala nät Backpropagation