Você está na página 1de 136

Engenharia de

Aprendizado deDados
Máquina
Introdução
Redes Neurais e Deep Learning

MATERIAL CONFIDENCIAL
Olá!
Meu nome é Gabriel Campos

CONTATOS FORMAÇÃO
gabriel.campos@hekima.com Bacharel e mestrando em Ciência da
Computação
Especialista em Gestão de Negócios
REDES SOCIAIS
twitter.com/gcouti
ESPECIALIDADES
github.com/gcouti
Aprendizado de Máquina
Gabriel Campos linkedin.com/in/gcouti
Processamento de Linguagem Natural
Cientista de Dados e
Co-fundador da Hekima Gestão de Negócios
Agenda

1. Introdução
2. Redes Neurais Artificiais
3. Deep Learning
4. Tipos de redes profundas
5. Aplicações
Introdução
O que são redes neurais?

Dendritos
As redes neurais são paradigmas de
aprendizado de máquina que se inspiraram
no cérebro dos animais

A ideia é fazer com que esses algoritmos


aprendam da mesma forma que o sistema
nervoso

Os neurônios são conectados em redes e as


ativações formam padrões.
Axônio
http://natureofcode.com/
História das redes neurais artificiais

“Neurônios Formais” - Trabalho que tenta fazer uma analogia entre células nervosas vivas e sistemas
eletrônicos [McCulloch, Pitts 1943]

“Cybernetic Predicting Devices” [Ivakhnenko e Lapa 1965]

Porque só agora as redes ganharam tanta popularidade e importância?


História das redes neurais artificiais

Estudo contínuo de técnicas para aperfeiçoar as redes

Grande volume e acesso à informação

Aumento do poder computacional e possibilidade de processamento matricial e distribuído


Redes Neurais
Perceptron

O Perceptron é um algoritmo que aprende Dendritos


divisões no espaço a partir de hiperplanos.

1 w0

x1 w1

sign( WTX) y
...

xm wm

Axônio
http://natureofcode.com/
Perceptron

O Perceptron é um algoritmo que aprende Exemplo de hipótese aprendida por


um perceptron.
divisões no espaço a partir de hiperplanos.

1 w0

x1 w1

sign( WTX) y
...

xm wm
Perceptron

x1
y
x2

Exemplo: dados de uma NAND

1
1.5

-0.6
x2 y

-1.02

x2

W= (1.5 , -0.60, -1.02)


Multi Layer Perceptron

soma :

vai um :
Multi Layer Perceptron

1
soma :

1
vai um :
Multi Layer Perceptron

1
1
soma :
1
1
vai um :
Multi Layer Perceptron

1
1
soma :
1
1
vai um :
Multi Layer Perceptron

0 soma :
0
1 0
vai um :
0
Multi Layer Perceptron

1
soma :
1
0
vai um :
0
Multi Layer Perceptron

1
soma : 0
1
0
vai um :
1
0
Multi Layer Perceptron

x1

soma : soma :

vai um :
x2

vai um :
Multi Layer Perceptron

w + Δw

saída + Δsaída
Neuronio Logístico

Pequena mudança em qualquer peso


causa uma pequena mudança na saída
w + Δw

saída + Δsaída
Neuronio Logístico

sign(z) σ(z) = sigmoid(z)


Neuronio Logístico

σ(z) = sigmoid(z)

1 w0

x1 w1

σ( WTX) y
...

wm
xm
Outras Funções de Ativação

Identidade Threshold Logística Tangente

Rectified Linear Leaky ReLU SoftPlus Senoidal


Unit (ReLU)
Arquitetura
Arquitetura

Camada de entrada
Arquitetura

Camadas ocultas
Arquitetura

Camada de saída
Interpretação da Saída
Interpretação da Saída
Arquitetura

Camadas ocultas

Camada de saída

Camada de entrada
Definindo uma Arquitetura

Camada de saída

Camada de entrada
Definindo uma Arquitetura
Definindo uma Arquitetura

64 pixels
...

4096 entradas
...

64 pixels
Definindo uma Arquitetura

64 pixels
...

4096 entradas
...

64 pixels
Definindo uma Arquitetura

http://yann.lecun.com/exdb/mnist/
Definindo uma Arquitetura

... 4

5
4096 entradas
... 6

9
Definindo uma Arquitetura

???? 1

... 4

5
4096 entradas
... 6

9
Feedforward Neural Network

... 4

... 6

9
Feedforward Neural Network

... 4

... 6

9
Feedforward Neural Network

... 4

... 6

9
Feedforward Neural Network

... 4

... 6

9
Descida do Gradiente

a
0 y
0

a
y
1

Erro = |ai - yi|


1

a
y
2
2

a
y
3
3
Descida do Gradiente

a
0 y
0

a
y
1
1

