Você está na página 1de 46

Universidade Federal de Pernambuco

CENTRO DE INFORMTICA

Trabalho de Graduao

Implementao de uma
arquitetura de Redes Neurais MLP
utilizando FPGA

Aluno: Antonyus Pyetro do Amaral Ferreira (apaf@cin.ufpe.br)


Orientadora: Edna Natividade da Silva Barros (ensb@cin.ufpe.br)
Orientadora: Teresa Bernarda Ludermir (tbl@cin.ufpe.br)

Recife, 24 de novembro de 2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Resumo

Este trabalho se prope a apresentar desafios e solues no fluxo de


projeto do desenvolvimento de uma arquitetura de Redes Neurais
Artificiais (RNAs)
Programmable

Multilayer Perceptron (MLP) implementada em Field

Gate

desenvolvimento

da

Arrays

(FPGA).

arquitetura

Cada
descrita

escolha

no

trivial

acompanhada,

no

quando

possvel, por medidas de comparao plausveis. No se focaliza dentro


desse tema a parte de aprendizagem online de RNAs. Apresentam-se
ainda os resultados: o erro produzido, tempo de execuo e rea utilizada.

Pgina 1

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

RESUMO............................................................................................................................................1
1.

INTRODUO......................................................................................................................3

2.

REDES NEURAIS ARTIFICIAIS MLP..........................................................................4

2.1
2.2
2.3

NEURNIO ARTIFICIAL..............................................................................................................5
APRENDIZADO DAS RNAS........................................................................................................6
O BACK-PROPAGATION.............................................................................................................9

3.

PEQUENA INTRODUO AOS FPGAS...................................................................10

4.

PROJETO DE RNAS EM FPGA....................................................................................11

4.1
ESCOLHAS DE PROJETO...........................................................................................................11
4.1.1
Ponto Flutuante VS Ponto Fixo....................................................................................12
4.1.2
Aproximao da Funo de Ativao...........................................................................15
4.2
IMPLEMENTAO DO NEURNIO.............................................................................................22
4.3
IMPLEMENTAO DA REDE NEURAL......................................................................................25
4.4
ESTRUTURA DE TESTE.............................................................................................................28
5.
5.1
5.2
5.3
6.

ANLISE DE RESULTADOS..........................................................................................30
ERRO.......................................................................................................................................31
TEMPO DE EXECUO.............................................................................................................32
REA.......................................................................................................................................33
TRABALHOS RELACIONADOS...................................................................................34

6.1
FPGA IMPLEMENTATION OF A FACE DETECTOR USING NEURAL NETWORKS [16]...................34
6.2
FPGA IMPLEMENTATION OF A NEURAL NETWORK FOR A REAL-TIME HAND TRACKING
SYSTEM [17].......................................................................................................................................35
7.

CONCLUSES E TRABALHOS FUTUROS.............................................................37

8.

APNDICE...........................................................................................................................39

8.1
8.2

9.

APROXIMAES DA SIGMIDE...................................................................................................39
ESQUEMTICO COMPLETO DA REDE NEURAL DO XOR................................................................41

REFERNCIAS...................................................................................................................42

ASSINATURAS...............................................................................................................................44

Pgina 2

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

1.

Introduo

As Redes Neurais Artificiais (RNAs) tm sido amplamente utilizadas nas


mais diversas reas do conhecimento; em aplicaes como previses de
sries temporais, controle, anlise de sinais biolgicos, etc. Paralelamente,
nos ltimos tempos, o uso de Field Programmable Gate Arrays (FPGAs)
tem crescido, bem como, sua capacidade de processamento.
Tentando unir essas duas reas, a fim de propor modelos de RNA que
melhor se adequam s limitaes propostas pela arquitetura dos FPGAs
encontram-se os trabalhos de [2], [7], [8], [9] e [10].
Antes de entrar nas diretrizes de implementao das RNAs em FPGA, so
apresentados os conceitos mais importantes no desenvolvimento das
RNAs BackPropagation e de um fluxo de projeto visando implementao
em FPGA, nos captulos 2 e 3 respectivamente.
No captulo 4 apresentado todo fluxo de desenvolvimento com detalhes
de implementao e sendo ressaltados os motivos de cada escolha de
projeto.

No

captulo

seguinte,

analisa-se

os

resultados

de

forma

comparativa. Confronta-se o modelo matemtico terico, modelo prtico,


implementao em FPGA e em software. Como estudo de caso tem-se o
problema do diabetes com sua dimensionalidade reduzida.
Duas ilustraes da literatura so trazidas discusso no captulo 6: uma
implementao de um detector de faces e um sistema de reconhecimento
pela palma da mo. Ambas implementaes em FPGA.

Pgina 3

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

2.

Redes Neurais Artificiais MLP

O crebro humano composto por bilhes de clulas interconectadas


numa rede gigantesca. Algumas tarefas simples que se faz no dia-a-dia,
usando uma parte dos trilhes de conexes do crebro, ainda so alvo de
pesquisas que tentam reproduzir por meio de computador os resultados
que se consegue sem mesmo se saber como. As redes neurais artificiais
(RNAs) so modelos computacionais que se espelham no arranjo e na
arquitetura dos crebros dos animais. Inspirado no modelo biolgico, foi
definido para as RNAs um modelo de neurnio artificial e as conexes que
simulam as sinapses. Esse ramo da computao teve seu primeiro apogeu
com a criao das redes Perceptron [1]. Depois de altos e baixos constitui,
hoje em dia, um importante segmento de pesquisa trazendo, muitas
vezes,

resultados

muito

mais

satisfatrios

do

que

computao

algortmica tradicional.
O processamento do crebro inerentemente paralelo e distribudo, as
informaes so guardadas nas conexes de neurnios, se aprende
atravs de exemplos e repetio. Tudo isso realizado por unidades simples,
porm numerosas que isoladamente no fazem diferena para o todo. Mas
bem verdade que se cria e tambm se usa conhecimento prvio para
adaptar-se a situaes nunca antes passadas. Usando o paralelo biolgico,
nas RNAs um grande nmero de neurnios trabalha de forma conexa para
processar a informao e fornecer um resultado.
As RNAs tem sido usadas em inmeras reas do conhecimento, como
processamento de sinais, anlise de imagens mdicas, sistemas de
diagnstico e previses de sries temporais. Um problema tipicamente
solucionvel com RNAs deve ser descrito como um problema de
reconhecimento de padres ou de aproximao de uma funo. Para os
casos de reconhecimento de padres uma RNA deve classificar um padro
de entrada dentre os de sada, mesmo sem nunca ter visto o referido
padro.
Pgina 4

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

As RNAs apresentam as seguintes caractersticas desejveis [1]:


