|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Introduktion till neurala nÀtverk: Perceptron
Quiz före förelÀsning
Ett av de första försöken att implementera nÄgot liknande ett modernt neuralt nÀtverk gjordes av Frank Rosenblatt frÄn Cornell Aeronautical Laboratory Är 1957. Det var en hÄrdvaruimplementation som kallades "Mark-1", designad för att kÀnna igen enkla geometriska figurer, sÄsom trianglar, kvadrater och cirklar.
![]() |
![]() |
Bilder frÄn Wikipedia
En inmatningsbild representerades av en 20x20 fotocellmatris, vilket innebar att det neurala nÀtverket hade 400 ingÄngar och en binÀr utgÄng. Ett enkelt nÀtverk innehöll en neuron, Àven kallad en tröskellogikenhet. Vikterna i det neurala nÀtverket fungerade som potentiometrar som behövde justeras manuellt under trÀningsfasen.
â En potentiometer Ă€r en enhet som gör det möjligt att justera motstĂ„ndet i en krets.
The New York Times skrev om perceptron vid den tiden: embryot till en elektronisk dator som [marinen] förvÀntar sig ska kunna gÄ, prata, se, skriva, reproducera sig sjÀlv och vara medveten om sin existens.
Perceptronmodell
Anta att vi har N funktioner i vÄr modell, vilket innebÀr att inmatningsvektorn skulle vara en vektor av storlek N. Ett perceptron Àr en modell för binÀr klassificering, det vill sÀga den kan skilja mellan tvÄ klasser av indata. Vi antar att för varje inmatningsvektor x kommer utgÄngen frÄn vÄrt perceptron att vara antingen +1 eller -1, beroende pÄ klassen. UtgÄngen berÀknas med formeln:
y(x) = f(wTx)
dÀr f Àr en stegaktiveringsfunktion
TrÀning av perceptron
För att trÀna ett perceptron behöver vi hitta en viktvektor w som klassificerar de flesta vÀrden korrekt, det vill sÀga resulterar i det minsta felet. Detta fel E definieras av perceptronkriteriet pÄ följande sÀtt:
E(w) = -âwTxiti
dÀr:
- summan tas över de trÀningsdatapunkter i som resulterar i fel klassificering
- xi Àr indata, och ti Àr antingen -1 eller +1 för negativa respektive positiva exempel.
Detta kriterium betraktas som en funktion av vikterna w, och vi behöver minimera det. Ofta anvÀnds en metod som kallas gradientnedstigning, dÀr vi börjar med nÄgra initiala vikter w(0), och sedan vid varje steg uppdaterar vikterna enligt formeln:
w(t+1) = w(t) - ηâE(w)
HĂ€r Ă€r η den sĂ„ kallade inlĂ€rningshastigheten, och âE(w) betecknar gradienten av E. Efter att vi har berĂ€knat gradienten fĂ„r vi:
w(t+1) = w(t) + âηxiti
Algoritmen i Python ser ut sÄ hÀr:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weights
Slutsats
I denna lektion lÀrde du dig om ett perceptron, som Àr en modell för binÀr klassificering, och hur man trÀnar det genom att anvÀnda en viktvektor.
đ Utmaning
Om du vill prova att bygga ditt eget perceptron, testa detta labb pÄ Microsoft Learn som anvÀnder Azure ML designer.
Quiz efter förelÀsning
Granskning & SjÀlvstudier
För att se hur vi kan anvÀnda perceptron för att lösa ett enkelt problem samt verkliga problem, och för att fortsÀtta lÀra dig - gÄ till Perceptron-notebook.
HÀr Àr en intressant artikel om perceptrons.
Uppgift
I denna lektion har vi implementerat ett perceptron för en binÀr klassificeringsuppgift, och vi har anvÀnt det för att klassificera mellan tvÄ handskrivna siffror. I detta labb ombeds du att lösa problemet med sifferklassificering helt och hÄllet, det vill sÀga att avgöra vilken siffra som mest sannolikt motsvarar en given bild.

