Hopfield Networks
Las redes de Hopfield son memorias asociativas recurrentes que recuperan patrones almacenados a partir de señales ruidosas y conectan la recuperación basada en energía con la atención moderna.
Las redes de Hopfield son redes neuronales recurrentes que almacenan patrones y los recuperan a partir de entradas incompletas o dañadas. Actúan como memoria asociativa: una parte del patrón sirve como señal para recuperar el conjunto. Un recuerdo almacenado se comporta como un valle en un paisaje de energía, y el estado cambiante de la red converge hacia un valle cercano.
John J. Hopfield presentó el modelo en 1982 con su trabajo sobre el cálculo colectivo en redes neuronales. «Red de Hopfield», «red de Hopfield» y «modelo de Hopfield» son sinónimos habituales. La arquitectura pertenece a la familia de las redes neuronales recurrentes porque las conexiones de realimentación actualizan repetidamente su estado interno.
Cómo almacenan y recuperan patrones las redes de Hopfield#
Una red de Hopfield clásica contiene neuronas interconectadas cuyos estados suelen representarse como −1 o +1. Sus pesos del modelo son simétricos: la conexión de la neurona A a la neurona B es igual que la conexión de la neurona B a la neurona A. Las configuraciones estándar establecen en cero las conexiones de cada neurona consigo misma. El aprendizaje hebbiano almacena patrones reforzando las conexiones entre neuronas cuyos estados coinciden en los ejemplos almacenados. En términos computacionales, esto añade el producto exterior de cada patrón —una matriz de productos por pares— a la matriz de pesos.
Durante la recuperación, cada neurona suma sus entradas ponderadas y aplica una función de activación umbral. La actualización asíncrona cambia una neurona cada vez. Con pesos simétricos, conexiones propias a cero y estados sin cambios cuando hay empates exactos en el umbral, cada cambio de estado reduce una función de energía hasta que la red alcanza una configuración estable. Esta configuración es un atractor; los estados iniciales que convergen en él forman su cuenca de atracción. Actualizar todas las neuronas simultáneamente puede provocar oscilaciones entre configuraciones.
El almacenamiento y la recuperación son operaciones distintas. El almacenamiento modifica las conexiones; la recuperación cambia los estados de las neuronas y mantiene fijas esas conexiones. Por tanto, la recuperación es una forma de optimización del estado, no otra ronda de retropropagación.
Recuperación de patrones en Python#
El siguiente ejemplo de PyTorch almacena un patrón binario mediante la regla hebbiana, invierte dos valores y recupera el recuerdo mediante actualizaciones asíncronas.
import torch
memory = torch.tensor([1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0])
weights = torch.outer(memory, memory) / memory.numel()
weights.fill_diagonal_(0)
state = memory.clone()
state[[1, 6]] *= -1
initial_errors = int((state != memory).sum())
while True:
previous = state.clone()
for i in range(state.numel()):
field = weights[i] @ state
# Preserve the current state when the weighted input is zero.
if field != 0:
state[i] = field.sign()
if torch.equal(state, previous):
break
print(f"Bit errors: {initial_errors} -> {int((state != memory).sum())}")El resultado es Bit errors: 2 -> 0: las actualizaciones recurrentes reconstruyen el patrón almacenado a partir de la señal dañada mediante la dinámica estándar de la memoria asociativa.
Redes continuas, atención y aplicaciones#
Las redes de Hopfield continuas utilizan salidas neuronales graduadas, como una sigmoide, y evolucionan hacia el equilibrio. Hopfield estableció esta formulación en 1984. Las redes de Hopfield modernas amplían la memoria asociativa con distintas funciones de energía y mayor capacidad de almacenamiento; sus variantes de estado continuo operan con vectores de valores reales.
Hubert Ramsauer y sus colaboradores relacionaron en 2020 la recuperación de las redes de Hopfield modernas con los mecanismos de atención. Se compara una consulta con los vectores almacenados, softmax convierte las puntuaciones de similitud en pesos y una combinación ponderada recupera la información asociada. Esto permite interpretar como memoria asociativa la operación de atención utilizada en un transformer.
Para las representaciones de imágenes, Ultralytics YOLO26 ofrece extracción de características mediante model.embed() y devuelve embeddings de imágenes. Estos vectores proporcionan la representación de valores reales que utilizan las capas modernas de memoria asociativa.
Entre las aplicaciones consolidadas se encuentran la recuperación de patrones visuales almacenados, la agregación de grandes conjuntos de características y la optimización con restricciones. Hopfield y David Tank aplicaron una red analógica al problema del viajante en 1985 y codificaron la calidad de las rutas y las restricciones en el paisaje de energía. La agregación moderna de Hopfield también permite clasificar repertorios inmunitarios y reunir información de cientos de miles de secuencias biológicas mediante el aprendizaje con múltiples instancias.
Conceptos relacionados y límites de almacenamiento#
Un autocodificador aprende una correspondencia codificador-decodificador que reconstruye las entradas; una red de Hopfield clásica reconstruye patrones al converger hacia atractores. Un banco de memoria almacena representaciones para acceder a ellas más adelante, mientras que la dinámica de Hopfield especifica cómo una señal recupera un estado asociado.
Las redes clásicas generan errores de recuperación cuando los recuerdos interfieren entre sí. Los patrones correlacionados crean interferencias, y los atractores espurios pueden devolver mezclas de recuerdos almacenados. En las redes hebbianas clásicas grandes que almacenan patrones binarios aleatorios y aproximadamente no correlacionados, la estimación de capacidad habitual es de alrededor de 0,14 veces el número de neuronas si se admite una pequeña proporción de errores de recuperación: unos 140 patrones para 1.000 neuronas.