a
y
2
2

a
y
3
3
Descida do Gradiente

a
0 y
0

a
y
1
1

a
y
2
2

a
y
3
3

estimado
Descida do Gradiente

a
0 y
0

a
y
1
1

a
y
2
2

a
y
3
3

rótulos estimado
Descida do Gradiente

a
0 y
0

a
y
1
1

a
y
2
2

a
y
3
3

rótulos estimado
pesos
Descida do Gradiente
Descida do Gradiente
Descida do Gradiente
Descida do Gradiente

Pesos iniciais (w0)


Descida do Gradiente

vetor gradiente(∇C)
Descida do Gradiente

w1 = w0 - η∇C
Descida do Gradiente

∇C
Descida do Gradiente

w2 = w1 - η∇C
Descida do Gradiente
Descida do Gradiente
Descida do Gradiente
Limitação do Método do Gradiente

a a a
1 2 a
L 0 y
y
0 0
? 0
0

a 0
2 a
a y
a L 1
1 y
1
? 1

a 1 1
1 2 a
a y
L 2
2 y
? 2

a a 2 2
1 2 a
a y
L 3
2 3 y
? 3
3 3
Backpropagation

O algoritmo Backpropagation propaga a


informação de acerto ou erro das camada de
saída para as camadas ocultas da rede.

Desse modo é possível utilizar o método do


gradiente para encontrar os pesos da rede.
Backpropagation

O processo de atualização é dividido em duas


etapas:

● Inicializa-se os pesos aleatoriamente


Backpropagation

O processo de atualização é dividido em duas


etapas:

● Inicializa-se os pesos aleatoriamente


● Para cada exemplo de treino:
Backpropagation

O processo de atualização é dividido em duas


etapas: Forward pass

● Inicializa-se os pesos aleatoriamente


● Para cada exemplo de treino:
○ Forward pass: Calcular o erro
Backpropagation

O processo de atualização é dividido em duas


etapas: Forward pass

● Inicializa-se os pesos aleatoriamente


● Para cada exemplo de treino:
○ Forward pass: Calcular o erro
○ Calcular o gradiente para cada nó
Backpropagation

O processo de atualização é dividido em duas


etapas: Backward pass

● Inicializa-se os pesos aleatoriamente


● Para cada exemplo de treino:
○ Forward pass: Calcular o erro
○ Calcular o gradiente para cada nó
○ Backward pass: Propagar o erro e
atualizar os pesos de cada camada
Problemas em adicionar muitas camadas

O gradiente das camadas mais próximos a


entrada é muito próximo de zero

Isso implica que os pesos dessas camadas vão


mudar menos, ou seja, a velocidade de
aprendizado é mais lenta se comparado com as
camadas mais próximas a saída

Entrada

Saída
Velocidade de aprendizado
Mão na massa!
Deep Learning
Deep Learning

Deep Learning são redes neurais com muitas


camadas.

Necessário um volume muito grande de dados


para conseguir obter aprendizado.

Como essas redes lidam com o desaparecimento


do gradiente?
Esquivando do desaparecimento do gradiente

ReLU

Mudança da função de ativação.

Ativação esparsa (0 ou 1)

Propagação do gradiente de forma mais eficiente

Não é derivável em 0

Dying Relu Problem - As vezes pode fazer com


que os neurônios fiquem desativados para todas
as entradas
Esquivando do desaparecimento do gradiente

Drop-out

Técnica de desativação aleatória de alguns


neurônios.

Os neurônios não ativados não contribuem para


a etapa de forward nem de backpropagation.

Evita overfitting porém a convergência para um


resultado é mais demorada
Esquivando do desaparecimento do gradiente

Batch Normalization

● Reduzir a covariância dos pesos nas redes

● Adiciona um passo adicional entre as


camadas

● Acelera o aprendizado das redes


Esquivando do desaparecimento do gradiente

Greedy Layer-Wise Training

● Pré-Treino dos pesos para otimizar a


exemplos

● Treina cada camada separadamente

● Aprendizado não supervisionado das


características
Esquivando do desaparecimento do gradiente

Greedy Layer-Wise Training

● Pré-Treino dos pesos para otimizar a


exemplos

● Treina cada camada separadamente

● Aprendizado não supervisionado das


características
Esquivando do desaparecimento do gradiente

Greedy Layer-Wise Training

● Pré-Treino dos pesos para otimizar a


exemplos

● Treina cada camada separadamente

● Aprendizado não supervisionado das


características
Arquiteturas das redes

Um para um Um para muitos Muitos para um Muitos para muitos Muitos para muitos
Tipos de redes profundas
Zoológico das redes neurais

Restricted Boltzmann Denoising


Autoencoders
machines Autoencoders

