implementação de uma arquitetura de redes neurais mlp utilizando fpga antonyus pyetro...

38
Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA Antonyus Pyetro [email protected] Orientadoras: Edna Barros - [email protected] Teresa Ludermir - [email protected]

Upload: levi-xavier

Post on 07-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Motivação

Page 4: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Neurônio artificial

Page 8: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

RNA - topologia

Page 10: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

•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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Aproximação 1•Tipo: por partes linear interpolada

Page 16: 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

Aproximação 1•Computa a saída em q passos

Page 17: 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

•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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Aproximação 2•Tipo: por partes linear simples

Page 19: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Aproximação 3•Tipo: por partes de segunda ordem

Page 21: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Implementação do Neurônio•Pesos editáveis graficamente

Page 26: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Rede neural - XOR

Page 31: 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

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Á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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

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 Antonyus Pyetro apaf@cin.ufpe.br Orientadoras: Edna Barros - ensb@cin.ufpe.br Teresa

Perguntas!