Proposta de implementação em FPGA de máquina de vetores de suporte (SVM) utilizando otimização sequencial mínima (SMO)

A importância do uso de FPGAs como aceleradores vem crescendo fortemente nos últimos anos. Companhias como Amazon e Microsoft estão incorporando FPGAs em seus data centers, objetivando especialmente acelerar algoritmos em suas ferramentas de busca. No centro dessas aplicações estão algoritmos de apr...

Full description

Bibliographic Details
Main Author: Noronha, Daniel Holanda (author)
Format: masterThesis
Language:por
Published: 2017
Subjects:
Online Access:https://repositorio.ufrn.br/jspui/handle/123456789/24416
Country:Brazil
Oai:oai:https://repositorio.ufrn.br:123456789/24416
Description
Summary:A importância do uso de FPGAs como aceleradores vem crescendo fortemente nos últimos anos. Companhias como Amazon e Microsoft estão incorporando FPGAs em seus data centers, objetivando especialmente acelerar algoritmos em suas ferramentas de busca. No centro dessas aplicações estão algoritmos de aprendizado de máquina, como é o caso da Máquina de Vetor de Suporte (SVM). Entretanto, para que essas aplicações obtenham a aceleração desejada, o uso eficiente dos recursos das FPGAs é necessário. O projeto possui como objetivo a implementação paralela em hardware tanto da fase feed-forward de uma Máquina de Vetores de Suporte (SVM) quanto de sua fase de treinamento. A fase feed-forward (inferência) é implementada utilizando o kernel polinomial e de maneira totalmente paralela, visando obter a máxima aceleração possível ao custo de uma maior utilização da área disponível. Além disso, a implementação proposta para a inferência é capaz de computar tanto a classificação quanto a regressão utilizando o mesmo hardware. Já o treinamento é feito utilizando Otimização Sequencial Mínima (SMO), possibilitando a resolução da complexa otimização da SVM através de passos simples. A implementação da SMO também é feita de modo extremamente paralelo, fazendo uso de técnicas para aceleração como a cache do erro. Ademais, o Kernel Amigável ao Hardware (HFK) é utilizado para diminuir a área utilizada pelo kernel, permitindo que um número maior de kernels seja implementado em um chip de mesmo tamanho, acelerando o treinamento. Após a implementação paralela em hardware, a SVM é validada por simulação e são feitas análises associadas ao desempenho temporal da estrutura proposta, assim como análises associadas ao uso de área da FPGA.