|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Introductie tot Neurale Netwerken: Perceptron
Pre-lecture quiz
Een van de eerste pogingen om iets te implementeren dat lijkt op een modern neuraal netwerk werd in 1957 gedaan door Frank Rosenblatt van het Cornell Aeronautical Laboratory. Het was een hardware-implementatie genaamd "Mark-1", ontworpen om primitieve geometrische figuren te herkennen, zoals driehoeken, vierkanten en cirkels.
![]() |
![]() |
Afbeeldingen van Wikipedia
Een invoerafbeelding werd weergegeven door een 20x20 fotocelarray, waardoor het neurale netwerk 400 ingangen had en één binaire uitvoer. Een eenvoudig netwerk bevatte één neuron, ook wel een drempelloogica-eenheid genoemd. De gewichten van het neurale netwerk fungeerden als potentiometers die handmatig moesten worden aangepast tijdens de trainingsfase.
✅ Een potentiometer is een apparaat waarmee de gebruiker de weerstand van een circuit kan aanpassen.
De New York Times schreef destijds over de perceptron: het embryo van een elektronische computer die [de marine] verwacht te kunnen laten lopen, praten, zien, schrijven, zichzelf reproduceren en zich bewust zijn van zijn bestaan.
Perceptronmodel
Stel dat we N kenmerken in ons model hebben, in welk geval de invoervector een vector van grootte N zou zijn. Een perceptron is een model voor binaire classificatie, wat betekent dat het onderscheid kan maken tussen twee klassen van invoergegevens. We gaan ervan uit dat voor elke invoervector x de uitvoer van ons perceptron ofwel +1 of -1 is, afhankelijk van de klasse. De uitvoer wordt berekend met de formule:
y(x) = f(wTx)
waarbij f een stap-activatiefunctie is
Het trainen van de Perceptron
Om een perceptron te trainen, moeten we een gewichtenvector w vinden die de meeste waarden correct classificeert, oftewel resulteert in de kleinste fout. Deze fout E wordt gedefinieerd door het perceptroncriterium op de volgende manier:
E(w) = -∑wTxiti
waarbij:
- de som wordt genomen over die trainingsdatapunten i die resulteren in een verkeerde classificatie
- xi de invoergegevens zijn, en ti ofwel -1 of +1 is voor respectievelijk negatieve en positieve voorbeelden.
Dit criterium wordt beschouwd als een functie van de gewichten w, en we moeten het minimaliseren. Vaak wordt een methode genaamd gradient descent gebruikt, waarbij we beginnen met enkele initiële gewichten w(0), en vervolgens bij elke stap de gewichten bijwerken volgens de formule:
w(t+1) = w(t) - η∇E(w)
Hierbij is η de zogenaamde leersnelheid, en ∇E(w) de gradiënt van E. Na het berekenen van de gradiënt krijgen we:
w(t+1) = w(t) + ∑ηxiti
Het algoritme in Python ziet er als volgt uit:
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
Conclusie
In deze les heb je geleerd over een perceptron, een model voor binaire classificatie, en hoe je het kunt trainen met behulp van een gewichtenvector.
🚀 Uitdaging
Als je zelf een perceptron wilt bouwen, probeer dan deze lab op Microsoft Learn, die gebruikmaakt van de Azure ML designer.
Post-lecture quiz
Herziening & Zelfstudie
Om te zien hoe we een perceptron kunnen gebruiken om een eenvoudig probleem en ook echte problemen op te lossen, en om verder te leren - ga naar het Perceptron notebook.
Hier is ook een interessant artikel over perceptrons.
Opdracht
In deze les hebben we een perceptron geïmplementeerd voor een binaire classificatietaak, en we hebben het gebruikt om onderscheid te maken tussen twee handgeschreven cijfers. In deze lab wordt je gevraagd om het probleem van cijferclassificatie volledig op te lossen, oftewel te bepalen welk cijfer het meest waarschijnlijk overeenkomt met een gegeven afbeelding.

