O documento descreve a implementação paralela em C+CUDA de um categorizador multi-rótulo de texto baseado no algoritmo k-NN. O algoritmo k-NN é implementado para categorizar documentos de forma paralela usando GPUs, reduzindo o tempo de categorização de 65 vezes em relação à implementação serial e viabilizando a categorização on-line. Resultados experimentais mostram o potencial de sistemas baseados em GPU para problemas de recuperação de informação.
2. Implementação Paralela em C+CUDA de um
Categorizador Multi-Rótulo de Texto Baseado no
Algoritmo k-NN
Professor: Wellington Santos Martins.
Alunos: Manoel Alves.
Matheus Ullmann.
Richiely Batista.
Vinícius Nunes.
3. Roteiro
● Motivação
● Categorização Multi-Rótulo de Texto
● Solução apresentada
○ Indexação
○ Algoritimo K-NN e Sum Tree Like Redution
○ Detalhes da implementação C+CUDA
● Metodoligia
○ Base de dados
○ Técnicas utilizadas
● Resultados obtidos - CPU x GPU
4. Motivação
● Trabalhar com o problema de categorização de
documentos com um grande número de rótulos e que
seja satisfatório para execução on-line.
● A categorização consiste em realizar a leitura do
documento e o sistema ser capaz de rotular este
documento em uma categoria contida em um conjunto
de categorias.
○ Algoritmo categorizador multi-rótulos de texto
baseado no K-NN.
○ Resolver o problema do CSN (Cadastro
Sincronizado Nacional).
5. Categorização Multi-Rótulo
1. D - domíno de documentos
2. C = {c1,c2, ..., cn} conjunto de categorias
3. Ω = {d1, d2, ..., dΩ} conjunto de documentos
previamente categorizados manualmente
● Na categorização multi-rótulo, para cada documento d
∈ Ω é feita a categorização em uma ou mais categorias
de C
6. Categorização Multi-Rótulo
Conjuntos TV e Te
TV - treinar o sistema: associar subconjuntos de C a
características extraídas de cada documento d.
Te - conjunto de documentos para quais as categorias não
são do conhecimento do sistema de categorização.
Depois de treinado, o sistema é usado relacionar e predizer
o conjunto de categorias de cada documento dj ∈ Te .
7. Categorização Multi-Rótulo
● Função na forma f : D × C → R que retorna um número real que
representa o grau de crença de cada par (d j , ci) ∈ (D × C).
○ representa a confiança do categorizador de que o
documento de teste dj deve ser categorizado sob a
categoria ci.
● Se f ( dj , ci ) > f (dj , ck ) então r (dj , ci ) < r (dj , ck ).
● Se f ( dj ,ci ) < f (dj , ck ) então r (dj , ci ) > r (dj , ck ).
● Um sistema de categorização bem sucedido tenderá a
posicionar as categorias pertencentes a Cj em posições mais
elevadas no ranking do que aquelas não pertencentes a Cj.
8. Indexação
● Antes de ser categorizado, os documentos passam por uma
técnica de indexação, para extrair as suas características.
○ Texto mantido um vetor de pesos de pesos de termos
(palavras) que ocorrem ao menos uma vez no documento do
conjunto TV.
○ Representar o quanto um termo tk contribui para a
categorização de um documento dj:
(term frequency inverse document frequency)
○ Retorna o peso wĸj do termo tk no documento dj.
○ Normalização dos pesos.
9. Algoritmo KNN
● O algoritmo K-Nearest Neighbor (KNN) é uma variação do algoritmo Nearest Neighbor (NN)
● A classificação de padrões usando o algoritmo NN é dividida em duas fases:
○ treinamento
○ teste
● O algoritmo NN cria uma partição no espaço n-dimensional em células de Voronói, onde cada
célula é rotulada com a classe do padrão do conjunto de treino que a originou.
● A classificação de uma nova entrada é dada pela menor proximidade que esta tenha com um dos
pontos já estabelecidos na fase de treinamento.
Divisão do espaço em células de Voronói feita pelo NN Classificação feita pelo NN para um padrão desconhecido
10. Algoritmo KNN
● O algoritmo KNN propõe uma modificação em
relação ao algoritmo original, que se dá durante
a fase de teste/classificação, onde o algoritmo
faz uso dos K-vizinhos mais próximos [2].
● O KNN calcula os K-vizinhos mais próximos,
classifica-os como sendo da classe que
aparece com maior freqüência.
● Apesar de melhorar o desempenho de
classificação em relação ao algoritmo original
(NN) em alguns problemas, o KNN mantém as
mesmas deficiências encontradas no NN, pois
continua a armazenar todos os padrões de
treinamento na memória, como também ainda
exige um grande esforço computacional [2].
Classificação feita pelo KNN para um
padrão desconhecido
11. Especificação do k-NN
● Foi utilizada como métrica de distância o cosseno do ângulo entre o
documento de entrada e cada documento K ∈ TV:
● A função f(dj,ck) do KNN retorna o maior valor de cos(dj,di) onde ck ∈ C,
conjunto de categorias referentes ao documento.
O maior custo computacional do algoritmo K-NN se encontra na parte do
numerador, produto de matriz por vetor, que é refeita para cada K ∈ TV, o custo
do denominado é pequeno pois os valores para cada somatório podem ser
calculados previamente e reutilizados em cada iteração .
12. Especificação do k-NN
Implementação Paralela do categorizador k-Nearest Neighbors (KNN)
● mTV matriz (documento x termos)
● mC matriz (documento x categorias)
● Para cada entrada d é necessario realizar a mutiplicação, mTV X d, essa
operação será paralelizada.
● A paralelização faz com que o produto entre um elemento da matriz e o seu
correspondente no vetor seja calculada por uma thread especifica.
● A cada passo do algoritmo, os blocos recebem cada um elemento de uma
linha de mTV e o elemento correspondente de dj.
● Cada thread possui uma variaveis dj_di_product e um vetor
accum_dj_di_product previamente alocado em memória compartilhada na
qual são gravadas os produtos realizadas pelas treads.
18. Metodologia
● Foram implementadas 3 versões do algoritmo, uma
serial e duas paralelas, e uma das versões paralelas foi
implementada com auxilio da biblioteca cuBLAS.
● Os 3 algoritmos foram comparados em relação ao
speedup, que foi calculado a partir da média de 100
execuções para eliminar a interferência de variáveis
alheias ao desempenho do algoritmo.
19. Metodologia
● A base de dados compreende descrições textuais de
atividades econômicas de empresas brasileiras
categorizadas em um subconjunto de códigos CNAE por
funcionários públicos treinados nesta tarefa
20. Metodologia
Pré processamento dos Dados
● Todas as palavras do conjunto de dados foram
transformadas em termos.
● Todas as preposições foram removidas.
● Identificou-se todos os termos distintos.
● Finalmente transformou-se todos os documentos de
treinamento e teste em vetores multi-dimensionais.
21. Resultados Experimentais
● Configurações do computador:
○ CPU AMD Athlon 64 X2 (Dual Core)
■ 2,7 GHz;
■ 512KB de cache L2 por core;
■ 3GB de DRAM DDR2 de 800 MHz;
■ SO Linux Fedora 9;
■ Compilador C foi o gcc 4.3.0.
○ A placa de vídeo utilizada foi uma NVIDIA GeForce
GTX 285 com 1GB de DRAM GDDR3
■ A versão do compilador CUDA foi o nvcc 2.1
22. Resultados Experimentais
● A GPU da GTX 285 possui vários Stream Processors
(SPs) para executar operações inteiras e de ponto
flutuante
● Possui 10 TPCs de 3 SMs, cada um com 8 SPs,
totalizando 240 SPs, e opera com um clock de 1,48 GHz
● A GTX 285 permite criar 512 threads por bloco e é
capaz de manter o estado de 32K threads
simultaneamente (uma grid de 32K threads).
25. Conclusões finais
● Quando quando a base de documentos de treinamento
dos categorizadores é grande, o tempo de
categorização pode crescer a ponto de inviabilizar a
categorização on-line de documentos
● Por meio da implementação paralela dos
categorizadores em C+CUDA e sua execução em GPUs
CUDA enabled, é possível aumentar o desempenho em
termos de tempo de categorização e viabilizar solução
online deste importante problema computacional
● Os resultados experimentais mostram que pode ser
obtido um speedup na ordem de 65 vezes, mostrando o
potencial de sistemas baseados em GPU na área de
Recuperação de Informação.
26. Referências
[1]- Lucas Veronese, Alberto F. De Souza, Claudine Badue, Elias
Oliveira. Implementação Paralela em C+CUDA de um Categorizador
Multi-Rótulo de Texto Baseado no Algoritmo k-NN.
[2] - Bezerra, Miguel E. Ramalho. Métodos baseados na regra do
vizinho mais próximos para reconhecimento de imagens.
[3] - http://www.cnae.net.br