a. Aprendem atravs de exemplos
-

Inferncia estatstica no paramtrica

b. Adaptabilidade
c. Capacidade de generalizao
d. Tolerncia a falhas
e. Implementao rpida

2.1

Neurnio artificial

O neurnio artificial a unidade da arquitetura das redes neurais


artificiais. Na estrutura do neurnio observa-se:
a. Um conjunto de entradas que recebem os sinais de entrada do
neurnio;
b. Um conjunto de sinapses cujas intensidades so representadas por
pesos associados a cada uma delas;
c. Uma funo de ativao que relaciona as entradas e suas sinapses
ao limiar da funo a fim de definir se o neurnio ser ativado ao
no.

Pgina 5

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 2.1 Modelo de um neurnio artificial

Na Figura 2.1, extrada de [2], cada wi representa os pesos associados


com as entradas xi. a funo de ativao ou limiar.
O resultado da sinapse total de entrada dado pelo produto interno do
vetor de entrada pelo vetor de pesos. E a sada y obtida pela aplicao
de (u).
Assim nas implementaes de RNAs que seguem um modelo similar de
neurnio precisa-se computar, paralelamente, um nmero de produtos
internos que cresce exponencialmente com a quantidade de conexes na
rede.
Depois de computado a sinapse total (u), esse resultado aplicado na
funo de limiar que deve apresentar (para o algoritmo backpropagation
apresentado na seo 2.3) algumas caractersticas particulares:
a. No linear;
b. Diferencivel , contnua e, geralmente, no decrescente;
c. Sigmoidal.

Algumas funes de limiar usadas so:


a. Funo degrau unitrio;
(u) = 1 se u > 0, (u) = 0, caso contrrio
b. Funo rampa unitria
Pgina 6

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

(u) = max{0.0, min{1.0, u + 0.5}}


c. Funo sigmide logstica
(u) = a /{ 1 + exp(bu) }
Onde a e b representam, respectivamente, a amplitude e a inclinao da
funo.

2.2

Aprendizado das RNAs

Por aprendizado entende-se a capacidade de aprender a partir de seu


ambiente e melhorar sua performance no decorrer do tempo. Os principais
paradigmas de aprendizado so:
a. Aprendizado supervisionado nesse tipo de aprendizado se tem
um prvio conhecimento sobre o ambiente, na forma de um
conjunto de pares (perguntas, respostas) sobre os quais se deve
aprender. A RNA pode ser treinada, usando esse tipo de paradigma,
usando uma etapa de treinamento anterior operao (offline) ou
pode-se aprender quando a rede estiver operando (online).
b. Aprendizado por reforo visualiza-se nesse paradigma a figura
de um crtico que, ao contrrio do aprendizado supervisionado, no
detm as respostas, mas avalia a deciso da rede como boa ou
ruim. A rede usa essa informao para maximizar a satisfao do
crtico.
c. Aprendizado no supervisionado neste aprendizado, no se
possui informaes prvias nem o papel do crtico. Uma rede neural,
que

segue

automaticamente

aprendizado
os

dados,

no

supervisionado,

extraindo

classifica

estatisticamente

suas

caractersticas mais relevantes.


Em RNAs o procedimento usual na soluo de problemas passa
inicialmente por uma fase de aprendizagem, em que um conjunto de
Pgina 7

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

exemplos apresentado rede e a partir da so geradas respostas para o


problema segundo sua capacidade de generalizao.
A generalizao est associada capacidade de a rede aprender atravs
de um conjunto reduzido de exemplos e posteriormente dar respostas
coerentes para dados no conhecidos.
Sabe-se que as redes de apenas uma camada resolvem apenas problemas
linearmente

separveis.

soluo

de

problemas

no

linearmente

separveis passa pelo uso de redes com uma ou mais camadas


intermedirias. Uma rede com uma camada intermediria pode aproximar
qualquer funo contnua.

Figura 2.2 Topologia de uma RNA

A preciso obtida e a implementao da funo objetivo dependem do


nmero de nodos utilizados nas camadas intermedirias. Esse nmero
em geral definido empiricamente, ele depende fortemente da distribuio
dos padres de treinamento e de validao da rede. A Figura 2.2 mostra
os elementos da topologia de uma RNA com uma camada intermediria.
O nmero adequado de nodos na camada intermediria depende de vrios
fatores, como:
a. Numero de exemplos de treinamento;
Pgina 8

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

b. Quantidade de rudo presente nos exemplos;


c. Complexidade da funo a ser aprendida;
d. Distribuio estatstica dos dados de treinamento.
Deve-se ter cuidado para no utilizar nem unidades demais, o que pode
levar a rede a memorizar os padres de treinamento e detalhes do rudo,
em vez de extrair as caractersticas gerais garantindo a generalizao (o
chamado overfitting), nem um nmero muito pequeno, que pode forar a
gastar tempo excessivo tentando encontrar a representao tima, alm
de esta rede poder ser pouco complexa para aproximar a funo desejada
(o underfitting).

2.3

O Back-Propagation

O algoritmo de aprendizado mais conhecido para treinamento das RNAs


o back-propagation. O back-propagation um algoritmo supervisionado
que utiliza pares (entrada, sada desejada) para ajustar os pesos da rede.
O treinamento ocorre em duas fases, em que cada fase percorre a rede
em um sentido. Estas duas fases so chamadas de forward e backward.
Na fase forward a entrada utilizada para computar, ao longo das
camadas, as sadas produzidas pelos neurnios da camada de sada. Essas
sadas so comparadas s sadas desejadas e o erro para cada neurnio
da camada de sada calculado.
Na fase de backward, em cada neurnio feito um ajuste do peso de
forma a reduzir o erro. Isso feito assumindo uma taxa de aprendizagem
previamente definida que pode ser nica para todas as camadas, varivel
com o decorrer do tempo ou crescente medida que a camada se afasta
da

sada.

Os

erros

dos

neurnios

das

camadas

mais

internas

correspondem a uma ponderao do erro das camadas anteriores na fase


de backward.
Pgina 9

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

O algoritmo do back-propagation procura minimizar o erro obtido pela rede


ajustando pesos para que eles correspondam aos pontos mais baixos na
superfcie

de

erro.

Usando,

para

isso,

um

mtodo

de

gradiente

descendente. O back-propagation bom um mtodo para minimizao


local do erro.
Para superfcies de erro simples este mtodo certamente encontra a
soluo com erro mnimo. J para superfcies mais complexas o algoritmo
pode levar a convergir para mnimos locais.

3.

Pequena introduo aos FPGAs

Um Field Programmable Gate Array (FPGA) um dispositivo lgico


