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

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: odelia

Post on 06-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA. Antonyus Pyetro [email protected] Orientadoras: Edna Barros - [email protected] Teresa Ludermir - [email protected]. Roteiro. Motivação Rede neural artificial Projeto de RNAs em FPGA Análise dos Resultados - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

Motivação

Page 4: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

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

Neurônio artificial

Page 8: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

RNA - topologia

Page 10: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

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

•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

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

Aproximação 1

•Tipo: por partes linear interpolada

Page 16: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

Aproximação 1

•Computa a saída em q passos

Page 17: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

•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

Aproximação 2

•Tipo: por partes linear simples

Page 19: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

Aproximação 3

•Tipo: por partes de segunda ordem

Page 21: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

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

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

Implementação do Neurônio

•Pesos editáveis graficamente

Page 26: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

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

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

Rede neural - XOR

Page 31: Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA

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

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

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

Á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

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

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

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

Perguntas!