Meine ersten versuche an einem neural network (°_°)
Meine Idee mit dem Projekt ist ein einfaches neuronales Netzwerk zur Lösung des klassischen XOR-Problems. Das XOR-Problem ist eine grundlegende Herausforderung im Bereich des maschinellen Lernens, da es nicht linear separierbar ist und somit die Grenzen eines einfachen Perzeptrons aufzeigt. Hier verwenden wir ein mehrschichtiges neuronales Netzwerk (MLP), das aus einer versteckten Schicht besteht, um das Problem zu lösen.
Das Netzwerk wird von Grund auf in Python erstellt, unter Verwendung von numpy für numerische Berechnungen.
Bildliche darstellung:
Das XOR-Problem besteht darin, die Ausgabe einer exklusiven Oder-Operation (XOR) zu modellieren:
| Input x1 | Input x2 | Zielausgabe (y) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
- Eingabeschicht: 2 Neuronen (entspricht den Eingaben x1 und x2).
- Versteckte Schicht: 2 Neuronen mit Sigmoid-Aktivierung.
- Ausgabeschicht: 1 Neuron mit Sigmoid-Aktivierung.
Sigmoid Funtktion (σ) :
Diese Funktion transformiert die kontinuierliche reelle Zahl in einen Bereich von (0, 1).
Ableitung der Sigmoid Funktion (σ) :
Die Ableitung der Sigmoid-Funktion gibt an, wie empfindlich die Sigmoid-Funktion in einem bestimmten Punkt auf Änderungen ihrer Eingabe reagiert.
Das Netzwerk berechnet die Ausgabe wie folgt:
-
Vorwärtsdurchlauf (Forward Pass):
-
Berechnung der gewichteten Summe in der versteckten Schicht:
= (X * W) +B -
Aktivierung der versteckten Schicht mit Sigmoid Funktion:
H = σ ((X * W) + B) -
Berechnung der gewichteten Summe in der Ausgabeschicht:
Y-input = (H * W-output) + B-output -
Aktivierung der Ausgabeschicht:
Y-output = σ (Y-input)
-
-
Rückwärtsdurchlauf (Backpropagation):
- Fehlerberechnung:
error = Y-output - Zielausgabe - Anpassung der Gewichte und Biases mittels Ableitung der Sigmoid-Funktion.
- Fehlerberechnung:
Nachfolgend ein Beispiel für die Visualisierung der Fehlerentwicklung mit Lernrate 0.1:
In diesem Diagramm wird der Fehler pro Zyklus dargestellt, was die Übereinstimmung des Modells verdeutlicht.
im23b-busere
Feedback oder Vorschläge? Öffne ein Issue oder erstelle einen Pull-Request!