Saída
Entrada Backfed Neurônio escondido Recorrente
Saída
Entrada Neurônio probabilístico Memória
Kernel
Entrada Ruidosa Spiking Hidden Cell Memória diferenciada
Convolution
Zoológico das redes neurais

Deep Belief Networks Gated recurrent units Deep residual networks

Saída
Entrada Backfed Neurônio escondido Recorrente
Saída / Comparativa
Entrada Neurônio probabilístico Memória
Kernel
Entrada Ruidosa Spiking Hidden Cell Memória diferenciada
Convolution
Redes de convolução

Redes de convolução são um tipo de redes


profundas

Os neurônios individuais são organizados de


modo a responder regiões de sobreposição no
campo visual.

Esse tipo de rede é geralmente usada em


reconhecimento de imagens e vídeo

Extração de características Classificação


Redes de convolução - Convolução
Redes de convolução - Convolução
Redes de convolução - Convolução

0 0 0 0 0

0 1 2 1 0

0 2 5 2 0

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara

0 0 0 0 0 0.2 0.1 0.3

0 1 2 1 0 0.5 0.7 1

0 2 5 2 0 0.1 0.4 0.2

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 0 0 0 0 0.2 0.1 0.3

0 1 2 1 0 0.5 0.7 1

0 2 5 2 0 0.1 0.4 0.2

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 . 0,2 + 0 . 0,1 + 0 . 0,3


0 0 0 0 0 0.2 0.1 0.3 + 0 . 0,5 + 1 . 0,7 + 2 . 1,0 5
+ 0 . 0,1 + 2 . 0,4 + 5 . 0,2
0 1 2 1 0 0.5 0.7 1
= 4,5

0 2 5 2 0 0.1 0.4 0.2 arredondando 5

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 0 0 0 0 0.2 0.1 0.3 5 6

0 1 2 1 0 0.5 0.7 1

0 2 5 2 0 0.1 0.4 0.2

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 0 0 0 0 0.2 0.1 0.3 5 6 3

0 1 2 1 0 0.5 0.7 1

0 2 5 2 0 0.1 0.4 0.2

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 0 0 0 0 0.2 0.1 0.3 5 6 3

0 1 2 1 0 0.5 0.7 1 8

0 2 5 2 0 0.1 0.4 0.2

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Convolução

Imagem Máscara Resultado

0 0 0 0 0 0.2 0.1 0.3 5 6 3

0 1 2 1 0 0.5 0.7 1 8 8 5

0 2 5 2 0 0.1 0.4 0.2 4 4 3

0 1 2 1 0

0 0 0 0 0
Redes de convolução - Pooling

Tipos de pooling
0 0 0 0 0
Min Pooling: 0
0 1 2 1 0
Mean Pooling: 0.25 (0)
0 2 5 2 0
Max Pooling: 1
0 1 2 1 0

0 0 0 0 0
Redes de convolução - Pooling

Tipos de pooling
0 0 0 0 0
Min Pooling: 0
0 1 2 1 0
Mean Pooling: 0.75 (1)
0 2 5 2 0
Max Pooling: 2
0 1 2 1 0

0 0 0 0 0
Redes de convolução - Pooling

Min Médio Máximo


0 0 0 0 0

0 1 2 1 0 0 0 0 0 1 0 1 2 0

0 2 5 2 0 0 2 0 1 3 0 2 5 0

0 1 2 1 0 0 0 0 0 0 0 1 2 0

0 0 0 0 0
Redes de convolução
Redes de convolução
Autoencoders

Os autoencoders são um tipo de rede codificar


(comprimir) uma informação.

Servem como um redutor de dimensionalidade


Autoencoders
Autoencoders

Imagem original

Autoencoder

PCA
Embedding - Word2Vec

Rede neural para reconstruir contexto de palavras

Exemplo

… gosta de ler livros …


… gosta de comer batata ...

Contexto das palavras:

_____ comer _____


Embedding - Word2Vec

… gosta de ler livros …


… gosta de comer batata ...

gosta ler livros comer batata

gosta 0 1 0 1 0

ler 1 0 1 0 0

livros 0 0 0 1 0

comer 1 0 0 0 1

batata 0 0 0 1 0
Embedding - Word2Vec

Mulher

Tia
Homem Operações com palavras

Rei + Mulher ~ Rainha


Tio Rainha Tia + Homem ~ Tio

Rei
Redes Neurais Recorrentes

Diferente das outras topologias, as redes


neurais recorrentes possuem estados.

Isso significa que a ordem dos dados que


alimenta a rede faz diferença.

É uma topologia muito utilizada para textos e


séries temporais

Esse tipo de rede foi criada em 1990. E as RNN


puras tem muito problema com o
desaparecimento do gradiente
Rede Neural
Redes Neurais Recorrentes
Long Short Term Memory

Tipo de rede neural recorrente.

A adição de portas e células de memória


