Hopfield-Netze
Aufbau
Hopfield-Netze bestehen aus einem vollständig vermaschten Netz, deren Gewichte
symmetrisch sind, d.h. das Gewicht von Neuron i zu Neuron j ist das gleiche wie das
Gewicht von Neuron j zu Neuron i.
Das Hopfield-Netz arbeitet auf binären Eingaben. Es gibt keine Unterscheidung
zwischen Eingabe- und Ausgabeneuronen und es gibt keine versteckte Schicht.
Arbeitsweise
In der 'Trainingsphase' werden die Gewichte für das Netz direkt aus den
Trainingsdaten berechnet. In der Arbeitsphase an das Netz eine Eingabe angelegt.
Nun wird ein iteratives Verfahren solange angewendet, bis der Zustand des Netzes
stabil ist.
Die Idee
Die Gewichte werden in der Trainingsphase so berechnet, daß eine Funktion
über dem Netz definiert wird, in der die Trainingsbeispiele die Minima bilden. Diese
Funktion stellt eine Art Enegieniveau auf dem Netz dar.
In der Arbeitsphase sucht das Netz nun nach solchen Minima.
Die Neuronen
Als Propagierungsfunktion wird die Summe der gewichteten Eingabe verwendet. Die
Aktivierungsfunktion, die auch gleichzeitig die Ausgabefunktion darstellt, ist eine
Stufenfunktion.
Die Berechnung der Gewichte in der Trainingsphase geschieht nach der
folgenden Formel :
Während der Arbeitsphase sucht das Netz das zu der Eingabe ähnlichste
Trainingsmuster. Dann tritt keine Änderung des Netzzustandes mehr auf. Daher können
Hopfieldnetze gut zur Mustererkennung oder der Reparatur von gestörten Mustern
verwendet werden.
Herleitung der Formeln
Im Folgenden stammen die binären Eingaben aus {-1,1}.
Es wird nun die Formel zur Gewichtsberechnung hergeleitet. Man geht dabei von einer
Energieniveaufunktion aus. Die Gewichte stellen Parameter dar, mit denen diese Funktion
so eingestellt wird, daß sie genau bei den Trainingsbeispielen minimal ist.
Als Energienievaufunktion wird meist folgende genommen :
[ Theoretisch könnte man auch eine andere Funktion wählen und würde dann zu
anderen Gewichten und anderen Aktivierungsfunktionen für die Neuronen kommen ].
Diese Funktion muß nun bei den Trainingsmustern minimal werden. Um die Summe zu minimieren betrachtet man die beiden Summanden einzeln.
Versucht man den zweiten Term zu minimieren, so könnte man zunächst versuchen, diesen Term
in den negativen Bereich zu überführen. Da jedoch nicht garantiert werden kann, daß
die Ausgabe xi entweder immer positiv oder immer negativ ist und der
Schwellwert fest gewählt werden muß, wird dieser einfach Null gewählt und der zweite
Term fällt somit weg. Daher wird in der Propagierungsfunktion für alle Neuronen der
Schwellwert 0 festgelegt.
Um den ersten Summanden zu minimieren betrachtet man zunächst ein einzelnes
Muster aus der Trainingsmenge. Dann kann man den ersten Term aufspalten in den
Teil, der den Beitrag dieses Trainingsmusters zur Energieniveaufunktion ausdrückt,
und den Rest (also den Beitrag der anderen Trainingsmuster).
Der auch als Rauschen bezeichnete Teil der anderen Muster kann nicht ohne unvorhergesehene
Seiteneffekte lokal (also auf das eine Trainingsmuster bezogen) minimiert werden.
Man kann also nur versuchen, den Beitrag des aktuell betrachteten Trainingsbeispiels
zu minimieren. Dies entspricht der Maximierung der folgenden Formel :
Da die Ausgaben alle aus {-1,1} sind, sind deren Quadrate stets positiv (also 1). Daher
wählt man um diese
Maximierungsaufgabe zu lösen. Damit hat man die Vorschrift zur Berechnung dieser Gewichte.
Nun muß noch gezeigt werden, daß das Netz in seiner Arbeitsphase auch gegen ein
solches Minimum konvergiert. Betrachte dazu wieder die Energiefunktion :
Diese läßt sich dadurch vereinfachen, daß der Schwellwert für jedes Neuron auf
Null gesetzt wurde :
Da die Neuronen unabhängig voneinander arbeiten, macht es Sinn zu versuchen, den
Beitrag jedes einzelnen Neurons zu dieser Funktion zu minimieren. Daher trennt man
diese Formel auf in den Betrag, den ein bestimmtes Neuron an dieser
Funktion leistet und den Betrag, den die restlichen Neuronen leisten :
Da nun die Gewichtsmatrix symmetrisch ist, fällt auf, daß die beiden letzen Terme
identisch sind. So läßt sich diese Formel vereinfachen zu :
Betrachte nun die Energiedifferenz an zwei unterschiedlichen Zeitpunkten.
Es bezeichne
die Änderung
der Ausgabe von Neuron k zu den zwei Zeitpunkten.
Dann ergibt sich für die Energiedifferenz bezogen auf dieses Neuron folgende Gleichung :
Dieser Term wird klein, wenn
- die gewichtete Summe negativ und xi = 1 oder
- die gewichtete Summe positiv und xi = -1 ist
Somit haben wir die Propagierungsfunktion für dieses netz hergeleitet :
Hopfieldnetze gibt es in zwei Ausführungsvarianten, die synchrone variante berechnet
in einem Schritt erst die Änderungen der Neurone aus und die asynchrone Variante berchte die
Änderung für jedes Neuron einzeln. Es sollten in diesen Netzen nicht mehr als 0,15N Muster
gespeichert werden, da sonst Interferenzen auftreten können (N = Anzahl der Neuronen).
es ist auch möglich, daß es lokale Minima gibt, das heißt eine falsche Ausgabeklasse erkannt
wird. Dieses kann jedoch durch Erweiterungen beseitigt bzw. gemildert werden.