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
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.4539e-017
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
2
X1 x W1 + X2 x W2 + W0
3
X1xW1 + X2xW2 + X3xW3 + W0
4
X1xW1 + X2xW2 + X3xW3 + X4xW4
+W0
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.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!
Download

Redes Neurais – Cross