Inhaltsverzeichnis

Lernen in Hopfield-Netzen

Um verstehen zu können, wie ein Hopfieldnetz Muster lernt, benutzen wir ein besonders einfaches Netz mit lediglich 4 Neuronen.
Wir wollen, dass das Hopfield-Netz zwei einfache Bilder lernen soll. Schwarze Pixel werden mit 1, weiße mit -1 kodiert.

Anschießend zeigen wir, dass das Netzwerk, nachdem es die Muster gelernt hat, diese auch wiedererkennen kann.

Um diesem Abschnitt verstehen zu können, muss man wissen, wie man eine Matrix mit einem Vektor multipliziert.

$V_1 = \{1,-1,1,-1\}$ $V_2 = \{1,1,-1,-1\}$
Diese beiden Muster, repräsentiert durch v1 und v2, soll unser Netz lernen.

Die Gewichtsmatrix

Bei Hopfieldnetzwerken können die Gewichte ohne ein aufwendiges Lernverfahren direkt aus den Eingabevektoren berechnet werden. Da wir zwei Muster haben, erhalten wir zunächst auch zwei Gewichtsmatrizen (für jedes Muster eine). Durch Addition dieser Matrizen erhalten wir dann die entgültige Matrix W. Wir fassen die wichtigsten Eigenschaften dieser Matrizen zusammen:

\begin{equation} W=\begin{pmatrix} w_{11} & w_{12} & w_{13} & w_{14} \\\ w_{21} & w_{22} & w_{23} & w_{24}\\\ w_{31} & w_{32} & w_{33} & w_{34} \\\ w_{41} & w_{42} & w_{43} & w_{44} \end{pmatrix} \end{equation}

Die Matrix für Muster aus unserem Beispiel. Da die Vektoren vier Komponenten haben, ist die Matrix vom Typ 4×4. Der erste Index bezeichnet die Zeile und der zweite Index die Spalte, d.h., $w_{23}$ ist der Eintrag in der 2. Zeile und 3. Spalte.

Es bleibt das Problem, die eigentlichen Werte (Gewichte) $w_{ij}$ zu berechnen. Dies ist aber relativ einfach, denn es gilt:

Wir berechnen als Übung das Gewicht $w_{23}$ des ersten Musters $V_1$. Es gilt: $w_{23} = x_2 \cdot x_3 = (-1) (1) = -1$.

Nach diesem Prinzip ergeben sich somit zuerst die beiden Matrizen $W_1$ und $W_2$

\begin{equation} W_1=\begin{pmatrix} 0 & -1 & 1 & -1 \\\ -1 & 0 & -1 & 1\\\ 1 & -1 & 0 & -1 \\\ -1 & 1 & -1 & 0 \end{pmatrix} \end{equation}

\begin{equation} W_2=\begin{pmatrix} 0 & 1 & -1 & -1 \\\ 1 & 0 & -1 & -1\\\ -1 & -1 & 0 & 1\\\ -1 & -1 & 1 & 0 \end{pmatrix} \end{equation}

Hieraus resultiert dann die endgültige Matrix W = W1 + W2:

\begin{equation} W=\begin{pmatrix} 0 & 0 & 0 & -2 \\\ 0 & 0 & -2 & 0\\\ 0 & -2 & 0 & 0 \\\ -2 & 0 & 0 & 0 \end{pmatrix} \end{equation}

Da wir nun die Gewichtsmatrix kennen, bzw. berechnen können, ist der eigentliche Lernvorgang des Netzwerkes bereits abgeschlossen.

Wiedererkennen eines gespeicherten Musters

Wir wollen nun zeigen, das das Netzwerk diese Muster auch wirklich gelernt hat. Dazu präsentieren wir dem Netzwerk das 1. Muster und berechnen die Ausgabe. Da das Netzwerk als autoassoziativer Speicher arbeiten soll, erwarten wir das die Ausgabe des Netzwerks ebenfalls das erste Muster ist.

Um die gesamte Netzwerkausgabe zu berechnen müssen folgende Schritte gemacht werden:

Für das Beispiel erhalten wir

  1. $V_{\text{neu}} = W \cdot v = \{2,-2,2,-2\}$
  2. für jede dieser Komponenten ergibt die Aktivierungsfunktion nun {1,-1,1,-1}. Dies ist aber der Vektor (das Muster) v1, womit gezeigt wurde, dass das Netz das Muster wiedererkannt hat.

Rechnen Sie nach, ob das Netzwerk auch das 2. Muster richtig erkennt.