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