-->

Kamis, 04 Mei 2017

Bidirectional associative memory (BAM) 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.

  • A1 = (1, 0, 1, 0, 1, 0), B1 = (1, 1, 0, 0)
  • A2 = (1, 1, 1, 0, 0, 0), B2 = (1, 0, 1, 0)

These are then transformed into the bipolar forms:

  • X1 = (1, -1, 1, -1, 1, -1), Y1 = (1, 1, -1, -1)
  • X2 = (1, 1, 1, -1, -1, -1), Y2 = (1, -1, 1, -1)

From there, we calculate M = âˆ' X i T Y i {\displaystyle M=\sum {\!X_{i}^{T}Y_{i}}} where X i T {\displaystyle X_{i}^{T}} denotes the transpose. So,

M = [ 2 0 0 âˆ' 2 0 âˆ' 2 2 0 2 0 0 âˆ' 2 âˆ' 2 0 0 2 0 2 âˆ' 2 0 âˆ' 2 0 0 2 ] {\displaystyle M=\left[{\begin{array}{*{10}c}2&0&0&-2\\0&-2&2&0\\2&0&0&-2\\-2&0&0&2\\0&2&-2&0\\-2&0&0&2\\\end{array}}\right]}

Recall

To retrieve the association A1, we multiply it by M to get (4, 2, -2, -4), which, when run through a threshold, yields (1, 1, 0, 0), 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 (6 in this example) and p is the dimension of the second vector (4). This allows the BAM to be able to reliably store and recall a total of up to min(n,p) independent vector pairs, or min(6,4) = 4 in this example. The capacity can be increased above 4 if one gives up reliability and is willing to accept incorrect bits on the output.

See also

  • Autoassociative memory
  • Self-organizing feature map

References

External links

  • Bidirectional Associative Memory â€" Python source code for the Wiki article
  • Bidirectional Associative Memory â€" online demo and perl source code
  • Bidirectional associative memories â€" ACM Portal Reference
 
Sponsored Links