Hopfield Networks
As redes de Hopfield são memórias associativas recorrentes que recuperam padrões armazenados a partir de sinais ruidosos, conectando a recuperação baseada em energia à atenção moderna.
As redes de Hopfield são redes neurais recorrentes que armazenam padrões e os recuperam a partir de entradas incompletas ou corrompidas. Elas funcionam como memória associativa: uma parte do padrão serve de sinal para recuperar o padrão inteiro. Uma memória armazenada se comporta como um vale em uma paisagem de energia, e o estado mutável da rede se estabiliza em direção a um vale próximo.
John J. Hopfield apresentou o modelo em 1982 por meio de seu trabalho sobre computação coletiva em redes neurais. "Rede de Hopfield", "rede Hopfield" e "modelo de Hopfield" são sinônimos comuns. A arquitetura pertence à família das redes neurais recorrentes, pois as conexões de realimentação atualizam repetidamente seu estado interno.
Como as redes de Hopfield armazenam e recuperam padrões#
Uma rede de Hopfield clássica contém neurônios interconectados cujos estados são comumente representados como −1 ou +1. Seus pesos do modelo são simétricos: a conexão do neurônio A ao neurônio B é igual à conexão do neurônio B ao neurônio A. As configurações padrão definem as autoconexões como zero. O aprendizado Hebbiano armazena padrões fortalecendo as conexões entre neurônios cujos estados coincidem nos exemplos armazenados. Do ponto de vista computacional, isso adiciona à matriz de pesos o produto externo de cada padrão — uma matriz de produtos par a par.
Durante a recuperação, cada neurônio soma suas entradas ponderadas e aplica uma função de ativação de limiar. A atualização assíncrona altera um neurônio por vez. Com pesos simétricos, autoconexões zero e estados inalterados em empates exatos no limiar, cada mudança de estado reduz uma função de energia até que a rede alcance uma configuração estável. Essa configuração é um atrator; os estados iniciais que convergem para ele formam sua bacia de atração. A atualização simultânea de todos os neurônios pode produzir oscilações entre configurações.
O armazenamento e a recuperação são operações distintas. O armazenamento altera as conexões; a recuperação altera os estados dos neurônios enquanto mantém essas conexões fixas. Isso faz da recuperação uma forma de otimização de estado, em vez de mais uma rodada de retropropagação.
Recuperação de padrões em Python#
O exemplo a seguir em PyTorch armazena um padrão binário usando a regra Hebbiana, inverte duas entradas e recupera a memória por meio de atualizações assí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())}")A saída é Bit errors: 2 -> 0: as atualizações recorrentes reconstroem o padrão armazenado a partir de seu sinal corrompido, usando a dinâmica padrão de memória associativa.
Redes contínuas, atenção e aplicações#
As redes de Hopfield contínuas usam saídas graduais dos neurônios, como uma sigmoide, e evoluem até o equilíbrio. Hopfield estabeleceu essa formulação em 1984. As redes de Hopfield modernas ampliam a memória associativa com diferentes funções de energia e capacidades de armazenamento maiores; suas variantes de estado contínuo operam com vetores de valores reais.
Hubert Ramsauer e seus colegas relacionaram a recuperação moderna de Hopfield aos mecanismos de atenção em 2020. Uma consulta é comparada com vetores armazenados, o softmax converte as pontuações de similaridade em pesos e uma combinação ponderada recupera as informações associadas. Isso oferece uma interpretação de memória associativa para a operação de atenção usada em um transformador.
Para representações de imagens, o Ultralytics YOLO26 disponibiliza a extração de características por meio de model.embed(), retornando embeddings de imagens. Esses vetores fornecem a representação de valores reais usada pelas camadas modernas de memória associativa.
As aplicações estabelecidas incluem recuperar padrões visuais armazenados, agrupar grandes coleções de características e realizar otimização com restrições. Hopfield e David Tank aplicaram uma rede analógica ao problema do caixeiro-viajante em 1985, codificando a qualidade da rota e as restrições na paisagem de energia. O agrupamento moderno de Hopfield também dá suporte à classificação de repertórios imunes, agregando informações de centenas de milhares de sequências biológicas por meio de aprendizado com múltiplas instâncias.
Conceitos relacionados e limites de armazenamento#
Um autoencoder aprende um mapeamento de codificador–decodificador que reconstrói as entradas; uma rede de Hopfield clássica reconstrói padrões estabilizando-se em atratores. Um banco de memória armazena representações para acesso posterior, enquanto a dinâmica de Hopfield especifica como um sinal recupera um estado associado.
As redes clássicas desenvolvem erros de recuperação quando as memórias interferem umas nas outras. Padrões correlacionados criam interferência cruzada, e atratores espúrios podem retornar misturas de memórias armazenadas. Para redes Hebbianas clássicas grandes, que armazenam padrões binários aleatórios e aproximadamente não correlacionados, a estimativa de capacidade conhecida é cerca de 0,14 vezes o número de neurônios, permitindo uma pequena fração de erros de recuperação — aproximadamente 140 padrões para 1.000 neurônios.