reconfigurvel. Ele composto por um matriz de blocos lgicos que
podem estar ligados uns aos outros para implementar complexas
expresses

lgicas

especificando-se

[5].

funes

Um

projeto

lgicas

do

simples

usurio
para

implementado

cada

clula

e,

seletivamente, se fechando as conexes da matriz de blocos (vide figura


3.1).

Figura 3.3 Arquitetura de FPGA [6]


Pgina 10

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

A caracterstica de ser programvel em campo (Field Programmable)


significa que a funo implementada no FPGA definida pelos usurios
em loco ao invs do fabricante do chip. No caso de um circuito integrado
tpico, a determinada funo predefinida no momento da manufatura do
chip.
FPGAs so utilizados, hoje em dia, como meio de rpida prototipao de
circuitos digitais. Esses sistemas podem vir a ser produzidos em larga
escala em ASICs ou distribudos numa plataforma final em FPGA. Na
figura 3.2 pode-se ver melhor um exemplo de fluxo de projeto partindo
da concepo ao produto final em ASIC.

Figura 3.4 Exemplo de Fluxo de Projeto [6]

Freqentemente,

FPGAs

so

utilizados

como

arquitetura

de

implementao de sistemas que necessitem de paralelismo de dados e de


controle para aplicaes de alto desempenho.

Pgina 11

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

4.

Projeto de RNAs em FPGA

Este captulo define, de forma sistemtica, o fluxo de desenvolvimento da


arquitetura de RNA descrita em linguagem HDL. Todas as decises de
projeto so explicitadas e uma anlise comparativa sempre acompanha o
raciocnio na deciso por um caminho a ser tomado no projeto.

4.1

Escolhas de projeto

Quando se depara com um problema a ser resolvido, diversas escolhas


tiveram de ser tomadas. Algumas delas tolhem fortemente os prximos
passos num fluxo de projeto. As decises tomadas, descritas a seguir,
levaram em conta o tempo disponvel para concluso deste trabalho de
graduao, critrios de eficincia-confiabilidade, bem como pretenses de
extensibilidade deste trabalho.

4.1.1

Ponto Flutuante VS Ponto Fixo

O Instituto dos Engenheiros eltricos e eletrnicos (IEEE) padroniza as


representaes de ponto flutuante sob o padro IEEE 754 [14]. A
representao em ponto flutuante similar a notao cientfica em que
existe um nmero multiplicado por sua base elevada a um expoente.
O maior benefcio desta representao que ela prov vrios graus de
preciso baseados na escala dos nmeros que se est usando. Por
exemplo, falando em termos de nanmetros quando se relaciona a
distncia entre transistores em um circuito integrado.
O padro IEEE 754 (vide figura 4.1) define representaes tanto para
ponto flutuante de preciso simples (32bits) e de dupla preciso (64bits)
quanto para suas verses estendidas. Um nmero representado em
Pgina 12

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

preciso simples tem: o bit de sinal, um campo de expoente, e a mantissa.

Figura 4.5 Representao Ponto Flutuante preciso simples

O expoente um nmero de 8 bits resultando em um intervalo de -126


at 127. Na verdade, o expoente no est na tpica representao de
complemento de 2, ao invs disso, ele biased adicionando 127 ao
expoente desejado permitindo representar nmeros negativos.
A mantissa est na representao binria normalizada do nmero a ser
multiplicado pela base 2 elevado a potncia definida no expoente.
J a notao de ponto fixo define-se um radix especfico e h um nmero
fixo de bits para representar os campos a esquerda e a direita do radix. Os
bits da esquerda so chamados bits inteiros e os da direita bits
fracionrios. Um formato na representao de ponto fixo pode ser visto na
figura 4.2.

Figura 4.6 Formato representao ponto fixo

Pgina 13

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

A maior vantagem em se usar ponto fixo para nmeros reais reside no fato
que nmeros em ponto fixo aderem aos mesmos princpios da aritmtica
de nmeros inteiros. Alm do mais, migrar para essa representao a
partir de uma arquitetura de inteiros no requer nenhuma lgica adicional.
A desvantagem do uso do ponto fixo fortemente fundamentada no fato
que os nmeros s podem ser representados em um intervalo limitado de
valores. Logo, torna-se susceptvel a ocorrncia de inacurcia.
Tabela 4.1 Comparativo ponto flutuante vs ponto fixo

Ponto flutuante

Ponto fixo

Preciso

Custo
final

Range Dinmico

Velocidade

Tempo
desenvolvimento

do

produto

de

Na implementao do neurnio artificial optou-se pelo uso do ponto


flutuante. Nessa escolha buscou-se encontrar uma maior fidelidade do
modelo das RNAs proposto em software e a preciso para se trabalhar
com valores que estejam em ordem de grandeza no previamente
especificados (necessrio para ponto fixo). Outro ponto importante para a
referida escolha foi que se levaria a uma arquitetura limitada a tarefa de
classificao apenas. Visto que, o uso do ponto fixo ocasiona uma
oscilao no processo de aprendizagem.
A Altera dispe de componentes de aritmtica de ponto flutuante em sua
biblioteca. Atualmente esto disponveis componentes para preciso
simples, preciso dupla e para preciso simples estendida. O uso de um
componente disponibilizado pela fabricante do FPGA utilizado agregou
maior confiabilidade ao fluxo de desenvolvimento do neurnio artificial.
Usou-se

os

componentes:

somador/subtrator

(ALTFP_ADD_SUB),

multiplicador (ALTFP_MULT), comparador (ALTFP_COMPARE) todos de


preciso simples padro IEEE 754. Esquemtico dos componentes
Pgina 14

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

mostrado na figura 4.3.

Figura 4.7 Blocos dos componentes aritmticos de ponto flutuante

4.1.2

Aproximao da Funo de Ativao

Como visto no captulo 2, comumente se usa como funo de ativao das


redes

neurais

MLP

funo

sigmide

logstica.

Essa

funo

perfeitamente realizvel, entretanto uma implementao direta em


hardware no prtica porque requer uma lgica excessiva.
Conseqentemente,
implementao

em

um

grande

hardware,

nmero
tem

sido

de

aproximaes,

desenvolvidas.

visando

Desde

implementao direta em uma Look up table (que utiliza uma grande


quantidade de memria) at outras categorias de aproximaes como:
lineares por partes, segunda ordem por partes e os mapeamentos de
entrada/sada combinacionais.
Uma abordagem mais intuitiva seria aproximar a funo usando sries
polinomiais como a srie de Taylor que pode ser usada para representar
qualquer funo contnua arbitrria. Para se reduzir a ordem do polinmio
pode-se valer do particionamento do domnio da funo em subintervalos
menores. Mas essa estratgia em hardware gera um maior nmero de
lgica a ser implementada.
Pgina 15

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Olhando para a expanso da serie de Taylor para a sigmide v-se que


