Bidirectional associative memory


Bidirectional associative memory is a type of recurrent neural network. BAM was introduced by Bart Kosko in 1988. There are two types of associative memory, auto-associative and hetero-associative. BAM is hetero-associative, meaning given a pattern it can return another pattern which is potentially of a different size. It is similar to the Hopfield network in that they are both forms of associative memory. However, Hopfield nets return patterns of the same size.

Topology

A BAM contains two layers of neurons, which we shall denote X and Y. Layers X and Y are fully connected to each other. Once the weights have been established, input into layer X presents the pattern in layer Y, and vice versa

Procedure

Learning

Imagine we wish to store two associations, A1:B1 and A2:B2.
These are then transformed into the bipolar forms:
From there, we calculate where denotes the transpose.
So,

Recall

To retrieve the association A1, we multiply it by M to get, which, when run through a threshold, yields, which is B1.
To find the reverse association, multiply this by the transpose of M.

Capacity

The internal matrix has n x p independent degrees of freedom, where n is the dimension of the first vector and p is the dimension of the second vector. This allows the BAM to be able to reliably store and recall a total of up to min independent vector pairs, or min = 4 in this example. The capacity can be increased above 4 by sacrificing reliability.