combatem o problema do desaparecimento do
gradiente.

Capaz de aprender sequência complexas.


Long Short Term Memory

A memória existe pois elas recebem como entrada o estado anterior


da célula
Long Short Term Memory
Long Short Term Memory
Long Short Term Memory
Long Short Term Memory
Generative Adversarial Networks

Na verdade são duas redes que fazem um jogo


de soma zero

Uma rede é generativa e a outra é


discriminativa

O resultado de uma tenta melhorar o resultado


de outra.

O treino da rede é feito apenas com a rede


discriminativa. Que recebe valores gerados pela
rede generativa
Generative Adversarial Networks

Modelo
Ruído
Generativo

Imagem
Aleatória
Modelo
Classificação
Discriminativo
Imagem
Correta
Generative Adversarial Networks

Completar imagens

Entrada Saída
Generative Adversarial Networks
Generative Adversarial Networks
Asynchronous Actor-Critic Agents (A3C)
Asynchronous Actor-Critic Agents (A3C)
Aplicações
WaveNet

RNN e CNN para:

Conseguiu fazer o text-to-speech mais natural

Criação de músicas e discursos aleatórios


Nomeando imagens

Combinação de redes neurais recorrentes e


redes de convolução

● RNN para construir as as frases


● Convolução para identificar os objetos

Uma mulher de vestido branco segurando uma


raquete de tênis
Colorindo imagens

Colorir imagens e tentar encontrar a cor


original da foto.

● Rede de convolução
Colorindo imagens
Colorindo imagens
Mão na massa
Tensor Flow

Ferramenta opensource

Suporte para processamento em GPU

Desenvolvido pelos engenheiros do Google

API para Java, Python, C++, GO...


Keras

Opensource em Python

Bom para prototipação

Pode rodar utilizando o TensorFlow ou outras


bibliotecas (Deeplearning4j e Theano)
Mão na massa, de verdade!
Perguntas?
Referências
Introdução
http://pages.cs.wisc.edu/~bolo/shipyard/neural/local.html
http://natureofcode.com/book/chapter-10-neural-networks/ (perceptron)
https://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html
https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_neural_network
s.htm

Redes e histórico de criação


http://people.idsia.ch/~juergen/firstdeeplearner.html

Redes Neurais
http://neuralnetworksanddeeplearning.com/chap1.html
https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b

Deep Learning
http://www.asimovinstitute.org/neural-network-zoo/
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
Referências
Deep Learning
https://www.youtube.com/watch?v=2-Ol7ZB0MmU (Convolução)
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
http://blog.echen.me/2017/05/30/exploring-lstms/ (Snorlax)

Aplicações
https://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictu
res?language=pt-br

Atari
https://arxiv.org/pdf/1312.5602v1.pdf

WaveNet
https://deepmind.com/blog/wavenet-generative-model-raw-audio/

Nomeando Imagens
http://cs.stanford.edu/people/karpathy/cvpr2015.pdf
Referências
A3C
https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part
-0-q-learning-with-tables-and-neural-networks-d195264329d0

Colorindo imagens
http://richzhang.github.io/colorization/
Sobre a Hekima
Somos uma empresa de Big Data e Inteligência
Artificial que transforma relações, organizações
e negócios por meio da utilização inteligente in
e estratégica de dados.

Diagnosticamos, desenhamos, desenvolvemos


data
e implantamos tecnologia de forma simples
e acessível. we
A Hekima é a única empresa brasileira
que domina todas as etapas de Big Data.
trust
Somos a 1ª startup
brasileira especializada PIONEIRISMO

em Big Data & IA


Fundada em 2008, fomos uma das primeiras
empresas brasileiras a construir produtos de
Inteligência Artificial em nuvem.

LIDERANÇAS EXPERIÊNCIA

Ivan M. Campos / Presidente CA Rachel Horta / CEO Marcia Asano / COO Equipe
Fundadores com mais de 9 anos
de experiência em todas as metodologias
e tecnologias de Big Data e Inteligência Artificial.
+
25
CAPACITAÇÃO TÉCNICA
PhD’s, mestres e especialistas em data science,
data engineering, inteligência artificial, machine
BH
learning, processamento de linguagem natural,
data mining, sistemas de recomendação, redes
SP complexas, qualidade e governança de dados,
matemática e estatística.
Luiz Temponi / Presidente CFO Thiago Cardoso / CTO Carolina Bigonha / CPO
Reconhecimentos
Parceiros & Iniciativas

CURSO
DE DATA
SCIENCE

HEKIMA
DEVELOPER'S
BLOG
BELO HORIZONTE SÃO PAULO
w w w . h e k i m a . com Avenida Álvares Cabral, 1315, Sala 7 Rua Casa do Ator, 919, 2 andar

Você também pode gostar