Implementao de uma arquitetura de Redes Neurais MLP






































- Slides: 38
Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA Antonyus Pyetro apaf@cin. ufpe. br Orientadoras: Edna Barros - ensb@cin. ufpe. br Teresa Ludermir - tbl@cin. ufpe. br
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
Ponto Flutuante Vs Ponto Fixo • Componentes de ponto flutuante da Altera ▫ ▫ Padrão IEEE 754 Reuso Funcionalidade garantida Otimizada para FPGA
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
Aproximação 1 • Erro máximo: 0. 0194 • Erro médio: 1. 4539 e-017
Aproximação 2 • Tipo: por partes linear simples
Aproximação 2 • Erro máximo: 0. 0189 • Erro médio: 8. 9214 e-018
Aproximação 3 • Tipo: por partes de segunda ordem
Aproximação 3 • Erro máximo: 0. 0215 • Erro médio: 8. 5910 e-018
Comparação Método erro médio erro max Suave Rápido 1ª ordem otimizado 1. 4539 e-017 0. 0194 sim não 1ª ordem simples 8. 9214 e-018 0. 0189 não sim 2ª ordem simples 8. 5910 e-018 0. 0215 sim
Implementação do Neurônio • Cálculo do estado de ativação ▫ Um somador e um multiplicador Nº entradas Função 2 X 1 x W 1 + X 2 x W 2 + W 0 3 X 1 x. W 1 + X 2 x. W 2 + X 3 x. W 3 + W 0 4 X 1 x. W 1 + X 2 x. W 2 + X 3 x. W 3 + X 4 x. W 4 +W 0 Operações XX+ + XXX+ ++ XXXX+ ++ +
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 • Controle seqüencial 384 exemplos 299, 45μs
Implementação da Rede Neural • Controle paralelo 384 exemplos 165, 38μs
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. 5042 e-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. 20 GHz com 512 MB de memória ) ▫ 23 ms • Em FPGA – fmax = 160 MHz ▫ 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 EP 2 S 60 F 672 C 5 ES): ▫ 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, 7 ms por imagem a 38 MHz
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: 71 ns Vs 43, 07 ns (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!






































