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 {\displaystyle I} von n {\displaystyle n} und einer Ausgabeschicht O {\displaystyle O} von m {\displaystyle 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 {\displaystyle W} für die Gewichte, die von I {\displaystyle I} nach O {\displaystyle O} gerichtet sind. Die Gewichte von O {\displaystyle O} nach I {\displaystyle I} entsprechen der transponierten Matrix W T {\displaystyle W^{T}} .

Trainingsphase

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

W k = x y T k = 1 , , l für  l  Vektorpaare {\displaystyle 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 {\displaystyle W} addiert.

Muster Wiederherstellen

Bei einem Recall wird ein verrauschter Eingangsvektor an I {\displaystyle I} angelegt und man lässt das Netz einfach rechnen, d. h. Neuronen der Ausgangsschicht berechnen ihren neuen Zustand über n e t i {\displaystyle net_{i}} und geben diesen über o j {\displaystyle o_{j}} wieder an I {\displaystyle 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.

n e t i = j = 1 n w i j o i {\displaystyle net_{i}=\sum _{j=1}^{n}w_{ij}o_{i}}

und

o i ( t + 1 ) = { 1 , wenn i = 1 n w i j o j ( t ) > 0 0 , wenn i = 1 n w i j o j ( t ) < 0 o i ( t ) , wenn i = 1 n w i j o j ( t ) = 0 {\displaystyle 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}}}

Literatur

  • Gerhard Schöneburg, Nikolaus Hansen, Andreas Gawelczyk, Neuronale Netze, Markt&Technik Verlag Haar(1990), ISBN 3-89090-329-0.
  • Andreas Zell, Simulation neuronaler Netze, R. Oldenbourg Verlag München(1997), ISBN 3-486-24350-0.