Informationen speichern und wieder "erinnern"

22.03.1991

Die Speicherung von Informationen in Assoziativspeichern erfolgt in der Regel über eine Binärcodierung. Die zu speichernden Daten werden als Binärketten (Folgen von Nullen und Einsen oder Folgen von 1 und -1) verschlüsselt. In Vektorschreibweise sieht dies etwa so aus:

X = (1,-1,-1,-1,1, 1)

Y= (1,-1, 1,-1,1,-1)

In dem Assoziativspeicher werden diese Muster nun nicht direkt und lokal gespeichert, sondern jedes Muster produziert eine Matrix, die in den Verbindungen zwischen den Neuronen abgelegt werden. Dieser Speicher- oder Lernvorgang kann mathematisch durch ein Produkt der Vektoren beschrieben werden:

Diese Gewichtsmatrizen der Einzelmuster X und Y werden nun gemeinsam gespeichert, indem die Komponenten der Matrizen einfach positionsweise addiert werden:

M = X + Y =

2-2 0-2 2 0

-2 2 0 2 -2 0

0 0 2 0 0 -2

-2 2 0 2 -2 0

2 -2 0 -2 2 0

0 0 -2 0 0 2

Was passiert nun, wenn an einen solchen Speicher ein bestimmter Input angelegt wird? Der Speicher produziert einen Output, der dem Input am "ähnlichsten" (im Sinne des Assoziativspeichers) ist. Diesen Vorgang kann man wie folgt verstehen:

Wählen wir einen Input-Vektor, den der Speicher nicht "kennt", zum Beispiel

Z = ( 1, 1, -1,-1,1,1).

Z ist ähnlicher zu X als zu Y, denn er unterscheidet sich von X nur in einer Stelle aber zu Y in zwei Stellen. Der Speicher wird deshalb den Inputvektor Z mit dem ähnlichsten gespeicherten Muster, nämlich X, assoziieren.

Dies funktioniert so:

Man bildet zunächst das Produkt des Input-Vektors Z (...) der Matrix M:

M*Z= 2-2 0-2 2 0* 1

-2 2 0 2-2 0 1

0 0 2 0 0-2 -l

-2 2 0 2-2 0 -1

2-2 0-2 2 0 1

0 0-2 0 0 2 1

Das Produkt ergibt einen Vektor, dessen Komponenten sich nach der Vorschrift "Summe der Produkte aus Matrixzeile mal Vektor" errechnen. Für die erste Zeile der Matrix ergibt dies:

(2 * 1) + (-2 * 1) + (0 * -1) + (-2 * -1) + (2 * 1) + (0 * 1) = 2 + -2 + 0 + 2 + 2 + 0 = 4.

Für die zweite bis sechste Zeile der Matrix verfährt man analog. Das Resultat ist dann:

M * Z = (4, -4, -4, -4, 4, 4).

Wendet man auf diesen Vektor noch die Schwellenwertfunktion an, die jeden positiven Wert auf + 1 und jeden negativen Wert auf -1 abbildet, so ergibt sich letztlich als Output:

M * Z = (1, -l, -l, -1,1, 1), also gerade X!