Академический Документы
Профессиональный Документы
Культура Документы
pp. 103–108, June 2–5, 2003 – Centro Universitário da FEI, São Paulo - SP - Brazil
103
• Se T = C então wnovo = wanterior + α·[x – wanterior] 3. Descrição de redes neurais LVQ em
(uma amostra semelhante ao cluster o atrai); linguagem VHDL
• Se T ≠ C então wnovo = wanterior – α·[x – wanterior]
(uma amostra diferente do cluster o afasta); Diversos trabalhos procuram determinar uma forma
onde α é o fator de aprendizagem da rede neural. O genérica de implementação de redes neurais em
treinamento é executado para todas as variáveis de hardware, porém, sem tentar aproveitar as
entrada repetidas vezes, sempre com a ordem das características particulares de cada tipo de rede neural
variáveis alterada para uma seqüência aleatória, [8]. Neste trabalho, a característica particular de
podendo ser encerrado por um número máximo de classificação por comparação de distância geométrica
iterações ou pela estabilidade dos clusters [5]. possibilita uma enorme redução do número de
Após o treinamento, uma rede neural LVQ se torna, elementos lógicos e do tempo de processamento.
basicamente, em um comparador de pontos. Cada O bloco básico de cálculo de distância é mostrado na
amostra de entrada da rede será classificada como Figura 1. Seqüencialmente, as dimensões de cada centro
pertencente à classe do centro de cluster mais similar à de cluster são aplicadas na entrada do subtrator,
amostra [6]. A medida de similaridade ou de juntamente com as dimensões da amostra a ser
dissimilaridade entre dois pontos x e y pode ser classificada. O módulo da diferença destes valores, que
implementada como a distância geométrica entre esses representa a distância dos pontos na dimensão em
dois pontos. Das várias normas de distância existentes, a questão, é somada aos valores acumulados de distância
mais comum é a medida ponderada métrica dp: das outras dimensões no primeiro registrador. Todas
1
n p
p estas operações são realizadas em apenas um ciclo de
d p ( x, y ) = ∑ wi ⋅ xi − yi clock. A saída deste registrador é também aplicada à
i =1 (1) entrada de um comparador, que tem na sua segunda
sendo n é o número de dimensões do espaço em entrada o valor da menor distância total da amostra a
questão, p a ordem da medida de similaridade e wi um um cluster que foi encontrada até o momento. Se a nova
coeficiente de ponderação [7]. distância for menor que a armazenada, esta é carregada
Os casos mais habituais são as distâncias Euclidiana no segundo registrador. Esta operação também gasta
e de Manhattan, quando faz-se, respectivamente, p=2 e apenas um ciclo de clock. Realizadas seqüencialmente
para todos os clusters, estas operações permitem que
p=1, com pesos wi = 1 (medida não-ponderada).
seja encontrado o cluster de menor distância à amostra,
Apesar da distância Euclidiana ser mais habitual, a classificando-a segundo a sua classe.
simplificação dos cálculos quando da utilização da Para comparação, um microprocessador que siga o
distância de Manhattan a torna mais eficiente para princípio das máquinas RISC (Reduced Instruction Set
aplicações em tempo-real, reduzindo a: Computer – Computador de Conjunto de Instruções
n Reduzido) gastaria, no melhor caso, 5 ciclos de clock
d 1 ( x , y ) = ∑ xi − y i (2)
para executar a subtração condicional e a soma do
i =1 acumulador de distância. Este número, porém, é ainda
A distância de Manhattan foi a medida de maior na maioria dos casos, pois não leva em conta os
similaridade utilizada na implementação do bloco de problemas de conflitos de controle (que inclui o
cálculo de distância, o qual é a base da rede neural LVQ preenchimento do pipeline do processador), conflitos
em hardware deste trabalho. estruturais (seqüências de instruções que geram ciclos
maiores de execução) e dependência de dados (o que
exige que o resultado de uma operação seja reescrito
nos registradores para ser utilizado) [9].
contagem de dimensões
clock do sistema
104
O esquemático do sistema completo é mostrado na amostra de entrada da FIFO para a RAM interna. Os
Figura 2. Este diagrama apresenta uma memória ROM estados de S3 a S8 realizam as comparações sucessivas
para o armazenamento dos centros de clusters (os quais de cada dimensão da amostra de entrada e dos vetores
são definidos a priori por sessões de treinamento da de referência, armazenando o vetor de referência de
rede neural) e uma memória FIFO para o recebimento menor distância em relação à amostra de entrada. A
das amostras durante a classificação da amostra rede LVQ da Figura 3 é configurada para 100
anterior. O controle do sistema é realizado pela dimensões e 20 subclusters por classe, com duas
máquina de estados mostrada na Figura 3. Nesta, os classes. O resultado final da classificação é fornecido
estados de S1 e S2 correpondem à transferência da em S9.
clock
rom_cluster
address_rom(11:0)
mem RE_rom
2048x16 data_rom(15:0)
clock
reset
lvq_ctrl
data_in_fifo
data_fifo(15:0)
(15:0)
fifo_lvq RE_fifo
busy
WE_fifo mem
128x16 class_out(1:0)
clock
lvq_finish
reset
Estado Inicial
Inicializa variáveis:
LVQ_Start=0 S0 cnt_dim = 0;
S9
cnt_cluster=0;
dist_final = '7FFF'h sim
Armazena a nova distância
Disponibiliza a classe do no lugar da anterior
cluster selecionado na saída;
LVQ_Start=1
não Sinaliza que fim da LVQ
S8
não
sim
S2 Sinaliza que a FIFO
Escreve o valor lido da FIFO está livre;
S3
na memória de RAM dados; cnt_dim=0
não
105
4. Resultados da memória FIFO. Na Figura 5(b), o vetor de entrada é
comparado com um centro de cluster idêntico a ele,
Na implementação em hardware de uma rede neural gerando diferenças acumuladas nulas. A classe
LVQ, o fator limitante é a grande quantidade de temporária muda de estado, já que este último cluster
memória necessária para o armazenamento dos vetores pertence à classe contrária do vetor mais próximo
de referência. Nas simulações realizadas, foi anterior.
implementada uma rede de 64 dimensões, duas classes As diferenças acumuladas de valor 21 são as
e 16 subclusters por classe. A síntese foi realizada em comparações do vetor de entrada com os valores nulos
um dispositivo ACEX1k100, da Altera, que possui da FIFO, já que apenas os dois primeiros vetores foram
49152 bits de memória interna e 4992 células lógicas. preenchidos.
Para a compilação dos circuitos descritos, foi utilizado A indicação de fim de classificação e o sinal de
o software Leonardo (Exemplar) e para a síntese física saída indicando a classe final são mostrados na Figura
e simulações foram utilizados os softwares MAX+plus 6. O tempo total de execução da rede neural LVQ para
II e Quartus II (Altera). a classificação de um ponto (compreendido entre os
Na Figura 4 é mostrado o preenchimento inicial da sinais lvq_start e lvq_finish) é de cerca de 334µs, a um
memória FIFO de entrada. Foi gravado um vetor igual clock de 25 MHz. A Tabela 1 mostra os tempos de
a [1, 2, 3, 4, 5, 6, 0, 0, 0, ...,0] para ser comparado aos cada estágio do processo e o tempo total de
vetores de referência (na simulação, o valor inicial dos processamento da rede neural LVQ. Este tempo
dados da memória FIFO é ‘0’, porém, em uma aumenta proporcionalmente com número de pontos
execução real, todos os valores necessitam ser que devem ser comparados, número este representado
preenchidos). Apenas para exemplo, os dois primeiros pelo produto entre número de dimensões, número de
vetores da ROM contém os dados [0, 1, 2, 3, 4, 5, 0, 0, subclusters por classe e número de classes. A Tabela 2
0, ..., 0] e [1, 2, 3, 4, 5, 6, 0, 0, 0, ..., 0] mostra o total de utilização de recursos lógicos da
respectivamente. Com estes vetores, dois casos podem FPGA na síntese do circuito apresentado, bem como os
ser testados: um centro de cluster mais próximo da percentuais de utilização de uma FPGA ACEX1k100,
origem do que o vetor fornecido e um centro de cluster da Altera, que estas valores representam.
igual ao vetor de entrada, este de classe diferente do
primeiro. A execução da rede LVQ é iniciada pelo Tabela 1: Tempos de execução dos estágios da rede
sinal lvq_start, após o qual os dados da FIFO são neural LVQ
transferidos para a RAM interna. Durante esta Estágio Tempo
transferência, o sinal fifo_busy indica que a FIFO está Preenchimento da RAM de dados 5,12µs
bloqueada para escrita. Comparação de uma dimensão 170ns
Na Figura 5(a), é mostrada a comparação do vetor Cálculo de um vetor de 64 dimensões 10,28µs
de entrada com o primeiro vetor de referência, o qual é Total (32 subclusters) ~334µs
um vetor com dimensões menores do que o vetor de
entrada. Cada dimensão é comparada seqüencialmente, Tabela 2: Utilização de recursos lógicos na síntese da
sendo o endereço das memórias calculado a partir dos rede neural LVQ
três contadores mostrados: contador de dimensões Bloco Células lógicas Bits de memória
(cnt_dim), contador de subclusters (cnt_cluster) e Fifo 26 (0,52%) 1024 (2,08%)
contador de classes (cnt_class). As diferenças de cada Rom_w - - 32768 (66,67%)
dimensão são calculadas no sinal dif_temp e depois Lvq_ctrl 258 (5,17%) 1024 (2,08%)
acumuladas no sinal dif_acc. Também se pode Total 284 (5,69%) 34816 (70,83%)
observar o final do período de transferência dos dados
106
(a)
(b)
Figura 5: Comparação do vetor de entrada com dois casos de vetores de referência
107
Número de s ubclus ter por clas s e 1000
100
2c
4c las
l ses
8c a ss
las e s
16 ses
cla
32 sse
c la s
64 sse
10 c la s
128 sse
c la s
256 sse
c la s
512 sse
c la s
102 sse
4c s
las
ses
1
1 10 100 1000
Número de dimens ões da rede ne ural
Figura 7: Limites de configuração dos parâmetros da rede LVQ para um dispositivo FPGA ACEX1k100
A velocidade de execução da rede, dada pelo to intermittent photic-stimulation. In: VII Brazilian
número de ciclos de clock necessários para a execução Symposium on Neural Networks, Recife, IEEE Computer
completa da classificação de um vetor de entrada, Society, pages 164-168, 2002.
também tem um crescimento semelhante à área de [4] T. Kohonen. Self Organization Maps. 2. ed. Springer-
Verlag, Heidelberg, pages 245-261, 1997.
utilização da FPGA, sendo proporcional ao produto [5] S. Haykin. Redes Neurais: Princípios e Prática. 2. ed.
entre o número de dimensões, o número de classes e o Porto Alegre: Bookman, p. 483-519, 2001.
número de subclusters por classe. [6] M. Friedman, A. Kandel. Introduction to Pattern
Recognition: Statistical, Structural, Neural and Fuzzy
5. Conclusões Logic Approaches. Imperial College Press, London,
pages 55-98, 1999.
[7] S. Theodoridis, K. Koutroumbas. Pattern Recognition.
A implementação em linguagem VHDL da rede Academic Press, London, pages 351-382, 1999.
neural LVQ mostrou ser bastante complexa a [8] J.J. Blake, L.P. Maguire, T.M. McGinnity, B. Roche, L.J.
seqüência de desenvolvimento deste tipo de circuito. McDaid. The implementation of fuzzy systems, neural
Porém, apresentou resultados superiores à capacidade networks and fuzzy neural networks using FPGAs.
de processamento de microprocessadores RISC de Information Sciences, 112(1-4):151-168, 1998.
freqüência de clock e largura de barramento [9] J.L. Hennessy, D.A. Patterson. Computer Architecture: a
semelhantes ao que foi utilizado nas FPGAs. O Quantitative Approach. 2. ed. Morgan Kaufmann
principal fator para essa diferença de eficiência é o fato Publishers, San Francisco, pages 139-146, 1996.
de processadores seqüenciais gastarem tempo com
Rev. 15/04/2003
instruções para o deslocamento de fluxo de execução,
teste de condições e para o acesso de dados em
memória, tempo este significativo no caso de
seqüências repetitivas de cálculo, e que é muito menor
no caso de uma implementação em hardware, devido à
possibilidade de implementação de circuitos
combinacionais específicos e blocos paralelos. A
eficiência dos circuitos desenvolvidos torna-os
possíveis de serem utilizados em várias outras
aplicações de sistemas embarcados.
Referências
108