algoritmo em vhdl da rede de hopfield como uma memória

Propaganda
ALGORITMO EM VHDL DA REDE DE HOPFIELD COMO UMA
MEMÓRIA ENDEREÇÁVEL POR CONTEÚDO
ALGORITHM IN VHDL THE HOPFIELD NETWORK AS A CONTENT
ADDRESSABLE MEMORY
Luiz Fernando S. Borges1
Abstract - The purpose of this project is to develop an
algorithm in VHDL of the discrete Hopfield model as a
content-addressable memory; conduct simulations and
analyze network behavior in VHDL language. In order to
write the algorithm and create the hardware synthesis for
future implementations, the software Quartus II provided
by Altera® will be used based on the Altera DE2
development kit with a Cyclone II processor model
EP2C35F672C6 with about 35,000 logic elements
available. For the algorithm simulation the ModelSim
software also provided by Altera® will be used. Two kinds
of simulation will be implemented, one using small 8-bit
arrays and another one using vectors as images.
Index Terms – Hopfield, neural networks, VHDL.
INTRODUÇÃO
Atualmente as redes neurais artificiais são aplicadas em
diversos setores como, engenharia, física, neurociência,
matemática, estatística e ciência da computação. As RNAs
foram desenvolvidas a partir do conhecimento que se tinha
sobre o sistema de um cérebro humano. Pode-se dizer que
o cérebro é um computador, um sistema desenvolvido para
processar informações, muito complexo, não linear e
paralelo. [1]
Um neurônio de uma rede neural artificial é
basicamente representado por três elementos: um conjunto
de sinapses, cada uma dessas sinapses é caracterizada por
um peso próprio, um somador para somar os sinais de
entrada, ponderados pelas respectivas sinapses do neurônio,
e uma função de ativação para restringir a amplitude de
saída de um neurônio. [1]
É possível observar na Figura. 1 que também é aplicado
um bias externamente na junção aditiva, o bias tem a função
de aumentar ou diminuir a influência do valor de entrada
para a ativação do neurônio. [2]
Ao longo dos anos, as redes neurais têm sido usadas
para resolver uma variedade de problemas. [3] [4] [5] [6]
Devido ao paralelismo e a rápida convergência da rede para
otimizar alguns problemas, o que pode reduzir o tempo da
maioria dos algoritmos sequenciais. [6]
O trabalho desenvolvido por John Hopfield, publicado
em 1982 [7], fez com que o interesse pela área de RNAs
ressurgisse, depois de passar por um período fora dos
assuntos científicos devido a publicação de Minsky e Papert
na qual mostrava que o Perceptron só resolvia problemas
linearmente separáveis. [8] Existem atualmente diversas
aplicações em diversas áreas como, engenharia, matemática
e medicina utilizando a rede de Hopfield para otimização de
soluções. [5] [6] [9]
MEMÓRIA ENDEREÇÁVEL POR CONTEÚDO
O modelo de Hopfield ganhou mais destaque sendo
utilizado como uma memória endereçável por conteúdo.
Neste tipo de aplicação, os pontos fixos da rede, ou seja, os
padrões que serão armazenados são conhecidos, mas, é
necessário determinar a matriz de pesos sinápticos, esta que
por sua vez gera os pontos fixos.
A principal função de uma memória endereçável por
conteúdo é apresentar em sua saída de dados recuperados a
partir da inserção de dados incompletos ou ruidosos.
Para que o modelo de Hopfield funcione como uma
memória endereçável por conteúdo é necessário utilizar o
neurônio formal de McCulloch e Pitts [10] como a sua
unidade básica de processamento, onde cada um dos
neurônios tem dois estados determinados pelo nível de
campo local induzido agindo sobre ele. Portanto, quando
= +1 significa que está no estado “ligado” do neurônio
e quando
= −1 significa que está no estado
“desligado”. Sendo assim, uma rede constituída por N
neurônios, o vetor de estado da rede fica definido como
sendo:
=[ ,
,…,
]
FIGURA. 1
MODELO MATEMÁTICO NÃO LINEAR DE NEURÔNIO.
1
Luiz Fernando S. Borges, aluno do Programa de Pós-Graduação em Engenharia Elétrica, UFMS, Campo Grande, MS, Brasil,
[email protected]
DOI 10.14684/INTERTECH.24.2016.111-115
© 2016 COPEC
February 28 – March 02, 2016, Salvador, BRAZIL
XIV International Conference on Engineering and Technology Education
111
(1)
O estado do neurônio representa um bit de informação
sendo ele +1 ou -1, e o vetor de estado N – por – 1 x
representa uma palavra binária de N bits de informação. [1]
O campo local induzido do neurônio é definido por:
(2)
=
+
Observando a (2) pode-se notar que é aplicado um bias fixo
externamente no neurônio , isso é necessário para que o
neurônio modifique seu estado de acordo com a regra
determinística
=
+1
−1
0
0
vetor e a distância entre um vetor e outro. Neste último caso,
a rede pode convergir para uma memória fundamental a
qual não se espera.
REDE DE HOPFIELD IMPLEMENTADO EM VHDL
Foi utilizado o software Quartus II fornecido pela
Altera® para gerar um algoritmo em VHDL de uma
memória endereçável por conteúdo do modelo de hopfield,
onde primeiramente é necessário ter uma arquitetura lógica
com diversos vetores de tamanho e uma matriz de pesos
sinápticos de tamanho
. Na Figura 2 é exibido a
arquitetura lógica do algoritmo.
(3)
esta por sua vez, apresenta mudanças no sinal do neurônio
somente se
for maior ou menor que zero. Mas em
situações em que = 0, pode ser 1. Por convenção se
= 0 o neurônio permanece no estado anterior, então
redefinindo a regra determinística:
=
+1
−1
0
0
=0
(4)
FIGURA. 2
Existem duas fases de cálculo na utilização do modelo
de Hopfield como uma memória endereçável por conteúdo,
a fase de armazenamento e a fase de recuperação. Na fase
de armazenamento é onde se gera uma matriz de pesos
sinápticos
através da entrada de um conjunto de vetores
de dimensionalidade N (dados binários) que se queira
armazenar, representado por
| = 1, 2, … , . Os
padrões a serem armazenados são representados por M
vetores, ou seja, são as memórias fundamentais da rede.
Utilizando-se da regra de armazenamento do produto
externo, o que nada mais é uma generalização do postulado
de aprendizagem de Hebb [1] o peso sináptico do neurônio
para o neurônio é definido por:
=
,
0
Onde mram é a matriz de pesos sinápticos, que tem a função
de gerar os pontos fixos da rede. O vetor_memoria_1 e o
vetor_memoria_2 são os vetores em que serão armazenadas
as memórias fundamentais da rede, a partir desses dois
vetores é criado a matriz de pesos sinápticos.
Para que o algoritmo funcione corretamente é
necessário inserir diversas variáveis como mostrado na
Figura 3.
,
=
(5)
Na fase de recuperação um vetor
de
dimensionalidade N, chamado de prova, é imposto à rede
de Hopfield como seu estado. Esse vetor de entrada tem
elementos iguais a 1, mas é uma entrada ruidosa de
alguma memória fundamental da rede. É utilizado a (2) para
examinar o campo local induzido de cada neurônio , e
da regra determinística (4) para realizar as mudanças no
sinal do neurônio .
É necessário frisar, que mesmo utilizando das
definições citadas acima, não se pode garantir que a rede vá
convergir como esperado pois, para que isso ocorra, é
necessário levar em consideração o número de memórias
fundamentais que estão armazenadas, o tamanho de cada
© 2016 COPEC
ARQUITETURA LÓGICA.
FIGURA. 3
VARIÁVEIS NECESSÁRIAS.
O algoritmo em VHDL foi elaborado para adicionar
dois vetores como memórias fundamentais da rede, portanto
no primeiro momento é necessário entrar com os dados que
February 28 – March 02, 2016, Salvador, BRAZIL
XIV International Conference on Engineering and Technology Education
112
serão armazenados na rede, a Figura 4 mostra a parte da
programação em que os vetores são inseridos.
O algoritmo é descrito de acordo com a (5), assim,
mram recebe os valores dos pontos fixos a rede de hopfield.
Após a criação da matriz se encerra a fase de aprendizado e
inicia a fase de recuperação.
A fase de recuperação é realizada de acordo com que
foi citado no capítulo anterior, onde um vetor
é
imposto à rede como seu estado. A Figura 6 mostra a parte
do algoritmo que realiza o procedimento em que se cria o
vetor
, que neste caso se chama comparacao.
FIGURA. 6
CRIAÇÃO DO VETOR
FIGURA. 4
PARTE DO ALGORITMO ONDE OS VETORES SÃO ARMAZENADOS.
.
Após o vetor comparacao armazenar os valores de
entrada da rede, se faz uso da (2) para determinar o campo
local induzido de cada neurônio da rede como mostra a
Figura 7.
De acordo com o algoritmo da Figura 4, a cada pulso
de “clock” gerado, o próximo valor que se encontra em
data_in é armazenado no vetor_memoria_1 até que seja
armazenado todos os valores do primeiro vetor.
Posteriormente é realizado o mesmo procedimento com o
vetor_memoria_2. Como a entrada data_in só recebe
valores “0” ou “1” é necessário transformar para “-1” ou
“1”.
Após ter feito o armazenamento dos vetores, é criada a
matriz de pesos sinápticos que vai determinar os pontos
fixos da rede. O algoritmo da Figura 5 descreve esse
procedimento.
FIGURA. 7
ALGORITMO QUE DESCREVE O CAMPO LOCAL INDUZIDO DO NEURÔNIO.
Assim que as operações matemáticas vão sendo
realizadas, o algoritmo trata de comparar os valores de
acordo com a regra determinística da (4) e transfere esses
valores para a saída data_out de acordo com o algoritmo da
Figura 8. Nesta parte, o signal saida2 recebe o valor “1”
caso o resultado das operações matemáticas da (11) for
positivo, caso contrário recebe “-1” ou caso o resultado das
operações seja “0” recebe o valor do estado anterior do
neurônio que está sendo analisado. Em seguida esses
valores recebidos pela saida2 são transformados para”0” ou
“1” para que se tenha uma saída física, nesse caso, data_out.
FIGURA. 5
ALGORITMO QUE DESCREVE A CRIAÇÃO DA MATRIZ DE PESOS
SINÁPTICOS.
© 2016 COPEC
February 28 – March 02, 2016, Salvador, BRAZIL
XIV International Conference on Engineering and Technology Education
113
A área destacada da Figura 13 mostra o número de
elementos lógicos utilizados.
Para a simulação foi usado o software ModelSim
fornecido pela Altera®, inicialmente é imposto a entrada
data_in valores “0” ou “1”, para que seja criado os vetores
que serão as memórias fixas da rede. No primeiro teste foi
usado os seguintes vetores:


