implementação de uma arquitetura de redes neurais mlp utilizando fpga antonyus pyetro...
TRANSCRIPT
Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA Antonyus [email protected]
Orientadoras:Edna Barros - [email protected] Ludermir - [email protected]
Roteiro•Motivação•Rede neural artificial•Projeto de RNAs em FPGA•Análise dos Resultados•Trabalhos relacionados•Trabalhos futuros
Motivação
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
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
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
Neurônio artificial
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) }
RNA - topologia
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
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) )
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
•Componentes de ponto flutuante da Altera ▫Padrão IEEE 754▫Reuso▫Funcionalidade garantida▫Otimizada para FPGA
Ponto Flutuante Vs Ponto Fixo
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
Aproximação 1•Tipo: por partes linear interpolada
Aproximação 1•Computa a saída em q passos
•Erro máximo: 0.0194•Erro médio: 1.4539e-017
Aproximação 1
Aproximação 2•Tipo: por partes linear simples
Aproximação 2•Erro máximo: 0.0189•Erro médio: 8.9214e-018
Aproximação 3•Tipo: por partes de segunda ordem
Aproximação 3•Erro máximo: 0.0215•Erro médio: 8.5910e-018
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
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 +++ +
Implementação do Neurônio•Máquina de estados – neurônio 2 entradas
Implementação do Neurônio•Pesos editáveis graficamente
Implementação da Rede Neural
384 exemplos
299,45μs
•Controle seqüencial
Implementação da Rede Neural
384 exemplos
165,38μs
•Controle paralelo
Implementação da Rede Neural•Dados de entrada colocados em ROMs•Unidade de Controle – ativa as camadas e
lê da ROM
Estrutura de teste •Comparação das saídas da rede com as
saídas desejadas
Rede neural - XOR
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
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
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)
Área
•Área total (FPGA STRATIX II EP2S60F672C5ES): ▫16% lógica combinacional do▫5% memória▫11% blocos DSP de 9-bits
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
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)
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
Perguntas!