![Page 1: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/1.jpg)
Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA Antonyus [email protected]
Orientadoras:Edna Barros - [email protected] Ludermir - [email protected]
![Page 2: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/2.jpg)
Roteiro
•Motivação•Rede neural artificial•Projeto de RNAs em FPGA•Análise dos Resultados•Trabalhos relacionados•Trabalhos futuros
![Page 3: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/3.jpg)
Motivação
![Page 4: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/4.jpg)
Motivação•RNAs – processamento paralelo e distribuído
▫Usada em muitas áreas do conhecimento processamento de sinais, análise de imagens
médicas, sistemas de diagnóstico e previsões de séries temporais
▫Implementações em software – seqüenciais
•FPGAs – provêm paralelismo de hardware▫Paralelismo de processo e dados▫Alto poder de processamento e baixo custo
![Page 5: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/5.jpg)
Motivação
•Objetivos: ▫Definição de uma arquitetura de RNAs para
hardware (inicialmente sem aprendizado online)
▫Implementação em FPGA
▫Validar com um modelo em software
▫Comparar desempenho
![Page 6: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/6.jpg)
Rede neural artificial
•Inspirado no modelo biológico▫Processamento do cérebro é inerentemente
paralelo e distribuído•Aprendem através de exemplos•Adaptabilidade•Capacidade de generalização•Tolerância a falhas
![Page 7: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/7.jpg)
Neurônio artificial
![Page 8: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/8.jpg)
Neurônio– função de ativação
•Algumas funções de limiar usadas são:▫Função degrau unitário;
Φ(u) = 1 se u > 0, Φ(u) = 0, caso contrário
▫Função rampa unitária Φ(u) = max{0.0, min{1.0, u + 0.5}}
▫Função sigmóide logística Φ(u) = a /{ 1 + exp(−bu) }
![Page 9: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/9.jpg)
RNA - topologia
![Page 10: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/10.jpg)
Exemplo de RNA
•Problema: Diabetes•Atributos de entrada: 5•Classes: 2•Exemplos de testes: 384•Topologia: 5:2:2•Função de transferência
▫Sigmóide
![Page 11: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/11.jpg)
Projeto de RNAs em FPGA
•Desafios:
▫Aritmética de ponto flutuante Vs Ponto Fixo
▫Como implementar a sigmóide em FPGA? Φ(u) = 1 /( 1 + exp(−u) )
![Page 12: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/12.jpg)
Ponto Flutuante Vs Ponto Fixo
•Ponto flutuante:▫Menor precisão▫Range dinâmico ▫Menor tempo de desenvolvimento
•Ponto fixo▫Menor custo do produto final▫Maior velocidade▫Introduz oscilação na fase de aprendizado
![Page 13: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/13.jpg)
•Componentes de ponto flutuante da Altera ▫Padrão IEEE 754▫Reuso▫Funcionalidade garantida▫Otimizada para FPGA
Ponto Flutuante Vs Ponto Fixo
![Page 14: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/14.jpg)
Implementação da sigmóide
•Implementação direta em hardware▫Φ(u) = 1 /( 1 + exp(−u) )
•Implementação da expansão em série
•Implementação por Look up table
• Implementar versão aproximada
![Page 15: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/15.jpg)
Aproximação 1
•Tipo: por partes linear interpolada
![Page 16: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/16.jpg)
Aproximação 1
•Computa a saída em q passos
![Page 17: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/17.jpg)
•Erro máximo: 0.0194•Erro médio: 1.4539e-017
Aproximação 1
![Page 18: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/18.jpg)
Aproximação 2
•Tipo: por partes linear simples
![Page 19: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/19.jpg)
Aproximação 2•Erro máximo: 0.0189•Erro médio: 8.9214e-018
![Page 20: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/20.jpg)
Aproximação 3
•Tipo: por partes de segunda ordem
![Page 21: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/21.jpg)
Aproximação 3•Erro máximo: 0.0215•Erro médio: 8.5910e-018
![Page 22: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/22.jpg)
Comparação
Método erro médio erro
max
Suave Rápido
1ª ordem
otimizado
1.4539e-
017
0.0194 sim não
1ª ordem simples 8.9214e-
018
0.0189 não sim
2ª ordem simples 8.5910e-
018
0.0215 sim sim
![Page 23: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/23.jpg)
Implementação do Neurônio
•Cálculo do estado de ativação▫Um somador e um multiplicador
Nº entradas
Função Operações
2 X1 x W1 + X2 x W2 + W0 X X ++
3 X1xW1 + X2xW2 + X3xW3 + W0 X X X +++
4 X1xW1 + X2xW2 + X3xW3 + X4xW4 +W0
X X X X +++ +
![Page 24: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/24.jpg)
Implementação do Neurônio
•Máquina de estados – neurônio 2 entradas
![Page 25: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/25.jpg)
Implementação do Neurônio
•Pesos editáveis graficamente
![Page 26: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/26.jpg)
Implementação da Rede Neural
384 exemplos
299,45μs
•Controle seqüencial
![Page 27: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/27.jpg)
Implementação da Rede Neural
384 exemplos
165,38μs
•Controle paralelo
![Page 28: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/28.jpg)
Implementação da Rede Neural
•Dados de entrada colocados em ROMs•Unidade de Controle – ativa as camadas e
lê da ROM
![Page 29: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/29.jpg)
Estrutura de teste
•Comparação das saídas da rede com as saídas desejadas
![Page 30: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/30.jpg)
Rede neural - XOR
![Page 31: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/31.jpg)
Análise de resultados
•Estudo de caso: Diabetes▫2 classes, 5 entradas, 384 exemplos de
teste•Modelos
▫Matlab script – sigmóide real, aproximado▫Em FPGA▫Em software – C++
•Metodologia de teste▫Comparar saídas e obter o erro
![Page 32: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/32.jpg)
Análise de resultados
•Erro▫Matlab sigmóide real Vs sigmóide
aproximada Erro máximo: 0.0239 médio: 0.0160
▫Matlab sigmóide real Vs software – C++ Erro máximo: 0.5042e-006
▫Em FPGA Vs Matlab sigmóide aproximada Erro máximo: 0.01627
▫Em FPGA Vs Matlab sigmóide real Erro máximo: 0.04017
![Page 33: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/33.jpg)
Tempo de execução
• implementação em C++ (AMD Athlon 64 3200+ 2.20GHz com 512 MB de memória )▫23ms
•Em FPGA – fmax = 160MHz▫Controle sequencial
299,45μs (76,8 vezes mais rápido)▫Controle paralelo
165,38μs (139 vezes mais rápido)
![Page 34: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/34.jpg)
Área
•Área total (FPGA STRATIX II EP2S60F672C5ES): ▫16% lógica combinacional do▫5% memória▫11% blocos DSP de 9-bits
![Page 35: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/35.jpg)
Trabalhos relacionados
•FPGA implementation of a face detector using neural networks▫detector de faces usando rede neural em
FPGA ▫aritmética de ponto flutuante ▫Aproximação da sigmóide:
▫Rede 25:6:2 => 1,7ms por imagem a 38MHz
![Page 36: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/36.jpg)
Trabalhos relacionados
•FPGA Implementation of a Neural Network for a Real-Time Hand Tracking System ▫aritmética de ponto fixo ▫função de ativação: tangente hiperbólica▫Aproximação: look up table – 15 níveis▫tempo de resposta:
71ns Vs 43,07ns (médio)
![Page 37: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/37.jpg)
Trabalhos futuros
• Introduzir o aprendizado online no FPGA•Abranger outros tipos de redes inclusive as
de estrutura dinâmicas (reconfiguração dinâmica).
•Framework ▫Entrada: topologia da rede (treinada ou não);
pesos;▫Saída: código HDL ▫Vantagem: encapsula-se todo o projeto da
implementação em hardware
![Page 38: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA](https://reader036.vdocuments.net/reader036/viewer/2022081603/56813cc2550346895da66dd8/html5/thumbnails/38.jpg)
Perguntas!