Rede Neural Artificial - Redes Hopfield

A rede neural de Hopfield foi inventada pelo Dr. John J. Hopfield em 1982. Ela consiste em uma única camada que contém um ou mais neurônios recorrentes totalmente conectados. A rede Hopfield é comumente usada para tarefas de autoassociação e otimização.

Discrete Hopfield Network

Uma rede Hopfield que opera em linha discreta ou em outras palavras, pode-se dizer que os padrões de entrada e saída são vetores discretos, que podem ser binários (0,1) ou bipolares (+1, -1) por natureza. A rede tem pesos simétricos sem auto-conexões, ou seja,wij = wji e wii = 0.

Arquitetura

A seguir estão alguns pontos importantes para se manter em mente sobre a rede Hopfield discreta -

  • Este modelo consiste em neurônios com uma saída inversora e uma não inversora.

  • A saída de cada neurônio deve ser a entrada de outros neurônios, mas não a entrada do próprio.

  • Peso / força da conexão é representado por wij.

  • As conexões podem ser tanto excitatórias quanto inibitórias. Seria excitatório, se a saída do neurônio fosse igual à entrada, caso contrário, inibitória.

  • Os pesos devem ser simétricos, ou seja wij = wji

A saída de Y1 Indo a Y2, Yi e Yn tem os pesos w12, w1i e w1nrespectivamente. Da mesma forma, outros arcos têm os pesos sobre eles.

Algoritmo de treinamento

Durante o treinamento da rede discreta de Hopfield, os pesos serão atualizados. Como sabemos, podemos ter tanto os vetores de entrada binários quanto os vetores de entrada bipolares. Portanto, em ambos os casos, as atualizações de peso podem ser feitas com a seguinte relação

Case 1 - Padrões de entrada binários

Para um conjunto de padrões binários s(p), p = 1 to P

Aqui, s(p) = s1(p), s2(p),..., si(p),..., sn(p)

Matriz de peso é dada por

$$ w_ {ij} \: = \: \ sum_ {p = 1} ^ P [2s_ {i} (p) - \: 1] [2s_ {j} (p) - \: 1] \: \: \: \: \: para \: i \: \ neq \: j $$

Case 2 - Padrões de entrada bipolar

Para um conjunto de padrões binários s(p), p = 1 to P

Aqui, s(p) = s1(p), s2(p),..., si(p),..., sn(p)

Matriz de peso é dada por

$$ w_ {ij} \: = \: \ sum_ {p = 1} ^ P [s_ {i} (p)] [s_ {j} (p)] \: \: \: \: \: para \ : i \: \ neq \: j $$

Algoritmo de teste

Step 1 - Inicialize os pesos, que são obtidos do algoritmo de treinamento usando o princípio de Hebbian.

Step 2 - Execute os passos 3 a 9, se as ativações da rede não estiverem consolidadas.

Step 3 - Para cada vetor de entrada X, execute as etapas 4-8.

Step 4 - Faça a ativação inicial da rede igual ao vetor de entrada externa X como segue -

$$ y_ {i} \: = \: x_ {i} \: \: \: para \: i \: = \: 1 \: para \: n $$

Step 5 - Para cada unidade Yi, execute as etapas 6-9.

Step 6 - Calcule a entrada líquida da rede da seguinte forma -

$$ y_ {ini} \: = \: x_ {i} \: + \: \ displaystyle \ sum \ limits_ {j} y_ {j} w_ {ji} $$

Step 7 - Aplique a ativação da seguinte forma sobre a entrada líquida para calcular a saída -

$$ y_ {i} \: = \ begin {cases} 1 & if \: y_ {ini} \:> \: \ theta_ {i} \\ y_ {i} & if \: y_ {ini} \: = \: \ theta_ {i} \\ 0 & if \: y_ {ini} \: <\: \ theta_ {i} \ end {casos} $$

Aqui $ \ theta_ {i} $ é o limite.

Step 8 - Transmita esta saída yi para todas as outras unidades.

Step 9 - Teste a rede para a conjunção.

Avaliação da função energética

Uma função de energia é definida como uma função ligada e não crescente do estado do sistema.

Função de energia Ef⁡, ⁡ também chamado Lyapunov function determina a estabilidade da rede Hopfield discreta e é caracterizada da seguinte forma -

$$ E_ {f} \: = \: - \ frac {1} {2} \ displaystyle \ sum \ limits_ {i = 1} ^ n \ displaystyle \ sum \ limits_ {j = 1} ^ n y_ {i} y_ {j} w_ {ij} \: - \: \ displaystyle \ sum \ limits_ {i = 1} ^ n x_ {i} y_ {i} \: + \: \ displaystyle \ sum \ limits_ {i = 1} ^ n \ theta_ {i} y_ {i} $$

Condition - Em uma rede estável, sempre que o estado do nó muda, a função de energia acima diminuirá.

Suponha que quando o nó i mudou de estado de $ y_i ^ {(k)} $ para $ y_i ^ {(k \: + \: 1)} $ ⁡então a mudança de energia $ \ Delta E_ {f} $ é dada pela seguinte relação

$$ \ Delta E_ {f} \: = \: E_ {f} (y_i ^ {(k + 1)}) \: - \: E_ {f} (y_i ^ {(k)}) $$

$$ = \: - \ left (\ begin {array} {c} \ displaystyle \ sum \ limits_ {j = 1} ^ n w_ {ij} y_i ^ {(k)} \: + \: x_ {i} \: - \: \ theta_ {i} \ end {array} \ right) (y_i ^ {(k + 1)} \: - \: y_i ^ {(k)}) $$

$$ = \: - \ :( net_ {i}) \ Delta y_ {i} $$

Aqui $ \ Delta y_ {i} \: = \: y_i ^ {(k \: + \: 1)} \: - \: y_i ^ {(k)} $

A mudança na energia depende do fato de que apenas uma unidade pode atualizar sua ativação por vez.

Rede Hopfield Contínua

Em comparação com a rede discreta de Hopfield, a rede contínua tem o tempo como uma variável contínua. Também é usado em problemas de auto-associação e otimização, como o problema do caixeiro viajante.

Model - O modelo ou arquitetura pode ser construído adicionando componentes elétricos, como amplificadores, que podem mapear a tensão de entrada para a tensão de saída em uma função de ativação sigmóide.

Avaliação da função energética

$$ E_f = \ frac {1} {2} \ displaystyle \ sum \ limits_ {i = 1} ^ n \ sum _ {\ substack {j = 1 \\ j \ ne i}} ^ n y_i y_j w_ {ij} - \ displaystyle \ sum \ limits_ {i = 1} ^ n x_i y_i + \ frac {1} {\ lambda} \ displaystyle \ sum \ limits_ {i = 1} ^ n \ sum _ {\ substack {j = 1 \\ j \ ne i}} ^ n w_ {ij} g_ {ri} \ int_ {0} ^ {y_i} a ^ {- 1} (y) dy $$

Aqui λ é o parâmetro de ganho e gri condutância de entrada.