Inhaltsverzeichnis

Aufgabenbeispiel Hopfied-Netz

Um das Hopfield-Netz in Aktion erleben zu können, verwenden wir es als autoassoziativen Speicher von Bildern.

Das Netz soll zuerst eine Anzahl von Bildern speichern. Anschließend soll das Netz dann in der Lage sein, ein verrauschtes, also fehlerbehaftetes Bild, zu rekonstruieren.

Dazu betrachten wir Bilder mit lediglich zwei Farben (binäre Bilder). Die Aktivität der Neuronen wird damit farblich codiert. Beispielsweise könnte weiß für Neuron -1 (inaktiv) und schwarz für Neuron 1 (aktiv) stehen.

Voraussetzungen

  1. Legen Sie die Anzahl der Neuronen \[N = Bildhöhe \cdot Bildbreite \] fest. Wir verwenden Quadratische Bilder, d.h. es gilt Bildbreite = Bildhöhe.
    Beispielsweise könnte N = 64 sein.
  2. Geben Sie Bilder vor, die das Netz speichern soll. Denken sie daran, dass die Speicherkapazität ~ 13% der Netzgröße beträgt. Bei 64 Neuronen sollten nicht mehr als 8 Bilder (Muster alias Vektoren) gespeichert werden. Denken sie auch daran, dass sich die Muster möglichst gut unterscheiden lassen sollten.

Algorithmus (um Bilder zu lernen)

Das Hopfield-Netz ermöglicht es, bei gegebenen Lernmustern (Bildern) die Lernmatrix $W$ direkt zu Berechnen.

  1. Berechnen Sie für jedes zu speichernde Bild$_i$ eine (Einzelbild) Matrix $W_i$, wie im Abschnitt „Lernen in Hopfield-Netzen“ beschrieben.
  2. Berechnen Sie die Lernmatrix W, indem sie alle $W_i$ addieren. i entspricht der Anzahl der zu lernenden Bilder.

Damit ist das Lernen abgeschlossen, denn die Matrix $W$ ist jetzt bekannt.

Vergewissern Sie sich, dass für alle Elemente $W_{ij}$ der Matrix $W$ gilt:

  1. $w_{ii} = 0$, d.h. alle Diagonalelemente sind Null. Kein Neuron hat zu sich selbst eine Verbindung.
  2. $w_{ij} = w_{ji}$, d.h. alle Verbindungen sind symmetrisch. Neuron $i$ ist mit Neuron $j$ mit dem gleichen Gewicht verbunden wie Neuron $j$ mit Neuron $i$.

Algorithmus (um Bilder wieder zu erkennen)

Damit man überhaupt Bilder wiedererkennen kann, müssen diese zuvor natürlich erst gelernt werden. Nach dem Lernen können wir dem Netzwerk jedoch ein verrauschtes, das heißt fehlerbehaftetes Bild präsentieren und es iterativ wieder rekonstruieren.

Das Hopfield-Netz verwendet die Schwellenwertfunktion als Aktivierungsfunktion:

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

Entscheidener Schritt ist die Berechnung des Produktes aus der Matrix W und dem Bildvektor $V_{\text{ALT}}$. Dieser Schritt ist im Abschnitt „Lernen in Hopfield-Netzen“ beschrieben.

Es gilt $V_{\text{NEU}} = W \cdot V_{\text{ALT}}$ oder etwas mathematischer: \[ V_{n+1} = W \cdot V_n \]

Hier ist n der n-te Iterationsschritt bei der Rekonstruktion des Bildes. Anschließend muss noch die Aktivierungsfunktion auf das Ergebnis angewandt werden:

\[ f(V_{n+1}) \] Damit erhalten wir die Aktivität der Neuronen (sie feuern mit 1 oder nicht mit -1), und in unserem Fall entspricht das einem Bild.

Der Algorithmus um ein Bild zu rekonstruieren lautet nun:

  1. Präsentiere dem Netz ein verrauschtes Bild $V_n$ mit $n = 0$.
  2. Berechne $V_{n+1} = W \cdot V_n$
  3. Berechne $f(V_{n+1})$ und damit das rekonstruierte Bild im Iterationsschritt $n+1$
  4. Wiederhole ab Schritt 2, bis $f(V_{n+1}) = f(V_n)$