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.
Formel: Stufenfunktion Hopfieldnetz
Die Berechnung der Gewichte in der Trainingsphase geschieht nach der folgenden Formel :
Formel : Gewichtsberechnung

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 :
Formel : Energienieveau
[ 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).
Formel : Aufspaltung 1. Summand
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 :
Formel : zu maximierender Term
Da die Ausgaben alle aus {-1,1} sind, sind deren Quadrate stets positiv (also 1). Daher wählt man Formel : Gewichte 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 :
Formel : Energieniveau
Diese läßt sich dadurch vereinfachen, daß der Schwellwert für jedes Neuron auf Null gesetzt wurde :
Formel : vereinfachtes Niveau
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 :
Formel : zerlegtes Niveau
Da nun die Gewichtsmatrix symmetrisch ist, fällt auf, daß die beiden letzen Terme identisch sind. So läßt sich diese Formel vereinfachen zu :
vereinfachtes zerlegtes Niveau
Betrachte nun die Energiedifferenz an zwei unterschiedlichen Zeitpunkten.
Formel : Delta Energieniveau
Es bezeichne Formel : Delta x die Änderung der Ausgabe von Neuron k zu den zwei Zeitpunkten. Dann ergibt sich für die Energiedifferenz bezogen auf dieses Neuron folgende Gleichung :
Formel : Energiedifferenz

Dieser Term wird klein, wenn

Somit haben wir die Propagierungsfunktion für dieses netz hergeleitet :
Formel : propagierungsfunktion

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.