La memoria asociativa bidireccional (BAM) es un tipo de red neuronal recurrente introducida por Bart Kosko en 1988. Es una forma de memoria asociativa que almacena patrones de manera heteroasociativa, lo que significa que, dado un patrón de una capa, puede recuperar un patrón correspondiente de otra capa, potencialmente de diferente tamaño. Esto contrasta con las memorias autoasociativas como la red de Hopfield, que devuelven patrones del mismo tamaño. La BAM es bidireccional porque puede responder a entradas tanto de la capa de entrada como de la de salida, utilizando la matriz de pesos y su transpuesta para la recuperación hacia adelante y hacia atrás.
Topología
Una BAM consta de dos capas de neuronas, denominadas X e Y, que están completamente conectadas entre sí. Una vez establecidos los pesos, presentar una entrada a la capa X produce un patrón en la capa Y, y viceversa. Las conexiones son bidireccionales: la matriz de pesos enviada de la capa X a la capa Y se denota como W, y la matriz de pesos para las señales de Y a X es la transpuesta W^T. Así, la matriz de pesos se utiliza en ambas direcciones, permitiendo una recuperación simétrica.
Aprendizaje
Para almacenar asociaciones, los patrones se convierten primero a forma bipolar (1 y -1). Por ejemplo, para almacenar dos asociaciones A1:B1 y A2:B2, con A1 = (1, 0, 1, 0, 1, 0) y B1 = (1, 1, 0, 0), las formas bipolares son X1 = (1, -1, 1, -1, 1, -1) e Y1 = (1, 1, -1, -1). De manera similar, A2 = (1, 1, 1, 0, 0, 0) y B2 = (1, 0, 1, 0) se convierten en X2 = (1, 1, 1, -1, -1, -1) e Y2 = (1, -1, 1, -1). La matriz de pesos M se calcula como la suma de los productos externos de cada par: M = Σ X_i^T Y_i. Para el ejemplo, esto produce una matriz de 6x4 con entradas como 2, 0, -2, etc., que reflejan las correlaciones entre los patrones de entrada y salida.
Recuperación
Para recuperar una asociación, un patrón de entrada se multiplica por la matriz de pesos. Por ejemplo, multiplicar A1 (en forma bipolar) por M da (4, 2, -2, -4), que después de aplicar un umbral (los valores positivos se convierten en 1, los negativos en 0) produce (1, 1, 0, 0), que es B1. La asociación inversa se obtiene multiplicando el patrón de salida por la transpuesta de M, permitiendo la recuperación de Y a X.
Capacidad
La capacidad de almacenamiento de una BAM está dada por min(m, n), donde n es el número de unidades en la capa X y m es el número de unidades en la capa Y. La matriz de pesos interna tiene n x p grados de libertad independientes, donde n es la dimensión del primer vector (por ejemplo, 6) y p es la dimensión del segundo vector (por ejemplo, 4). Esto permite que la BAM almacene y recupere de manera confiable hasta min(n, p) pares de vectores independientes; en el ejemplo, min(6, 4) = 4. La capacidad puede aumentarse más allá de esto a costa de la fiabilidad, introduciendo bits incorrectos en la salida.
Estabilidad
Un par (A, B) define el estado de una BAM. Para que un patrón se almacene, su valor de función de energía debe ocupar un mínimo en el paisaje de energía. Kosko propuso la función de Lyapunov (energía) E(A, B) = -A M B^T para el caso bidireccional. Cuando se presenta un patrón emparejado, las neuronas cambian de estado hasta alcanzar un estado estable bidireccional (A_f, B_f), que Kosko demostró que corresponde a un mínimo local de la función de energía. La BAM discreta está garantizada para converger a un estado estable. Para el caso especial donde A = B, la función de energía se reduce a E(A, A) = -A M A^T, que coincide con la función de energía autoasociativa de la red de Hopfield.