# Modelo de Hopfield

Um modelo de Hopfield, também chamado de rede Hopfield, é uma forma de rede neural artificial recorrente popularizada por John Hopfield em 1982, mas descrita anteriormente por W. A. Little em 1974. Redes Hopfield servem como sistemas de memória de conteúdo direcionável com nós de limite binário. Garante-se que elas convertem a um mínimo local, mas às vezes convergirão a um falso padrão (mínimo local errado) em vez de um padrão estabelecido (mínimo local esperado). Redes Hopfield também oferecem um modelo para a compreensão da memória humana.

## Estrutura

As unidades em redes Hopfield são unidades de limite binário, isto é, as unidades podem assumir apenas um de dois valores diferentes para seus estados e o valor é determinado ao saber se o input das unidades excede ou não seus limites. Redes Hopfield normalmente têm unidades que assumem valores iguais a 1 ou -1 e esta convenção será usada ao longo desta página. No entanto, há textos que usam unidades que assumem valores iguais a 0 ou 1.
Cada par de unidades $i$ e $j$ em uma rede Hopfield tem uma conexão que é descrita pelo peso da conectividade $w_{ij}$. Neste sentido, a rede Hopfield pode ser formalmente descrita como um grafo não direcionado completo $G=\langle V,f\rangle$, em que $V$ é um conjunto de neurônios de McCulloch–Pitts e $f:V^{2}\rightarrow R$ é uma função que liga pares de nós a um valor real, o peso da conectividade.
As conexões em uma rede Hopfield têm tipicamente as seguintes restrições:
* $w_{ii}=0,\forall i$ — nenhuma unidade tem uma conexão com ela mesma;
* $w_{ij}=w_{ji},\forall i,j$ — as conexões são simétricas.
A obrigação de que os pesos sejam simétricos garante que a função da energia decresce monotonamente enquanto segue as regras de ativação. Uma rede com pesos assimétricos pode exibir algum comportamento periódico ou caótico. Entretanto, Hopfield descobriu que este comportamento está confinado a partes relativamente pequenas do espaço de fase e não compromete a habilidade da rede de agir como um sistema de memória associativa de conteúdo direcionável.

## Atualização

