Benutzer-Werkzeuge

Webseiten-Werkzeuge


lernalgorithmus

Perzeptron Lernalgorithmus

Im Folgenden wird der Lernalgorithmus für das einfache Perzeptron beschrieben. Um das Prinzip zu verstehen, werden lediglich zwei Eingangsneuronen und ein Ausgangsneuron verwendet. Mithilfe des Lernalgorithmus kann dann (z. B. in Java) gezeigt werden, dass einfache Probleme wie das UND-Problem gelernt werden können.

Topologie

  • Eingangsneurone $x_1$, $x_2$ und $x_3$
    • Das Neuron $x_3$ hat immer den Wert 1.
  • Ausgabeneuron $y_1$ oder $o$ für Output.
  • Gewichte $w_{11}$ , $w_{21}$ und $w_{31}$
    • Das Gewicht $w_{31}$ hat (in unserem Beispiel) immer den Wert $w_{31}=-0.1$ .

Die Schwelle θ wird durch ein konstantes Gewicht (in unserem Beispiel) $w_{31}=−0.1$ festgelegt. Nur die Gewichte $w_{11}​$ und $w_{21}$ werden gelernt, um alle Trainingsmuster wiedergeben zu können.

Im Perzeptron kann anstelle der Schwelle ein Bias verwendet werden, da dieser als zusätzliches Gewicht modelliert wird, das mit einem konstanten Eingabewert von 1 multipliziert wird und dadurch die Schwelle direkt in die Gewichtsanpassung integriert.

Der Zusammenhang zwischen Schwelle und Bias kann mathematisch gezeigt werden, was an anderer Stelle erfolgt.

forward pass

Unter dem „forward pass“ versteht man die Berechnung der Ausgabe eines neuronalen Netzes bei gegebener Eingabe und gegebenen Gewichten. Im ersten Schritt wird die Netzeingabe $net$ berechnet. Anschließend wird darauf die Aktivierungsfunktion $f(net)$ angewandt.

forward pass Berechnung der Netzausgabe $f(net)$ bei gegebener Eingabe.

Netzeingabe $net$

Allgemein gilt für die Netzeingabe des Neuron $j$: \begin{equation} net_j = \sum w_{ij} \cdot x_i \end{equation} Da wir nur ein Ausgabeneuron haben ist $net_j=net_1=net$ also folgt für drei Eingabeneuronen: \begin{equation} net = \sum_{i=1}^3 w_{i1} \cdot x_i = w_{11} \cdot x_1 + w_{21} \cdot x_2+ w_{31} \cdot 1\end{equation} Dabei wird verwendet, dass $x_3=1$ gesetzt worden ist.

Aktivierungsfunktion

Die Aktivierungsfunktion für das Perzeptron lautet:

\begin{equation} f(x)=\left\{\begin{array}{ll}0 : & x < 0 \\ 1 : & x\geq 0 \end{array}\right. \end{equation}

Trainingsmuster ($x_1$,$x_2$) → $y$

Der Perzeptron-Lernalgorithmus wird auf Trainingsmuster angewendet. Ein Trainingsmuster (engl. Training Pattern) besteht aus der Eingabe zusammen mit der gewünschten Ausgabe, die es zu lernen gilt. Das neuronale Netz lernt die Gewichte so anzupassen, dass alle Trainingsmuster richtig wiedergegeben werden.

Für das AND-Problem gibt es vier Trainingsmuster:

InputOutput t
$(0,0)$ 0
$(0,1)$ 0
$(1,0)$ 0
$(1,1)$ 1

Perzeptron lernen

Vorbereitung

  • Wähle eine Lernrate $\eta$ zwischen 0 und 1, z.B. $\eta=0.1$.
  • Wähle zufällige Zahlen für die Gewichte $w_{ij}$ zwischen 0 und 1 für die Initialisierung.

Algorithmus

Perzeptron Lernalgorithmus

  1. forward pass: Wähle (zufällig) ein Trainingsmuster und berechne die Ausgabe $o$
  2. error: Berechne den Fehler zwischen der gewünschten Ausgabe (t für Target) und der tatsächlichen o mit: $t-o$.
  3. hebb rule: Berechne die Gewichtsänderung $\Delta w_{ij} = \eta\cdot (t-o)\cdot x_i$
  4. update: Ändere das Gewicht $w_{ij}$ mit: $w_{ij} = w_{ij} + \Delta w_{ij} $
  5. Wiederhole ab Schritt 1. für eine Anzahl an Iterationen, bis das gewünschte Ergebnis erreicht ist.

Test & Aufgaben

  1. Implementieren Sie den Perzeptron-Lernalgorithmus für das UND-Problem.
    1. Überprüfen Sie, ob das UND-Problem korrekt gelernt wurde, indem Sie für alle Inputvektoren $(x_1,x_2)$ die Ausgaben berechnen.
  2. Ändern Sie die Implementierung um auch das ODER-Problem zu lernen.
    1. Wiederholen Sie das Lernen mehrmals und untersuchen Sie die gelernten Gewichte $w_{11}$ und $w_{21}$.
  3. Untersuchen Sie die Abhängigkeit der Lernrate von der Anzahl der Iterationen, die benötigt werden, um das Problem zu lösen.
    1. Erstellen Sie hierfür einen aussagekräftigen Graphen.
  4. Beschäftigen Sie sich nun mit dem XOR-Problem.
    1. Ändern Sie den Code um auch dieses Problem zu studieren.🕱 🕱 🕱

Passen Sie gegebenenfalls die Lernrate oder die Anzahl der Iterationen an, damit das Problem erfolgreich gelernt werden kann.

lernalgorithmus.txt · Zuletzt geändert: 2025/01/29 10:58 von torsten.roehl