Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatório
da
Prova de Aptidão Profissional
Tema
. Machine Learning no Contexto de Reconhecimento de Objetos .
3 de julho de 2018
1 Índice
1 Índice 2
2 Índice de figuras 4
3 Título 5
4 Introdução ao âmbito do projeto 5
4.1 O que é Machine Learning 5
4.2 Problemas com a computação tradicional 5
4.3 Qual é o interesse? 5
4.4 Um exemplo concreto 6
5 Explicação da tecnologia 6
5.1 O cérebro biológico 6
5.2 Neurónio artificial 7
5.3 Arquitetura de uma rede neural 8
5.4 A importância de dados de treino para supervised learning 9
5.5 Melhorar com o treino 10
6 O projeto 11
6.1 Descrição do projeto 11
6.2 Interesse e aplicabilidade 11
6.2.1 Motores de busca de imagens 12
6.2.2 Veículos autónomos 12
6.2.3 No âmbito de inteligência artificial 12
6.2.4 Ciência de dados 12
6.2.5 Astronomia 12
7 Desenvolvimento do projeto 12
7.1 Sistema de classificação de imagens 13
7.1.1 Função de custo 13
7.1.2 Algoritmo de otimização 13
7.1.2.1 Stochastic gradient descent 13
7.1.2.2 Momentum 14
7.1.2.3 Momentum de Nesterov 15
7.1.2.4 Taxa de aprendizagem com decaimento exponencial 16
7.1.2.5 Mini-batching 17
7.1.3 Dados de treino 17
2
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
3
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
2 Índice de figuras
Figura 1 - Dígitos manuscritos 6
Figura 2 - Estrutura de um neurónio 7
Figura 3 - Estrutura de um neurónio artificial 7
Figura 4 - Planificação de uma rede neural 8
Figura 5 - Exemplo da conversão de uma imagem input 8
Figura 6 - Exemplo de dados MNIST 10
Figura 7 – Exemplo de um gráfico de uma função de custo 11
Figura 8 - Exemplo de um gráfico da precisão 11
Figura 9 - Visualização de stochastic gradient descent 13
Figura 10 - Gráfico mostrando dados ruidosos 14
Figura 11 - Gráfico mostrando dados que foram "limpos" 15
Figura 12 - Explicação gráfica do momentum de Nesterov 15
Figura 13 - Explicação gráfica de diferentes taxas de aprendizagem 16
Figura 14 - Exemplo de ajustes aleatórios de matiz, saturação, contraste e brilho 18
Figura 15 - Exemplo de uma inversão horizontal 19
Figura 16 - Exemplo de padding sem interpolation 19
Figura 17 - Exemplo de interpolation espelhada 20
Figura 18 - Exemplo de cortes aleatórios 20
Figura 19 - Exemplo de uma convolução 21
Figura 20 - Exemplo de detetores de características 22
Figura 21 - O gráfico do neurónio sigmóide e ReLU 22
Figura 22 - Exemplo de covariate shift numa distribuição 23
Figura 23 - Algoritmo de batch normalisation [Sergey Ioffe & Christian Szegedy, 2015]
24
Figura 24 - Exemplo de uma rede neural antes e depois de aplicar o dropout [Nitish
Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever & Ruslan Salakhutdinov,
2014] 24
Figura 25 - Esquema de uma conexão de shortcut 25
Figura 26 - Exemplo da global average pooling 26
Figura 27 - O efeito de redução dimensional da global average pooling 26
Figura 28 - A página de ajuda do programa 28
Figura 29 - O programa a descarregar os dados de treino e de validação 28
Figura 30 - O programa a treinar a rede neural 29
4
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
3 Título
Sistema de classificação de imagens usando machine learning, através do
desenvolvimento e treino de um artificial neural network (rede neural artificial).
5
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Para quase toda gente, basta olhar para saber que os dígitos escritos são 504192.
5 Explicação da tecnologia
5.1 O cérebro biológico
O componente mais simples do cérebro humano é o neurónio, cuja estrutura se
apresenta na figura em baixo (Figura 2):
6
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
O neurónio recebe várias cargas elétricas como input (no lado esquerdo). Se receber
impulsos suficientes, origina um output para os neurónios adjacentes.
em que cada input (x) tem um peso (W) correspondente e b designa o bias, ou seja, a
tendência para dar um certo output.
Através da manipulação dos pesos e do bias, é possível fazer uma decisão bastante
simples. A utilidade dos neurónios artificiais é visível quando estão em rede, chamada
rede neural.
7
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
O termo hidden layer refere-se ao facto de as camadas não serem input layer nem
output layer. O número de neurónios (ou até camadas) presentes pode variar muito,
dependendo da implementação escolhida e das técnicas usadas.
8
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
A camada de output vai ter 10 neurónios, ou seja, um para cada dígito possível (de 0 até
9), o neurónio com maior output vai corresponder à decisão da rede neural, ou seja, à
classificação do dígito manuscrito.
Supervised learning baseia-se na ideia de construir uma rede neural e alimentá-la com
dados até que ela seja eficaz na realização de um determinado objetivo, para este fim
demos feedback à nossa rede. Este feedback é gerado através da função de custo
(referida em baixo), onde o cálculo é realizado comparando o que a rede neural "pensa"
ser a classe correta de cada elemento versus a verdadeira classe, contida nos metadados
presentes nos dados de treino.
Um bom exemplo de dados de treino é a chamada base de dados MNIST, que contém
milhares de imagens como estas (Figura 6):
9
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Sabemos que a nossa rede está a ter sucesso, ou seja, esta a classificar dígitos com uma
precisão elevada, quando C se aproxima de 0.
10
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
A medida que a função de custo tende para baixo, a precisão tende para cima:
6 O projeto
6.1 Descrição do projeto
Desenvolvimento de um sistema de classificação de imagens, capaz de identificar
objetos pertencentes a uma de 100 classes possíveis:
apple, aquarium fish, baby, bear, beaver, bed, bee, beetle, bicycle, bottle, bowl, boy,
bridge, bus, butterfly, camel, can, castle, caterpillar, cattle, chair, chimpanzee, clock,
cloud, cockroach, couch, crab, crocodile, cup, dinosaur, dolphin, elephant, flatfish,
forest, fox, girl, hamster, house, kangaroo, keyboard, lamp, lawn mower, leopard, lion,
lizard, lobster, man, maple tree, motorcycle, mountain, mouse, mushroom, oak tree,
orange, orchid, otter, palm tree, pear, pickup truck, pine tree, plain, plate, poppy,
porcupine, possum, rabbit, raccoon, ray, road, rocket, rose, sea, seal, shark, shrew,
skunk, skyscraper, snail, snake, spider, squirrel, streetcar, sunflower, sweet pepper,
table, tank, telephone, television, tiger, tractor, train, trout, tulip, turtle, wardrobe,
whale, willow tree, wolf, woman, worm
11
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
6.2.5 Astronomia
Um grupo de cientistas da instituição da ETH Zurich aplicou uma rede neural à
astronomia, obtendo as imagens mais nítidas de sempre de galáxias distantes.
Isto simplesmente não seria possível sem os recentes avanços nesta área.
7 Desenvolvimento do projeto
O projeto é divido em duas partes:
● Sistema de classificação de imagens:
○ Rede neural que toma como input imagens a cor, de dimensões 32 por 32
pixéis, faz output de um vetor contendo 100 valores (entre 0 e 1), em que
o índice do maior valor corresponde à classificação;
○ Escrito em Python;
○ Treinado com uma placa gráfica durante várias horas.
● Aplicação Android:
○ Executa a rede neural, previamente treinada para classificar objetos em
tempo real;
○ Escrito em Java;
12
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
13
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
7.1.2.2 Momentum
Stochastic gradient descent com momentum utiliza um conceito matemático chamada
exponential moving average que tem a função principal de lidar com dados que
introduzem “ruído”. Considere o seguinte gráfico (Figura 10):
A função original está representada a vermelho, mas nós só temos acesso aos dados
azuis. Em vez de usar os dados como estão, faz muito mais sentido trabalhar com as
médias desses pontos de dados. Podemos representar isto assim (Figura 11):
14
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Embora não sendo perfeita, a função a amarelo é mais próxima da função original.
Em termos matemáticos:
15
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
● O novo valor 𝛽 é um hiperparâmetro da rede neural que pode ser um valor entre
0 e 1.
𝑊 = 𝑊 − 𝑉𝑡
7.1.2.4 Taxa de aprendizagem com decaimento exponencial
A taxa de aprendizagem é um hiperparâmetro da rede neural e representa a otimização
que o algoritmo permite em cada iteração de treino.
Se escolhemos um valor demasiado alto a rede neural pode ficar instável e causar erros
NaN (Not a Number), por outro lado, se usarmos um valor demasiado pequeno a rede
pode demorar muito tempo a convergir, ou até "ficar presa" num mínimo local.
O problema é que às vezes uma determinada taxa de aprendizagem pode funcionar bem
no início, mas falhar mais tarde. No meu caso, encontrei um valor que convergia
rapidamente no início, mas passado algum tempo a função de custo começou a
aumentar.
Uma solução para isto, é diminuir a taxa de aprendizagem com uma determinada
frequência, expresso matematicamente:
16
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
𝑡
𝑓𝑙𝑜𝑜𝑟( )
𝐿𝑡 = 𝐿0 × 𝑎 𝑑
● L representa a taxa de aprendizagem.
● t é a iteração de treino.
● a é a quantidade para reduzir.
● d a frequência de decaimento.
● floor(x) representa a função floor
(https://en.wikipedia.org/wiki/Floor_and_ceiling_functions).
Desta forma podemos diminuir a taxa de aprendizagem à medida que a rede neural está
a treinar. Permitindo uma convergência rápida no início do treino e pequenos ajustes
mais preciso no fim.
7.1.2.5 Mini-batching
Mini-batching consiste em retirar uma quantidade relativamente pequena de dados de
treino, selecionados aleatoriamente, para serem usados durante uma iteração de treino.
Esta técnica traz três vantagens: a frequência de atualização do modelo é maior, o que
permite uma convergência mais robusta, evitando os mínimos locais; a rede usa menos
memória, pois não está a trabalhar com a base de dados completa em cada iteração; e
fornece um processo computacionalmente mais eficiente do que a stochastic gradient
descent.
A seguir descrevo as técnicas de data augmentation que utilizei durante o treino da rede
neural.
17
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Também podemos inverter horizontalmente algumas imagens, assim a rede neural fica
mais resistente a mudanças na orientação dos objetos.
18
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Para este efeito, primeiro precisamos de aumentar a resolução da imagem para não
perder informação, pegamos na imagem de 32 por 32 e adicionamos 2 píxeis vazios em
cada direção (isto é chamado padding), então acabamos com a seguinte imagem (Figura
16):
19
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Agora, preenchemos esses 2 píxeis com uma versão espelhada da imagem original
(Figura 17):
20
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
7.1.6.1 Convolution
Recebe como input uma matriz quadridimensional, calcula uma convolução com os
pesos e adiciona o bias.
21
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
7.1.6.2 ReLU
ReLU (Rectified Linear Unit) é um tipo de neurónio artificial popular para redes neurais
com camadas convolutional.
A grande vantagem que vem de usar neurónios ReLU em vez de sigmóide é o aumento
da quantidade máxima de camadas na rede neural. Isto porque a derivada da função
sigmóide tem o valor máximo de 0,25 e à medida que adicionamos camadas o valor das
derivadas rapidamente se aproxima de 0, isto é chamado o problema de vanishing
gradients. O problema de vanishing gradients não existe em matemática pura (pois a
derivada nunca chegará a 0) mas devido às limitações da aritmética floating point
presentes em todos os computadores binários, a função sigmóide torna-se inútil para
redes com muitas camadas.
𝐴 = 𝑚𝑎𝑥(0, 𝛴𝑗 𝑥𝑗 𝑊𝑗 − 𝑏)
22
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
23
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Figura 23 - Algoritmo de batch normalisation [Sergey Ioffe & Christian Szegedy, 2015]
7.1.6.4 Dropout
Dropout refere-se a ignorar alguns neurónios, escolhidos de forma aleatória, durante
uma iteração de treino.
Figura 24 - Exemplo de uma rede neural antes e depois de aplicar o dropout [Nitish Srivastava, Geoffrey Hinton,
Alex Krizhevsky, Ilya Sutskever & Ruslan Salakhutdinov, 2014]
Usando o dropout, um determinado neurónio não pode pensar que outros neurónios
estão presentes, forçando-o a tornar-se mais independente. O importante aqui é que as
camadas dropout reduzem o overfitting (quando a rede tem um desempenho bom a
24
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
classificar os dados de treino, mas falha quando são fornecidos dados novos),
melhorando a precisão da rede neural.
O conceito básico é que, em vez de esperar que cada conjunto de camadas se encaixe
diretamente no mapeamento desejado 𝐹(𝑥), os autores explicitamente permitem que
estas camadas se encaixem num mapeamento residual 𝐹(𝑥) + 𝑥 (Figura 25):
O valor destas camadas está tanto na rapidez de treino, tal como a flexibilidade que dão
à rede neural.
25
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Esta camada também tem o efeito de reduzir as dimensões da matriz input para uma só
dimensão (Figura 27):
26
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Baseei esta arquitetura nos artigos científicos ImageNet Classification with Deep
Convolutional Neural Networks [Alex Krizhevsky, Ilya Sutskever & Geoffrey Hinton,
2012] e Wide Residual Networks [Sergey Zagoruyko & Nikos Komodakis, 2016] tal
como os meus próprios testes.
Este teste foi repetido cinco vezes e o resultado final é a sua média.
7.1.10.1 Hiperparâmetros
A rede neural foi inicializada com os seguintes hiperparâmetros:
● Taxa de aprendizagem inicial: 0,1
● Decaimento da taxa de aprendizagem: 0,2
● Frequência de decaimento da taxa de aprendizagem: 23500
● Momentum de aprendizagem: 0,9
● Probabilidade dropout: 0,3
27
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
28
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Depois vai extrair os dados, preparar os recursos do sistema, inicializar a rede neural e
começar a treinar (Figura 30):
Depois do treino é fácil verificar a precisão da rede neural treinada, basta acrescentar a
opção --accuracy (Figura 31):
29
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Visto que executar data augmentation em 128 imagens, em paralelo, não é assim tão
difícil computacionalmente, especialmente em comparação com toda a rede neural, não
utilizou muitos recursos (Figura 32):
Durante o treino a rede utilizou 100% do GPU e toda a memória vídeo disponível, como
dá para ver na seguinte figura (Figura 33):
Figura 33 - O estado da GPU durante o treino da rede neural, mostrado usando o comando nvidia-smi
30
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
7.1.11 Resultados
7.1.11.2 Gráficos
Os seguintes gráficos dão-nos mais alguma informação sobre o treino da rede e foram
criados com base em pontos de dados gravados em cada centésima iteração, com a
exceção da precisão nos dados de validação que foi gravado em cada milésima iteração
(por motivos de desempenho).
Uma boa indicação que a rede neural está a funcionar é se a função de custo está
maioritariamente a diminuir, é normal que não chegue a ser completamente monótona.
31
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Figura 36 - A precisão nos dados de treino, durante o treino da rede neural final
Também dá para ver que por volta da iteração 23,5 mil houve um salto repentino na
precisão, isto foi devido ao primeiro decaimento da taxa de aprendizagem (Figura 37):
Figura 38 - A precisão nos dados de validação, durante o treino da rede neural final
32
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Caso o utilizador decida não permitir, a aplicação fecha automaticamente, pois o acesso
à câmara é absolutamente necessário. Se o utilizador decidir dar esta permissão, a
aplicação reinicia automaticamente e entra na fase de preparação.
Isto é capaz de demorar algum tempo, por esta razão é apresentada uma mensagem ao
utilizador comunicando-lhe que a aplicação está a inicializar (não está parada) (Figura
40):
33
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
Qualquer atraso nesta thread não é facilmente percetível, pois é executado em segundo
plano, com o objetivo de não afetar o vídeo exibido da câmara.
A seguinte figura demonstra a aplicação durante uma classificação típica (Figura 41):
34
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
35
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
11 Recursos envolvidos
11.1 Humanos
Não recebi ajuda externa no desenvolvimento do projeto.
11.2 Materiais
● Portátil XMG A523 (Clevo W350ST) - Embora tenha sido lançado em 2013,
este portátil teve a capacidade suficiente para desenvolver o projeto.
○ Sistema operativo: Linux Mint 17.3 (baseado no Ubuntu 16.04 LTS)
● PC fixo com as seguintes componentes - Este computador foi utilizado para
treinar a rede neural, pois exigiu um número enorme de cálculos em paralelo
○ Motherboard: MSI Z170A
○ CPU: Intel Core i7 6700K
36
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
37
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
O fator limitante foi quase sempre o tempo. Cada vez que implementei qualquer
alteração, foi necessário esperar para treinar a rede neural. Isso tornou os dados
resultantes de cada execução do programa extremamente valiosos, tanto para
diagnosticar problemas, como encontrar oportunidades para melhorar o sistema.
Em conclusão, sinto que consegui atingir os meus objetivos com este projeto, ou seja,
desenvolvi as minhas competências como programador e também aprendi bastante
sobre a área de machine learning.
15 Bibliografia
15.1 Artigos científicos
ImageNet Classification with Deep Convolutional Neural Networks [Alex Krizhevsky,
Ilya Sutskever & Geoffrey Hinton, 2012] (https://papers.nips.cc/paper/4824-imagenet-
classification-with-deep-convolutional-neural-networks.pdf);
Dropout: A Simple Way to Prevent Neural Networks from Overfitting [Nitish
Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever & Ruslan Salakhutdinov,
2014] (http://jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf);
Wide Residual Networks [Sergey Zagoruyko & Nikos Komodakis, 2016]
(https://arxiv.org/pdf/1605.07146.pdf);
A Method for Solving a Convex Programming Problem with Convergence Rate O(1/K2)
[Yurii Nesterov, 1983] (http://mpawankumar.info/teaching/cdt-big-
data/nesterov83.pdf);
Deep Residual Learning for Image Recognition [Kaiming He, Xiangyu Zhang,
Shaoqing Ren & Jian Sun, 2015] (https://arxiv.org/pdf/1512.03385.pdf);
Batch Normalization: Accelerating Deep Network Training by Reducing Internal
Covariate Shift [Sergey Ioffe & Christian Szegedy, 2015]
(https://arxiv.org/pdf/1502.03167v3.pdf);
Learning Multiple Layers of Features from Tiny Images [Alex Krizhevsky, 2009]
(https://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf).
15.2 Webgrafia
http://neuralnetworksanddeeplearning.com
https://towardsdatascience.com/
https://www.wikipedia.org/
https://www.tensorflow.org/programmers_guide/
https://docs.python.org/3/tutorial/
https://www.cs.toronto.edu/~kriz/cifar.html
http://yann.lecun.com/exdb/mnist/
http://analytics.rsystems.com/wp-content/uploads/2017/09/Image-Recognition-
WhitePaper-Rsystems.pdf
38
Machine Learning no Contexto de Reconhecimento de Objetos
-
Archibald William Kennedy
https://www.wired.com/2017/03/astronomers-deploy-ai-unravel-mysteries-universe/
https://arxiv.org/ftp/arxiv/papers/1709/1709.02245.pdf
http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html
https://en.wikipedia.org/wiki/Supervised_learning
https://quickkt.com/tutorials/artificial-intelligence/deep-learning/activation-function/
http://cs231n.github.io/neural-networks-3/
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-
part-2-data-augmentation-c26971dc8ced
http://www.lahey.com/float.htm
https://leonardoaraujosantos.gitbooks.io/artificial-
inteligence/content/batch_norm_layer.html
https://www.researchgate.net/publication/324168804_On_the_Reduction_of_Biases_in
_Big_Data_Sets_for_the_Detection_of_Irregular_Power_Usage
https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-
performance-in-deep-learning-d0d4059c1c10
https://alexisbcook.github.io/2017/global-average-pooling-layers-for-object-localization
16 Anexos
arquitetura.png - Diagrama mostrando as camadas constituintes da rede neural, tal
como as conexões entre elas.
39