A atualização de uma unidade (um nó no grafo que simula o neurônio artificial) na rede Hopfield é realizada usando a seguinte regra:
    $s_{i}\leftarrow \left\{{\begin{array}{ll}+1&{\mbox{if }}\sum _{j}{w_{ij}s_{j}}\geq \theta _{i},\\-1&{\mbox{de outro modo,}}\end{array}}\right.$
em que:
* $w_{ij}$ é a força do peso da conexão da unidade $j$ a unidade $i$ (o peso da conexão);
* $s_{j}$ é o estado da unidade $j$;
* $\theta _{i}$ é o limite da unidade $i$.
Atualizações na rede Hopfield podem ser realizadas de duas maneiras diferentes:
* Assincrônica: Apenas uma unidade é atualizada a cada momento. Esta unidade pode ser escolhida aleatoriamente ou uma ordem pré-definida pode ser imposta desde o começo;
* Sincrônica: Todas as unidades são atualizadas no mesmo momento. Isto exige um relógio central no sistema a fim de manter a sincronização. Este método é visto por alguns como menos realista com base na ausência da observação de um relógio global influenciando sistemas de interesse biológicos ou físicos análogos.

### Neurônios atraem ou repelem um ao outro

O peso entre duas unidades tem um impacto poderoso sobre os valores dos neurônios. Considere o peso de conexão $w_{ij}$ entre dois neurônios $i$ e $j$. Se $w_{ij}>0$, a regra da atualização implica que:
* Quando $s_{j}=1$, a contribuição de $j$ na soma ponderada é positiva. Assim, $s_{i}$ é puxado por $j$ rumo ao seu valor $s_{j}=1$;
* Quando $s_{j}=-1$, a contribuição de $j$ na soma ponderada é negativa. Assim, $s_{i}$ é puxado por $j$ rumo ao seu valor $s_{j}=-1$.
Assim, os valores dos neurônios $i$ e $j$ convergirão se o peso entre eles for positivo. Similarmente, divergirão se o peso for negativo.

## Energia

Redes Hopfield têm um valor escalar associado a cada estado da rede referido como a energia $E$ da rede, em que:
    $E=-{\frac {1}{2}}\sum _{i,j}{w_{ij}{s_{i}}{s_{j}}}+\sum _{i}{\theta _{i}}{s_{i}}.$
Este valor é chamado de "energia" porque a definição garante que, quando as unidades a serem atualizadas são aleatoriamente escolhidas, a energia $E$ diminuirá em valor ou permanecerá a mesma. Além disso, sob atualização repetida, a rede eventualmente convergirá a um estado que é um mínimo local na função da energia (considerada uma função de Lyapunov). Assim, se um estado for um mínimo local na função de energia, é um estado estável para a rede. Note que esta função de energia pertence a uma classe geral de modelos em física, sob o nome de modelos Ising. Estes, por sua vez, são um caso especial de redes de Markov, já que a medida de probabilidade associada, a medida de Gibbs, tem a propriedade de Markov.

## Inicialização e operação

A inicialização das redes Hopfield é feita ao configurar os valores das unidades ao padrão de início desejado. Atualizações repetidas são então realizadas até que a rede convirja a um padrão atrator. A convergência é geralmente garantida, sendo que Hopfield provou que os atratores deste sistema dinâmico não linear são estáveis, não periódicos, nem caóticos como em alguns outros sistemas. Por isso, no contexto das redes Hopfield, um padrão atrator é um estado estável final, um padrão que não pode mudar qualquer valor em seu interior sob atualização.

## Treinamento

O treinamento de uma rede Hopfield envolve diminuir a energia dos estados que a rede deve "lembrar". Isto permite à rede servir como uma sistema de memória de conteúdo direcionável, isto é, a rede convergirá a um estado "lembrado" se for dada apenas parte do estado. A rede pode ser usada para recuperar, a partir de um input distorcido, um estado treinado que for mais semelhante àquele input. Isto é chamado de memória associativa porque recupera memórias com base em semelhança. Por exemplo, se treinarmos uma rede Hopfield com cinco unidades de modo que o estado $(1,-1,1,-1,1)$ seja um mínimo de energia e dermos à rede o estado $(1,-1,-1,-1,1)$, ela convergirá a $(1,-1,1,-1,1)$. Assim, a rede é apropriadamente treinada quando as energias dos estados que a rede deve lembrar forem os mínimos locais. Note que, em contraste com o treinamento no perceptron, os limites dos neurônios nunca são atualizados.

### Regras de aprendizado

Há várias regras de aprendizado diferentes que podem ser usadas para armazenar informações na memória da rede Hopfield. É desejável que uma regra de aprendizado tenha as duas propriedades seguintes:
* Local: Uma regra de aprendizado é local se cada peso for atualizado usando informação disponível aos neurônios em ambos os lados da conexão associada àquele peso particular.
* Incremental: Novos padrões podem ser aprendidos sem usar informação de padrões anteriores também usados para treinamentos, ou seja, quando um novo padrão é usado para treinamento, os novos valores para os pesos dependem apenas dos valores anteriores e do padrão novo.
Estas propriedades são desejáveis, já que uma regra de aprendizado que as satisfaça é mais biologicamente plausível. Por exemplo, já que o cérebro humano está sempre aprendendo novos conceitos, pode-se afirmar que o aprendizado humano é incremental. Um sistema de aprendizado não incremental seria geralmente treinado apenas uma vez, com um grande lote de dados de treinamento.

### Regra hebbiana de aprendizado para redes Hopfield

A teoria hebbiana foi introduzida por Donald Hebb em 1949 com a intenção de explicar o "aprendizado associativo", em que a ativação simultânea das células neuronais leva a crescimentos pronunciados na força sináptica entre aquelas células. É frequentemente resumida como "Neurônios que disparam juntos permanecem conectados. Neurônios que não disparam juntos falham em se conectar".
A regra hebbiana é tanto local, como incremental. Para redes Hopfield, é implementada da seguinte maneira, quando se aprendem $n$ padrões binários:
    $w_{ij}={\frac {1}{n}}\sum _{\mu =1}^{n}\epsilon _{i}^{\mu }\epsilon _{j}^{\mu },$
em que $\epsilon _{i}^{\mu }$ representa o bit $i$ do padrão $\mu$.
Se os bits correspondentes aos neurônios $i$ e $j$ forem iguais no padrão $\mu$, então, o produto $\epsilon _{i}^{\mu }\epsilon _{j}^{\mu }$ será positivo. Isto teria, por sua vez, um efeito positivo no peso $w_{ij}$ e os valores de $i$ e $j$ tenderão a se tornar iguais. O oposto acontece se os bits correspondentes aos neurônios $i$ e $j$ forem diferentes.

### Regra de aprendizado de Storkey

Esta regra foi introduzida por Amos Storkey em 1997, sendo tanto local, como incremental. Storkey também mostrou que uma rede Hopfield treinada usando esta regra tem uma capacidade maior do que uma rede correspondente treinada usando a regra hebbiana. A matriz de peso de uma rede neural atratora segue a regra de aprendizado de Storkey se obedecer:
    $w_{ij}^{\nu }=w_{ij}^{\nu -1}+{\frac {1}{n}}\epsilon _{i}^{\nu }\epsilon _{j}^{\nu }-{\frac {1}{n}}\epsilon _{i}^{\nu }h_{ji}^{\nu }-{\frac {1}{n}}\epsilon _{j}^{\nu }h_{ij}^{\nu },$
em que $h_{ij}^{\nu }=\sum _{k=1,k\neq i,j}^{n}w_{ik}^{\nu -1}\epsilon _{k}^{\nu }$ é uma forma de campo local no neurônio $i$.
Esta regra de aprendizado é local, já que as sinapses levam em conta apenas neurônios nos seus lados. A regra faz uso de mais informação a partir dos padrões e pesos do que a regra hebbiana generalizada, devido ao efeito do campo local.

## Padrões espúrios

Padrões usados pela rede para treinamento (chamados de estados de recuperação) se tornam atratores do sistema. Atualizações repetidas eventualmente causariam a convergência a um dos estados de recuperação. Entretanto, a rede convergirá algumas vezes a padrões espúrios (diferentes dos padrões de treinamento). A energia nestes padrões espúrios também é um mínimo local. Para cada padrão armazenado $x$, a negação $-x$ também é um padrão espúrio.
Um estado espúrio pode ser também uma combinação linear de um número ímpar de estados de recuperação. Por exemplo, quando se usam três padrões $\mu _{1}$, $\mu _{2}$, $\mu _{3}$, pode-se obter o seguinte estado espúrio:
    $\epsilon _{i}^{mix}=\pm sgn(\pm \epsilon _{i}^{\mu _{1}}\pm \epsilon _{i}^{\mu _{2}}\pm \epsilon _{i}^{\mu _{3}}).$
Padrões espúrios com um número par de estados não podem existir, já que a soma pode resultar em zero.

## Capacidade

A capacidade de rede do modelo de rede Hopfield é determinada pela quantidade de neurônios e conexões no interior de uma dada rede. Por isso, o número de memórias que podem ser armazenadas é dependente de neurônios e conexões. Além disso, mostrou-se que a precisão dae recordação entre vetores e nós era igual as 0,138, ou seja, aproximadamente 138 vetores podem ser recordados do armazenamento para cada 1.000 nós. Por isso, é evidente que muitos erros ocorrerão se se tentar armazenar um número grande de vetores. Quando o modelo Hopfield não recorda o padrão correto, é possível que uma intrusão tenha ocorrido, já que itens semanticamente relacionados tendem a confundir o indivíduo e a recordação de um padrão errado ocorre. Por isso, mostrou-se que o modelo de rede Hopfield pode confundir um item armazenado com aquele de outra recuperação. Recordações perfeitas e capacidade maior que 0,14 podem ser carregados na rede pelo método hebbiano de aprendizado.

## Memória humana

O modelo Hopfield responde pela memória associativa por meio da incorporação de vetores de memória. Vetores de memória podem ser levemente usados e isto dispararia a recuperação do vetor mais semelhante na rede. Entretanto, descobriremos que, devido a este processo, intrusões podem acontecer. Em memória associativa para a rede Hopfield, há dois tipos de operações: auto-associação e hetero-associação. A primeira ocorre quando um vetor é associado com ele mesmo e a última acontece quando dois vetores diferentes são associados no armazenamento. Além disso, ambos os tipos de operações são possíveis para armazenamento no interior de uma única matriz de memória, mas apenas se aquela matriz de representação dada não for uma ou outra das operações, mas, em vez disso, as combinação das duas (auto-associativa e hetero-associativa). É importante notar que o modelo de rede Hopfield usa a mesma regra de aprendizado da teoria hebbiana, que basicamente tentou mostrar que o aprendizado ocorre como um resultado do fortalecimento dos pesos quando a atividade está ocorrendo.
Em 2001, Daniel S. Rizzuto e Michael J. Kahana mostraram que o modelo de rede neural pode responder pela repetição na precisão de recordação ao incorporar um algoritmo de aprendizado probabilístico. Durante o processo de recuperação, nenhum aprendizado ocorre. Como resultado, os pesos da rede permanecem fixos, mostrando que o modelo é capaz de passar de um estágio de aprendizado para um estágio de recuperação. Ao adicionar deriva contextual, somos capazes de mostrar o rápido esquecimento que ocorre em um modelo Hopfield durante uma tarefa de recuperação. A rede inteira contribui para a mudança na ativação de qualquer nó único.
Publicada em 1943, a regra dinâmica de Warren McCullough e Walter Pitts, que descreve o comportamento de neurônios, faz isto de uma forma que mostra como as ativações de múltiplos neurônios mapeiam a ativação de uma taxa de disparo de um novo neurônio e como os pesos dos neurônios fortalecem as conexões sinápticas entre o novo neurônio ativado (e aqueles que o ativaram). Hopfield usou a regra dinâmica de McCullough–Pitts a fim de mostrar como a recuperação é possível na rede Hopfield. Entretanto, é importante notar que Hopfield fez isto de forma diferente da esperada. O autor usou uma função de ativação não linear, em vez de uma função linear. Isto criou a regra dinâmica de Hopfield e, com isto, o autor pôde mostrar que, com a função de ativação não linear, a regra dinâmica sempre modificará os valores do vetor de estado na direção de um dos padrões armazenados.