essa aproximao no nem um pouco econmica.

(eq. 4.1)

Logo foi necessrio buscar outra aproximao que apresente melhor custo
benefcio

entre

rea,

tempo

de

processamento

dificuldade

de

implementao.
A primeira alternativa consistiu em uma aproximao linear por partes
otimizada que define as funes [13]:

(eq. 4.2)

O esquema como segue na Figura 4.4:

Figura 4.8 Aproximao linear por partes otimizada

Pgina 16

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

A partir das funes iniciais o mtodo computa a sada em q passos da


seguinte forma:

(eq. 4.3)

Esse algoritmo define a parte negativa do domnio funo, havendo uma


simetria, rebate-se a parte negativa para se obter a parte positiva.
O valor de depende do valor de q. O autor explica que a melhor
aproximao se d para q = 4 e, por conseguinte = 0.2638. Esse mtodo
disponibiliza a sada em 4 passos. A implementao desse mtodo em
Matlab script encontra-se no apndice.
Testando o mtodo implementado no Matlab, constatou-se que o erro
mdio media: 1.4539e-017; e o erro mximo: 0.0194, no intervalo -5 a 5.
Nas figuras subseqentes apresenta-se visualmente como se comporta a
aproximao (esquerda) em comparao com a sigmide real (direita).

Pgina 17

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 4.9 Aproximao linear otimizada (esquerda)

Figura 4.10 Aproximao linear otimizada (vermelho) vs sigmide

Apesar da boa aproximao dada, nesse algoritmo so necessrias quatro


iteraes. Privilegiou-se a busca de uma forma mais direta da computao
da sigmide mesmo que o resultado seja menos preciso que o mtodo
atual.
O segundo mtodo avaliado tambm classificado como linear por partes.
A chamada PLAN approximation foi proposta por Amin, Curtis e HayesGill
Pgina 18

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

[12]. um mtodo simples e direto de se implementar:


Tabela 4.2 Aproximao PLAN

A maior desvantagem tambm advm da simplicidade do mtodo que


apresenta uma aproximao no suave da sigmide. Como visto no
captulo 2, a funo de ativao precisa ser diferencivel em todos os
pontos para que se possa ser aplicado um algoritmo de aprendizado
baseado no gradiente descendente. Graficamente ficam bem evidentes os
pontos de interseco dos segmentos, como na figura abaixo.

Figura 4.11 Aproximao PLAN (esquerda)

Embora parea grosseiro, o mtodo PLAN uma boa aproximao com


erro mdio 8.9214e-018 e erro mximo sendo 0.0189, no intervalo -5 a 5.
A prxima figura mostra que inclusive o mtodo melhor nas bordas do
intervalo inspecionado.
Pgina 19

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 4.12 PLAN (vermelho) vs sigmide

A implementao para essa tcnica tambm est disponvel em Matlab


script no apndice.
A terceira e ltima abordagem testada agrupa-se na classe das
aproximaes por partes de segunda ordem. Isso implica que a funo
tenha a forma de:

(eq. 4.4)

Uma desvantagem obvia a necessidade de multiplicaes. Zhang,


Vassiliadis e DelgadoFrias [11] propuseram uma verso que necessita de
uma

multiplicao

multiplicaes

(para

calcular

implementa-se

com

quadrado)
lgica

restante

combinacional.

Ademais

precisamos de um somador.

(eq. 4.5)

Pgina 20

das

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Alm de ser feito em um nico passo, esse mtodo tambm apresenta a


vantagem de fornecer uma aproximao suave. Essa caracterstica
propicia a uma possvel extenso da arquitetura proposta para incluir a
parte do aprendizado baseado num mtodo de gradiente descendente. A
implementao da tcnica forneceu um erro mdio de 8.5910e-018 e erro
mximo de 0.0215. Uma melhor visualizao da suavidade (compatvel
com o 1 mtodo analisado) pode ser vista na figura abaixo.

Figura 4.13 Aproximao de 2 ordem (esquerda)

Sua acurcia bem apresentada no comparativo com a funo a ser


aproximada:

Pgina 21

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 4.14 Aproximao de 2 ordem (vermelho) vs sigmide

O quadro comparativo da tabela 4.3 ilustra melhor as caractersticas de


cada abordagem.

Tabela 4.3 Quadro comparativo das aproximaes

Mtodo

erro mdio

erro

Suave

Rpido

0.0194

sim

no

0.0189

no

sim

0.0215

sim

sim

max
1

ordem

por

1.4539e-

partes otimizado
1

ordem

por

017
8.9214e-

partes simples
2

ordem

018
por

8.5910e-

partes simples

018

Analisando os dados da tabela 4.3 constata-se que a terceira abordagem

apresenta-se como a melhor escolha, dados os propsitos. Ela tem um


erro mximo superior s outras, mas tem baixo erro mdio, as
caractersticas de ser suave e de fcil implementao. Por esses aspectos
decidiu-se

pela

concepo

do

neurnio

Pgina 22

com

funo

de

ativao

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

aproximada pelo mtodo 3.

4.2

Implementao do Neurnio

Rememorando a explicao dada no captulo 2, o neurnio composto das


entradas, sua regra de propagao, funo de ativao e suas sadas.
A partir de agora se tm, no horizonte, definidos todos os componentes da
arquitetura do neurnio. Decidiu-se que se usaria aritmtica de ponto
flutuante e que aproximao da sigmide logstica seria implementada.
Claro que todos os problemas no esto resolvidos. A unidade funcional da
rede deveria ser flexvel e definida de forma transparente ao usurio
utilizador. Para isso veio a iniciativa de se configurar os pesos sem a
necessidade de mexer no cdigo do neurnio. Para uma melhor
visualizao, a Figura 4.11 mostra o bloco do neurnio de duas entradas.

Figura 4.15 Bloco esquemtico do neurnio

A tabela acima do bloco do neurnio na Figura 4.11 corresponde aos


pesos e esta editvel graficamente. O peso W0 o bias do neurnio. Ele
deve ter o sinal trocado visto que se suprimiu a entrada de valor fixo 1 a
que ele estaria associado. A notao utilizada para os pesos est como
definida pelo padro IEEE 754 (preciso simples 32 bits) em hexadecimal.
O primeiro passo para computar a sada do neurnio realizar o clculo da
regra de propagao. Para realizar a computao da soma de produtos das
Pgina 23

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

entradas pelos pesos reservou-se apenas um somador e um multiplicador


