Benutzer-Werkzeuge

Webseiten-Werkzeuge


lernen_in_hopfield-netzen

Dies ist eine alte Version des Dokuments!


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:

  • Jedes Muster generiert zunächst eine eigene Matrix.
  • Die Größe der Matrix hängt von der Größe der Eingabevektoren ab. Hat der Eingabevektor n Komponenten, so hat die daraus resultierende Matrix n x n Komponenten.
    • In unserem Beispiel ist n = 4, also besitzt die Matrix 16 Einträge.
  • Alle Diagonalelemente $w_{ii}$ dieser Matrix sind 0.
  • Die Matrix ist symmetrisch, d.h. $w_{ij} = w_{ji}$.
    • Für unser Beispiel bedeutet das, dass von den 16 Einträgen nur noch (16 -4 ) / 2 = 6 Einträge berechnet werden müssen.
  • Die endgültige Matrix W ist die Summe aller einzelnen Matrizen, d.h. in unserem Beispiel $W = W_1 + W_2$

\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:

  • Das Gewicht $w_{ij}$ ist das Produkt aus der i-ten Komponente des Vektors mit der j-ten Komponente der Vektors.

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

Angewandte Informatik ist geschlossen

  Office Pakete (Textverarbeitung, Tabellenkalkulation und Präsentation)
      Office Anwendungen
      Datenbanken
  Bildverarbeitung
      Bildverarbeitung
  MSR (Messen Steuern Regeln) und Robotik
      Hardware-Überlebensregeln
      Lego Roboter (leJOS)
          Beispiele der LEJOS Bibliothek
          Ein neuronales Netz für den NXT Roboter
      Mikrocontroller IO-Warrior
      Android Programmierung
      Raspberry Pi
  Softcomputing/ Künstliche Intelligenz & Komplexe Systeme
      IFS - Iterierte Funktionensysteme
      Sierpinski-Dreieck
      ..Neuronale Netze
          Was sind neuronale Netze?
          Hopfield-Netze
              Grundlagen zu Hopfield-Netzen
              Hopfield-Netz in Aktion

Praktische Informatik ist geschlossen

  Java
      Java Grundlagen
      Java Applet
      Java & Datenbanken
      Java & Bildverarbeitung
  Hardware & Betriebssysteme
      Funktionsprinzip des Computers
      Betriebssystemarchitektur
  Linux
      Linux Essentials
      Linux - Grundlagen - Konsole

Technische Informatik ist geschlossen Theoretische Informatik ist geschlossen Fächerübergeifender Unterricht ist geschlossen

  Physik
  Biologie

Aufgaben & Tests ist geschlossen

  Aufgaben & Tests

Login Form

Benutzername

Passwort

Angemeldet bleiben

  Passwort vergessen?
  Benutzername vergessen?

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.

V1 = {1,-1,1,-1}

V2 = {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:

  Jedes Muster generiert zunächst eine eigene Matrix.
  Die Größe der Matrix hängt von der Größe der Eingabevektoren ab.  Hat der Eingabevektor n Komponenten, so hat die daraus resultierende Matrix n x n Komponenten. In unserem Beispiel ist n = 4, also besitzt die Matrix 16 Einträge.
  Alle Diagonalelemente wii dieser Matrix sind 0.
  Die Matrix ist symmetrisch, d.h.  wij = wji .  Für unser Beispiel bedeutet das, dass von den 16 Einträgen nur noch (16 -4 ) / 2 =  6 Einträge berechnet werden müssen. 
  Die entgültige Matrix W ist die Summe aller einzelnen Matrizen, d.h. in unserem Beispiel  W = W1 + W2

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., w23 ist der Eintrag in der 2. Zeile und 3. Spalte.

Es bleibt das Problem, die eigentlichen Werte (Gewichte) wij zu berechnen. Dies ist aber relativ einfach, denn es gilt:

   Das Gewicht wij   ist  das Prokukt aus der i-ten Komponente des Vektors mit der j-ten Komponente der Vektors.

Wir berechnen als Übung das Gewicht w23 des ersten Musters. Es gilt: w23 = x2 x3 = (-1) (1) = -1. Nach diesem Prinzip ergeben sich somit zuerst die beiden Matrizen W1 und W2

Hieraus resultiert dann die entgültige Matirx W = W1 + W2

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 jedes Neuron muss die gewichtete Summe berechnen werden.  Dies ist nichts anderes als die Multiplikation der Gewichtsmatrix mit dem Eingabevektor:    $V_{\text{neu}}  = W \cdot v$
      Alternativ kann man auch jede Komponente mit der Formel $net_j = \Sum w_{ij} \cdot x_i$ berechnen.  Die Matrixschreibweise impliziert genau dies und ist damit nur eine elegante Form der Notation.
  Für jede Komponente des errechneten Vektors ($V_{\text{neu}}$ )   muss mithilfe der Aktivierungsfunktion der neue Zustand berechnet werden.
   Die letzten beiden Punkte müssen so oft wiederholt werden, bis sich das Netz stabilisiert hat, d.h., bis sich keine Änderung des Ausgabemusters mehr ergibt. In der Praxis sollte man bedenken, dass es vorkommen kann, dass sich das Netz nicht entscheiden kann, und es somit zwischen zwei verschiedenen Mustern oszilliert.
lernen_in_hopfield-netzen.1705848855.txt.gz · Zuletzt geändert: 2024/01/21 14:54 von torsten.roehl