= [−1 − 1 − 1 − 1 1 1 1 1]
= [1 1 1 − 1 − 1 − 1 − 1 − 1]
Como vetor prova, foi usado:

= [−1 − 1 − 1 − 1 − 1 1
1 1]
A Figura 10 mostra o resultado da simulação no ModelSim.
FIGURA. 8
ALGORITMO QUE DESCREVE A REGRA DETERMINÍSTICA.
Depois que percorrer toda a matriz de pesos sinápticos,
a rede tem uma resposta completa. Assim sendo, se encerra
a fase de recuperação.
SIMULAÇÕES E RESULTADOS
Para realizar os testes no algoritmo em VHDL,
primeiramente é necessário realizar a compilação do
algoritmo no software Quartus II. Em um primeiro caso, os
vetores que formam a memória fixa da rede têm o tamanho
de 8 bits, o que gera uma matriz de pesos sinápticos de
tamanho 8-por-8. Para isso o compilador sintetiza o
hardware utilizando um total de 4388 elementos lógicos de
33216 disponíveis, tomando como base o processador
Cyclone II da Altera® como mostra a Figura 9.
FIGURA 9
QUANTIDADE DE ELEMENTOS LÓGICOS UTILIZADOS PARA VETORES DE 8
BITS.
© 2016 COPEC
FIGURA. 10
RESULTADO DA SIMULAÇÃO.
Na Figura 10 a área destacada 3 mostra os vetores das
memórias fixas da rede, definidas anteriormente como e
, neste caso, equivalem a vetor_memoria_1 e
vetor_memoria_2 respectivamente. Na área 2, está a matriz
de pesos sinápticos gerada a partir dos vetores
e .A
área 4 mostra o vetor prova definido anteriormente como
que no algoritmo equivale ao vetor comparacao. As
áreas 1 e 5 são as saídas da rede, a área 5 corresponde a
saida2, que é um sinal interno da arquitetura lógica do
hardware sintetizado, já a área 1 é uma saída externa
definida como data_out.
É possível observar na Figura 10 que a rede convergiu
para uma das memórias fundamentais, neste caso, para o
vetor_memoria_1.
Para exemplificar uma aplicação mais complexa da
rede de Hopfield como uma memória endereçável por
conteúdo, foi realizado uma simulação utilizando vetores
como se fossem imagens que se queira recuperar. Para isso,
foi usado duas imagens de 25 pixels cada, ou seja, cada
imagem é uma matriz 5-po-5 como a segue a Figura 11.
February 28 – March 02, 2016, Salvador, BRAZIL
XIV International Conference on Engineering and Technology Education
114
FIGURA. 11
IMAGEM À ESQUERDA CORRESPONDENTE AO VETOR_MEMORIA_1 E À
DIREITA, VETOR_MEMORIA_2.
de 97% dos elementos lógicos de um processador da família
Cyclone II modelo EP2C35F672C6 com aproximadamente
35000 elementos lógicos disponíveis. Portanto, caso esse
algoritmo seja utilizado para outras aplicações é necessário
realizar algumas mudanças visando custos de hardware.
Para um próximo trabalho o ideal seria realizar alguns
ajustes e implementar o algoritmo em uma plataforma
FPGA, para observar como a rede se comporta visando
outras aplicações como por exemplo detecção de padrões
em biometria.
Como
, foi utilizado uma imagem ruidosa do
vetor_memoria_2 como mostra a Figura 12.
REFERÊNCIAS
[1] Haykin, S, "Neural Networks: a comprehensive foundation",
Hamilton: Prentice Hall, 2001.
[2] Zanetti, S, S, Sousa, E, F, Carvalho, D, F, Bernardo, S, “Estimação
da Evapotranspiração de Referência no Estado do Rio de Janeito
Usando Redes Neurais Artificiais,” Revista Brasileira de
Engenharia Agrícola e Ambiental, vol. XII, nº 2, 2008, pp. 174-180.
[3] Hopfield, J, J, Tank, D, W, “Neural Computational of Decisions in
Optimazation Problems,” Biological Cybernetics, vol. 52, 1985 pp.
141-152.
FIGURA. 12
IMAGEM RUIDOSA UTILIZADA COMO VETOR PROVA.
Nesta simulação, o algoritmo ocupou cerca de 97% dos
elementos lógicos disponíveis. A resposta obtida foi
satisfatória, a rede convergiu para o vetor_memoria_2 como
mostra a Figura 13.
[4] Rauch, H, E, Winarske, T, “Neural Networks for Routing
Communication Traffic,” IEEE Con. Sys. Mag., 1988, pp. 26-30.
[5] Zhang, L, Thomopoulos, S, C, A, “Neural Network Implementation
of the Shortest Path Algorithm for Traffic Routing in
Communication Networks,” Proc. Int. Joint Conf. Neural Networks,
1989.
[6] Smeda, A, A, El-Hawary, M, E, “Application of Hopfield Neural
Network in Routing for Computer Networks,” IEEE Can. Conf. on
Elec. and Comp. Eng., 1999, pp. 145-149.
[7]
Hopfield, J, J, “Neural Networks and Physical System with
Emergent Collective Computational Abilities,” Proc. Natl. Acad.
Sci., vol. 79, 1982, pp. 2554-2558.
[8] Minsky, M, Papert, S, "Perceptrons an Introduction
Computational Geometry", Cambridge: The MIT Press, 1987.
FIGURA. 13
RESPOSTA OBTIDA DA SIMULAÇÃO COM IMAGENS.
Na Figura 13, pode-se observar que para entrar com os
vetores de memória fixa foi necessário fazer um
remodelamento da matriz 5-por-5 para uma matriz 1-por25, visto que os vetores de entrada rede e o vetor prova
necessariamente precisam ter somente uma linha.
to
[9] Cheng, K, S, Lin, J, S, Mao, C, W, “The Application of Competitive
Hopfield Neural Network to Medical Image Segmentation,” IEEE
Trans. on Medical Imaging, vol. 15, nº 4, 1996, pp. 560-567.
[10] McCulloch, W, Pitts, W, “A Logical Calculus of the Ideas Immanent
in Nervous Activity,” Bulletin of Mathematical Biology, vol. 5, nº 4,
1943, pp. 115-133.
CONCLUSÃO
A rede neural de Hopfield como uma memória
endereçável por conteúdo em VHDL se comportou como
esperado, os resultados obtidos foram satisfatórios,
utilizando vetores de entrada de memória fixa da rede
distantes um do outro e vetores prova com cerca de 30% de
ruído.
Para utilizar o algoritmo em uma futura implementação
em hardware são necessários alguns ajustes pois, na
simulação com imagens de 25 pixels, o algoritmo fez uso
© 2016 COPEC
February 28 – March 02, 2016, Salvador, BRAZIL
XIV International Conference on Engineering and Technology Education
115
Download