de ponto flutuante. Ao escolher apenas um componente de cada se
pretendeu minimizar a rea utilizada pelo componente, em detrimento da
velocidade de computao que seria obtida com a total replicao de
multiplicadores/somadores.
Preocupando-se

com

melhor

uso

dos

componentes

aritmticos,

paralelizou-se os clculos da seguinte forma:


Tabela 4.4 Paralelizando o clculo do estado de ativao

Funo

Operae

entradas
2

s
X1 x W1 + X2 x W2 + W0

XX+
+

X1xW1 + X2xW2 + X3xW3 + W0

XXX+
++

X1xW1 + X2xW2 + X3xW3 + X4xW4 X X X X +


+W0
++ +

Mesmo utilizando apenas um somador e um multiplicador conseguimos


algum paralelismo e cada neurnio processa uma multiplicao e soma ao
mesmo tempo. O pior caso no tempo de espera do resultado de cada
operao dado pelo tempo de resposta imposto pelo somador que de 7
ciclos (vide Figura 4.3).
Depois de calculada a regra de propagao do neurnio, prossegue-se o
processamento da resposta da funo de ativao. Se o leitor prestar
ateno na eq. 4.5 ver que se faz necessria utilizao de um
comparador (mostrado na Figura 4.3). Na verdade precisamos proceder:
sada igual a 0 se X < 0 ou 1 se X > 0,
compute a aproximao

caso |X| > 4 ;


, caso contrario

Nas multiplicaes por nmeros na base 2 previstas pela eq. 4.5


aproveitou-se a caracterstica da representao em ponto flutuante em
que o expoente est na base 2. Por conseguinte, basta se realizar a
Pgina 24

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

soma/subtrao com lgica combinacional no campo do expoente e


manter a mantissa intacta. No caso do quadrado requerido na frmula,
uma multiplicao de ponto flutuante demandou ser usada.

Figura 4.16 Mquina de estados do neurnio 2 entradas

Na figura acima se v a descrio da mquina de estados de um neurnio


de 2 entradas. Passa-se para o estado 2 quando da ocorrncia do
comando start. 2 responsvel por multiplicar X1 por W1 e baixa-se
tambm o vld. Em 3 computa-se paralelamente X2 x W2 e a soma X1 x
W1 + W0. Calcula-se em 4 a NET: X1 x W1 + W0 + X2 x W2. No estado 5,
caso NET < -4 a sada 0, caso NET > 4 a sada 1. Passando para 6 NET
est no domnio da funo sigmide aproximada. Comea-se por computar
NET/4 que feito com lgica combinacional (subtraindo 2 do valor do
expoente de NET) assim como o mdulo (basta resetar o bit de sinal).
Depois calcula-se 1 - |NET/4|. J em 7 faz-se (1 - |NET/4|)2. No estado 8
obtm-se (1 - |NET/4|)2 / 2. Desse ponto em diante, caso o resultado do
estado 8 for negativo a sada o resultado de 8 (estado 9, vld=1), caso
no faz-se 1 resultado (em 10). Por fim tem-se fornecida a resposta do
neurnio.
A mquina de estados para os neurnios de mais entradas difere na
operao de calcular a NET, que se estende por mais passos, porm o
processo de fornecer a resposta da funo de ativao inalterado.
Pgina 25

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

At o dado momento, focou-se na explanao do neurnio de duas


entradas. Porm para construir redes diversas faz-se necessria a
existncia de neurnios com uma quantidade de entradas maior. Nesse
sentido, expandiu-se o modelo do neurnio de duas entradas para
neurnios de at 5 entradas. Agora, basta se instanciar o componente
adequado de forma semelhante ao mostrado na Figura 4.3.1.

4.3

Implementao da Rede Neural

Nesse momento tem-se a implementao do neurnio em hardware. A


seqncia natural ento deve ser a implementao da arquitetura da rede
neural. Para tal ainda falta se decidir onde sero introduzidos os dados de
entrada (lembre-se que no se pretendeu focar a implementao em
entrada e sada do FPGA como numa aplicao real). Observa-se tambm
a necessidade de um elemento de controle que dispara a execuo do
processamento de cada camada de neurnios.
Memrias ROM bastaram para abrigar as entradas da rede. Props-se
colocar em cada uma delas um atributo, isso faz com que a gerao do
endereamento das entradas se d de forma automtica; i.e. cada linha
de cada ROM contem um valor de entrada e as respectivas linhas de todas
as ROM formam um vetor de entrada para a rede.
A Altera disponibiliza o componente controlador de ROM de uma porta:

Figura 4.17 Controlador de ROM de 1 porta

Pgina 26

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

A unidade de controle deve gerar o endereo para as ROM, esperar o dado


estar estvel na entrada dos neurnios da camada de entrada, ativar a
camada de entrada, esperar cada camada gerar sua sada e ativar a
prxima camada.

Figura 4.18 Mquina de estados do controle seqencial

Na figura acima, v-se a mquina de estados do controle seqencial para


o caso de uma rede neural com uma camada intermediria. Em 1 gera-se
o endereo para as memrias ROM, verifica se ainda existem padres a
serem mostrados rede, caso no existam segue-se para o estado final; 2
espera o dado estar vlido na sada da ROM; em 3 ativa-se os neurnios
da camada de entrada; o estado 4 espera que o sinal de start seja lido
pelo neurnio e que este baixe o sinal de valid. 5 aguarda a computao
dos neurnios da camada intermediria; no 6 ativamos a camada de
sada; 7 idntico ao estado 4; 8 semelhante a 5, espera pela camada de
sada. Retorna-se para 1 quanto o dado agora estiver disponvel na sada
da rede;
As entradas e sadas podem ser visualizadas na representao em bloco
do controle:

Pgina 27

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 4.19 Esquemtico do controle

Seguindo o intuito de parametrizar a utilizao da estrutura da rede


neural, foi lanado mo do atributo NR_TEST_EXAMPLES, que como o
nome indica, contm o nmero de padres a serem mostrados rede.
Como visto, implementou-se uma unidade de controle puramente
seqencial, mas sabido que um paralelismo poderia ser introduzido na
mquina de estados do controle. No caso de o tempo de resposta da
camada 1 ser maior do que o da camada 2, simplesmente no se espera
mais

pela

resposta

da

camada

economiza-se

tempo

de

processamento da camada 2. Assim, a camada mais com maior tempo de


resposta determina a complexidade da rede. Modificada a mquina de
estados para prover o paralelismo, essa segue abaixo:

Figura 4.20 Mquina de estados do controle paralelizado

Pgina 28

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Todos os estados so semelhantes aos da mquina seqencial, a menos


