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

Post on 06-Jan-2016

46 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Implementação de uma arquitetura de Redes Neurais MLP utilizando FPGA Antonyus Pyetroapaf@cin.ufpe.br

Orientadoras:Edna Barros - ensb@cin.ufpe.brTeresa 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

•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!

top related