programa˘c~ao gen etica cartesiana paralela na gera˘c~ao
TRANSCRIPT
Programacao Genetica Cartesiana Paralelana Geracao de Redes Neuronais Artificiais
para o Reconhecimento de AtividadeHumana
Bruno Marcos Pinheiro da Silva
JUIZ DE FORA
MARCO, 2021
Programacao Genetica Cartesiana Paralelana Geracao de Redes Neuronais Artificiais
para o Reconhecimento de AtividadeHumana
Bruno Marcos Pinheiro da Silva
Universidade Federal de Juiz de Fora
Instituto de Ciencias Exatas
Departamento de Ciencia da Computacao
Bacharelado em Ciencia da Computacao
Orientador: Heder Soares Bernardino
JUIZ DE FORA
MARCO, 2021
Programacao Genetica Cartesiana Paralela na
Geracao de Redes Neuronais Artificiais para o
Reconhecimento de Atividade Humana
Bruno Marcos Pinheiro da Silva
MONOGRAFIA SUBMETIDA AO CORPO DOCENTE DO INSTITUTO DE CIENCIAS
EXATAS DA UNIVERSIDADE FEDERAL DE JUIZ DE FORA, COMO PARTE INTE-
GRANTE DOS REQUISITOS NECESSARIOS PARA A OBTENCAO DO GRAU DE
BACHAREL EM CIENCIA DA COMPUTACAO.
Aprovada por:
Heder Soares BernardinoDoutor em Modelagem Computacional
Alex Borges VieiraDoutor em Ciencias da Computacao
Luciana Conceicao Dias CamposDoutora em Engenharia Eletrica
JUIZ DE FORA
15 DE MARCO, 2021
Aos meus pais, irmaos e amigos.
Resumo
O Reconhecimento de Atividade Humana (RAH) e um problema promissor e aplicavel
em diversas situacoes reais, como na assistencia medica remota ou em casas inteligentes.
Sua solucao, entretanto, apresenta algumas dificuldades, como o grande volume de dados
e caracterısticas disponıveis, associadas a coleta de dados, em geral, por sensores. Uma
maneira para tratar o problema e atraves de modelos de aprendizado de maquina, como
Redes Neurais Artificiais Evoluıdas pela Programacao Genetica Cartesiana (CGPANN),
mas esta abordagem e computacionalmente cara. Sendo assim, este trabalho propoe
o desenvolvimento de tecnicas de computacao de alto desempenho sobre a CGPANN,
assim como sua aplicacao no treinamento de modelos para o problema de RAH. Para
isso, a arquitetura de Unidades de Processamento Grafico (GPU) e utilizada e diferentes
estruturas de dados para a CGPANN sao analisadas quanto ao tempo de execucao do
algoritmo na GPU e, posteriormente, quanto a qualidade dos modelos em relacao ao erro
de classificacao para o problema de reconhecimento de atividades. Os resultados obtidos
apontam uma reducao no tempo de execucao pela utilizacao de abordagens paralelas em
relacao ao algoritmo sequencial, alem de indicarem que os modelos da CGPANN para o
RAH sao promissores em relacao aqueles da literatura.
Keywords: Reconhecimento de Atividade Humana, Aprendizado de Maquina, Pro-
gramacao Genetica Cartesiana, Redes Neurais Artificiais
Abstract
Human Activity Recognition (HAR) is a promising problem and applicable to a wide
range of real-life situations, such as remote medical assistance and smart home applian-
ces. Its solution, however, presents some difficulties, like the large volume of available
data and features to be analyzed, associated with the data collection systems, generally
made by sensors. A possible approach to deal with this problem is through machine
learning models, such as Cartesian Genetic Programming of Artificial Neural Networks
(CGPANN), but this technique is computationally expensive. Therefore, this work propo-
ses the development of high-performance computing techniques for CGPANN, as well as
its application on HAR. To do so, the architecture of Graphics Processing Units (GPUs)
is used, and different data structures for the parallel CPGANN algorithm on the GPU
are analyzed regarding its execution time. Next, the quality of the models related to
their classification error when applied to a HAR dataset is also analyzed. The results
show a decrease in computational time when the proposed parallel CGPANN algorithm
is compared to the sequential approach. Moreover, the results point out that CGPANN’s
models for HAR are promising when compared to those from the literature.
Keywords: Human Activity Recognition, Machine Learning, Cartesian Genetic Pro-
gramming, Artificial Neural Networks
Agradecimentos
Aos meus pais e irmaos pelo apoio, incentivo e amor durante este percurso.
Ao professor Heder pela orientacao, amizade e paciencia durante estes anos de
trabalho e aprendizado.
Aos meus amigos, pelos momentos de descontracao, pelo apoio e ajuda nos mo-
mentos difıceis.
Ao GET Computacao, que foi fundamental para minha formacao. Em especial
aos getianos e getianas dos quais pude me tornar amigo e compartilhar tantos aprendiza-
dos.
Aos professores do Departamento de Ciencia da Computacao pelos seus ensina-
mentos e aos funcionarios do curso, que durante esses anos, contribuıram de algum modo
para o nosso enriquecimento pessoal e profissional.
Conteudo
Lista de Figuras 6
Lista de Tabelas 7
Lista de Abreviacoes 8
1 Introducao 91.1 Apresentacao do Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2 Descricao do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Reconhecimento de Atividade Humana 12
3 Metodos 163.1 Neuroevolucao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.1 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . 163.1.2 Algoritmos Evolutivos . . . . . . . . . . . . . . . . . . . . . . . . . 183.1.3 Programacao Genetica Cartesiana . . . . . . . . . . . . . . . . . . . 193.1.4 Caracterısticas da Neuroevolucao . . . . . . . . . . . . . . . . . . . 213.1.5 Programacao Genetica Cartesiana de Redes Neurais Artificiais . . . 22
3.2 Computacao de Alto Desempenho . . . . . . . . . . . . . . . . . . . . . . . 243.2.1 OpenCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.2 Unidades de Processamento Grafico . . . . . . . . . . . . . . . . . . 273.2.3 Programacao Genetica Paralela . . . . . . . . . . . . . . . . . . . . 29
3.3 Metricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Revisao bibliografica 344.1 Problema de Reconhecimento de Atividade . . . . . . . . . . . . . . . . . . 344.2 Computacao de Alto Desempenho . . . . . . . . . . . . . . . . . . . . . . . 36
5 Metodos Propostos 385.1 Padrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2 Compacta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.3 Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6 Experimentos Computacionais 426.1 Experimento 1: Analise de Desempenho Computacional . . . . . . . . . . . 436.2 Experimento 2: CGPANN para o Problema de RAH . . . . . . . . . . . . 46
7 Conclusao 52
Referencias Bibliograficas 54
Lista de Figuras
2.1 Etapas do problema de reconhecimento de atividades. Adaptado de Larae Labrador (2013) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 O problema RAH e sua variacao relaxada. Adaptado de Schrader et al.(2020) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Representacao de um neuronio biologico (a) e um artificial(b). . . . . . . . 173.2 Exemplo de uma RNA totalmente conectada (esq.) e uma topologia ar-
bitraria (dir.). Adaptado de Gajurel et al. (2020) . . . . . . . . . . . . . . 183.3 Exemplo de um indivıduo da CGP. Adaptado de Melo Neto et al. (2018). . 203.4 Esquema Geral de um algoritmo neuroevolutivo. . . . . . . . . . . . . . . . 223.5 Exemplo de um indivıduo da CGPANN. Adaptado de Melo Neto et al.
(2018). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.6 Organizacao da plataforma OpenCL, adaptado de Khronos (2011). . . . . . 253.7 Abstracao da organizacao dos dispositivos em itens e grupos de trabalho,
obtido de Tompson e Schlachter (2012). . . . . . . . . . . . . . . . . . . . . 263.8 Organizacao da memoria no OpenCL. Adaptado de Khronos (2011). . . . . 273.9 Comparacao da estrutura de CPUs e GPUs. . . . . . . . . . . . . . . . . . 283.10 Numero de segmentos necessarios para atender a uma requisicao em um
acesso coalescido (a) e um desalinhado (b). Obtido de NVIDIA (2013). . . 293.11 Esquema do paralelismo sob dados para PGs. Adaptado de Koza (1992). . 303.12 Esquema do paralelismo sob indivıduos para PGs. Adaptado de Koza (1992). 303.13 Esquema do uso da GPU para a avaliacao paralela dos indivıduos de um
AE. Adaptado de Russo et al. (2017). . . . . . . . . . . . . . . . . . . . . . 313.14 Exemplo da estrutura de uma matriz de confusao. . . . . . . . . . . . . . . 323.15 Exemplo da estrutura de uma matriz de confusao para um problema mul-
ticlasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Exemplo da estrutura da CGPANN padrao. . . . . . . . . . . . . . . . . . 395.2 Exemplo da manipulacao de memoria para armazenarmos dois inteiros em
uma mesma posicao de memoria. . . . . . . . . . . . . . . . . . . . . . . . 405.3 Exemplo da representacao de um indivıduo como imagem na GPU. . . . . 415.4 Exemplo da distribuicao de pixels nas estruturas R, RG e RGBA, respec-
tivamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.1 Matriz de confusao apresentada pela literatura(a) e obtida no trabalho(b). 49
Lista de Tabelas
6.1 Parametros utilizados para a CGPANN. . . . . . . . . . . . . . . . . . . . 436.2 Caracterıstica do Conjunto de Dados do Experimento 1. . . . . . . . . . . 446.3 Resultados para os tempos totais (host + kernel). . . . . . . . . . . . . . . 456.4 Resultados para o tempo de kernel. . . . . . . . . . . . . . . . . . . . . . . 466.5 Speedups para os tempos totais e de kernel em relacao ao algoritmo Se-
quencial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.6 Caracterısticas do Conjunto de Dados do Experimento 2. . . . . . . . . . . 476.7 Resultados para o erro medio dos modelos comparados e o mınimo, mediana
e desvio padrao do erro da CGPANN. . . . . . . . . . . . . . . . . . . . . . 486.8 Precisao, Revocacao e F1-score obtidos pela CGPANN. . . . . . . . . . . . 486.9 Tempo de execucao para as estruturas Padrao e Compacta para o dataset
de RAH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.10 Speedups da estrutura Compacta em relacao a Padrao. . . . . . . . . . . . 51
Lista de Abreviacoes
RAH Reconhecimento de Atividade Humana
AE Algoritmo Evolutivo
RNA Rede Neural Artificial
PG Programacao Genetica
CGP Programacao Genetica Cartesiana
CGPANN Programacao Genetica Cartesiana de Redes Neurais Artificiais
GPU Unidade de Processamento Grafico
GPGPU Unidade de Processamento Grafico de Proposito Geral
NEAT Neuroevolucao de topologias aumentantes
NeVA Algoritmo Neuroevolucionario
ESP Enforced Subpopulations
CoSyNE Cooperative Synapse Neuroevolution
ECG Eletrocardiograma
TEB Impedancia Eletrica Toracica
EDA Atividade Eletrodermica
EEG Eletroencefalograma
CU Unidades de Computacao
PE Elementos de Processamento
CNN Rede Neural Convolucional
9
1 Introducao
1.1 Apresentacao do Tema
A analise de sinais biologicos extraıdos de sensores com o intuito de reconhecer diferentes
tipos de atividade humana, como atividade fısica, emocional e mental e uma problematica
atual e relevante, por exemplo, para as areas de saude e de cuidados preventivos (Mohino-
Herranz et al., 2019). Neste contexto, uma abordagem para resolver o problema e a criacao
de modelos que possam predizer, baseado nos dados obtidos dos sensores, as atividades
sendo performadas.
O aprendizado de maquina consiste em metodos que sao capazes de identificar
padroes sobre conjuntos de dados e, a partir disso, fazer predicoes ou extrair conhecimento
sobre novos dados (Murphy, 2012). Como parte da area de Inteligencia Artificial, este
campo vem ganhando crescente destaque nos dias atuais, dada a abrangencia de problemas
aos quais suas tecnicas podem ser aplicadas. A classificacao de texto, o processamento de
linguagem natural, o reconhecimento de imagens e o auxılio a diagnosticos medicos sao
exemplos desses problemas (Mohri et al., 2018).
Uma das formas do aprendizado de maquina e o aprendizado supervisionado, que
utiliza dados de entrada associados a saıdas previamente conhecidas para treinar modelos
que, quando aplicados sobre dados desconhecidos, sejam capazes de predizer qual sera
a saıda correta. Tais modelos sao ditos preditivos e problemas de classificacao, como o
reconhecimento de atividade humana citado anteriormente, se enquadram nesta categoria.
Redes Neurais Artificiais sao modelos bioinspirados nas redes neuronais que for-
mam o cerebro de animais e sao uteis, por exemplo, para a resolucao de problemas de
classificacao, uma vez que modelam relacoes complexas do mundo real de forma flexıvel e
se ajustam automaticamente com base em dados (Zhang, 2000). Entretanto, existem difi-
culdades no que tange a construcao destes modelos, como o estabelecimento de topologias
adequadas e o ajuste de pesos e parametros que compoem essas topologias.
Uma sub-area do aprendizado de maquina de interesse para este trabalho e a
1.2 Descricao do Problema 10
Neuroevolucao, que consiste na aplicacao de Algoritmos Evolutivos (AEs) para o treina-
mento de Redes Neurais Artificiais (RNAs) (Turner, 2015). AEs sao tecnicas heurısticas
inspiradas na evolucao biologica descrita por Darwin (1859). A esta categoria perten-
cem algoritmos amplamente conhecidos, tais como os Algoritmos Geneticos (Goldberg,
1989), a Programacao Genetica (Koza, 1992) e a Programacao Genetica Cartesiana (Mil-
ler, 2011). Estas tecnicas permitem, por exemplo, a busca por solucoes de um problema
sem uma definicao previa da estrutura exata desta solucao (Poli et al., 2008).
Dessa forma, a aplicacao de AEs para a descoberta de topologias de RNAs e
promissora, pois tais metodos permitem a busca de topologias, pesos e/ou funcoes de
ativacao da rede sem a presenca de especialistas. Uma tecnica neuroevolutiva conhecida
foi proposta por Khan et al. (2010) e denominada de programacao genetica cartesiana de
redes neurais artificiais (CGPANN), que faz uso da modelagem de indivıduos como grafos
para codificar e evoluir redes neurais. Como apontado por seus autores, a tecnica se
mostrou competitiva em relacao a outros algoritmos como a Neuroevolucao de Topologias
Aumentantes (NEAT), o Algoritmo NeuroEvolucionario (NeVA), Enforced Subpopulations
(ESP) e Cooperative Synapse Neuroevolution (CoSyNE) por gerar solucoes com um menor
numero de geracoes para os problemas estudados.
1.2 Descricao do Problema
Um ponto negativo da Neuroevolucao e o alto custo computacional de treinamento das
RNAs. Esta caracterıstica e associada a generalidade dos AEs que, mesmo com poucos
indivıduos, requerem um grande numero de avaliacoes de funcao objetivo por geracao,
especialmente em grandes conjuntos de dados (Turner, 2015; Galvan and Mooney, 2020).
Neste sentido, uma abordagem plausıvel para amenizar tal problema e a aplicacao de
tecnicas de computacao de alto desempenho sobre o processo neuroevolutivo.
Uma proposta e a extensao de um metodo ja amplamente estudado dentro da
Neuroevolucao, como a CGPANN, para utilizar tecnicas de computacao de alto desempe-
nho. Na literatura, diversas caracterısticas de paralelismo em algoritmos evolutivos sao
descritas, seja na Programacao Genetica (Augusto e Barbosa, 2013) ou na Programacao
Genetica Cartesiana (Harding e Banzhaf, 2007).
1.3 Objetivos 11
Nestes estudos, entretanto, conceitos da Programacao Genetica Cartesiana (uti-
lizados pela CGPANN) nao sao levados em consideracao. Dentre estes, por exemplo, a
representacao por grafos e de grande relevancia, pois esta pode penalizar a implementacao
em certos ambientes paralelos, especificamente em Unidades de Processamento Grafico de
Proposito Geral (GPGPUs). Um outro fator que pode ser considerado e o tratamento de
informacoes extras associadas a estrutura da CGPANN, como os pesos de conexoes, den-
tro desses ambientes paralelos. Com isso, levanta-se a questao quanto a possibilidade da
aplicacao de tecnicas de computacao de alto desempenho eficientes sobre a CGPANN e os
possıveis ganhos computacionais oriundos de propostas que considerem as especificidades
do algoritmo utilizado e do contexto de sua aplicacao.
1.3 Objetivos
O principal objetivo proposto e projetar metodos de computacao de alto desempenho
na geracao de Redes Neurais Artificiais atraves da Programacao Genetica Cartesiana
e aplica-los ao problema de reconhecimento de atividade humana. Para alcancar tal
objetivo, propoe-se especificamente:
• Avaliar a implementacao de diferentes estruturas para a CGPANN paralela;
• Identificar caracterısticas relevantes para a implementacao das tecnicas propostas
em GPGPUs;
• Aplicar o uso da tecnica proposta no treinamento de um classificador para identificar
tipos de atividade humana com base em dados de sensores;
• Avaliar os resultados atraves da comparacao do desempenho computacional e de
metricas de desempenho para classificadores dos modelos encontrados com aqueles
descritos na literatura.
12
2 Reconhecimento de Atividade Humana
O Reconhecimento de Atividade Humana (RAH) e um problema que vem ganhando
destaque dado a crescente presenca de sensores e sistemas de Internet das Coisas (IoT). O
RAH geralmente faz uso de dados obtidos destes sistemas para reconhecer uma atividade
sendo desenvolvida por uma pessoa, como caminhar, subir escadas ou correr, mas tambem
existem abordagens de reconhecimento atraves de vıdeos e imagens extraıdos de cameras
que, entretanto, sao menos comuns (Chen et al., 2020).
O problema do RAH e majoritariamente tratado pela literatura em relacao a
atividades que envolvem movimento. Porem, o reconhecimento de emocoes (Horlings et
al., 2008) e atividades mentais (Millan et al., 2002) tambem se enquadram nesta mesma
categoria de problemas, compartilhando as tecnicas aplicadas e desafios enfrentados.
O RAH pode ser tratado como um problema de aprendizado supervisionado. Este
tipo de problema utiliza dados de entrada associados a saıdas previamente conhecidas
para treinar modelos preditivos que possam classificar corretamente novos dados. O fluxo
do processo de reconhecimento de atividades e ilustrado na Figura 2.1 que se aplica a
problemas gerais de classificacao pela coleta de dados, extracao de atributos, treinamento
de modelos e a classificacao em si.
O RAH e definido formalmente a seguir, como proposto por Lara e Labrador
(2013). Dado um conjunto S = {S0, ..., Sk−1} de k series temporais de atributos, todas
definidas dentro de um intervalo de tempo I = [tinicial, tfinal] sobre o qual a obtencao dos
atributos aconteceu. O objetivo do problema e encontrar, com base no conjunto S, uma
particao P de I e um conjunto de rotulos representando a atividade desenvolvida em cada
intervalo da particao P =< I0, ..., Ir−1 >, em que r e o numero de intervalos encontrados,
de forma que:
r−1⋃i=0
Pi = I
Atraves desta definicao, objetiva-se definir tanto a atividade desenvolvida quanto
2 Reconhecimento de Atividade Humana 13
Figura 2.1: Etapas do problema de reconhecimento de atividades. Adaptado de Lara eLabrador (2013)
o intervalo de tempo especıfico durante o qual ela foi realizada. Pela complexidade deste
sistema, existe a proposta de uma variacao relaxada do RAH. Neste, define-se um con-
junto W = {W0, ...,Wn−1} de n janelas de tempo de tamanho igual, cada uma associada
a um conjunto S de atributos (como previamente definidos), e um conjunto A com m
rotulos de atividades A = {a0, ..., am−1}. O problema relaxado consiste em determinar
um mapeamento dos rotulos de A para os intervalos de W com base nos atributos de S.
A diferenca entre as duas definicoes e exemplificada na Figura 2.2. Nota-se que,
no problema relaxado, existem erros, simbolizados na cor vermelha, devido a transicoes
entre diferentes atividades que ocorrem dentro das janelas de tempo pre-definidas que,
entretanto, nao sao de grande relevancia considerando-se que o numero de janelas de
tempo e muito superior ao numero de mudancas entre atividades (Lara e Labrador, 2013).
As aplicacoes do RAH sao extensas, o que justifica o emergente numero de estudos
na area. Dentre suas possıveis aplicacoes, e possıvel elencar o monitoramento de idosos
(Paraschiakos et al., 2020; Schrader et al., 2020), a analise de desempenho esportivo
(Mitchell et al., 2013), o monitoramento de estresse (Mohino-Herranz et al., 2015), a
2 Reconhecimento de Atividade Humana 14
Figura 2.2: O problema RAH e sua variacao relaxada. Adaptado de Schrader et al. (2020)
classificacao de atividades suspeitas (Jie et al., 2008) e a classificacao de atividades do dia
a dia, como dormir, andar e tomar banho (Kasteren et. al., 2008).
Para a extracao de atributos a serem utilizados no treinamento de modelos, o
sensoriamento de dados biologicos e uma pratica comum, realizada pela medida de in-
formacoes de eletrocardiograma (ECG), impedancia eletrica toracica (TEB), atividade
eletrodermica (EDA) e eletroencefalograma (EEG) mas, com a grande disponibilidade de
dispositivos celulares, muitos trabalhos propoem o uso de dados de sensores de giroscopio,
acelerometro e GPS destes dispositivos para a classificacao (Kwapisz et al., 2011).
No presente trabalho, o conjunto de dados “Activity recognition using wearable
physiological measurements” apresentado em Mohino-Herranz et al. (2019) e utilizado.
Este e composto de leituras de sensores vestıveis de ECG, TEB, e EDA, extraıdos de
40 (quarenta) pessoas performando atividades especıficas, que foram classificadas pelo
seu tipo em atividades fısica, emocional, mental e neutra (descanso), resultando em um
conjunto com 4480 instancias. Estes dados brutos foram previamente processados a fim de
extrair caracterısticas relevantes, resultando em 151 caracterısticas de TEB, 104 de EDA
e 174 de ECG, em um total de 533 caracterısticas. Estas sao compostas por parametros
medicos, assim como os seguintes parametros estatısticos: mediana, desvio padrao, media
aparada de 25%, assimetria, curtose, maximo, mınimo, percentil 25%, percentil 75%,
media geometrica, media harmonica e desvio padrao medio. O processo completo de
extracao de caracterısticas e detalhado por Mohino-Herranz et al. (2019).
Quanto aos desafios na area, Chen et al. (2020) indica a falta de padronizacao de
metodologias para comparacao justa entre diferentes metodos e, como tambem indicado
2 Reconhecimento de Atividade Humana 15
por Lara e Labrador (2013), a dificuldade de definicao dos atributos a serem utilizados
no treinamento de modelos, alem da heterogeneidade dos dados disponıveis, tambem sao
dificuldades enfrentadas. Kim et al. (2010) aponta a dificuldade de reconhecimento de
atividades concorrentes e correlacionadas, devido a complexidade dos dados disponıveis
para analise. Por exemplo, uma pessoa poderia ler um livro e tomar cafe ao mesmo tempo,
dificultando a classificacao correta entre as atividades.
16
3 Metodos
Neste capıtulo, os principais metodos relacionados ao tema do trabalho sao apresentados.
Descreve-se a Neuroevolucao pela definicao de RNAs e AEs, suas aplicacoes e desafios,
topicos relacionados a computacao de alto desempenho e algumas metricas de avaliacao
utilizadas.
3.1 Neuroevolucao
Neuroevolucao e uma subarea do aprendizado de maquina que propoe a geracao de topo-
logias de Redes Neurais Artificiais pela aplicacao de Algoritmos Evolutivos. Para com-
preende-la, portanto, esta secao introduz os conceitos pertinentes a RNAs e AES, assim
como as caracterısticas inerentes a Neuroevolucao.
3.1.1 Redes Neurais Artificiais
Redes Neurais Artificiais sao modelos bioinspirados nas redes neuronais do cerebro de
animais. Um neuronio biologico consiste em um corpo celular que recebe estımulos de
outros neuronios atraves de dendritos e, caso suficientemente estimulados, propagam este
impulso para outros neuronios atraves de seu axonio (Turner, 2015). Baseado nisso, RNAs
sao compostas por neuronios artificiais que podem ser comparados com um neuronio
biologico, como indica a Figura 3.1.
De forma geral, cada neuronio artificial recebe entradas de outros neuronios,
realiza uma soma ponderada pelos pesos sinapticos w de todas estas entradas com um
valor de vies e aplica uma funcao de ativacao f ao resultado. Esta funcao varia para cada
modelo, mas dentre as mais comuns, destacam-se a funcao logıstica sigmoide (Eq. 3.1), a
tangente hiperbolica (Eq. 3.2) e a Rectified Linear Unit (ReLU) (Eq. 3.3) (Ramachandran
et al., 2017).
σ(x) =1
1 + e−x(3.1)
3.1 Neuroevolucao 17
(a) Representacao de umneuronio real1.
w0
I0
w1I1
w2I2
wn-1
In-1
...
f
Entradas
Soma Função deAtivação
Saída
Dendritos Corpo Celular Axônio
Viés
Pesos sinápticos
(b) Representacao de um neuronio artificial
Figura 3.1: Representacao de um neuronio biologico (a) e um artificial(b).
tanh(x) =ex − e−x
ex + e−x(3.2)
relu(x) = max(0,x). (3.3)
Com isso, uma RNA consiste em uma serie de neuronios artificiais interconecta-
dos sob determinada topologia. Esta topologia usualmente e constituıda por um grafo
direcionado ponderado e acıclico no caso de redes feed-forward, ou com ciclos em redes
recorrentes (Jain et al., 1996).
A estrutura de RNAs pode ser totalmente conectada, com camadas ocultas, ou
possuir uma organizacao esparsa ou arbitraria, em que os nos do grafo nao sao totalmente
conectados com seus vizinhos nem organizados em camadas bem definidas (Gajurel et al.,
2020). Estas organizacoes sao exemplificadas na Figura 3.2.
Um desafio geral enfrentado e a definicao especıfica de cada parametro da es-
trutura destas redes, como suas topologias - o numero de nos, a quantidade de camadas
ocultas e a conexao entre os nos - os pesos das conexoes, ou ate mesmo a funcao de
ativacao ideal para determinado tipo de problema. Abordagens para otimizacao dos pe-
sos como a backpropagation sao amplamente utilizadas mas, nestes casos, a topologia e
mantida constante e muitas vezes definida por tentativa e erro. Em geral, este processo
pode ser arduo e requerer a analise de especialistas. Portanto, o uso de metodos capazes
1Disponıvel em: <https://brasilescola.uol.com.br/o-que-e/biologia/o-que-e-neuronio.htm>
3.1 Neuroevolucao 18
Figura 3.2: Exemplo de uma RNA totalmente conectada (esq.) e uma topologia arbitraria(dir.). Adaptado de Gajurel et al. (2020)
de modelar estas estruturas automaticamente mostra-se promissor.
3.1.2 Algoritmos Evolutivos
Algoritmos evolutivos sao tecnicas heurısticas estocasticas inspiradas na evolucao biologica
descrita por Darwin (1859), especialmente no conceito de sobrevivencia dos melhores. Es-
tes sao algoritmos populacionais em que um conjunto de solucoes candidatas (populacao)
sao evoluıdas atraves da aplicacao de operadores geneticos, como a mutacao e recom-
binacao, e avaliadas sob uma determinada funcao objetivo, que determina a qualidade
de cada indivıduo. Esta qualidade e utilizada para guiar a evolucao da populacao, em
que indivıduos de melhor qualidade sao preferencialmente escolhidos para continuarem no
processo evolutivo, garantindo a permanencia de caracterısticas mais promissoras durante
a busca.
Em geral, um algoritmo evolutivo e definido por uma serie de componentes, que
sao sua representacao (indivıduos), a funcao de aptidao, os operadores evolutivos (mutacao
e recombinacao), e criterios de selecao dos indivıduos pais para evolucao e permanencia
na populacao, como descrito por Eiben e Smith (2015). Estes componentes integram
diretamente o algoritmo, que pode ser visto no Algoritmo 1.
A esta categoria de tecnicas pertencem propostas amplamente conhecidas, tais
como os Algoritmos Geneticos (Goldberg, 1989), a Programacao Genetica (PG) (Koza,
3.1 Neuroevolucao 19
Algoritmo 1: Esquema geral de um Algoritmo Evolutivo
1 inıcio2 Inicializa a populacao;3 Calcula a aptidao dos indivıduos;4 enquanto Criterio de parada nao for satisfeito faca5 Seleciona indivıduos para reproducao;6 Aplica a combinacao entre os indivıduos selecionados;7 Aplica a mutacao nos indivıduos resultantes;8 Calcula a aptidao dos indivıduos gerados;9 Seleciona indivıduos para a proxima populacao;
10 fim enqto
11 fim
1992) e a Programacao Genetica Cartesiana (Miller, 2011). Em geral, estas abordagens
possuem muitas semelhancas por compartilharem das caracterısticas definidas para os
AEs, diferindo em suas propostas de estruturacao de indivıduos ou operadores geneticos,
por exemplo.
Dentre os benefıcios do uso de AEs, destacam-se a possibilidade de busca por
solucoes de um problema sem uma definicao previa de sua estrutura exata (Poli et al.,
2008) e sua capacidade de explorar espacos de busca complexos e com possivelmente di-
versos mınimos locais sem convergir prematuramente para um deles (Galvan and Mooney,
2020).
3.1.3 Programacao Genetica Cartesiana
A Programacao Genetica Cartesiana (CGP) e uma tecnica de Programacao Genetica ori-
ginalmente proposta por Miller e Thomson (2000), em que a representacao dos indivıduos
e tipicamente dada por grafos direcionados acıclicos. Cada no codifica um gene de funcao
atraves de uma tabela de referencia (por exemplo: 0 para soma, 1 para subtracao e 2
para multiplicacao). As conexoes entre os nos sao genes de conexao, e determinam a
origem das entradas de cada no, enquanto o resultado obtido em alguns destes sao os
genes de saıda, representando o resultado final da CGP. Um exemplo desta representacao
e mostrado na Figura 3.3, em que existem tres nos, tres dados de entrada e duas saıdas.
Na representacao abaixo do grafo, os nos cinzas contem codigos para funcoes, como ja
indicado anteriormente, os brancos sao as conexoes entre os nos e os quadrados pretos
3.1 Neuroevolucao 20
representam as saıdas, armazenadas como os ındices dos nos de onde os resultados sao
obtidos (neste caso, os nos de ındice 3 e 4). Nota-se que, caracteristicamente, nem to-
dos os nos da CGP precisam contribuir para a saıda do programa, sendo considerados
“inativos”. No exemplo, o no 5 esta inativo.
Input0
Input1
Input2
+ * -
Output
3 4 5
0 1 2 2 3 3 1 0 4 3 4
Output
Figura 3.3: Exemplo de um indivıduo da CGP. Adaptado de Melo Neto et al. (2018).
A mutacao na CGP padrao pode ser executada de duas formas: pontual ou
probabilisticamente (Miller, 2019). Na mutacao pontual, uma certa porcentagem pre
definida de genes do pai e alterada para gerar os filhos. Ja na mutacao probabilıstica,
cada gene pode ser alterado para um outro valor valido, dada uma probabilidade pre-
determinada. Esta segunda abordagem tende a ser computacionalmente mais custosa,
dado que todos os genes devem ser considerados, enquanto a primeira pode ser limitada
no numero de genes alterados.
Uma caracterıstica importante da mutacao na CGP e a possibilidade de mutacoes
ocorrerem em nos inativos, nao causando nenhuma alteracao efetiva no resultado do in-
divıduo. Algumas tecnicas foram propostas por Goldman e Punch (2013) para lidar com
este problema. A primeira, skip, consiste em comparar o filho gerado com o pai e, caso
seus genes ativos sejam iguais, a avaliacao nao e feita no filho. Ja a abordagem accumu-
late, ao identificar que um filho e identico ao pai, entra em um processo iterativo para
alterar o filho ate que este seja efetivamente diferente. Finalmente, a abordagem single
altera o processo de mutacao de forma que os genes a serem alterados sao sorteados alea-
toriamente ate que um gene ativo seja alterado, dando fim ao processo e garantindo que
o filho seja diferente do pai. Resultados experimentais mostram que estas abordagens
apresentam um desempenho semelhante entre si, mas superior a mutacao padrao.
Considerando a CGP padrao, nao ha a aplicacao de recombinacao entre in-
3.1 Neuroevolucao 21
divıduos, uma vez que estudos preliminares indicaram uma baixa eficiencia desta etapa
em melhorar os indivıduos da CGP (Miller, 2011). Alem disso, uma estrategia evolutiva
comumente usada para evoluir a populacao da CGP e a (1 + λ). Nesta, a partir da po-
pulacao de tamanho (1 + λ), o melhor indivıduo da geracao corrente e selecionado para
gerar λ filhos atraves de mutacoes. Na proxima geracao, o melhor indivıduo e escolhido
dentre o pai e os filhos gerados, dando prosseguimento a geracao dos novos indivıduos.
Assim sendo, os parametros base da CGP sao λ, a probabilidade de mutacao, o
numero maximo de nos, a aridade dos nos, e o conjunto de funcoes. Um pseudo codigo
do processo de busca da CGP e mostrado no Algoritmo 2.
Algoritmo 2: Algoritmo de busca da CGP
1 inıcio2 Inicializa os parametros (λ, PROB MUT, MAX GEN, etc) ;3 Cria a populacao inicial com (1 + λ) indivıduos aleatoriamente;4 Avalia a aptidao dos indivıduos;5 α ← indivıduo com melhor aptidao;6 for gen = 1 ate MAX GEN do7 for i = 1 ate λ do8 Avalia a aptidao do indivıduo i ;9 se Acuracia de i ≥ Acuracia de α entao
10 α← i ;11 fim se
12 end for13 Cria a proxima geracao com α e com λ copias de α aplicando
mutacoes nas topologias e pesos;
14 end for
15 fim
3.1.4 Caracterısticas da Neuroevolucao
Considerando a dificuldade de configurar manualmente as topologias de RNAs, a definicao
automatica destas topologias atraves de AEs vem ganhando popularidade, dados os be-
nefıcios destes algoritmos. Esta combinacao de tecnicas compoe a area da Neuroevolucao.
Como pode ser observado na Figura 3.4, as etapas presentes em um algoritmo
evolutivo compoem, de forma geral, o processo neuroevolutivo. Por isso, as consideracoes
sobre AEs quanto a definicao da estrutura dos indivıduos, operadores geneticos e metricas
de avaliacao continuam relevantes neste contexto. Estas caracterısticas, entretanto, sao
3.1 Neuroevolucao 22
Figura 3.4: Esquema Geral de um algoritmo neuroevolutivo.
definidas com base nas propriedades das RNAs sendo evoluıdas. Um exemplo simples e
a aplicacao de um AG para otimizacao dos pesos de conexoes de uma rede neural (Yao,
1999). Nesse caso, o indivıduo precisa representar somente uma sequencia de valores
numericos que representem estes pesos, e nao necessariamente a rede completa, que e
avaliada para cada combinacao destes pesos, proposta pelo AG.
E importante considerar que existem desvantagens associadas a neuroevolucao.
O principal ponto negativo e o alto custo computacional associado aos AEs. Devido a sua
generalidade, estas tecnicas requerem um alto numero de avaliacoes de funcao objetivo
por geracao, um problema que e agravado com o uso de grandes bases de dados (Turner,
2015; Galvan and Mooney, 2020).
3.1.5 Programacao Genetica Cartesiana de Redes Neurais Ar-
tificiais
Atraves de uma adaptacao da CGP padrao para o treinamento de RNAs, Khan et al.
(2010) propuseram a Programacao Genetica Cartesiana de Redes Neurais Artificiais. Esta
tecnica estende a estrutura base da CGP pela adicao de pesos associados as conexoes entre
os nos, como exemplificado na Figura 3.5. Na imagem, representam-se tres nos, tres dados
de entrada e duas saıdas. Na representacao abaixo do grafo, os nos cinzas contem codigos
para funcoes (F0, F1, F2), os brancos sao as conexoes entre os nos com seus respectivos
pesos, os quadrados pretos sao os ındices para os nos de saıda e o no 5 esta inativo. Nota-
se que as principais diferencas para a CGP podem ser identificadas na presenca dos pesos
e nos genes de funcao que, neste caso, podem ser funcoes de ativacao das Redes Neurais,
3.1 Neuroevolucao 23
Input0
Input1
Input2
F0 F1 F2
Output
0.1
4 5
F0 1 2 F1 3 3 F2 0 4 3
-0.2
0.5
0.4
-0.3
3
0.2 0.50.1 -0.2 -0.3 0.4
0.2
Output
4
Figura 3.5: Exemplo de um indivıduo da CGPANN. Adaptado de Melo Neto et al. (2018).
de forma que a RNA e codificada diretamente, tendo toda sua topologia representada
pelo indivıduo.
Os parametros e o processo evolutivo desta tecnica sao similares aqueles da CGP,
exceto pela mutacao, em que, adicionalmente as mudancas na topologia e na funcao de
ativacao, os pesos tambem podem ser alterados para novos valores dentro de um intervalo
pre definido. Como apontado por seus autores, a tecnica se mostrou competitiva em
relacao a outros algoritmos neuroevolutivos como NEAT, NeVA, ESP e CoSyNE por gerar
solucoes com um menor numero de avaliacoes para os problemas estudados. Entretanto,
Turner (2015) aponta que a CGPANN tende a obter resultados pouco satisfatorios em
problemas de classificacao, devido principalmente a evolucao conjunto de topologia e
pesos da rede, necessitando de um processo para o ajuste fino destes parametros a fim de
melhorar seus resultados.
Um pseudo codigo da CGPANN e mostrado no Algoritmo 3, baseado naquele
apresentado por Melo Neto et al. (2018). Neste, o processo evolutivo conta com avaliacoes
sobre dados de treinamento, validacao e teste, como aplicado no presente trabalho. Nesta
configuracao, o melhor indivıduo para os dados de treinamento e utilizado para gerar
novos indivıduos (linha 18), enquanto o melhor sob os dados de validacao e utilizado
para verificar a acuracia final sob os dados de teste (linha 20). Neste caso, os dados de
validacao nao sao utilizados como decisao de parada para o algoritmo de busca, e sim
para identificar indivıduos com uma boa acuracia e que nao estejam sobre-ajustados aos
dados de treinamento. A divisao dos dados em grupos de treinamento, validacao e teste
e detalhada no Capıtulo 6.
3.2 Computacao de Alto Desempenho 24
Algoritmo 3: Pseudo Codigo da CGPANN
1 inıcio2 Inicializa os parametros (λ, PROB MUT, MAX GEN, etc) ;3 Cria (1 + λ) indivıduos;4 Avalia a acuracia dos indivıduos (TREINAMENTO);5 Cria a rede α para armazenar a melhor (TREINAMENTO);
6 Cria a rede β para armazenar a melhor (VALIDACAO);7 for gen = 1 ate MAX GEN do8 for i = 1 ate λ do9 Avalia a acuracia do indivıduo i (TREINAMENTO);
10 Avalia a acuracia do indivıduo i (VALIDACAO);11 se Acuracia de i ≥ Acuracia de α (TREINAMENTO) entao12 α← i ;13 fim se
14 se Acuracia de i ≥ Acuracia de β (VALIDACAO) entao15 β ← i ;16 fim se
17 end for18 Cria λ copias de α e aplica mutacoes nas topologias e pesos;
19 end for20 Avalia a acuracia de β (TESTE);
21 fim
3.2 Computacao de Alto Desempenho
Uma alternativa para lidar com o alto custo computacional e pela aplicacao de tecnicas
de computacao de alto desempenho. Este tema, entretanto, tange uma ampla gama de
tecnicas, conceitos, ferramentas e algoritmos que fogem do escopo deste trabalho. Por isso,
nas subsecoes seguintes, os principais topicos relacionados ao trabalho aqui desenvolvido
sao brevemente introduzidos. Assim, discute-se o OpenCL, ferramenta utilizada para a
geracao do codigo paralelo, as unidades de processamento grafico e algumas tecnicas de
paralelismo sobre programas geneticos.
3.2.1 OpenCL
O OpenCL (Open Computing Language) e um padrao aberto para programacao paralela
em plataformas heterogeneas (Khronos, 2011). Este framework permite o desenvolvi-
mento de aplicacoes para dispositivos fısicos de diferentes tipos, tais como CPUs e GPUs
de diferentes fabricantes (Gaster et. al., 2013). Aqui, esta ferramenta e brevemente intro-
duzida com o objetivo de auxiliar no entendimento das tecnicas paralelas desenvolvidas e
3.2 Computacao de Alto Desempenho 25
Hospedeiro
......
......
......
......
...Dispositivo
Unidade de ComputaçãoElemento deProcessamento
Figura 3.6: Organizacao da plataforma OpenCL, adaptado de Khronos (2011).
do funcionamento dos dispositivos utilizados.
O modelo de plataforma do OpenCL e composto por um dispositivo hospedeiro
(host) conectado a diversos dispositivos. Cada um destes dispositivos, independente do
seu tipo (CPU ou GPU) sao compostos por uma ou mais unidades de computacao -
do ingles, compute units (CU) - que correspondem aos nucleos do processador. Cada
uma destas unidades e formada por um ou mais elementos de processamento - processing
elements (PE) - onde as instrucoes sao efetivamente executadas. A Figura 3.6 representa
esta organizacao.
A execucao do codigo OpenCL e dividida entre o codigo que executa no sis-
tema hospedeiro e aquele executado nos dispositivos (Khronos, 2011). O programa do
hospedeiro executa normalmente na CPU, e e responsavel por gerenciar a execucao dos
programas paralelos, controlando os dispositivos, os objetos de memoria e enfileirando
instrucoes a serem executadas em paralelo. Estas operacoes sao disponibilizadas atraves
da interface de programacao de aplicacoes (API) do OpenCL. As instrucoes que executam
nos dispositivos sao chamadas de kernels. Estas sao funcoes escritas em OpenCL C, um
subconjunto de instrucoes da especificacao C99, que executam o codigo em paralelo nos
elementos de processamento.
A execucao dos kernels ocorre em um espaco N-dimensional, que pode ter uma,
duas ou tres dimensoes. Cada elemento independente corresponde a um item de trabalho
(work-item), que executa o codigo paralelo sob diferentes dados. Estes itens sao agrupados
em grupos de trabalho (work-groups), que podem ser sincronizados e dividir um mesmo
espaco de memoria. Quanto a nomenclatura, o numero de itens dentro de um grupo de
3.2 Computacao de Alto Desempenho 26
Figura 3.7: Abstracao da organizacao dos dispositivos em itens e grupos de trabalho,obtido de Tompson e Schlachter (2012).
trabalho e chamado de tamanho local (local-size), enquanto o numero total de itens de
trabalho utilizados e o tamanho global (global-size). Este conceito e exemplificado na
figura 3.7.
Uma outra abstracao importante e o modelo de memoria. Esta e dividida em
quatro espacos: a memoria global, a constante, a local e a privada (Khronos, 2011). A
memoria global e acessıvel por todos os itens e grupos de trabalho, e e alocada pelo hospe-
deiro. A memoria constante faz parte da memoria global, mas serve somente para leitura
e, em alguns casos, pode ser implementada como cache, sendo mais eficiente. A regiao
da memoria local e compartilhada dentro de um mesmo grupo de trabalho, enquanto a
memoria privada remete a um unico item de trabalho. Estes espacos de memoria estao
presentes nos dispositivos paralelos, enquanto a memoria do hospedeiro, correspondente
a memoria disponıvel em CPU durante a execucao do codigo sequencial, existe separa-
damente e instrucoes para leitura e escrita entre estes dois espacos sao necessarias. O
modelo de memoria descrito e esquematizado na Figura 3.8.
3.2 Computacao de Alto Desempenho 27
Unidade de Computação 1
El. Processamento 1
Memória privada 1
El. Processamento M
Memória privada M
Memória Local 1
...
Unidade de Computação N
El. Processamento 1
Memória privada 1
El. Processamento M
Memória privada M
Memória Local N
...
Memória Global / Constante
Dispositivo
Hospedeiro
Memória do hospedeiro
...
Figura 3.8: Organizacao da memoria no OpenCL. Adaptado de Khronos (2011).
3.2.2 Unidades de Processamento Grafico
Associado ao paralelismo, o uso de Unidades de Processamento Grafico (GPUs) para a
reducao do tempo de processamento de aplicacoes gerais, nao necessariamente relaciona-
das a graficos, tem mostrado resultados promissores. O modelo SIMD (Single Instruction,
Multiple Data) destas placas permitem um paralelismo massivo sobre dados, caracterıstica
relevante para aplicacoes de aprendizado de maquina (Steinkraus et al., 2005).
A arquitetura de GPUs e composta por uma grande quantidade de nucleos sim-
ples, correspondentes a elementos de processamento. Todos estes elementos dentro de
um grupo de trabalho executam a mesma operacao por ciclo, mas sobre dados diferen-
tes, caracterizando o modelo SIMD. Em relacao as Unidades de Processamento Central
(CPUs), as GPUs possuem uma quantidade reduzida de memoria e cache, de forma que
esta e uma caracterıstica importante a ser considerada durante a elaboracao de algoritmos
na GPU. A comparacao da organizacao destes processadores e mostrada na Figura 3.9.
Nota-se a presenca de uma estrutura de controle mais complexa e uma quantidade grande
de cache em CPUs, necessarias para o paralelismo de instrucoes presentes neste tipo de
processador.
Uma caracterıstica importante das GPUs e que seus itens de trabalho (ou threads)
estao sempre agrupados em um tamanho pre definido. Por exemplo, em GPUs da NVI-
3.2 Computacao de Alto Desempenho 28
Figura 3.9: Comparacao da estrutura de CPUs e GPUs.2
DIA, 32 itens sao agrupados em um grupo chamado de warp, enquanto em arquiteturas
da AMD, 32 ou 64 itens sao agrupados em grupos denominados wavefronts (aqui vamos
utilizar a nomenclatura wavefront por ser a mais comum ao OpenCL). Nesta organizacao,
todos os itens de um wavefront executam exatamente a mesma instrucao a cada instante
de forma paralela. Caso alguma instrucao entre alguns destes itens seja divergente, as
instrucoes de cada thread sao executadas sequencialmente (NVIDIA, 2017). Este tipo de
execucao configura a arquitetura “single instruction, multiple threads” (SIMT) que, em
linhas gerais, e uma extensao da arquitetura SIMD pela utilizacao de threads.
Existe um total de seis tipos de espaco de memoria em GPUs: de registrador,
constante, compartilhada, local, global e de texturas (Mei e Chu, 2016). Em geral, estes
espacos sao diretamente mapeaveis a abstracao fornecida pelo OpenCL.
A memoria global e a que possui maior tamanho e e acessada pelos elementos de
processamento por transacoes de tamanho fixo, como 32, 64 ou 128 bytes. Esta e uma
memoria de leitura e escrita com alta latencia e, em dispositivos mais recentes, dotadas
de sistema de cache. A principal caracterıstica desta memoria e seu acesso coalescido
(agregado, aglutinado). Isso quer dizer que, quando os elementos de processamento dentro
de um wavefront precisam acessar a memoria global, estas requisicoes sao aglomeradas
no mınimo de transacoes necessarias para suprir as requisicoes (NVIDIA, 2017). Assim,
caso estes acessos sejam dispersos, uma grande quantidade de dados nao utilizadas sao
carregados, dado que as leituras sempre ocorrem em blocos de tamanho fixo. A Figura
3.10 ilustra uma situacao simples em que o desalinhamento dos enderecos acessados,
2Disponıvel em: <https://sites.google.com/site/daveshshingari/explorations/computer-architecture/gpu-architecture>
3.2 Computacao de Alto Desempenho 29
representados pelas setas, gera um acesso extra a memoria, representado pelos blocos
vermelhos. Em casos de acessos dispersos, este numero pode aumentar significativamente.
(a) Acesso coalescido.
(b) Acesso sequencial, mas desalinhado.
Figura 3.10: Numero de segmentos necessarios para atender a uma requisicao em umacesso coalescido (a) e um desalinhado (b). Obtido de NVIDIA (2013).
A memoria de texturas existe na mesma regiao que a memoria global, apresen-
tando tambem uma alta latencia. Alem disso, apresenta um sistema de cache e funciona
somente para leitura. Sua principal diferenca e que seu cache e otimizado para acessos
com localidade 2D, ou seja, elementos de um grupo de trabalho que acessam enderecos
de textura proximos tendem a ter um desempenho melhor. Portanto, ela e indicada para
casos em que o acesso a memoria nao seja coalescido (caso contrario, o uso de memoria
global pode ser melhor) (NVIDIA, 2017).
A memoria compartilhada corresponde a memoria local no OpenCL, acessıvel
somente aos elementos de processamento dentro de uma unidade de computacao. Esta
memoria e mais rapida que a memoria global, porem disponıvel em menor quantidade.
Para explora-la, algumas tecnicas transferem uma unica vez dados da memoria global
para a compartilhada, utilizando-a para os acessos subsequentes.
3.2.3 Programacao Genetica Paralela
Koza (1992) apresenta de forma teorica as principais maneiras pelas quais um metodo
de programacao genetica e naturalmente paralelizavel. Na primeira delas, o paralelismo
sob o conjunto de dados pode ser explorado, dado que as execucoes de um indivıduo
sob as diferentes entradas sao independentes, como exemplificado na Figura 3.11. Nota-
se, entretanto, que uma etapa para acumular os resultados parciais e necessaria, dado
3.2 Computacao de Alto Desempenho 30
Acumula Resultados
Avaliaentrada 1
...Avaliaentrada 2
Avaliaentrada N
Indivíduo 1 1Dados
2...
N
Figura 3.11: Esquema do paralelismo sob dados para PGs. Adaptado de Koza (1992).
AvaliaIndivíduo 1
1Dados
2...
N
AvaliaIndivíduo 2
AvaliaIndivíduo M
População
...
Evolução
Figura 3.12: Esquema do paralelismo sob indivıduos para PGs. Adaptado de Koza (1992).
que a qualidade final do indivıduo depende de todos os seus resultados sob as diferentes
entradas do conjunto de dados. Ja a segunda abordagem trata do paralelismo sob a
populacao, uma vez que cada indivıduo pode ser avaliado independentemente dos outros,
como esquematizado na Figura 3.12.
No contexto da neuroevolucao e do presente trabalho, a GPU e utilizada de
forma a gerar um paralelismo massivo sobre a etapa de avaliacao do algoritmo evolutivo,
permitindo a paralelizacao tanto em nıvel de indivıduos, quanto em nıvel de dados, como
exemplificado na Figura 3.13. Os indivıduos (modelos) podem ser mapeados para as
unidades de computacao da GPU, que podem avaliar os indivıduos simultaneamente sobre
as entradas do conjunto de dados em seus elementos de processamento, associando as duas
abordagens descritas anteriormente.
3.3 Metricas 31
...
CU1 CUp Global/constant memory
Local memory Local memory
PE1,1
PE1,q
...
Private Private
PEp,1
PEp,q
...
Private Private
Training data
...
...
...
{
{...
Programs
Figura 3.13: Esquema do uso da GPU para a avaliacao paralela dos indivıduos de umAE. Adaptado de Russo et al. (2017).
3.3 Metricas
Neste trabalho, algumas metricas de desempenho sao utilizadas para a analise dos resulta-
dos. Portando, uma breve introducao se mostra necessaria a fim de garantir a compreensao
dos metodos aplicados. Estas metricas sao utilizadas em problemas de classificacao a fim
de verificar efetivamente a capacidade preditiva do modelo.
Considerando um problema de classificacao binaria, temos duas opcoes de clas-
sificacao, uma positiva e uma negativa (Shmueli, 2019). Por exemplo, se estamos inte-
ressados em classificar, a partir de dados medicos, se uma pessoa esta ou nao doente,
classificamos positivamente as amostras que indicam a doenca e negativamente as amos-
tras de pessoas saudaveis.
Neste caso, existem dois erros que podem ser cometidos durante a classificacao:
um falso positivo (FP), quando classifica-se uma amostra como positiva quando esta e, na
verdade, negativa; ou um falso negativo (FN), em que uma amostra positiva e classificada
como negativa (Murphy, 2012). De forma similar, ao classificarmos uma amostra correta-
mente, a designamos como verdadeiramente positiva (TP) ou verdadeiramente negativa
(TN). Estes dados podem ser usados para construir a chamada “matriz de confusao”, que
resume a capacidade do modelo em classificar corretamente as diferentes classes, como
exemplificado na Figura 3.14.
A precisao de um modelo (Eq. 3.4) determina sua capacidade em, dada uma
amostra positiva, classifica-la corretamente, correspondendo a proporcao, dentre amostras
3.3 Metricas 32
Positivo Negativo
Classe Esperada
ClassePredita
TP FPPositivo
FN TNNegativo
Figura 3.14: Exemplo da estrutura de uma matriz de confusao.
positivamente classificadas, que realmente sao positivas. Ja a revocacao (Eq. 3.5) - do
ingles, recall - corresponde a proporcao entre as amostras classificadas corretamente como
positivas e o numero de amostras verdadeiramente positivas, ou seja, a proporcao de itens
positivos que sao corretamente classificados. A acuracia (Eq. 3.6) indica a proporcao de
itens que foram corretamente classificados, seja positiva ou negativamente.
Uma outra metrica comumente utilizada e a fβ-score (Eq. 3.7). Esta e a media
harmonica ponderada entre a precisao e revocacao, de forma que o parametro β determina
a importancia maior ou menor para cada um destes valores. Nota-se para β entre 0 e
1, maior a importancia da precisao, valores maiores que 1 beneficiam a revocacao e para
β = 1, ambas as metricas sao igualmente consideradas.
Precisao(P ) =TP
TP + FP(3.4)
Revocacao(R) =TP
TP + FN(3.5)
Acuracia(A) =TP + TN
TP + TN + FP + FN(3.6)
Fβ = (1 + β2)Precisao×Revocacao
β2 × Precisao+Revocacao(3.7)
E importante considerar que este tipo de analise pode ser naturalmente aplicado
a problemas multiclasse. Nesta situacao, entretanto, as metricas anteriormente descritas
sao calculadas parada cada classe especıfica. A Figura 3.15 mostra um exemplo de uma
matriz de confusao para um problema multiclasse em que poderıamos estar classificando
3.3 Metricas 33
se uma imagem e de um carro, uma moto ou de um onibus. Neste sentido, tomando a
classe “carro” como exemplo, podemos calcular a precisao, a revocacao e os f-scores para
a classe, assim como a acuracia para o modelo como um todo, como segue:
Carro Moto
Classe Esperada
ClassePredita
10 5Carro
2 7Moto
Ônibus
4
1
1 2Ônibus 8
Figura 3.15: Exemplo da estrutura de uma matriz de confusao para um problema multi-classe.
Precisao Carro =10
10 + 5 + 4= 0.53
Revocacao Carro =10
10 + 2 + 1= 0.76
Acuracia =10 + 7 + 8
40= 0.62
F1 = (1 + 12)0.53× 0.76
12 × 0.53 + 0.76= 0.62
F2 = (1 + 22)0.53× 0.76
22 × 0.53 + 0.76= 0.69
34
4 Revisao bibliografica
Neste capıtulo, apresenta-se trabalhos relacionados aos problemas propostos na monogra-
fia. Assim, abordagens sobre a solucao do Problema de Reconhecimento de Atividade sao
discutidas, assim como pesquisas sobre a CGPANN e em computacao de alto desempenho
aplicada sobre programas geneticos, em especial a CGP.
4.1 Problema de Reconhecimento de Atividade
Os primeiros trabalhos com alguma relacao ao RAH data da decada de 90, por um estudo
de postura e reconhecimento de movimentos por Foerster et. al. (1999). Desde entao,
outros trabalhos vem sendo propostos na area para em aplicacoes e atraves do uso de
diferentes tecnicas e algoritmos. Assim sendo, os trabalhos aqui apresentados sobre o
RAH seguem uma ordem cronologica, focados nas tecnicas empregadas para a solucao do
problema.
Os autores Kasteren et. al. (2008) aplicaram Modelos Ocultos de Markov (HMM)
e Campos Aleatorios Condicionais (CRF) para o reconhecimento de atividades do dia-a-
dia dentro de uma casa, no qual os HMM obtiveram os melhores resultados, com 79.4%
de acuracia de classificacao. Ja Jatoba et. al. (2008) usaram outros classificadores, como
k-vizinhos mais proximos (kNN), Naive Bayes (NB), Arvores de Classificacao e Regressao
(CART) e sistema de inferencia neuro-fuzzy adaptavel (ANFIS) na classificacao de ati-
vidades semelhantes. Neste caso, as tecnicas CART e ANFIS obtiveram os melhores
resultados, com 86.6% e 85.9% de acuracia de classificacao, respectivamente.
Em um trabalho posterior, Zhu e Sheng (2009) utiliza HMMs associadas a Redes
Neurais Artificiais treinadas pela ferramenta de Redes Neurais do software MATLAB
(Neural Network Toolbox ), tambem para a classificacao de atividades do dia-a-dia. Neste
caso, entretanto, as RNAs sao usadas em uma etapa anterior a classificacao, alimentando
o HMM com seus resultados, e nao diretamente na classificacao dos dados. Os autores
relataram acuracias de classificacao de ate 92.50%.
4.1 Problema de Reconhecimento de Atividade 35
No contexto do uso de RNAs, Sharma et al. (2008) e Oniga e Suto (2014) apli-
caram estes classificadores sobre o problema de RAH. No primeiro trabalho, atividades
gerais como descansar, caminhar e andar sao classificadas, enquanto no segundo, o foco
e identificar a postura corporal e dos bracos. Em ambos os trabalhos, as RNAs foram
treinadas pela ferramenta de Redes Neurais do MATLAB. Acuracias de classificacao de
91.82% e 99% foram relatadas, respectivamente.
Uma tendencia atual e a aplicacao de metodos de Aprendizado Profundo em
problemas de aprendizado de maquina e, neste sentido, algumas aplicacoes sobre o RAH
vem surgindo. Por exemplo, Duffner et. al. (2014) utilizou Redes Neurais Convolucionais
para o reconhecimento de gestos a partir de dados de acelerometros e giroscopios, obtendo
resultados melhores que outros metodos do estado da arte para o conjunto de dados
explorado, como HMM. Semelhantemente, Ronao and Cho (2016) tambem aplica CNNs
no problema, em um estudo da capacidade desta tecnica em extrair automaticamente
caracterısticas complexas do conjunto de dados, tambem obtendo melhores resultados
que outros modelos da literatura, como NB, MLP e SVMs, sem a necessidade de definir
caracterısticas manualmente.
Focado no processo de selecao de caracterısticas, Mohino-Herranz et al. (2019)
aplica um algoritmo genetico (AG) para selecionar diferentes quantidades destas carac-
terısticas. O foco e a classificacao do tipo de atividade sendo performada, como atividade
mental, emocional, fısica e neutra, e as seguintes tecnicas sao usadas: Classificador de
Mınimos Quadrados Linear (LSLC) e Quadratico (LSQC), Maquinas de Vetor de Suporte
(SVM), Perceptrons Multicamada (MLP), Florestas Aleatorias (RFs), k-vizinhos mais
proximos (kNN) e sua variacao de centroides (CDNN). Os autores indicam que AGs sao
eficientes na selecao de atributos, diminuindo de 533 para 40 as caracterısticas necessarias
para obtencao do melhor erro de classificacao, sendo este de 22.2% para um classificador
linear de mınimos quadrados.
Existe uma grande variedade de problemas aos quais o RAH e aplicavel. Nota-se
que todos estes trabalhos tiveram sucesso em utilizar diferentes modelos para diferentes
aplicacoes. Naturalmente, o processo de aquisicao de dados, o ambiente de aplicacao, os
sensores utilizados e o processo de extracao de caracterısticas diferem substancialmente
4.2 Computacao de Alto Desempenho 36
entre os trabalhos, dificultando uma comparacao justa entre os resultados apresentados.
Por isso, na analise de trabalhos existentes na literatura, as tecnicas, os conjuntos de dados
utilizados e os resultados finais apresentam muitas diferencas, dificultando a comparacao
justa entre eles. Sendo assim, a analise destes trabalhos foca nos metodos computacionais
empregados a fim de compara-los com a proposta do presente trabalho.
Entretanto, ressalta-se que uma caracterıstica em comum e a descricao do pro-
cesso de aquisicao de dados e da selecao de caracterısticas que, entretanto, nao sao dire-
tamente estudados no presente trabalho, dado que o conjunto de dados utilizado ja foi
previamente pre processado por Mohino-Herranz et al. (2019). Aqui, dada a popularidade
dos metodos de aprendizado profundo e a aplicacao de diferentes tecnicas para o RAH,
propoe-se a aplicacao da CGPANN para soluciona-lo e analisar seu desempenho neste
contexto.
4.2 Computacao de Alto Desempenho
A CGPANN foi inicialmente proposta por Khan et al. (2010) e, desde entao, tem sido apli-
cada com sucesso em diferentes problemas, como na deteccao de cancer de mama (Ahmad
e Khan, 2012), na reconstrucao de sinais de audio (Khan e Khan, 2017) e na previsao
de sobrecargas eletricas Khan e Arshad (2016). O foco destes trabalhos, entretanto, e
na resolucao dos problemas e na acuracia dos modelos, enquanto detalhes sobre o custo
computacional e o tempo de execucao nao sao discutidos. Entretanto, este ainda e um
problema corrente no que tange Algoritmos Evolucionarios como a CGPANN, ainda que
programas geneticos sejam naturalmente paralelos.
Em um dos primeiros trabalhos sobre PG, Koza (1992) descreve as principais
abordagem de paralelismo sobre esta tecnica. A primeira e o paralelismo sobre o conjunto
de dados, em que as avaliacoes de funcao objetivo sao executadas em paralelo. A segunda
trata do paralelismo sobre a populacao, em que os indivıduos da PG sao executados em
paralelo.
Em trabalhos posteriores, ambas as abordagem foram aplicadas simultaneamente
com sucesso. Em um deles, (Robilliard et. al., 2009; Robilliard et al., 2009) utilizaram
GPUs e a linguagem CUDA para explorar o paralelismo de PGs baseados em arvores,
4.2 Computacao de Alto Desempenho 37
resultando em uma aceleracao de ate 80x em relacao a execucao sequencial.
Entretanto, um dos primeiros trabalhos a propor o uso de GPUs foi apresentado
por Yu et. al. (2005). Neste, tanto a avaliacao quanto a evolucao dos indivıduos foram
implementadas para a GPU, e os indivıduos eram representados como texturas 2D na placa
grafica. Em relacao ao codigo em CPU, os autores relataram uma aceleracao de ate 17x.
Uma tecnica similar de paralelismo sobre dados e indivıduos foi aplicada por (Augusto e
Barbosa, 2013), utilizando GPUs e o framework OpenCL. Neste, PGs baseados em arvores
tambem foram utilizados e uma aceleracao de ate 126x foi atingida em comparacao ao
codigo sequencial.
A grande parte dos trabalhos que tratam de tecnicas paralelas de programacao
genetica utilizam a estrutura de arvores (Chitty, 2017), de forma que sao poucos os tra-
balhos que aplicam a CGP neste contexto. Utilizando esta estrutura, Harding e Banzhaf
(2007) implementa uma abordagem de paralelismo sob dados em GPUs, atingindo uma
aceleracao de 22.38x sobre o codigo em CPU. Em um trabalho seguinte, Harding e Banzhaf
(2009) propoe uma implementacao da CGP distribuıda, tambem utilizando GPUs. Neste
caso, o codigo CUDA e gerado, distribuıdo por um cluster e compilado em tempo de
execucao. Em ambos estes trabalhos, entretanto, a CGP e utilizado de forma arbitraria,
de forma que os autores indicam que os resultados poderiam ter sido obtidos utilizando
outros tipos de programacao genetica, como a linear ou a baseada em arvores.
Em um trabalho um pouco mais recente, (Vasıcek e Slany, 2012) traduz a fase de
avaliacao dos indivıduos da CGP para um codigo de maquina binario para CPUs. Neste
caso, a CGP e utilizada por poder ter seus nos avaliados de forma linear, ao inves de
uma avaliacao recursiva de sua estrutura, como geralmente e aplicado para tecnicas que
utilizam uma estrutura de arvore, em contraste com a representacao em grafos da CGP.
A tecnica atingiu uma aceleracao de ate 177x em comparacao a abordagens em que as
estruras sao interpretadas, sem a compilacao de codigo de maquina.
38
5 Metodos Propostos
Neste capıtulo, os metodos propostos para o trabalho sao apresentados. O uso da CG-
PANN para o RAH e brevemente introduzido e da-se enfase as estruturas de dados de-
senvolvidas para a CGPANN paralela.
A aplicacao da CGPANN para o RAH e feita de forma direta, utilizando o con-
junto de dados “Activity recognition using wearable physiological measurements”, previ-
amente discutido no Capıtulo 2. Neste caso, todo o conjunto de 4480 instancias e 533
caracterısticas e utilizado como entrada para o algoritmo. Os indivıduos da CGPANN
representam os modelos para o RAH, que sao inicialmente gerados de forma aleatoria e
automaticamente evoluıdos, atraves do fluxo do algoritmo da CGPANN.
As tecnicas paralelas implementadas para a CGPANN adotam o paralelismo si-
multaneo sobre dados e sobre a populacao, como previamente descrito no Capıtulo 3.
Sendo assim, propoe-se um total de oito estruturas de dado para representar os indivıduos
da CGPANN, objetivando principalmente explorar caracterısticas especıficas das GPUs,
como a latencia de acesso a memoria global e sua memoria de texturas.
5.1 Padrao
A primeira estrutura de dados proposta e referida como “Padrao”. Esta consiste em nos
contendo ındices inteiros para suas conexoes de entrada, seja do conjunto de dados ou
de outros nos, assim como uma lista dos pesos em ponto flutuante associados a cada
entrada. Estes nos sao indexados por uma lista de ındices na estrutura principal, que
tambem armazena os ındices dos nos de saıda e estruturas auxiliares, como uma lista de
nos ativos. Esta estrutura e representada na Figura 5.1.
Esta primeira proposta nao possui melhorias quanto ao espaco de memoria ocu-
pada ou ao numero de acessos a memoria global da GPU. Entretanto, esta e a estrutura
utilizada em codigos sequenciais, alem de ser usada como base para as representacoes des-
critas a seguir, servindo de referencia para comparacoes de performance com as demais.
5.2 Compacta 39
Nó ...
Int ...
Nós
Nós ativos
Int Saídas
AptidãoFloat
IndivíduoFunçãoInt
Int
Int
Float
Ativo
Inputs
Pesos
Nó
FunçãoInt
Int
Int
Float
Ativo
Inputs
Pesos
Nó
FunçãoInt
Int
Int ...
Float ...
Ativo
Inputs
Pesos
Nó
FunçãoInt
Int
Int ...
Float ...
Ativo
Inputs
Pesos
Nó
...Número Nós ativosInt
Figura 5.1: Exemplo da estrutura da CGPANN padrao.
5.2 Compacta
A abordagem proposta para reduzir os acessos a memoria global da GPU consiste no uso
da estrutura “Compacta”. Esta representacao possui a mesma organizacao da estrutura
“Padrao”, mas os campos que armazenam os ındices de entradas e de nos ativos sao
compactados em memoria. Nota-se que estes ındices, armazenados como inteiros de 32-
bits sem sinal, sao limitados ao valor maximo do numero de nos somado ao numero de
entradas possıveis do conjunto de dados. Desta forma, para representa-los completamente
em memoria, nem todos os 32-bits ocupados sao efetivamente necessarios. Para fazer
uso dessa caracterıstica, dois valores distintos de 16-bits sao armazenados em um unico
endereco de 32-bits, reduzindo pela metade o espaco em memoria necessario para estes
campos.
Esta tecnica faz uso de operacoes bit-a-bit para deslocar e aplicar mascaras aos
bits relevantes na localizacao adequada, permitindo compactar e recuperar estes valores.
Por exemplo, dados dois inteiros sem sinal A e B. Primeiro desloca-se A por 16 bits para a
esquerda (A << 16), preenchendo os bits mais significantes com zeros. Feito isso, aplica-
se a operacao bit-a-bit AND entre (A << 16) e B ((A << 16) AND B). Este conceito e
exemplificado na Figura 5.2.
5.3 Imagem 40
16
46
16 46
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
32-bitInteger Value in Binary
(Left shift 16) AND 46
Figura 5.2: Exemplo da manipulacao de memoria para armazenarmos dois inteiros emuma mesma posicao de memoria.
5.3 Imagem
Com o objetivo de utilizar a memoria de texturas da GPU, os indivıduos da CGPANN sao
mapeados em matrizes 2D que, na placa grafica, sao interpretadas como imagens. Esta
abordagem permite que a selecao do numero de canais RGBA utilizados para a imagem,
de forma que determinam-se as estruturas de “Imagem R”, “Imagem RG” e “Imagem
RGBA”.
No codigo em GPU, uma imagem e acessada atraves de seus pixels e, dessa forma,
uma imagem que possui somente o canal R armazena um valor por pixel, enquanto uma
RG possui dois valores e a RGBA, quatro. Estes valores podem ser configurados como
inteiros de 16 ou 32 bits. Neste caso, utilizam-se valores inteiros de 32-bits cada.
A representacao 2D dos indivıduos e exemplificada na Figura 5.3. Nesta, e
possıvel observar que, devido ao formato 2D da imagem, alguns espacos sao desperdicados
a fim de manter a estrutura com certa organizacao logica. Alem disso, como traduzimos
os indivıduos da estrutura padrao para a imagem, somente os nos ativos que sao efetiva-
mente copiados. Ja diferenca entre as variantes R, RG e RGBA e mostrada na Figura
5.4, onde e possıvel notar (i) como os pixels sao distribuıdos em cada estrutura e (ii) a
necessidade de inserirmos preenchimentos em alguns casos a fim de garantir que todos os
pixels estejam com todos os canais completos.
As outras tres estruturas estudadas sao compostas pela combinacao da abordagem
“Compacta” com as de “Imagem”, resultando nas propostas de Imagem Compacta R, RG
e RGBA. Nestas situacoes, a estrutura “Padrao” e compactada com operacoes bit a bit e
convertida para o formato de imagem antes de serem carregada para a GPU.
5.3 Imagem 41
...
...
...
...
...
......
SaídasNum.Ativos
InputsPesos
FunçãoNó
(Num
Nós
* 2
) + 1
(Aridade * 2) + 1
Figura 5.3: Exemplo da representacao de um indivıduo como imagem na GPU.
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Preenchimento1 pixel
1 pixel 1 pixel
Figura 5.4: Exemplo da distribuicao de pixels nas estruturas R, RG e RGBA, respectiva-mente.
42
6 Experimentos Computacionais
Este capıtulo trata dos procedimentos metodologicos adotados no desenvolvimento do tra-
balho. Dois experimentos distintos sao propostos neste contexto. Inicialmente descreve-se
os procedimentos comuns a ambos e, nas secoes seguintes, os procedimentos especıficos a
cada um deles.
Dada a natureza estocastica dos metodos desenvolvidos, valores como o tempo
decorrido para executar o programa e a qualidade dos modelos encontrados quanto a sua
acuracia de classificacao variam entre diferentes execucoes e, por isso, diversas execucoes
independentes para cada experimento sao executadas a fim de se obter um maior numero
de dados a serem analisados e verificar a significancia estatıstica dos resultados.
Quanto ao tratamento dos conjuntos de dados, a tecnica de validacao cruzada
estratificada com “k-folds” e aplicada. Nesta, o conjunto de dados e dividido em k grupos
de tamanho igual e com a mesma proporcao de instancias de cada classe nos grupos. Com
isso, o algoritmo de treinamento e executado k vezes de forma que, em cada execucao,
um dos k grupos e utilizado como conjunto de teste, enquanto os outros k − 1 sao ale-
atoriamente divididos para os conjuntos de treinamento e validacao. Dois conjuntos de
dados diferentes sao utilizados para os experimentos. Seus detalhes sao descritos nas
secoes seguintes. Entretanto, em ambos os casos, o dados sao divididos em subconjun-
tos de treinamento, validacao e teste. Nesta configuracao, o conjunto de treinamento e
utilizado durante o processo evolutivo da CGPANN para o treinamento dos modelos e
prosseguimento das geracoes do algoritmo. Ao mesmo tempo, o conjunto de validacao e
utilizado para analisar esses modelos quanto a sua capacidade de generalizacao. Ao fim
do processo evolutivo, o indivıduo com melhor acuracia quanto aos dados de validacao
e avaliado sobre o conjunto de teste, aferindo sua qualidade final. Este procedimento
visa evitar o superajuste dos modelos aos dados em que foram treinados, assim como
validar sua generalidade, atraves da avaliacao sobre instancias nao utilizadas durante o
treinamento.
6.1 Experimento 1: Analise de Desempenho Computacional 43
As abordagens propostas sao implementadas na linguagem de programacao C++3
e com a biblioteca OpenCL para o desenvolvimento e execucao do codigo paralelo execu-
tado na GPU. Os experimentos sao executados em uma maquina com o sistema operacio-
nal Windows 10 64-bit, usando o compilador g++ MinGW 5.3 e a biblioteca OpenCL 1.2
da NVIDIA, em uma CPU AMD Ryzen 5 3600X 6-Core 3.79GHz e uma GPU NVIDIA
Geforce GTX 750Ti.
Em ambos os experimentos, os parametros da CGPANN indicados na Tabela 6.1
sao utilizados. Estes foram definidos de acordo com o proposto por Melo Neto et al. (2018),
a fim de permitir a comparacao de resultados com aqueles apresentados na literatura. Em
relacao especificamente ao numero de indivıduos filhos criados na estrategia evolucionaria,
seu valor e igual ao numero de nucleos disponıveis na GPU, de forma a utiliza-la de forma
mais eficiente. Nota-se tambem que o numero de nos corresponde aos nos internos da
CGPANN, nao considerando os nos de entrada e saıda.
Tabela 6.1: Parametros utilizados para a CGPANN.
Parametro ValorGeracoes 50000
Tipo de Mutacao ProbabilısticaTaxa de Mutacao 0.05
Indivıduos 6Estrategia evolucionaria (1+5)-ES
Numero de Nos 500Aridade dos Nos 20
Funcao de ativacao Funcao Sigmoide
6.1 Experimento 1: Analise de Desempenho Compu-
tacional
Para o primeiro experimento, propoe-se a analise de tempos de execucao do algoritmo
paralelo da CGPANN utilizando as diferentes estruturas de dados descritas no Capıtulo 5.
Neste momento, o tempo total de processamento e aferido, assim como o tempo decorrido
exclusivamente durante a etapa paralela do algoritmo (tempo de kernel), referente a
avaliacao dos indivıduos.
3Codigo fonte disponıvel em https://github.com/bmarcosps/P-CGPANN
6.1 Experimento 1: Analise de Desempenho Computacional 44
Utiliza-se a base de dados Pima Indians Diabetes disponıvel no UCI Machine
Learning Repository4. As caracterısticas desta base sao resumidas na Tabela 6.2. Assim
como os parametros da CGPANN, este conjunto foi utilizado de acordo com a metodologia
proposta por Melo Neto et al. (2018), com a normalizacao linear dos dados para o intervalo
[0, 1] e a aplicacao da validacao cruzada estratificada com k = 10, com a divisao de 7
folds para o conjunto de treinamento, 2 para validacao e 1 para teste.
Tabela 6.2: Caracterıstica do Conjunto de Dados do Experimento 1.
Dataset Instancias Atributos ClassesPima Indians Diabetes 768 8 2
Este conjunto e comumente utilizado para benchmarks em trabalhos de apren-
dizado de maquina e possui um numero de instancias representativo para a analise do
desempenho computacional das diferentes tecnicas propostas. E importante notar que
em Melo Neto et al. (2018) a CGPANN e aplicada a esta base de dados e os modelos
obtidos alcancam uma acuracia media de 0.7361 (ou 26.39% de erro medio). Assim, estes
resultados nao sao detalhados aqui, uma vez que o foco deste experimento e a analise do
tempo computacional e os resultados do algoritmo quanto a qualidade dos modelos nao
sao alterados pelas tecnicas aqui discutidas.
Os resultados obtidos sao mostrados nas Tabelas 6.3 e 6.4. Cada linha corres-
ponde a uma das estruturas de dados propostas de forma que: I R, I RG, e I RGBA
correspondem as estruturas em imagem, que utilizam a memoria de texturas da GPU e
I R C, I RG C, e I RGBA C sao suas variantes compactas. Os tempos para a execucao
sequencial tambem sao exibidos, de forma que seu tempo de kernel corresponde a etapa
de avaliacao dos indivıduos.
As medidas de tempo sao feitas para cada configuracao dos 10 folds, para tres
execucoes independentes, resultando em 30 medidas para tempos totais e 30 para tempos
de kernel. Assim, a media, mediana e desvio padrao levam em conta o tempo de execucao
para cada fold dentre os 30 executados, enquanto os tempos totais de cada tabela remetem
a soma do tempo de execucao destas 30 medidas realizadas para o tempo total e de kernel.
Nota-se, primeiramente, que os tempos de execucao sequencial sao muito superi-
4https://archive.ics.uci.edu/ml/index.php
6.1 Experimento 1: Analise de Desempenho Computacional 45
ores as abordagens paralelas. Alem disso, todas as estruturas propostas apresentam um
tempo inferior a estrutura Padrao.
Observando os tempos totais mostrados na Tabela 6.3, o melhor desempenho
e obtido ao utilizar a memoria de texturas da GPU atraves da estrutura de Imagem
RGBA. Este resultado indica o potencial da utilizacao da arquitetura de GPUs e de suas
caracterısticas especıficas com o intuito de acelerar aplicacoes.
Em relacao aos tempos de kernel exibidos na Tabela 6.4, o melhor resultado
foi obtido pela representacao em Imagem RG Compacta, ou seja, associando ambas as
abordagens propostas. A divergencia quanto ao resultado anterior pode ser explicada
pelo tempo extra gasto para a alocacao e conversao da estrutura Padrao para as outras
representacoes antes da fase de avaliacao. De qualquer maneira, indica-se que otimizar
o numero de consultas a memoria, alem do uso de diferentes tipos de memoria, pode
tambem resultar em ganhos de desempenho.
Em especıfico quanto a estrutura da CGPANN, e possıvel analisar que, dado que
os acessos aos nos do grafo ocorrem de forma dispersa, a localidade 2D da memoria de
texturas ajuda a evitar que o padrao de acesso nao coalescido prejudique o desempenho.
Da mesma maneira, ao compacta-la, o numero de requisicoes a memoria global e reduzido,
tambem melhorando o tempo de execucao.
O tempo total exibido corresponde a execucao do algoritmo evolutivo, com as
etapas de inicializacao da populacao, avaliacao e evolucao dos indivıduos. Ja o tempo de
kernel, como previamente mencionado, corresponde somente a etapa de avaliacao, onde o
paralelismo e aplicado. Observando o tempo gasto pelo algoritmo sequencial, a etapa de
Tabela 6.3: Resultados para os tempos totais (host + kernel).
Metodo Total(s) Media(s) Mediana(s) Desv. Pad.(s)Sequencial 466.199, 69 15.539, 99 18239, 59 7095, 78
Padrao 9.688, 64 322, 954 336, 99 127, 93Compacta 8.788, 47 292, 95 304, 12 106, 02
I R 9.264, 74 308, 82 321, 43 117, 36I RG 8.751, 11 291, 70 303, 20 108, 56
I RGBA 8.651,99 288,40 299,55 107, 53I R C 9.515, 02 317, 17 329, 42 113, 18
I RG C 8.905, 37 296, 85 307, 63 103,02I RGBA C 9.158, 86 305, 30 317, 01 105, 75
6.2 Experimento 2: CGPANN para o Problema de RAH 46
Tabela 6.4: Resultados para o tempo de kernel.
Metodo Total(s) Media(s) Mediana(s) Desv. Pad.(s)Sequencial 464.141, 90 15.471, 40 18.168, 85 7.089, 27
Padrao 7.277, 13 242, 57 255, 44 121, 11Compacta 6.086, 86 202, 90 213, 12 99, 34
I R 6.647, 01 221, 57 232, 73 108, 70I RG 6.144, 29 204, 81 215, 04 99, 89
I RGBA 6.064, 65 202, 15 212, 00 98, 70I R C 6.543, 78 218, 13 229, 38 106, 50
I RG C 5.926,13 197,54 207,17 96,35I RGBA C 6.135, 17 204, 51 214, 74 98, 87
avaliacao representa 99% do tempo total. Entretanto, para o algoritmo paralelo Padrao,
o tempo de avaliacao engloba 75% do tempo total, de forma similar as outras estruturas
paralelas analisadas. Esta reducao da parcela paralelizavel e explicada principalmente pelo
tempo extra gasto nas abordagens paralelas para a preparacao dos dispositivos, como as
trocas de memoria e conversao de estruturas. Entretanto, esta ainda representa a parcela
de tempo mais significativa do algoritmo.
A Tabela 6.5 dispoe os speedups calculados para os resultados obtidos em tempos
totais e de kernel das estruturas paralelas desenvolvidas em relacao ao algoritmo sequen-
cial. Esta metrica consiste na relacao entre um tempo de execucao de referencia e o tempo
da tecnica sendo analisada, indicando o quanto mais rapido um algoritmo e em relacao
a referencia. Neste caso, as consideracoes anteriores quanto ao ganho computacional do
algoritmo sequencial para o paralelo sao visıveis pelo valor de speedup para a estrutura
padrao. Nota-se tambem que a estrutura I RGBA obteve o melhor desempenho para o
tempo total, com um speedup de 53.88, enquanto a estrutura I RG C atingiu o melhor
desempenho para o tempo de kernel, com um speedup de 78.32.
6.2 Experimento 2: CGPANN para o Problema de
RAH
No segundo experimento, propoe-se a aplicacao dos modelos treinados pela CGPANN na
resolucao do problema de Reconhecimento de Atividade Humana. Assim, a acuracia dos
modelos e utilizada como metrica de desempenho e a media dentre todas as execucoes
6.2 Experimento 2: CGPANN para o Problema de RAH 47
Tabela 6.5: Speedups para os tempos totais e de kernel em relacao ao algoritmo Sequencial.
Estruturas Speedup SpeedupTempo Total Tempo de Kernel
Padrao 48.12 63.78Compacta 53.05 76.25
I R 50.32 69.83I RG 53.27 75.54
I RGBA 53.88 76.53I R C 49.00 70.93
I RG C 52.35 78.32I RGBA C 50.90 75.65
independentes e utilizada para comparacao com os resultados apresentados por Mohino-
Herranz et al. (2019).
O mesmo conjunto de dados proposto pelo autor, “Activity recognition using
wearable physiological measurements”, tambem disponıvel no UCI Machine Learning Re-
pository, e utilizado no trabalho, assim como os procedimento metodologicos relacionados
a configuracao e execucao de experimentos computacionais, a fim de possibilitar uma
comparacao justa entre os resultados. Suas caracterısticas sao resumidas na Tabela 6.6.
Tabela 6.6: Caracterısticas do Conjunto de Dados do Experimento 2.
Dataset Instancias Atributos ClassesActivity Recognition 4480 533 4
Esta base de dados e previamente normalizada utilizando a media µ e o desvio
padrao σ pelo metodo z-score, definido pela relacao z = x−µσ
. Alem disso, a validacao
cruzada estratificada com k = 40 e aplicada, de forma que cada fold corresponde a dados
relacionados a uma pessoa da base original. Neste experimento, 30 folds sao utilizados
para o conjunto de treinamento, 9 para validacao e 1 para teste e 10 execucoes indepen-
dentes sao executadas. Estes procedimentos foram utilizados por Mohino-Herranz et al.
(2019) e, por isso, sao aplicados neste trabalho para permitir uma comparacao justa entre
os resultados.
Como previamente mencionado, a acuracia media dos modelos dentre todas as dez
execucoes independentes e utilizada como comparacao aos resultados em Mohino-Herranz
et al. (2019), uma vez que esta e a metrica adotada pelos autores. Algumas medidas
estatısticas como a melhor acuracia encontrada, o desvio padrao, a mediana, matriz de
6.2 Experimento 2: CGPANN para o Problema de RAH 48
Tabela 6.7: Resultados para o erro medio dos modelos comparados e o mınimo, medianae desvio padrao do erro da CGPANN.
Metodo Erro Max. Melhor Mediana DesvioMedio (%) Atributos Erro (%) (%) Padrao
CGPANN 33.35 533 7.14 32.14 12.44LSLC 22.2 40LSQC 26.2 40
LINSVM 22.5 40RBFSVM 28.6 40
MLP8 24.9 20MLP12 25.6 20MLP16 26.1 10
kNN 28.7 10CDNN 27.0 5
RF 25.5 20
Tabela 6.8: Precisao, Revocacao e F1-score obtidos pela CGPANN.
Classe Precisao Revocacao F1-scoreEmocional 0.51 0.59 0.55
Fısica 0.87 0.92 0.89Mental 0.51 0.43 0.47Neutra 0.78 0.73 0.75
confusao e as metricas descritas no Capıtulo 3 entre todas as execucoes tambem sao
calculadas.
O erro de classificacao medio obtido pela CGPANN, em comparacao com os ou-
tros classificadores da literatura, e mostrado na Tabela 6.7. No trabalho de referencia, o
conjunto de dados passa por um processo previo de selecao de caracterısticas, limitando
seu numero para o treinamento dos modelos e, por isso, essa informacao tambem e mos-
trada. O melhor erro, a mediana e desvio padrao dentre todas as execucoes independentes
da CGPANN tambem sao mostrados.
Na Figura 6.1, as matrizes de confusao para o melhor classificador da literatura e
para a CGPANN sao mostradas. Os resultados foram calculados como a porcentagem de
erros e acertos dentre os modelos finais de todos os folds, em todas as execucoes indepen-
dentes. Com estes dados, tambem foi possıvel calcular as metricas de precisao, acuracia,
revocacao e F1-measure previamente apresentadas. Estes resultados foram resumidos na
Tabela 6.8.
6.2 Experimento 2: CGPANN para o Problema de RAH 49
Classe Predita
Atividade Neutra Emocional Mental Física
Neutra 80,90% 5,50% 12,20% 1,30%
Emocional 5,00% 72,60% 18,70% 3,80%
Mental 7,70% 30,50% 58,90% 2,90%
Física 0,10% 1,80% 2,30% 95,80%
Clas
se V
erda
deira
(a) Matriz de confusao para LSQC usando 40 caracterısticas (Mohino-Herranz et al., 2019)
Classe Predita
Atividade Neutra Emocional Mental Física
Neutra 73,10% 13,50% 11,28% 2,13%
Emocional 8,83% 59,14% 26,24% 5,79%
Mental 10,66% 40,45% 42,75% 6,14%
Física 1,11% 3,83% 3,46% 91,60%
Clas
se V
erda
deira
(b) Matriz de confusao para a CGPANN usando 533 caracterısticas.
Figura 6.1: Matriz de confusao apresentada pela literatura(a) e obtida no trabalho(b).
6.2 Experimento 2: CGPANN para o Problema de RAH 50
Tabela 6.9: Tempo de execucao para as estruturas Padrao e Compacta para o dataset deRAH.
Metodo Total(s) Media(s) Mediana(s) Desv. Pad.(s)Padrao 117.714, 39 980, 95 1.007, 81 273, 08
Compacta 107.600,40 896,67 918,38 243,58
Como pode ser observado, a CGPANN nao obteve um erro medio melhor que
as outras propostas da literatura neste experimento (Tabela 6.7). Entretanto, por nao
utilizar uma etapa de selecao de caracterısticas antes do treinamento, o processo geral e
simplificado, permitindo que o algoritmo encontre os atributos mais relevantes automati-
camente durante o processo evolutivo.
Ainda assim, o melhor modelo encontrado pela CGPANN apresenta uma taxa
de erro inferior aqueles da literatura, indicando que a CGPANN e promissora para en-
contrar bons modelos e que a qualidade geral dentre diferentes execucoes ainda pode ser
melhorada. Alem disso, todos as 533 caracterısticas foram utilizadas.
Quanto as metricas extraıdas da matriz de confusao (Tabela 6.8), os valores de
precisao e revocacao para cada classe ficaram, em geral, proximos, nao havendo uma
tendencia dos modelos a gerarem mais falsos positivos ou falsos negativos. Nota-se, como
tambem indicado em Mohino-Herranz et al. (2019), que a atividade mais “facil” de ser
identificada e a fısica, seguida da neutra, emocional e mental.
Para o problema de RAH em geral, uma preferencia por uma melhor precisao ou
revocacao depende da aplicacao. Por exemplo, para um sistema de monitoramento medico
remoto, uma revocacao alta poderia ser mais importante, dado que situacoes importantes
(como identificar a queda de um idoso) nao podem apresentar falsos negativos. Ja em
sistemas de casas inteligentes e automacao, por exemplo, uma precisao maior pode ser
mais vantajosa, dado que falsos positivos podem gerar acoes indesejadas no sistema.
Como um teste preliminar, tres execucoes independentes da CGPANN paralela
com as estruturas Padrao e Compacta foram executadas. Os tempos obtidos sao apre-
sentados na Tabela 6.9. Neste caso, a proposta Compacta foi capaz de obter valores do
tempo total, medio e de mediana inferiores a estrutura Padrao.
Com estes dados, tambem calcula-se o speedup alcancado pela estrutura Com-
6.2 Experimento 2: CGPANN para o Problema de RAH 51
Tabela 6.10: Speedups da estrutura Compacta em relacao a Padrao.
Instancias Atributos Classes Speedup768 8 2 1.104480 533 4 1.09
pacta em relacao a Padrao. Uma comparacao deste valor em relacao ao numero de
instancias, atributos e classes dos conjuntos de dados utilizados em ambos os experi-
mentos e mostrada na Tabela 6.10. Nota-se que o speedup e um pouco inferior para o
conjunto com mais instancias. Entretanto, dada a analise somente sob estes dois conjun-
tos, nao e possıvel estabelecer com precisao uma regra para o comportamento do ganho
computacional em problemas de tamanhos diferentes.
52
7 Conclusao
Neste trabalho, questoes pertinentes ao custo computacional de algoritmos evolutivos,
especificamente a Programacao Genetica Cartesiana de Redes Neurais Artificiais, foram
discutidas. Dentro desta tematica, um algoritmo da GPANN paralela em Unidades de
Processamento Grafico foi analisado quanto ao seu tempo de processamento sob a pers-
pectiva de oito estruturas de dados distintas, que foram propostas e implementadas no
trabalho. Tais estruturas foram modeladas a fim de explorar caracterısticas especıficas
das GPUs, visando diminuir o numero de acessos a memoria global e fazer uso da memoria
de texturas durante a avaliacao dos indivıduos da programacao genetica.
Alem disso, dada a crescente importancia do problema de reconhecimento de
atividade humana e sua ampla aplicabilidade, a tecnica desenvolvida foi utilizada em
sua resolucao. A capacidade da CGPANN em resolve-lo foi analisada em relacao aos
resultados presentes na literatura.
Os resultados obtidos quanto ao custo computacional da CGPANN paralela in-
dicam que o uso de estruturas modeladas para GPUs gera ganhos quanto ao tempo de
execucao. Em especıfico, nota-se que o uso da memoria de texturas para o armazenamento
dos indivıduos e promissor, dado que este tipo de memoria pode ajudar a minimizar o
custo de acessos dispersos, como geralmente ocorre durante o caminhamento em grafos.
Alem disso, uma estrutura compacta, mesmo utilizando operacoes extras para codificar e
decodificar informacoes, foi capaz de gerar melhorias no tempo de execucao do algoritmo.
Em relacao ao tempo total, a estrutura Padrao obteve um reducao de 97.92% em relacao
ao tempo sequencial, enquanto as estruturas Compacta e Imagem RGBA atingiram tem-
pos 9.29% e 10.7% menores que a Padrao, respectivamente. De forma semelhante, sob
o conjunto de dados do RAH, a abordagem Compacta obteve uma reducao de 8.59% do
tempo em relacao a estrutura Padrao.
Nos experimentos desenvolvidos para o RAH, a CGPANN obteve um erro medio
de 33.35%, que e superior aos classificadores comparados, sendo este 50.22% maior que
o erro medio do melhor classificador da literatura. Assim, e reforcada a necessidade de
7 Conclusao 53
otimizacoes direcionadas a topologia das redes, a fim de melhorar o desempenho geral
do algoritmo em diferentes execucoes. Entretanto, o melhor modelo encontrado pela
CGPANN apresenta um erro de 7.14%, que e 67.84% menor que o melhor caso medio da
literatura, indicando que a tecnica e promissora e capaz de encontrar modelos competitivos
para problemas do mundo real. Nota-se tambem que a tecnica dispensa procedimentos de
selecao de caracterısticas antes do treinamento dos modelos, em contraste com os metodos
apresentados pela literatura.
Atraves dos resultados alcancados, e possıvel elencar como trabalhos futuros a
aplicacao de tecnicas hıbridas para um ajuste fino dos parametros da CGPANN, como seus
pesos, a fim de melhorar a qualidade dos modelos gerados para o problema de RAH. Alem
disso, aplicar a tecnica sob diferentes conjuntos de dados, validando-a em outros contextos
tambem se mostra necessario. Quanto a CGPANN paralela, o uso de GPUs pode ser ainda
mais explorado pela analise das estruturas propostas em dispositivos mais recentes, de
diferentes fabricantes e com um maior numero de unidades de computacao e elementos
de processamento, uma vez que estas caracterısticas podem afetar a performance.
54
Bibliografia
Ahmad, A. M.; Khan, G. M. Bio-signal processing using cartesian genetic pro-gramming evolved artificial neural network (cgpann). In: 2012 10th Internati-onal Conference on Frontiers of Information Technology, p. 261–268. IEEE, Dec 2012.
Augusto, D. A.; Barbosa, H. J. Accelerated parallel genetic programming tree evaluationwith opencl. Journal of Parallel and Distributed Computing, v.73, n.1, p. 86–100,Jan 2013.
Chen, K.; Zhang, D.; Yao, L.; Guo, B.; Yu, Z. ; Liu, Y. Deep learning for sensor-based hu-man activity recognition: Overview, challenges and opportunities. arXiv:2001.07416[cs], Jan 2020. arXiv: 2001.07416.
Chitty, D. M. Faster gpu-based genetic programming using a two-dimensional stack. SoftComputing, v.21, n.14, p. 3859–3878, 2017.
Darwin, C. The evolution of species. New York: The Modern Library, 1859.
Duffner, S.; Berlemont, S.; Lefebvre, G. ; Garcia, C. 3d gesture classification withconvolutional neural networks. In: 2014 IEEE International Conference on Acous-tics, Speech and Signal Processing (ICASSP), p. 5432–5436. IEEE, 2014.
Eiben, A.; Smith, J. Introduction to Evolutionary Computing. Natural ComputingSeries. Springer Berlin Heidelberg, 2015.
Foerster, F.; Smeja, M. ; Fahrenberg, J. Detection of posture and motion by accelerome-try: a validation study in ambulatory monitoring. Computers in Human Behavior,v.15, n.5, p. 571–583, Sep 1999.
Gajurel, A.; Louis, S. J. ; Harris, F. C. Gpu acceleration of sparse neural networks.arXiv:2005.04347 [cs], May 2020. arXiv: 2005.04347.
Galvan, E.; Mooney, P. Neuroevolution in deep neural networks: Current trends andfuture challenges. arXiv:2006.05415 [cs], Jun 2020. arXiv: 2006.05415.
Gaster, B. R.; Howes, L.; Kaeli, D. R.; Mistry, P. ; Schaa, D. Chapter 2 - Introductionto OpenCL, p. 15–38. Morgan Kaufmann, second edition. ed., 2013.
Goldberg, D. E. Genetic Algorithms in Search, Optimization, and MachineLearning. Addison-Wesley Publishing Company, 1989. Google-Books-ID: 2IIJAAAA-CAAJ.
Goldman, B. W.; Punch, W. F. Reducing wasted evaluations in cartesian geneticprogramming. In: European Conference on Genetic Programming, p. 61–72. Springer,2013.
Harding, S.; Banzhaf, W. Fast genetic programming on gpus. In: Proceedings of the10th European Conference on Genetic Programming, volume 4445 of LNCS, p. 90–101.Springer, 2007.
Bibliografia 55
Harding, S. L.; Banzhaf, W. Distributed genetic programming on gpus usingcuda. In: Workshop on Parallel Architectures and Bioinspired Algorithms, p. 1–10.Citeseer, 2009.
Horlings, R.; Datcu, D. ; Rothkrantz, L. J. M. Emotion recognition using brainactivity. In: Proceedings of the 9th International Conference on Computer Systemsand Technologies and Workshop for PhD Students in Computing - CompSysTech ’08,p. II.1. ACM Press, 2008.
Jain, A.; Mao, J. ; Mohiuddin, K. Artificial neural networks: a tutorial. Computer,v.29, n.3, p. 31–44, Mar 1996.
Jatoba, L. C.; Grossmann, U.; Kunze, C.; Ottenbacher, J. ; Stork, W. Context-aware mobile health monitoring: Evaluation of different pattern recognitionmethods for classification of physical activity. In: 2008 30th annual internationalconference of the ieee engineering in medicine and biology society, p. 5250–5253. IEEE,2008.
Yin, J.; Yang, Q. ; Pan, J. Sensor-based abnormal human-activity detection. IEEETransactions on Knowledge and Data Engineering, v.20, n.8, p. 1082–1090, Aug2008.
Van Kasteren, T.; Noulas, A.; Englebienne, G. ; Krose, B. Accurate activity recog-nition in a home setting. In: Proceedings of the 10th international conference onUbiquitous computing, p. 1–9, 2008.
Khan, M. M.; Khan, G. M. ; Miller, J. F. Evolution of neural networks usingcartesian genetic programming. In: IEEE Congress on Evolutionary Computation,p. 1–8. IEEE, Jul 2010.
Khan, G. M.; Arshad, R. Electricity peak load forecasting using cgp based neuro evolutio-nary techniques. International Journal of Computational Intelligence Systems,v.9, n.2, p. 376–395, 2016.
Khan, N. M.; Khan, G. M. Audio signal reconstruction using cartesian geneticprogramming evolved artificial neural network (cgpann). In: 2017 16th IEEEInternational Conference on Machine Learning and Applications (ICMLA), p. 568–573.IEEE, 2017.
Group, K. O. W.; others. The opencl specification version 1.1. http://www. khronos.org/registry/cl/specs/opencl-1.1. pdf, 2011.
Kim, E.; Helal, S. ; Cook, D. Human activity recognition and pattern discovery. IEEEPervasive Computing, v.9, n.1, p. 48–53, Jan 2010.
Koza, J. R. Genetic programming: on the programming of computers by meansof natural selection. Complex adaptive systems. MIT Press, 1992.
Kwapisz, J. R.; Weiss, G. M. ; Moore, S. A. Activity recognition using cell phone ac-celerometers. ACM SIGKDD Explorations Newsletter, v.12, n.2, p. 74–82, Mar2011.
Lara, O. D.; Labrador, M. A. A survey on human activity recognition using wearablesensors. IEEE Communications Surveys & Tutorials, v.15, n.3, p. 1192–1209,2013.
Bibliografia 56
Mei, X.; Chu, X. Dissecting gpu memory hierarchy through microbenchmarking. IEEETransactions on Parallel and Distributed Systems, v.28, n.1, p. 72–86, 2016.
Melo Neto, J. M.; Bernardino, H. S. ; Barbosa, H. J. Hybridization of cartesian ge-netic programming and differential evolution for generating classifiers basedon neural networks. In: 2018 IEEE Congress on Evolutionary Computation (CEC),p. 1–8. IEEE, Jul 2018.
Miller, J. F.; Thomson, P. Cartesian Genetic Programming, volume 1802 de LectureNotes in Computer Science, p. 121–132. Springer Berlin Heidelberg, 2000.
Millan, J. d. R.; Mourino, J.; Franze, M.; Cincotti, F.; Varsta, M.; Heikkonen, J. ;Babiloni, F. A local neural classifier for the recognition of eeg patterns associated tomental tasks. IEEE Transactions on Neural Networks, v.13, n.3, p. 678–686, May2002.
Miller, J. F. Cartesian genetic programming. In: Cartesian Genetic Programming,p. 17–34. Springer, 2011.
Miller, J. F. Cartesian genetic programming: its status and future. Genetic Program-ming and Evolvable Machines, Aug 2019.
Mitchell, E.; Monaghan, D. ; O’Connor, N. E. Classification of sporting activities usingsmartphone accelerometers. Sensors (Basel, Switzerland), v.13, n.4, p. 5317–5337,Apr 2013.
Mohino-Herranz, I.; Gil-Pita, R.; Ferreira, J.; Rosa-Zurera, M. ; Seoane, F. Assessmentof mental, emotional and physical stress through analysis of physiological signals usingsmartphones. Sensors, v.15, n.10, p. 25607–25627, Oct 2015.
Mohri, M.; Rostamizadeh, A. ; Talwalkar, A. Foundations of Machine Learning,second edition. MIT Press, Dec 2018.
Mohino-Herranz, I.; Gil-Pita, R.; Rosa-Zurera, M. ; Seoane, F. Activity recognitionusing wearable physiological measurements: Selection of features from a comprehensiveliterature study. Sensors (Basel, Switzerland), v.19, n.24, Dec 2019.
Murphy, K. P. Machine learning: a probabilistic perspective. MIT press, 2012.
NVIDIA. Cuda c best practices guide. NVIDIA, July, 2013.
NVIDIA. Cuda c programming guide. NVIDIA, July, 2017.
Oniga, S.; Suto, J. Human activity recognition using neural networks. In: Pro-ceedings of the 2014 15th International Carpathian Control Conference (ICCC), p.403–406. IEEE, May 2014.
Paraschiakos, S.; Cachucho, R.; Moed, M.; van Heemst, D.; Mooijaart, S.; Slagboom,E. P.; Knobbe, A. ; Beekman, M. Activity recognition using wearable sensors fortracking the elderly. User Modeling and User-Adapted Interaction, v.30, n.3, p.567–605, Jul 2020.
Poli, R.; Langdon, W. B.; McPhee, N. F. ; Koza, J. R. A field guide to geneticprogramming. Lulu Press], 2008.
Bibliografia 57
Ramachandran, P.; Zoph, B. ; Le, Q. V. Searching for activation functions. ar-Xiv:1710.05941 [cs], Oct 2017. arXiv: 1710.05941.
Robilliard, D.; Marion-Poty, V. ; Fonlupt, C. Genetic programming on graphics processingunits. Genetic Programming and Evolvable Machines, v.10, n.4, p. 447–471, Dec2009.
Robilliard, D.; Marion, V. ; Fonlupt, C. High performance genetic programming ongpu. In: Proceedings of the 2009 workshop on Bio-inspired algorithms for distributedsystems - BADS ’09, p. 85. ACM Press, 2009.
Ronao, C. A.; Cho, S.-B. Human activity recognition with smartphone sensors using deeplearning neural networks. Expert Systems with Applications, v.59, p. 235–244, Oct2016.
Russo, I. L.; Bernardino, H. S. ; Barbosa, H. J. A massively parallel grammatical evolutiontechnique with opencl. Journal of Parallel and Distributed Computing, v.109,p. 333–349, Nov 2017.
Schrader, L.; Vargas Toro, A.; Konietzny, S.; Ruping, S.; Schapers, B.; Steinbock, M.;Krewer, C.; Muller, F.; Guttler, J. ; Bock, T. Advanced sensing and human acti-vity recognition in early intervention and rehabilitation of elderly people. Journal ofPopulation Ageing, v.13, n.2, p. 139–165, Jun 2020.
Sharma, A.; Lee, Y.-D. ; Chung, W.-Y. High accuracy human activity monitoringusing neural network. In: 2008 Third International Conference on Convergence andHybrid Information Technology, p. 430–435. IEEE, Nov 2008.
Shmueli, B. Multi-class metrics made simple, part i: Precision and recall, Jun2019.
Steinkraus, D.; Buck, I. ; Simard, P. Using gpus for machine learning algorithms. In:Eighth International Conference on Document Analysis and Recognition (ICDAR’05),p. 1115–1120 Vol. 2. IEEE, 2005.
Tompson, J.; Schlachter, K. An introduction to the opencl programming model. PersonEducation, v.49, p. 31, 2012.
Turner, A. Evolving artificial neural networks using Cartesian genetic program-ming. 2015. Tese de Doutorado - University of York.
Vasıcek, Z.; Slany, K. Efficient phenotype evaluation in cartesian genetic pro-gramming. In: European Conference on Genetic Programming, p. 266–278. Springer,2012.
Yao, X. Evolving artificial neural networks. Proceedings of the IEEE, v.87, n.9, p.1423–1447, Sep 1999.
Yu, Q.; Chen, C. ; Pan, Z. Parallel genetic algorithms on programmable graphicshardware. In: International Conference on Natural Computation, p. 1051–1059. Sprin-ger, 2005.
Zhang, G. Neural networks for classification: a survey. IEEE Transactions on Sys-tems, Man and Cybernetics, Part C (Applications and Reviews), v.30, n.4,p. 451–462, Nov 2000.
Bibliografia 58
Zhu, C.; Sheng, W. Human daily activity recognition in robot-assisted livingusing multi-sensor fusion. In: 2009 ieee international conference on robotics andautomation, p. 2154–2159. IEEE, 2009.