do estado 6. No estado 6 incluram-se atribuies do estado 1. Assim, aps
esperar a resposta da camada 1, ativa-se a camada 2 e no mais se
espera pela resposta da camada 2. Passa-se para uma nova leitura da
ROM ou para o final, caso no haja mais padres.
A rede neural implementada, tanto no esquema seqencial quanto no
paralelizado, consegue no Quartus II uma freqncia de operao de slow
model de 160 MHz. interessante ressaltar, que no houve enfoque em
explorar ao mximo o projeto em relao freqncia de operao. Muito
nesse sentido poderia ser feito, e.g. usar uma ferramenta de sntese mais
eficiente.

4.4

Estrutura de teste

A partir de agora se tem concludo o projeto da rede neural. A fim de


validar o modelo, uma aplicao controlada e simples serviria. Utilizou-se
o problema do ou-exclusivo (XOR) e para comparar se lanou mo de uma
implementao desse problema em software disponvel na web. Apesar de
simples, o problema suficiente para validar a implementao em FPGA.
Os pesos foram extrados da applet e a mesma arquitetura implementada
no esquema proposto nesse trabalho.

Pgina 29

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 4.21 Applet do problema XOR [15]

Objetivando construir a estrutura de validao da rede, implementou-se


um mdulo responsvel pela comparao das sadas da rede com as
sadas desejadas. Para armazenar as sadas desejadas, utilizou-se a
mesma estratgia utilizada para os padres de entrada. So usadas tantas
memrias ROM quantas sadas a rede implementada necessitar. A
estrutura de bloco do checker segue na figura 4.18. Observe que a
parametrizao da quantidade de casos de teste tambm foi utilizada
como no caso do controle.

Figura 4.22 Esquemtico do checker

O comportamento do checker bem simplrio, ele enderea a memria


ROM e espera a resposta da camada de sada estar ativada. Em seguida
Pgina 30

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

ele compara a(s) sadas com o valor lido da ROM.


Conseguiu-se observar que a implementao da rede neural seguindo o
modelo fornecido pela Applet (segue no apndice o esquemtico da
referida rede) logrou xito ao resolver o problema do XOR. Porm as
respostas da rede neural foram aproximadas mais prximo de 0 ou de 1 do
que previa-se na applet como pode-se ver na tabela abaixo.
Tabela 4.5 Sadas da applet vs sadas FPGA

Entrada Sada

5.

Sada

Applet

FPGA

00

0,00398

01

0,99590

10

0,99590

11

0,00501

Anlise de resultados

Obviamente, no se pode considerar validada a arquitetura com um


problema to simples como o do XOR. Precisa-se de alguma aplicao
para se extrair mais informaes da arquitetura proposta e.g. tempo de
execuo, erro da resposta. A RNA para o problema tem apenas 2
neurnios na camada intermediria e 2 na camada de sada.
Aplicou-se a arquitetura, seguindo o caminho de se validar com uma
aplicao maior. A aplicao escolhida foi o problema do diabetes com o
vetor de caractersticas reduzido de oito para cinco. O passo da reduo
da dimensionalidade do problema, embora tenha impacto direto no
desempenho da RNA implementada, luz dos nossos objetivos em nada
prejudicial. Testou-se com o conjunto de exemplos de teste da RNA, sendo
um total de 384.
Pgina 31

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

importante tambm deixar claro que como o projeto da RNA segue de


forma dissociada do modelo da arquitetura alvo em hardware, o escopo do
problema de validar tem foco determinantemente da preciso da resposta
em comparao com a sada do modelo em software. A metodologia
empregada nos testes foi simplificada, limitando-se a comparar as sadas
para o conjunto de teste da rede com as sadas colhidas do modelo
implementado em Matlab script (utilizando a aproximao da sigmide).

5.1

Erro

A validao iniciou-se com a modelagem da RNA pretendida em Matlab


script (ao invs de se usar o toolbox de redes neurais do software). Mais
precisamente falando, foram dois modelos em Matlab script: um utilizando
a definio matemtica da funo sigmide e outro com a aproximao da
sigmide (ambas no apndice). Comparando esses dois modelos (que
diferem apenas da aproximao da sigmide) com 384 vetores de cinco
entradas obteve-se um erro mximo de 0.0239 e um mdio de 0.0160.
Sabe-se que comum a simulao via Matlab, porm uma aplicao final
pode estar numa linguagem de programao de propsito geral. Dessa
forma, tambm se disps da implementao em C++. O erro comparado
entre o modelo em software e o sem aproximao no Matlab produziu um
erro mximo muito baixo: 0.5042e-006 (o mdio segue a tendncia numa
menor ordem de grandeza). Claramente esse erro maior do que o
medido na comparao com o modelo que possui a aproximao da
sigmide, logo o erro associado tomado como sendo o mesmo.
Obviamente, necessrio calcular o erro na implementao em hardware
e compar-la com os modelos de software e simulao. Porm a estrutura
de teste apresentada na seo 4.5 no contempla o clculo desse erro. O
Checker teve de ser modificado para contemplar a funcionalidade de
computar o erro mximo acumulado no decorrer da execuo. Para tal,
acresceu-se ao Checker original dois subtratores (um para cada sada) e
Pgina 32

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

um comparador. A cada sada da rede ela subtrada do erro acumulado,


e caso esse seja menor tem-se um novo valor acumulado. No final da
execuo estimou-se o mximo de distoro, para as duas sadas, do valor
na seqncia de testes realizada.
Na execuo em FPGA, o erro mximo calculado foi de 0,01627 (frente ao
esperado do modelo com a sigmide aproximada implementado em
Matlab). Somando esse erro com o obtido por simulao do Matlab
(comparando o modelo preciso da sigmide com o aproximado) se chega
ao valor de 0.04017.
Essa discrepncia do resultado esperado em simulao no Matlab deve-se
s aproximaes realizadas: em todo clculo feito pelos componentes de
ponto flutuante, aplicados a funo de ativao aproximada e propagada
pelas duas camadas (veja seo 4.4, no problema pequeno como o XOR
fica evidente a pequena discrepncia que aumentada j que no
problema do diabetes se tem mais entradas). Espera-se que introduzindo
uma unidade MAC (multiplicador acumulador) possa-se tornar o clculo
mais preciso, sendo o erro dominado pela sigmide aproximada.

5.2

Tempo de execuo

No tpico corrente, a anlise comparativa se resume a confrontar a


implementao final em software com a de hardware. No lado do
hardware, ainda se tem duas abordagens: uma puramente seqencial e a
paralelizada.
Uma constatao de que a rede em FPGA tem pior desempenho do que
uma implementao de software no seria de todo desanimadora, visto
que sempre um esforo maior em otimizar a freqncia e aumentar o
paralelismo pode ser levado a cabo.
A RNA que resolve o problema do diabetes, implementada em C++
reportou um tempo de execuo (para os 384 vetores de teste) de 23ms.
Pgina 33

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

