|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Einführung in Neuronale Netzwerke: Perzeptron
Quiz vor der Vorlesung
Einer der ersten Versuche, etwas Ähnliches wie ein modernes neuronales Netzwerk zu implementieren, wurde 1957 von Frank Rosenblatt vom Cornell Aeronautical Laboratory unternommen. Es handelte sich um eine Hardware-Implementierung namens "Mark-1", die darauf ausgelegt war, primitive geometrische Figuren wie Dreiecke, Quadrate und Kreise zu erkennen.
![]() |
![]() |
Bilder von Wikipedia
Ein Eingabebild wurde durch ein 20x20-Fotodiodenarray dargestellt, sodass das neuronale Netzwerk 400 Eingaben und einen binären Ausgang hatte. Ein einfaches Netzwerk enthielt einen Neuron, auch Schwellenwert-Logikeinheit genannt. Die Gewichte des neuronalen Netzwerks fungierten wie Potentiometer, die während der Trainingsphase manuell eingestellt werden mussten.
✅ Ein Potentiometer ist ein Gerät, das es dem Benutzer ermöglicht, den Widerstand eines Stromkreises anzupassen.
Die New York Times schrieb damals über das Perzeptron: der Embryo eines elektronischen Computers, von dem [die Marine] erwartet, dass er laufen, sprechen, sehen, schreiben, sich selbst reproduzieren und sich seiner Existenz bewusst sein wird.
Perzeptron-Modell
Angenommen, wir haben N Merkmale in unserem Modell, in diesem Fall wäre der Eingabevektor ein Vektor der Größe N. Ein Perzeptron ist ein Modell zur binären Klassifikation, d.h. es kann zwischen zwei Klassen von Eingabedaten unterscheiden. Wir nehmen an, dass für jeden Eingabevektor x die Ausgabe unseres Perzeptrons entweder +1 oder -1 ist, je nach Klasse. Die Ausgabe wird mit der Formel berechnet:
y(x) = f(wTx)
wobei f eine Stufenaktivierungsfunktion ist.
Training des Perzeptrons
Um ein Perzeptron zu trainieren, müssen wir einen Gewichtsvektor w finden, der die meisten Werte korrekt klassifiziert, d.h. den kleinsten Fehler ergibt. Dieser Fehler E wird durch das Perzeptron-Kriterium wie folgt definiert:
E(w) = -∑wTxiti
wobei:
- die Summe über die Trainingsdatenpunkte i genommen wird, die zu einer falschen Klassifikation führen
- xi die Eingabedaten sind und ti entweder -1 oder +1 für negative bzw. positive Beispiele ist.
Dieses Kriterium wird als Funktion der Gewichte w betrachtet, und wir müssen es minimieren. Oft wird eine Methode namens Gradientenabstieg verwendet, bei der wir mit einigen Anfangsgewichten w(0) beginnen und die Gewichte bei jedem Schritt gemäß der Formel aktualisieren:
w(t+1) = w(t) - η∇E(w)
Hier ist η die sogenannte Lernrate, und ∇E(w) bezeichnet den Gradienten von E. Nachdem wir den Gradienten berechnet haben, erhalten wir:
w(t+1) = w(t) + ∑ηxiti
Der Algorithmus in Python sieht wie folgt aus:
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
Fazit
In dieser Lektion haben Sie etwas über das Perzeptron gelernt, ein Modell zur binären Klassifikation, und wie man es durch die Verwendung eines Gewichtsvektors trainiert.
🚀 Herausforderung
Wenn Sie versuchen möchten, Ihr eigenes Perzeptron zu erstellen, probieren Sie dieses Lab auf Microsoft Learn aus, das den Azure ML Designer verwendet.
Quiz nach der Vorlesung
Rückblick & Selbststudium
Um zu sehen, wie wir das Perzeptron verwenden können, um ein Spielzeugproblem sowie reale Probleme zu lösen, und um weiter zu lernen, gehen Sie zum Perceptron-Notebook.
Hier ist ein interessanter Artikel über Perzeptrons.
Aufgabe
In dieser Lektion haben wir ein Perzeptron für eine binäre Klassifikationsaufgabe implementiert und es verwendet, um zwischen zwei handgeschriebenen Ziffern zu klassifizieren. In diesem Lab sollen Sie das Problem der Ziffernklassifikation vollständig lösen, d.h. bestimmen, welche Ziffer am wahrscheinlichsten zu einem gegebenen Bild gehört.

