Bidirektionaler Assoziativspeicher
# Bidirektionaler Assoziativspeicher

Bidirektionaler Assoziativspeicher, englisch bidirectional associative memory (kurz: BAM), ist eine Klasse künstlicher neuronaler Netze und kann als verallgemeinertes Hopfield-Netz betrachtet werden. BAM gehört zu der Gruppe der rückgekoppelten neuronalen Netze.

## Struktur

Ein BAM-Netz besteht aus einer Eingabeschicht $I$ von $n$ und einer Ausgabeschicht $O$ von $m$ künstlichen Neuronen, beide Schichten sind in beide Richtungen miteinander verbunden, wobei die Gewichte symmetrisch sind. Das führt zu einer m × n Matrix $W$ für die Gewichte, die von $I$ nach $O$ gerichtet sind. Die Gewichte von $O$ nach $I$ entsprechen der transponierten Matrix $W^{T}$.

## Trainingsphase

In der Trainingsphase lernt das Netz einen n-dimensionalen Vektor $x$ mit einem m-dimensionalen Vektor $y$ zu verknüpfen. Dazu werden beide Vektoren an der Eingabeschicht $I$ und Ausgabeschicht $O$ angelegt und die Gewichtsmatrix kann in einem Lernschritt berechnet werden. Dazu gilt:

    $W_{k}=xy^{T}\quad k={1,\dots ,l}\quad {\text{für }}l{\text{ Vektorpaare}}$

Zum Schluss werden alle Gewichtsmatrizen zur resultierenden Gewichtsmatrix $W$ addiert.

## Muster Wiederherstellen

Bei einem Recall wird ein verrauschter Eingangsvektor an $I$ angelegt und man lässt das Netz einfach rechnen, d. h. Neuronen der Ausgangsschicht berechnen ihren neuen Zustand über $net_{i}$ und geben diesen über $o_{j}$ wieder an $I$ weiter. Dann beginnt der Prozess von vorn, solange bis die stetig sinkende Energie des Netzes ein lokales Minimum erreicht hat. Nun kann der assoziierte Ausgabevektor entnommen werden.

    $net_{i}=\sum _{j=1}^{n}w_{ij}o_{i}$

und

    $o_{i}(t+1)={\begin{cases}1,&{\text{wenn}}\sum _{i=1}^{n}w_{ij}o_{j}(t)>0\\0,&{\text{wenn}}\sum _{i=1}^{n}w_{ij}o_{j}(t)<0\\o_{i}(t),&{\text{wenn}}\sum _{i=1}^{n}w_{ij}o_{j}(t)=0\end{cases}}$