O ambiente de execuo contou com uma mquina com o processador


AMD Athlon 64 3200+ 2.20GHz com 512 MB de memria.
Mesmo com pouca redundncia de dados na implementao das
computaes do neurnio, a execuo seqencial da rede em FPGA levou
o tempo de 299,45s. Isso corresponde a uma execuo 76,8 vezes mais
rpida.
Para a verso da rede que utiliza o controle paralelizado, obteve-se o
tempo de execuo de 165,38s que 139 vezes mais rpido do que se
conseguiu com o software.
A diferena de desempenho notvel, mesmo a rede sendo pequena.
Espera-se que com o seu crescimento o ganho de uma construo de
hardware seja ainda maior.
Convm tambm enfatizar que bem provvel que uma construo
utilizando aritmtica de ponto fixo consiga um desempenho melhor do que
a proposta nesse trabalho. Essa caracterstica no invalida o esforo,
dadas as contrapartidas esperadas ao se escolher por um modelo usando
ponto flutuante.

5.3

rea

No se visou o projeto da arquitetura na direo da reduo a qualquer


custo da rea utilizada. A prpria escolha da aritmtica de ponto flutuante
deixa claro que outros

pontos mais importantes (como a futura

implementao da parte de aprendizado) foram priorizados. Mas tambm


foi levado em conta o bom compromisso entre a rea e o desempenho
exemplificado no caso da implementao do neurnio com apenas um
somador e um multiplicador.
A rede neural do problema do diabetes com todo o overhead da estrutura
de teste e controle integrada consumiu uma rea total de 16% do FPGA da
Pgina 34

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Altera STRATIX II (EP2S60F672C5ES). Sendo 6.692 Combinational ALUTs,


5.447 Registradores dedicados, 114.688 blocos de memria (utilizao de
5% do FPGA) e 32 blocos DSP de 9-bits (11% do disponvel FPGA).
Esses resultados sobre os recursos consumidos demonstram, que apesar
de

implementao

utilizando

ponto

flutuante

demandar

maior

quantidade de recursos, hoje em dia perfeitamente possvel obter-se um


projeto de alto desempenho, alta preciso e de factvel custo.

6.

Trabalhos Relacionados

Muitos pesquisadores tm desenvolvido implementaes em hardware


usando diversas tcnicas sejam elas digitais, analgicas e at ticas.
Embora as redes analgicas apresentem a desvantagem de serem
imprecisas e de baixa flexibilidade, por outro lado permitem um projeto de
maior velocidade e de baixo custo. O principal problema das arquiteturas
digitais o uso de grande quantidade de multiplicadores e a no
linearidade da funo de ativao do neurnio.
A seguir so mostrados dois exemplos comparativos de implementaes
encontradas na literatura.

6.1

FPGA implementation of a face detector using neural networks [3]

Nesse trabalho, Yongsoon Lee e Seok-Bum Ko implementam um detector


de faces usando rede neural em FPGA. Os autores utilizaram aritmtica de
ponto flutuante para representar os dados. Segundo os mesmo os motivos
que levaram a essa escolha seguem a caracterstica de range dinmico e
de reduo de bits da unidade aritmtica. Unidades de multiplicadoracumulador tambm acrescem uma maior preciso na computao do
estado de ativao da rede.
Pgina 35

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Assim como neste trabalho, os autores escolheram pelo uso da rede MLP.
Porm difere pela escolha da aproximao da funo de ativao. Nota-se
que a aproximao da sigmide abaixo bem mais custosa do que a
escolhida na arquitetura proposta anteriormente.

Uma rede de trs camadas (25:6:2) leva 1,7ms para classificar uma
imagem, rodando freqncia de 38MHz (bem abaixo do conseguido
neste trabalho). O desempenho conseguido corresponde a um ganho de
38 vezes mais rpido (relatado pelos autores).
O que se evidencia nesse trabalho a necessidade do uso de RNAs em
aplicaes de tempo real e por essa caracterstica, essas aplicaes
necessitam de um desempenho superior do que se conseguiria com
software.

6.2 FPGA Implementation of a Neural Network for a Real-Time Hand


Tracking System [16]

Aps ratificarem o uso de sistemas de processamento em tempo real e


ressaltarem a necessidade do processamento paralelo intrnseco as RNAs,
os autores descrevem
seu sistema de reconhecimento pela palma da mo.
No projeto do sistema, seus idealizadores seguiram a arquitetura da rede
neural como a seguir.

Pgina 36

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 6.23 Arquitetura da rede neural

Os autores relatam o uso de aritmtica de ponto fixo para implementao


do neurnio. Dessa forma pode-se codificar imediatamente em VHDL as
operaes sem a necessidade de componentes de ponto flutuante como
se fez neste trabalho.
Outro diferencial do que se props neste trabalho toca no uso da tangente
hiperblica como funo de ativao (no havendo problemas no mbito
terico ao se propor uma aproximao como a utilizada para a sigmide
logstica).
A aproximao da tangente hiperblica seguiu uma look up table que a
mais simples, rpida e de alto consumo de memria (para um baixo erro)
das aproximaes relatadas na literatura. Ainda para diminuir o gasto com
memria nessa aproximao, se reduziu os nveis totalizando apenas 15.
Vide figura a seguir.

Pgina 37

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Figura 6.24 Aproximao via look up table 15 nveis

No foram fornecidas pelos autores informaes sobre a preciso da


aproximao, porm mesmo visualmente v-se que est aqum da
acurcia apresentada nas aproximaes da seo 4.1.2.
relatada uma diminuio na taxa de classificao do sistema em FPGA
(fato no analisado no escopo deste trabalho) devida s aproximaes de
ponto flutuante para ponto fixo e da aproximao da tangente hiperblica.
O prottipo final dos autores tem um tempo de resposta de 71ns contra
43,07ns (mdio) do conseguido neste trabalho, mesmo utilizando ponto
flutuante.

7.

Concluses e trabalhos futuros

Chega-se ao fim deste trabalho com a certeza de dever cumprido. Alm


dessa a satisfao de se ter chegado a resultados consistentes aos
modelos tericos s no foi inesperada pela percia utilizada. Ao leitor
cabe analisar os dados e obter deles o proveito.
A concepo do trabalho acima descrito tem maiores pretenses do que
apresentam os resultados conseguidos. Vendo de um plano mais geral,
este trabalho est inserido num contexto onde um projetista de redes
Pgina 38

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

neurais artificiais consiga chegar a uma implementao em hardware


(inicialmente FPGA) sem que sejam necessrios grandes detalhes de como
isso foi feito.
O fluxo de projeto seria: Realizar todo projeto de RNA da mesma maneira
que feita hoje em dia. Como sada ter-se-ia uma topologia da rede e um
conjunto de pesos. O projetista passa essas informaes para o framework
que tem a tarefa gerar o cdigo em uma linguagem HDL. Observe que
dessa forma encapsula-se todo o projeto da implementao em hardware.
Adicionalmente, toda a estrutura de testes deve ser, tambm, gerada para
que de posse do conjunto de dados de teste utilizado no projeto da RNA se
consiga validar o modelo em FPGA. O projetista da RNA nem sequer
precisa saber a linguagem HDL alvo.
Desse ponto em diante claro que se precisaria de um engenheiro de
hardware para mapear a soluo para o problema que disparou a
necessidade do projeto de hardware. Esse profissional responsvel ainda
por verificar se os requisitos temporais e de desempenho so compatveis
com uma soluo vivel para o problema.
Para facilitar o uso e aumentar o nvel de abstrao na construo da rede
neural, uma DSL (Domain Specific Language) grfica. Seguindo esse
caminho, o usurio apenas definiria a rede neural com a facilidade de uma
interface drag & drop que abstrairia, inclusive, o uso da interface do
Quartus nessa etapa.
Outra caracterstica bastante importante seria agregar outros modelos de
RNA alm do multilayer perceptron.

Pgina 39

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

8.

Apndice

8.1

Aproximaes da sigmide

function value = firstorder_improved(x)


if x > 0
x1 = -x;
else

x1 = x;

end
g = '0';
h = '.5+ x/4';
delta = 0.2638;
for i = 1:4,
g_value = subs(g,x1);
h_value = subs(h,x1);
if g_value > h_value
g_linha = g;
else
g_linha = h;
end
h = strcat('.5*(', g, '+',h,'+',num2str(delta),')' );
g = g_linha;
delta = delta / 4;
end
g_value = subs(g,x1);
h_value = subs(h,x1);
if g_value < h_value
value = h_value;
else
Pgina 40

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

value = g_value;
end
if x > 0
value = 1-value;
end
function y = PLAN_appox(x)
if abs(x) >= 5
y = 1;
elseif abs(x) >= 2.375
y = .03125 * abs(x) + .84375;
elseif abs(x) >= 1
y = .125 * abs(x) + .625;
else
y = 1/4 * abs(x) + .5;
end
if x < 0
y = 1-y;
end
function y = piecewise_nd_order(x)
if x >= -4 & x < 0
y = (( 1 - abs(x/4) )^2)/2;
elseif x >= 0 & x <= 4
y = 1 - (( 1 - abs(x/4) )^2)/2;
end

Pgina 41

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

8.2

Esquemtico completo da rede neural do XOR

Pgina 42

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

9.

Referncias

[1]

Braga, A. P.; Carvalho, A. P. L. F.; Ludermir, T. B. Redes Neurais


Artificiais, LTC, 2007, 227p.

[2]

Omondi, A. R. ; Rajapakse, J. C. ; Bajger, M. FPGA Neurocomputers.


In: Omondi, A. R.; Rajapakse, J. C. (eds) FPGA Implementations of
Neural Networks. Springer-Verlag, 2006. p. 37-56.

[3]

Lee, Y.; Ko, S. B. FPGA implementation of a face detector using neural


networks, IEEE CCECE/CCGEI, 2006.

[4]

Krips. M, Lammert. T, Kummert. A. FPGA implementation of a neural


network for a real-time hand tracking system. In: Proceedings of the
First IEEE International Workshop, 2002. p. 313-317.

[5]

Azhar, M. A. H. B.; Dimond, K. R. Design of an FPGA Based Adaptive


Neural Controller For Intelligent Robot Navigation. In: Proceedings of
the Euromicro Symposium on Digital System Design, 2002.

[6]

Zeidman, B. An Introduction to FPGA Design, Embedded Systems


Conference, 1999.

[7]

Bernard, G. FPNA: Concepts and Properties. In: Omondi, A. R.;


Rajapakse, J. C. (eds) FPGA Implementations of Neural Networks.
Springer-Verlag, 2006. p. 63-101.

[8]

Canas, A.; et al FPGA Implementation of a Fully and Partially


Connected MLP. In: Omondi, A. R.; Rajapakse, J. C. (eds) FPGA
Implementations of Neural Networks. Springer-Verlag, 2006. p. 271-296.

[9]

Girau, B. FPNA: Applications and implementations. In: Omondi, A. R.;


Rajapakse, J. C. (eds) FPGA Implementations of Neural Networks.
Springer-Verlag, 2006. p. 103-136.

[10] Girones, R. G.; Agundis, A. R. FPGA Implementation of Non-Linear


Predictors. In: Omondi, A. R.; Rajapakse, J. C. (eds) FPGA
Implementations of Neural Networks. Springer-Verlag, 2006. p. 297-323.
[11] Zhang, M.; Vassiliadis, S.; DelgagoFrias, J.G. Sigmoid generators for
neural computing using piecewise approximations, IEEE Trans. Comput.,
1996, p. 10451049
[12] Amin, H.; Curtis, K.M.; HayesGill, B.R. Piecewise linear
approximation applied to nonlinear function of a neural network, IEEE
Proc. Circuits - Devices Sys., 1997 p. 313317
Pgina 43

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

[13] Basterretxea, K.; Tarela, J. M.; Del Campo, I. Approximation of


sigmoid function and the derivative for hardware implementation of
artificial neurons, IEEE Proc.-Circuits Devices Syst., Vol. 151, 2004.
[14] IEEE computer society: IEEE Standard 754 for Binary Floating-Point
Arithmetic, 1985.
[15] Applet da rede neural XOR, disponvel em:
http://delfin.unideb.hu/~bl0021/xordemo/xordemo.html, ltimo acesso
em 23/11/2008.
[16] Krips, M.; Lammert, T.; Kummert, A. FPGA Implementation of a
Neural Network for a Real-Time Hand Tracking System. Proceedings of
the First IEEE International Workshop on Electronic Design, 2002.

Pgina 44

24/11/2008

Proposta de Trabalho de Graduao

Verso: parcial

apaf-TG.doc

Data da verso: 24/11/2008

Assinaturas

___________________________________________________
Edna Natividade da Silva Barros
Orientadora

___________________________________________________
Teresa Bernarda Ludermir
Orientadora

___________________________________________________
Antonyus Pyetro do Amaral Ferreira
Aluno/Autor

Recife, 24 de Novembro de 2008

Pgina 45

24/11/2008

Você também pode gostar