Globalcode – Open4education
Redes Neurais
O que você precisa saber antes de começar
@jacktecnologia
(TDC SP 2017 – Trilha ...
Globalcode – Open4education
Aviso
O autor da palestra não está apresentando a
mesma como representante de qualquer empresa...
Globalcode – Open4education
O que vamos falar nesta palestra ?
Globalcode – Open4education
O que vamos falar ?
O que tem dentro de uma rede neural;
Globalcode – Open4education
O que vamos falar ?
O que tem dentro de uma rede neural;
Como treinar uma rede neural;
Globalcode – Open4education
O que vamos falar ?
O que tem dentro de uma rede neural;
Como treinar uma rede neural;
Possíve...
Globalcode – Open4education
Predição
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
2 X 3
3 + 3
6
... que já tem programada i...
Globalcode – Open4education
Imagine uma outra
máquina simples ...
Que vai aprendendo como deve funcionar à
medida que form...
Globalcode – Open4education
Imagine uma outra
máquina simples ...
Que ajusta seu processamento de acordo com os
erros obti...
Globalcode – Open4education
O que estamos buscando ?
Queremos analisar um fenômeno do qual não
sabemos a fórmula certa;
Globalcode – Open4education
O que estamos buscando ?
Queremos analisar um fenômeno do qual não
sabemos a fórmula certa;
Po...
Globalcode – Open4education
O que estamos buscando ?
Queremos analisar um fenômeno do qual não
sabemos a fórmula certa;
Po...
Globalcode – Open4education
O que estamos buscando ?
Queremos analisar um fenômeno do qual não
sabemos a fórmula certa;
Po...
Globalcode – Open4education
Exemplo
Para fins didáticos, vamos construir uma máquina
para fazer a conversão de Km para mil...
Globalcode – Open4education
Exemplo
Para fins didáticos, vamos construir uma máquina
para fazer a conversão de Km para mil...
Globalcode – Open4education
Exemplos
Fazemos alguns testes em campo, e levantamos a
seguinte tabela com algumas observaçõe...
Globalcode – Open4education
Convertendo Km para milhas
0
20
40
60
80
100
120
140
0 50 100 150 200 250
Milha
Km
Km x Milha
Globalcode – Open4education
0
20
40
60
80
100
120
140
0 50 100 150 200 250
Milha
Km
Km x Milha
Mi = c * Km
62,137 = c * 10...
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100 50
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,5
50
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,5
50
# Observação Quilômetros Milha...
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,5
50
# Observação Quilômetros Milha...
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,5
50
# Observação Quilômetros Milha...
Globalcode – Open4education
Erro
Erro = Valor Medido – Valor Calculado
Erro = 62,137 – 50
Erro = 12,137
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,6
60
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,6
60
# Observação Quilômetros Milha...
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,6
60
# Observação Quilômetros Milha...
Globalcode – Open4education
Imagine uma máquina
simples ...
saídaentrada
MÁQUINA
100
0,6
60
# Observação Quilômetros Milha...
Globalcode – Open4education
Erro
Erro = Valor Medido – Valor Calculado
Erro = 62,137 – 60
Erro = 2,137
Globalcode – Open4education
Erro
Entrada
Valor
Medido
c
Valor
Calculado
Erro
100 62,137 0,5 50 12,137
100 62,137 0,6 60 2,...
Globalcode – Open4education
Erro
Entrada
Valor
Medido
c
Valor
Calculado
Erro
100 62,137 0,5 50 12,137
100 62,137 0,6 60 2,...
Globalcode – Open4education
Erro
Entrada
Valor
Medido
c
Valor
Calculado
Erro
100 62,137 0,5 50 12,137
100 62,137 0,6 60 2,...
Globalcode – Open4education
Erro
Entrada
Valor
Medido
c
Valor
Calculado
Erro
100 62,137 0,5 50 12,137
100 62,137 0,6 60 2,...
Globalcode – Open4education
Idéias importantes !!!
Quando não souber o algoritmo da máquina, usar
as observações obtidas a...
Globalcode – Open4education
Idéias importantes !!!
Quando não souber o algoritmo da máquina, usar
as observações obtidas a...
Globalcode – Open4education
Classificação
Globalcode – Open4education
Classificação
Globalcode – Open4education
Classificação
0
0,5
1
1,5
2
2,5
3
3,5
0 0,5 1 1,5 2 2,5 3 3,5
comprimento
largura
comprimento ...
Globalcode – Open4education
Classificação
0
0,5
1
1,5
2
2,5
3
3,5
0 0,5 1 1,5 2 2,5 3 3,5
comprimento
largura
comprimento ...
Globalcode – Open4education
Classificação
0
0,5
1
1,5
2
2,5
3
3,5
0 0,5 1 1,5 2 2,5 3 3,5
comprimento
largura
comprimento ...
Globalcode – Open4education
Classificação
0
0,5
1
1,5
2
2,5
3
3,5
0 0,5 1 1,5 2 2,5 3 3,5
comprimento
largura
comprimento ...
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
0 3 1 Centopéia
1 1 3 Joaninha
2 ...
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
0 3 1 Centopéia
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
1 1 3 Joaninha
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 3,1 0,9 Centopéia
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Globalcode – Open4education
O preditor não está sendo um bom
classificador pois está sendo
influenciado pelos exemplos
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Y = c X
Y = (c...
Globalcode – Open4education
Para resolver este problema, vamos
usar uma taxa de aprendizagem, de
forma que os novos exempl...
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Globalcode – Open4education
Classificação
#Observação Comprimento Largura Tipo de inseto
2 0,9 2,9 Joaninha
Y = c X
Y = L ...
Globalcode – Open4education
Como funciona um neurônio ?
Globalcode – Open4education
Como funciona um
neurônio ?
Globalcode – Open4education
Como funciona um
neurônio ?
E
N
T
R
A
D
A
S
S
A
Í
D
A
S
CORPO
AXÔNIO
Globalcode – Open4education
Como funciona um
neurônio ?
E
N
T
R
A
D
A
S
S
A
Í
D
A
S
CORPO
AXÔNIO
Globalcode – Open4education
Como funciona o neurônio ?
O estado de excitação que o neurônio emite o
sinal pelo axônio pode...
Globalcode – Open4education
Como funciona um
neurônio ?
saídaentrada 2
...
soma
dos
valores
de
entrada
função
de
ativação
Globalcode – Open4education
Função de ativação
Há várias funções de ativação que podem ser
usadas;
Globalcode – Open4education
Função de ativação
Há várias funções de ativação que podem ser
usadas;
Vamos ver a função degr...
Globalcode – Open4education
Função degrau
x <0  0
x >=0  1
0
0,2
0,4
0,6
0,8
1
1,2
-6 -4 -2 0 2 4 6
Globalcode – Open4education
Função logística
1/(1+e-x)
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
3
1
2
3
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
3
1
2
3
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
3
1
2
3
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
3
1
2
3
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
2
1
2
3
camada
3...
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
2
1
2
3
camada
3...
Globalcode – Open4education
Como funciona um
conjunto de neurônios ?
camada
1
1
2
3
camada
2
1
2
3
camada
2
1
2
3
camada
3...
Globalcode – Open4education
Olhando mais de perto
camada
1
1
2
3
camada
2
1
2
3
W1,1
Globalcode – Open4education
Olhando mais de perto
camada
1
1
2
3
camada
2
1
2
3
W1,1
Globalcode – Open4education
Olhando mais de perto
camada
1
1
2
3
camada
2
1
2
3
W1,1
Globalcode – Open4education
O que podemos alterar antes
de começar a treinar ?
Tipo de neurônio;
Quantidade de entradas;
Q...
Globalcode – Open4education
O que iremos alterar ?
Depois que começarmos a treinar a rede,
mudamos apenas os valores das s...
Globalcode – Open4education
Vamos montar uma rede ?
Globalcode – Open4education
O que precisamos para
começar ?
Observar alguns exemplos reais;
Globalcode – Open4education
O que precisamos para
começar ?
Observar alguns exemplos reais;
Definir o formato da rede;
Globalcode – Open4education
O que precisamos para
começar ?
Observar alguns exemplos reais;
Definir o formato da rede;
Arb...
Globalcode – Open4education
Observar alguns exemplos
reais...
Fenômeno a ser
estudado
Entrada 1
Entrada 2
Saída 1
Saída 2
...
Globalcode – Open4education
Observar alguns exemplos
reais...
Classificação de
insetos
Largura
Comprimento
Centopeia
Joani...
Globalcode – Open4education
Definir o formato da rede
Podemos escolher o número de entradas;
Globalcode – Open4education
Definir o formato da rede
Podemos escolher o número de entradas;
Podemos escolher o número de ...
Globalcode – Open4education
Definir o formato da rede
Podemos escolher o número de entradas;
Podemos escolher o número de ...
Globalcode – Open4education
Definir o formato da rede
Podemos escolher o número de entradas;
Podemos escolher o número de ...
Globalcode – Open4education
Definir o formato da rede
Podemos escolher o número de entradas;
Podemos escolher o número de ...
Globalcode – Open4education
3 camadas
1 53
2 64
Entrada 1
Entrada 2 Saída 2
Saída 1
W2,4
W3,5W1,3
W4,6
Globalcode – Open4education
Arbitrar valores para as
sinapses...
Conexão Valor do peso
W1,3 0,3
W1,4 0,2
W2,3 0,7
W2,4 0,1...
Globalcode – Open4education
3 camadas
1 53
2 640,5
W2,4
W3,5W1,3
W4,6
Conexão Valor do peso
W1,3 0,3
0,9
Globalcode – Open4education
3 camadas
1 53
2 64
0,9
0,5
W2,4
W3,50,3
W4,6
Conexão Valor do peso
W1,3 0,3
Globalcode – Open4education
Indo para frente
(feedforward)
Globalcode – Open4education
3 camadas
1 53
2 640,5
0,1
0,50,3
0,4
0,9
Valor de entrada na rede
Valor de entrada no neurôni...
Globalcode – Open4education
3 camadas
1 53
2 64
0,3
0,9
Valor de entrada na rede
Valor de entrada no neurônio intermediári...
Globalcode – Open4education
3 camadas
1 53
2 64
0,3 * 0,9
0,9
Valor de entrada na rede
Valor de entrada no neurônio interm...
Globalcode – Open4education
3 camadas
1 53
2 64
0,27
0,9
Valor de entrada na rede
Valor de entrada no neurônio intermediár...
Globalcode – Open4education
3 camadas
1 53
2 640,5
0,1 * 0,5
0,27
Valor de entrada na rede
Valor de entrada no neurônio in...
Globalcode – Open4education
3 camadas
1 53
2 640,5
0,05
0,27
Valor de entrada na rede
Valor de entrada no neurônio interme...
Globalcode – Open4education
3 camadas
X = (0,27+0,35)
X = 0,62
Saída(n3) = 1/(1+exp(-X))
Saída(n3) = 0,650219
X = (0,18+0,...
Globalcode – Open4education
3 camadas
1 53
2 64
0,5*0,650219
Valor de entrada na rede
Valor de entrada no neurônio interme...
Globalcode – Open4education
3 camadas
1 53
2 64
0,325109
Valor de entrada na rede
Valor de entrada no neurônio intermediár...
Globalcode – Open4education
3 camadas
1 53
2 64
0,4*0,5547248
0,325109
Valor de entrada na rede
Valor de entrada no neurôn...
Globalcode – Open4education
3 camadas
1 53
2 64
0,222899
0,325109
Valor de entrada na rede
Valor de entrada no neurônio in...
Globalcode – Open4education
3 camadas
X = (0,325109+0,167174)
X = 0,492284
Saída(n5) = 1/(1+exp(-X))
Saída(n5) = 0,620644
...
Globalcode – Open4education
3 camadas
1 53
2 640,5
0,1
0,50,3
0,4
0,620644
0,677668
0,9
Valor de entrada na rede
Valor de ...
Globalcode – Open4education
Qual foi o erro ?
Variável Valor Medido Valor calculado Erro
Saída 1 0,8 0,620644 0,179356
Saí...
Globalcode – Open4education
E agora, para onde vamos ?
Globalcode – Open4education
E agora, para onde vamos ?
A rede está calculando uma função complexa;
Globalcode – Open4education
E agora, para onde vamos ?
A rede está calculando uma função complexa;
Nós não sabemos que fun...
Globalcode – Open4education
E agora, para onde vamos ?
A rede está calculando uma função complexa;
Nós não sabemos que fun...
Globalcode – Open4education
E agora, para onde vamos ?
A rede está calculando uma função complexa;
Nós não sabemos que fun...
Globalcode – Open4education
E agora, para onde vamos ?
A rede está calculando uma função complexa;
Nós não sabemos que fun...
Globalcode – Open4education
Criando a função de erro
Globalcode – Open4education
Função erro
Valor
calculado (c)
Valor
medido (m)
Erro
(m – c)
Erro
|m – c|
Erro
(m – c)2
0,4 0...
Globalcode – Open4education
Função erro
Valor
calculado (c)
Valor
medido (m)
Erro
(m – c)
Erro
|m – c|
Erro
(m – c)2
0,4 0...
Globalcode – Open4education
Função erro
Valor
calculado (c)
Valor
medido (m)
Erro
(m – c)
Erro
|m – c|
Erro
(m – c)2
0,4 0...
Globalcode – Open4education
Função erro
Valor
calculado (c)
Valor
medido (m)
Erro
(m – c)
Erro
|m – c|
Erro
(m – c)2
0,4 0...
Globalcode – Open4education
Gradiente Descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
O que acontece se eu começar a
descida de outro lugar ?
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Posso demorar mais a chegar ao
fundo ou posso ficar preso em um
fundo local ...
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Gradiente descendente
Globalcode – Open4education
Mas, o que tem isso a ver com a
nossa rede ?
Globalcode – Open4education
Gradiente descendente
Errodoneurônio
Globalcode – Open4education
Gradiente descendente
Valor do erro para os pesos atuais
Errodoneurônio
Globalcode – Open4education
Gradiente descendente
Valor do erro para os pesos atuais
Gradiente das possíveis direções a se...
Globalcode – Open4education
Mas como propagar os erros de
volta para serem usados no método
do gradiente ?
Globalcode – Open4education
1
2
3
Como propagar os erros
de volta ?
Globalcode – Open4education
1
2
3
Como propagar os erros
de volta ?
Globalcode – Open4education
1
2
3
Como propagar os erros
de volta ?
Globalcode – Open4education
1
2
3
Como propagar os erros
de volta ?
Globalcode – Open4education
1
2
3
Como propagar os erros
de volta ?
Globalcode – Open4education
Voltando com o erro
(backpropagation)
Globalcode – Open4education
Vamos ver como retornar o erro
através de um exemplo prático...
Globalcode – Open4education
Error backpropagation
1 53
2 640,5
0,1
0,50,3
0,4
Erro = 0,179356
Erro = 0,022332
0,9
0,620644...
Globalcode – Open4education
Error backpropagation
1 53
2 640,5
0,9
Erro = 0,179356
Erro = 0,022332
0,620644
0,677668
0,1
0...
Globalcode – Open4education
Error backpropagation
1 53
2 64
0,5/(0,5+0,8)
Pesos
Valor de saída da rede
Valor do erro
Erro ...
Globalcode – Open4education
Error backpropagation
1 53
2 64
0,384615
Erro = 0,179356
Erro = 0,022332
0,620644
0,677668
Pes...
Globalcode – Open4education
Error backpropagation
1 53
2 64
0,384615 * 0,179356
Erro = 0,179356
Erro = 0,022332
0,620644
0...
Globalcode – Open4education
Error backpropagation
1 53
2 64
0,068983
Erro = 0,179356
Erro = 0,022332
0,620644
0,677668
Pes...
Globalcode – Open4education
Error backpropagation
1 53
2 64
Erro(neurônio 3) = 0,068983 + 0,013742
0,068983
Erro = 0,17935...
Globalcode – Open4education
Error backpropagation
1 53
2 64
Erro(neurônio 3) = 0,082725
0,068983
Erro = 0,179356
Erro = 0,...
Globalcode – Open4education
Error backpropagation
1 53
2 64
Erro(neurônio 4) = 0,089628
Erro(neurônio 3) = 0,082725
Erro =...
Globalcode – Open4education
Para calcular o gradiente, preciso
saber como o erro varia de acordo
com os valores das sinaps...
Globalcode – Open4education
Gradiente
jk
k
kjk W
Vc
Vc
E
W
E







.
Como o erro varia de acordo com as sinapses
Globalcode – Open4education
Gradiente
jk
k
kjk W
Vc
Vc
E
W
E







.
Como o erro varia de acordo com o valor calcu...
Globalcode – Open4education
Gradiente
jk
k
kjk W
Vc
Vc
E
W
E







.
Como o valor calculado varia de acordo com as...
Globalcode – Open4education
Gradiente
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- função l...
Globalcode – Open4education
Vamos ver um exemplo calculando o
gradiente da sinapse entre os
neurônios 3 e 5
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
Err = 0,179356
Erro do neurônio de destino= 0,179356
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,325109
Err = 0,179356
Erro do neurônio de destino= 0,179356
Entr...
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,325109
Err = 0,179356
Erro do neurônio de destino= 0,179356
Entr...
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,325109
Err = 0,179356
Erro do neurônio de destino= 0,179356
Entr...
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
Erro do neurônio de destino= 0,179356
Entrada no neurônio de desti...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = -erro *
função logística (entrada do neurônio de destino) *
(1- ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = - 0,179356 *
função logística (entrada do neurônio de destino) *...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = - 0,179356 * 0,620644 *
(1- função logística(entrada do neurônio...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = - 0,179356 * 0,620644 * 0,379356 *
saída do neurônio de origem
E...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = - 0,179356 * 0,620644 * 0,379356 * 0,650219
Erro do neurônio de ...
Globalcode – Open4education
Fazendo o cálculo
Gradiente = - 0,027458
Erro do neurônio de destino= 0,179356
Entrada no neur...
Globalcode – Open4education
Atualizando a sinapse
Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente)
Globalcode – Open4education
Atualizando a sinapse
Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente)
Nova ...
Globalcode – Open4education
Atualizando a sinapse
Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente)
Nova ...
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,5027458
Sinapse
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,4002718
0,5027458
Sinapse
Globalcode – Open4education
Fazendo o cálculo
1 53
2 64
0,3016933
0,1011057 0,4002718
0,5027458
Sinapse
Globalcode – Open4education
Será que o erro diminuiu ?
Globalcode – Open4education
Calculando a nova saída ...
1 53
2 640,5
0,9
0,621468
0,677876
Erro = 0,178532
Erro = 0,022124...
Globalcode – Open4education
O erro diminuiu ?
Antes de corrigir Após corrigir
Entrada 1 0,9 0,9
Saída 1 0,620644 0,621468
...
Globalcode – Open4education
O erro diminuiu ?
Antes de corrigir Após corrigir
Entrada 2 0,5 0,5
Saída 2 0,677668 0,677878
...
Globalcode – Open4education
Como treinar a rede ?
Globalcode – Open4education
Cross - validation
Holdout;
K-fold;
Leave one out;
(https://pt.wikipedia.org/wiki/Valida%C3%A7...
Globalcode – Open4education
Holdout
Observação Atributo 1 Atributo 2 Atributo 3 Classe
1 Rápido 30 Laranja A
2 Lento 5 Ver...
Globalcode – Open4education
Holdout
Observação Atributo 1 Atributo 2 Atributo 3 Classe
1 Rápido 30 Laranja A
2 Lento 5 Ver...
Globalcode – Open4education
Holdout
Observação Atributo 1 Atributo 2 Atributo 3 Classe
1 Rápido 30 Laranja A
2 Lento 5 Ver...
Globalcode – Open4education
O que mais eu preciso saber ?
Globalcode – Open4education
Observando exemplos ...
Suponha que tenhamos os seguintes exemplos:
Evento Físico em
Estudo
En...
Globalcode – Open4education
Parece que a rede não
está funcionando ...
Se a função de ativação do neurônio de saída é
dada...
Globalcode – Open4education
Parece que a rede não
está funcionando ...
Se a função de ativação dos neurônios é uma
função ...
Globalcode – Open4education
Parece que a rede não
está funcionando ...
Preste atenção aos seus dados !
Será que a rede não...
Globalcode – Open4education
Para saber mais ...
Twitter: @jacktecnologia
Globalcode – Open4education
Obrigado !!!
Twitter: @jacktecnologia
Globalcode – Open4education
Figuras
http://www.clipshrine.com/Ladybird-17535-
medium.html
http://www.pngall.com/caterpilla...
Próximos SlideShares
Carregando em…5
×

TDC2017 | SP - Trilha Machine Learning - Redes neurais: o que você precisa saber para começar!

144 visualizações

Publicada em

Redes neurais: o que você precisa saber para começar!

Publicada em: Educação
  • Seja o primeiro a comentar

TDC2017 | SP - Trilha Machine Learning - Redes neurais: o que você precisa saber para começar!

  1. 1. Globalcode – Open4education Redes Neurais O que você precisa saber antes de começar @jacktecnologia (TDC SP 2017 – Trilha Machine Learning)
  2. 2. Globalcode – Open4education Aviso O autor da palestra não está apresentando a mesma como representante de qualquer empresa que ele tenha trabalhado, esteja trabalhando ou que venha a trabalhar; Os assuntos são de domínio público não expondo dados, cases ou procedimentos desenvolvidos especificamente para serem utilizados em uma empresa; Todas as marcas são de propriedade dos seus respectivos detentores;
  3. 3. Globalcode – Open4education O que vamos falar nesta palestra ?
  4. 4. Globalcode – Open4education O que vamos falar ? O que tem dentro de uma rede neural;
  5. 5. Globalcode – Open4education O que vamos falar ? O que tem dentro de uma rede neural; Como treinar uma rede neural;
  6. 6. Globalcode – Open4education O que vamos falar ? O que tem dentro de uma rede neural; Como treinar uma rede neural; Possíveis erros ao usar uma rede neural;
  7. 7. Globalcode – Open4education Predição
  8. 8. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA
  9. 9. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 2 X 3 3 + 3 6 ... que já tem programada internamente como deve funcionar ! Ela não pode se adaptar !
  10. 10. Globalcode – Open4education Imagine uma outra máquina simples ... Que vai aprendendo como deve funcionar à medida que formos colocando dados nela; saídaentrada MÁQUINA
  11. 11. Globalcode – Open4education Imagine uma outra máquina simples ... Que ajusta seu processamento de acordo com os erros obtidos em sua saída. saídaentrada MÁQUINA
  12. 12. Globalcode – Open4education O que estamos buscando ? Queremos analisar um fenômeno do qual não sabemos a fórmula certa;
  13. 13. Globalcode – Open4education O que estamos buscando ? Queremos analisar um fenômeno do qual não sabemos a fórmula certa; Podemos usar sensores para coletar dados a respeito do fenômeno que queremos estudar;
  14. 14. Globalcode – Open4education O que estamos buscando ? Queremos analisar um fenômeno do qual não sabemos a fórmula certa; Podemos usar sensores para coletar dados a respeito do fenômeno que queremos estudar; Colocamos os dados na máquina e vamos ajustando a mesma para que o valor do erro vá diminuindo à medida que colocamos mais dados;
  15. 15. Globalcode – Open4education O que estamos buscando ? Queremos analisar um fenômeno do qual não sabemos a fórmula certa; Podemos usar sensores para coletar dados a respeito do fenômeno que queremos estudar; Colocamos os dados na máquina e vamos ajustando a mesma para que o valor do erro vá diminuindo à medida que colocamos mais dados; Estamos “ensinando” a máquina à medida que ela vai recebendo os dados coletados em sua entrada;
  16. 16. Globalcode – Open4education Exemplo Para fins didáticos, vamos construir uma máquina para fazer a conversão de Km para milhas;
  17. 17. Globalcode – Open4education Exemplo Para fins didáticos, vamos construir uma máquina para fazer a conversão de Km para milhas; Suponha que não saibamos qual é a fórmula de conversão;
  18. 18. Globalcode – Open4education Exemplos Fazemos alguns testes em campo, e levantamos a seguinte tabela com algumas observações: # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  19. 19. Globalcode – Open4education Convertendo Km para milhas 0 20 40 60 80 100 120 140 0 50 100 150 200 250 Milha Km Km x Milha
  20. 20. Globalcode – Open4education 0 20 40 60 80 100 120 140 0 50 100 150 200 250 Milha Km Km x Milha Mi = c * Km 62,137 = c * 100 124,274 = c * 200 Convertendo Km para milhas
  21. 21. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 50
  22. 22. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,5 50
  23. 23. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,5 50 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  24. 24. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,5 50 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  25. 25. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,5 50 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  26. 26. Globalcode – Open4education Erro Erro = Valor Medido – Valor Calculado Erro = 62,137 – 50 Erro = 12,137
  27. 27. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,6 60
  28. 28. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,6 60 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  29. 29. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,6 60 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  30. 30. Globalcode – Open4education Imagine uma máquina simples ... saídaentrada MÁQUINA 100 0,6 60 # Observação Quilômetros Milhas 0 0 0 1 50 31,0865 2 100 62,137 3 200 124,274
  31. 31. Globalcode – Open4education Erro Erro = Valor Medido – Valor Calculado Erro = 62,137 – 60 Erro = 2,137
  32. 32. Globalcode – Open4education Erro Entrada Valor Medido c Valor Calculado Erro 100 62,137 0,5 50 12,137 100 62,137 0,6 60 2,137
  33. 33. Globalcode – Open4education Erro Entrada Valor Medido c Valor Calculado Erro 100 62,137 0,5 50 12,137 100 62,137 0,6 60 2,137 100 62,137 0,7 70 -7,863
  34. 34. Globalcode – Open4education Erro Entrada Valor Medido c Valor Calculado Erro 100 62,137 0,5 50 12,137 100 62,137 0,6 60 2,137 100 62,137 0,7 70 -7,863 100 62,137 0,61 61 1,137
  35. 35. Globalcode – Open4education Erro Entrada Valor Medido c Valor Calculado Erro 100 62,137 0,5 50 12,137 100 62,137 0,6 60 2,137 100 62,137 0,7 70 -7,863 100 62,137 0,61 61 1,137
  36. 36. Globalcode – Open4education Idéias importantes !!! Quando não souber o algoritmo da máquina, usar as observações obtidas através de experimentos;
  37. 37. Globalcode – Open4education Idéias importantes !!! Quando não souber o algoritmo da máquina, usar as observações obtidas através de experimentos; Usar o valor do erro gerado pela máquina para ir ajustando a mesma até que a resposta que ela dê seja semelhante aos dados obtidos através de experimentos !
  38. 38. Globalcode – Open4education Classificação
  39. 39. Globalcode – Open4education Classificação
  40. 40. Globalcode – Open4education Classificação 0 0,5 1 1,5 2 2,5 3 3,5 0 0,5 1 1,5 2 2,5 3 3,5 comprimento largura comprimento x largura
  41. 41. Globalcode – Open4education Classificação 0 0,5 1 1,5 2 2,5 3 3,5 0 0,5 1 1,5 2 2,5 3 3,5 comprimento largura comprimento x largura
  42. 42. Globalcode – Open4education Classificação 0 0,5 1 1,5 2 2,5 3 3,5 0 0,5 1 1,5 2 2,5 3 3,5 comprimento largura comprimento x largura
  43. 43. Globalcode – Open4education Classificação 0 0,5 1 1,5 2 2,5 3 3,5 0 0,5 1 1,5 2 2,5 3 3,5 comprimento largura comprimento x largura
  44. 44. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 0 3 1 Centopéia 1 1 3 Joaninha 2 3,1 0,9 Centopéia 3 0,9 2,9 Joaninha
  45. 45. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 0 3 1 Centopéia
  46. 46. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 1 1 3 Joaninha
  47. 47. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 3,1 0,9 Centopéia
  48. 48. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha
  49. 49. Globalcode – Open4education O preditor não está sendo um bom classificador pois está sendo influenciado pelos exemplos
  50. 50. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha
  51. 51. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha
  52. 52. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha Y = c X Y = (c + c )X
  53. 53. Globalcode – Open4education Para resolver este problema, vamos usar uma taxa de aprendizagem, de forma que os novos exemplos não façam com que a máquina se “esqueça” do que já aprendeu.
  54. 54. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha
  55. 55. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha
  56. 56. Globalcode – Open4education Classificação #Observação Comprimento Largura Tipo de inseto 2 0,9 2,9 Joaninha Y = c X Y = L * (c + c)X
  57. 57. Globalcode – Open4education Como funciona um neurônio ?
  58. 58. Globalcode – Open4education Como funciona um neurônio ?
  59. 59. Globalcode – Open4education Como funciona um neurônio ? E N T R A D A S S A Í D A S CORPO AXÔNIO
  60. 60. Globalcode – Open4education Como funciona um neurônio ? E N T R A D A S S A Í D A S CORPO AXÔNIO
  61. 61. Globalcode – Open4education Como funciona o neurônio ? O estado de excitação que o neurônio emite o sinal pelo axônio pode ser modelado por uma função de ativação;
  62. 62. Globalcode – Open4education Como funciona um neurônio ? saídaentrada 2 ... soma dos valores de entrada função de ativação
  63. 63. Globalcode – Open4education Função de ativação Há várias funções de ativação que podem ser usadas;
  64. 64. Globalcode – Open4education Função de ativação Há várias funções de ativação que podem ser usadas; Vamos ver a função degrau e a função logística, que também é conhecida como função sigmóide;
  65. 65. Globalcode – Open4education Função degrau x <0  0 x >=0  1 0 0,2 0,4 0,6 0,8 1 1,2 -6 -4 -2 0 2 4 6
  66. 66. Globalcode – Open4education Função logística 1/(1+e-x)
  67. 67. Globalcode – Open4education Como funciona um conjunto de neurônios ?
  68. 68. Globalcode – Open4education Como funciona um conjunto de neurônios ?
  69. 69. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 3 1 2 3
  70. 70. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 3 1 2 3
  71. 71. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 3 1 2 3
  72. 72. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 3 1 2 3
  73. 73. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 2 1 2 3 camada 3 1 2 3 camada 3 1 2 3 Camada 1  camada de entrada
  74. 74. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 2 1 2 3 camada 3 1 2 3 camada 3 1 2 3 Camada 2  camada oculta
  75. 75. Globalcode – Open4education Como funciona um conjunto de neurônios ? camada 1 1 2 3 camada 2 1 2 3 camada 2 1 2 3 camada 3 1 2 3 camada 3 1 2 3 Camada 3  camada de saída
  76. 76. Globalcode – Open4education Olhando mais de perto camada 1 1 2 3 camada 2 1 2 3 W1,1
  77. 77. Globalcode – Open4education Olhando mais de perto camada 1 1 2 3 camada 2 1 2 3 W1,1
  78. 78. Globalcode – Open4education Olhando mais de perto camada 1 1 2 3 camada 2 1 2 3 W1,1
  79. 79. Globalcode – Open4education O que podemos alterar antes de começar a treinar ? Tipo de neurônio; Quantidade de entradas; Quantidade de saídas; Número de camadas internas; Valor das sinapses;
  80. 80. Globalcode – Open4education O que iremos alterar ? Depois que começarmos a treinar a rede, mudamos apenas os valores das sinapses que ligam os neurônios;
  81. 81. Globalcode – Open4education Vamos montar uma rede ?
  82. 82. Globalcode – Open4education O que precisamos para começar ? Observar alguns exemplos reais;
  83. 83. Globalcode – Open4education O que precisamos para começar ? Observar alguns exemplos reais; Definir o formato da rede;
  84. 84. Globalcode – Open4education O que precisamos para começar ? Observar alguns exemplos reais; Definir o formato da rede; Arbitrar valores para as sinapses;
  85. 85. Globalcode – Open4education Observar alguns exemplos reais... Fenômeno a ser estudado Entrada 1 Entrada 2 Saída 1 Saída 2 Variável Valor Entrada 1 0,9 Entrada 2 0,5 Saída 1 0,8 Saída 2 0,7
  86. 86. Globalcode – Open4education Observar alguns exemplos reais... Classificação de insetos Largura Comprimento Centopeia Joaninha Variável Valor Largura 0,9 Comprimento 0,5 Centopeia 0,8 Joaninha 0,7
  87. 87. Globalcode – Open4education Definir o formato da rede Podemos escolher o número de entradas;
  88. 88. Globalcode – Open4education Definir o formato da rede Podemos escolher o número de entradas; Podemos escolher o número de saídas;
  89. 89. Globalcode – Open4education Definir o formato da rede Podemos escolher o número de entradas; Podemos escolher o número de saídas; Podemos escolher quantas camadas internas a rede vai ter;
  90. 90. Globalcode – Open4education Definir o formato da rede Podemos escolher o número de entradas; Podemos escolher o número de saídas; Podemos escolher quantas camadas internas a rede vai ter; Podemos escolher quantos neurônios vamos ter em cada camada;
  91. 91. Globalcode – Open4education Definir o formato da rede Podemos escolher o número de entradas; Podemos escolher o número de saídas; Podemos escolher quantas camadas internas a rede vai ter; Podemos escolher quantos neurônios vamos ter em cada camada; Podemos escolher o tipo de neurônio que vamos usar na rede;
  92. 92. Globalcode – Open4education 3 camadas 1 53 2 64 Entrada 1 Entrada 2 Saída 2 Saída 1 W2,4 W3,5W1,3 W4,6
  93. 93. Globalcode – Open4education Arbitrar valores para as sinapses... Conexão Valor do peso W1,3 0,3 W1,4 0,2 W2,3 0,7 W2,4 0,1 W3,5 0,5 W3,6 0,8 W4,5 0,3 W4,6 0,4
  94. 94. Globalcode – Open4education 3 camadas 1 53 2 640,5 W2,4 W3,5W1,3 W4,6 Conexão Valor do peso W1,3 0,3 0,9
  95. 95. Globalcode – Open4education 3 camadas 1 53 2 64 0,9 0,5 W2,4 W3,50,3 W4,6 Conexão Valor do peso W1,3 0,3
  96. 96. Globalcode – Open4education Indo para frente (feedforward)
  97. 97. Globalcode – Open4education 3 camadas 1 53 2 640,5 0,1 0,50,3 0,4 0,9 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  98. 98. Globalcode – Open4education 3 camadas 1 53 2 64 0,3 0,9 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  99. 99. Globalcode – Open4education 3 camadas 1 53 2 64 0,3 * 0,9 0,9 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  100. 100. Globalcode – Open4education 3 camadas 1 53 2 64 0,27 0,9 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  101. 101. Globalcode – Open4education 3 camadas 1 53 2 640,5 0,1 * 0,5 0,27 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  102. 102. Globalcode – Open4education 3 camadas 1 53 2 640,5 0,05 0,27 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  103. 103. Globalcode – Open4education 3 camadas X = (0,27+0,35) X = 0,62 Saída(n3) = 1/(1+exp(-X)) Saída(n3) = 0,650219 X = (0,18+0,05) X = 0,23 Saída(n4) = 1/(1+exp(-X)) Saída (n4) = 0,557248
  104. 104. Globalcode – Open4education 3 camadas 1 53 2 64 0,5*0,650219 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  105. 105. Globalcode – Open4education 3 camadas 1 53 2 64 0,325109 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  106. 106. Globalcode – Open4education 3 camadas 1 53 2 64 0,4*0,5547248 0,325109 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  107. 107. Globalcode – Open4education 3 camadas 1 53 2 64 0,222899 0,325109 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  108. 108. Globalcode – Open4education 3 camadas X = (0,325109+0,167174) X = 0,492284 Saída(n5) = 1/(1+exp(-X)) Saída(n5) = 0,620644 X = (0,520175+0,222899) X = 0,743074 Saída(n6) = 1/(1+exp(-X)) Saída(n6) = 0,677668
  109. 109. Globalcode – Open4education 3 camadas 1 53 2 640,5 0,1 0,50,3 0,4 0,620644 0,677668 0,9 Valor de entrada na rede Valor de entrada no neurônio intermediário Valor de saída do neurônio intermediário Pesos Valor de saída da rede
  110. 110. Globalcode – Open4education Qual foi o erro ? Variável Valor Medido Valor calculado Erro Saída 1 0,8 0,620644 0,179356 Saída 2 0,7 0,677668 0,022332
  111. 111. Globalcode – Open4education E agora, para onde vamos ?
  112. 112. Globalcode – Open4education E agora, para onde vamos ? A rede está calculando uma função complexa;
  113. 113. Globalcode – Open4education E agora, para onde vamos ? A rede está calculando uma função complexa; Nós não sabemos que função é essa;
  114. 114. Globalcode – Open4education E agora, para onde vamos ? A rede está calculando uma função complexa; Nós não sabemos que função é essa; Depois que definimos o formato da rede, nós podemos apenas alterar os valores das sinapses;
  115. 115. Globalcode – Open4education E agora, para onde vamos ? A rede está calculando uma função complexa; Nós não sabemos que função é essa; Depois que definimos o formato da rede, nós podemos apenas alterar os valores das sinapses; Queremos minimizar o erro, pois desta forma a máquina vai dar respostas mais próximas com os dados coletados da realidade;
  116. 116. Globalcode – Open4education E agora, para onde vamos ? A rede está calculando uma função complexa; Nós não sabemos que função é essa; Depois que definimos o formato da rede, nós podemos apenas alterar os valores das sinapses; Queremos minimizar o erro, pois desta forma a máquina vai dar respostas mais próximas com os dados coletados da realidade; Mas como podemos minimizar uma função que não conhecemos ?
  117. 117. Globalcode – Open4education Criando a função de erro
  118. 118. Globalcode – Open4education Função erro Valor calculado (c) Valor medido (m) Erro (m – c) Erro |m – c| Erro (m – c)2 0,4 0,5 0,1 0,1 0,01 0,8 0,7 -0,1 0,1 0,01 1,0 1,0 0 0 0 Somatório 0 0,2 0,02
  119. 119. Globalcode – Open4education Função erro Valor calculado (c) Valor medido (m) Erro (m – c) Erro |m – c| Erro (m – c)2 0,4 0,5 0,1 0,1 0,01 0,8 0,7 -0,1 0,1 0,01 1,0 1,0 0 0 0 Somatório 0 0,2 0,02 O somatório de 0 dá a entender que não há erros
  120. 120. Globalcode – Open4education Função erro Valor calculado (c) Valor medido (m) Erro (m – c) Erro |m – c| Erro (m – c)2 0,4 0,5 0,1 0,1 0,01 0,8 0,7 -0,1 0,1 0,01 1,0 1,0 0 0 0 Somatório 0 0,2 0,02 Esta função apresenta uma descontinuidade perto do mínimo, o que não a torna uma boa escolha para o método do gradiente descendente
  121. 121. Globalcode – Open4education Função erro Valor calculado (c) Valor medido (m) Erro (m – c) Erro |m – c| Erro (m – c)2 0,4 0,5 0,1 0,1 0,01 0,8 0,7 -0,1 0,1 0,01 1,0 1,0 0 0 0 Somatório 0 0,2 0,02 A matemática usada por esta função no método do gradiente descendente é fácil; O função de erro se torna suave e contínua fazendo o método funcionar bem; O gradiente vai ficando menor a medida que se aproxima do mínimo
  122. 122. Globalcode – Open4education Gradiente Descendente
  123. 123. Globalcode – Open4education Gradiente descendente
  124. 124. Globalcode – Open4education Gradiente descendente
  125. 125. Globalcode – Open4education Gradiente descendente
  126. 126. Globalcode – Open4education Gradiente descendente
  127. 127. Globalcode – Open4education Gradiente descendente
  128. 128. Globalcode – Open4education O que acontece se eu começar a descida de outro lugar ?
  129. 129. Globalcode – Open4education Gradiente descendente
  130. 130. Globalcode – Open4education Gradiente descendente
  131. 131. Globalcode – Open4education Posso demorar mais a chegar ao fundo ou posso ficar preso em um fundo local ...
  132. 132. Globalcode – Open4education Gradiente descendente
  133. 133. Globalcode – Open4education Gradiente descendente
  134. 134. Globalcode – Open4education Mas, o que tem isso a ver com a nossa rede ?
  135. 135. Globalcode – Open4education Gradiente descendente Errodoneurônio
  136. 136. Globalcode – Open4education Gradiente descendente Valor do erro para os pesos atuais Errodoneurônio
  137. 137. Globalcode – Open4education Gradiente descendente Valor do erro para os pesos atuais Gradiente das possíveis direções a serem tomadas Errodoneurônio
  138. 138. Globalcode – Open4education Mas como propagar os erros de volta para serem usados no método do gradiente ?
  139. 139. Globalcode – Open4education 1 2 3 Como propagar os erros de volta ?
  140. 140. Globalcode – Open4education 1 2 3 Como propagar os erros de volta ?
  141. 141. Globalcode – Open4education 1 2 3 Como propagar os erros de volta ?
  142. 142. Globalcode – Open4education 1 2 3 Como propagar os erros de volta ?
  143. 143. Globalcode – Open4education 1 2 3 Como propagar os erros de volta ?
  144. 144. Globalcode – Open4education Voltando com o erro (backpropagation)
  145. 145. Globalcode – Open4education Vamos ver como retornar o erro através de um exemplo prático...
  146. 146. Globalcode – Open4education Error backpropagation 1 53 2 640,5 0,1 0,50,3 0,4 Erro = 0,179356 Erro = 0,022332 0,9 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro
  147. 147. Globalcode – Open4education Error backpropagation 1 53 2 640,5 0,9 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 0,1 0,50,3 0,4 Pesos Valor de saída da rede Valor do erro
  148. 148. Globalcode – Open4education Error backpropagation 1 53 2 64 0,5/(0,5+0,8) Pesos Valor de saída da rede Valor do erro Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Proporção do erro a ser recebida
  149. 149. Globalcode – Open4education Error backpropagation 1 53 2 64 0,384615 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida
  150. 150. Globalcode – Open4education Error backpropagation 1 53 2 64 0,384615 * 0,179356 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida
  151. 151. Globalcode – Open4education Error backpropagation 1 53 2 64 0,068983 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida Erro entrando no neurônio intermediário
  152. 152. Globalcode – Open4education Error backpropagation 1 53 2 64 Erro(neurônio 3) = 0,068983 + 0,013742 0,068983 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida Erro entrando no neurônio intermediário
  153. 153. Globalcode – Open4education Error backpropagation 1 53 2 64 Erro(neurônio 3) = 0,082725 0,068983 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida Erro entrando no neurônio intermediário
  154. 154. Globalcode – Open4education Error backpropagation 1 53 2 64 Erro(neurônio 4) = 0,089628 Erro(neurônio 3) = 0,082725 Erro = 0,179356 Erro = 0,022332 0,620644 0,677668 Pesos Valor de saída da rede Valor do erro Proporção do erro a ser recebida Erro entrando no neurônio intermediário
  155. 155. Globalcode – Open4education Para calcular o gradiente, preciso saber como o erro varia de acordo com os valores das sinapses.
  156. 156. Globalcode – Open4education Gradiente jk k kjk W Vc Vc E W E        . Como o erro varia de acordo com as sinapses
  157. 157. Globalcode – Open4education Gradiente jk k kjk W Vc Vc E W E        . Como o erro varia de acordo com o valor calculado
  158. 158. Globalcode – Open4education Gradiente jk k kjk W Vc Vc E W E        . Como o valor calculado varia de acordo com as sinapses
  159. 159. Globalcode – Open4education Gradiente Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem
  160. 160. Globalcode – Open4education Vamos ver um exemplo calculando o gradiente da sinapse entre os neurônios 3 e 5
  161. 161. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 Err = 0,179356 Erro do neurônio de destino= 0,179356
  162. 162. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,325109 Err = 0,179356 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283
  163. 163. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,325109 Err = 0,179356 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644
  164. 164. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,325109 Err = 0,179356 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356
  165. 165. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Saída do neurônio de origem = 0,650219 0,650219 Err = 0,179356 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356
  166. 166. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem
  167. 167. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356
  168. 168. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283
  169. 169. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644
  170. 170. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356
  171. 171. Globalcode – Open4education Fazendo o cálculo Gradiente = -erro * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  172. 172. Globalcode – Open4education Fazendo o cálculo Gradiente = - 0,179356 * função logística (entrada do neurônio de destino) * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  173. 173. Globalcode – Open4education Fazendo o cálculo Gradiente = - 0,179356 * 0,620644 * (1- função logística(entrada do neurônio de destino) * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  174. 174. Globalcode – Open4education Fazendo o cálculo Gradiente = - 0,179356 * 0,620644 * 0,379356 * saída do neurônio de origem Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  175. 175. Globalcode – Open4education Fazendo o cálculo Gradiente = - 0,179356 * 0,620644 * 0,379356 * 0,650219 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  176. 176. Globalcode – Open4education Fazendo o cálculo Gradiente = - 0,027458 Erro do neurônio de destino= 0,179356 Entrada no neurônio de destino = 0,325109 + 0,167174 = 0,492283 Função logística (Entrada no neurônio de destino) = 0,620644 1 - Função logística (Entrada no neurônio de destino) = 0,379356 Saída do neurônio de origem = 0,650219
  177. 177. Globalcode – Open4education Atualizando a sinapse Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente)
  178. 178. Globalcode – Open4education Atualizando a sinapse Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente) Nova sinapse = 0,5 – (0,1 * (-0,027458))
  179. 179. Globalcode – Open4education Atualizando a sinapse Nova sinapse = antiga sinapse – (taxa de aprendizagem * gradiente) Nova sinapse = 0,5 – (0,1 * (-0,027458)) Nova sinapse = 0,5027458
  180. 180. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,5027458 Sinapse
  181. 181. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,4002718 0,5027458 Sinapse
  182. 182. Globalcode – Open4education Fazendo o cálculo 1 53 2 64 0,3016933 0,1011057 0,4002718 0,5027458 Sinapse
  183. 183. Globalcode – Open4education Será que o erro diminuiu ?
  184. 184. Globalcode – Open4education Calculando a nova saída ... 1 53 2 640,5 0,9 0,621468 0,677876 Erro = 0,178532 Erro = 0,022124 0,3016933 0,1011057 0,4002718 0,5027458 Pesos Valor de saída da rede Valor do erro
  185. 185. Globalcode – Open4education O erro diminuiu ? Antes de corrigir Após corrigir Entrada 1 0,9 0,9 Saída 1 0,620644 0,621468 Valor esperado 0,8 0,8 Erro 0,179356 0,178532 1saídaE = Erro antigo – Erro novo 1saídaE = 0,179356 – 0,178532 1saídaE = 0,000824
  186. 186. Globalcode – Open4education O erro diminuiu ? Antes de corrigir Após corrigir Entrada 2 0,5 0,5 Saída 2 0,677668 0,677878 Valor esperado 0,7 0,7 Erro 0,022332 0,022124 2saídaE = Erro antigo – Erro novo 2saídaE = 0,022322 – 0,022124 2saídaE = 0,000198
  187. 187. Globalcode – Open4education Como treinar a rede ?
  188. 188. Globalcode – Open4education Cross - validation Holdout; K-fold; Leave one out; (https://pt.wikipedia.org/wiki/Valida%C3%A7%C3%A3o_cruzada)
  189. 189. Globalcode – Open4education Holdout Observação Atributo 1 Atributo 2 Atributo 3 Classe 1 Rápido 30 Laranja A 2 Lento 5 Vermelho B 3 Rápido 35 Laranja A 4 Lento 100 Azul C 5 Rápido 200 Verde D ... 98 Rápido 170 Verde D 99 Lento 120 Azul C 100 Lento 9 vermelho B
  190. 190. Globalcode – Open4education Holdout Observação Atributo 1 Atributo 2 Atributo 3 Classe 1 Rápido 30 Laranja A 2 Lento 5 Vermelho B 3 Rápido 35 Laranja A 4 Lento 100 Azul C 5 Rápido 200 Verde D ... 98 Rápido 170 Verde D 99 Lento 120 Azul C 100 Lento 9 vermelho B Usamos os 80 primeiros para treinar
  191. 191. Globalcode – Open4education Holdout Observação Atributo 1 Atributo 2 Atributo 3 Classe 1 Rápido 30 Laranja A 2 Lento 5 Vermelho B 3 Rápido 35 Laranja A 4 Lento 100 Azul C 5 Rápido 200 Verde D ... 98 Rápido 170 Verde D 99 Lento 120 Azul C 100 Lento 9 vermelho B Usamos os 20 últimos para validar o treinamento
  192. 192. Globalcode – Open4education O que mais eu preciso saber ?
  193. 193. Globalcode – Open4education Observando exemplos ... Suponha que tenhamos os seguintes exemplos: Evento Físico em Estudo Entrada 1 Entrada 2 Saída 1 Saída 2 Variável Valor Entrada 1 30 Entrada 2 17 Saída 1 52 Saída 2 43
  194. 194. Globalcode – Open4education Parece que a rede não está funcionando ... Se a função de ativação do neurônio de saída é dada por uma função logística que tem resultados entre 0 e 1, então a saída da rede nunca vai ser um número maior que 1 como 52 ou 43 !!! Variável Valor Entrada 1 30 Entrada 2 17 Saída 1 52 Saída 2 43
  195. 195. Globalcode – Open4education Parece que a rede não está funcionando ... Se a função de ativação dos neurônios é uma função logística que varia entre 0 e 1, colocando valores grandes como 30 e 17 vão saturar o neurônio rapidamente !!! Variável Valor Entrada 1 30 Entrada 2 17 Saída 1 52 Saída 2 43
  196. 196. Globalcode – Open4education Parece que a rede não está funcionando ... Preste atenção aos seus dados ! Será que a rede não está funcionando ou seus dados tem que ser tratados ? Evento Físico em Estudo Entrada 1 Entrada 2 Saída 1 Saída 2 Dados ruins Saídas ruins
  197. 197. Globalcode – Open4education Para saber mais ... Twitter: @jacktecnologia
  198. 198. Globalcode – Open4education Obrigado !!! Twitter: @jacktecnologia
  199. 199. Globalcode – Open4education Figuras http://www.clipshrine.com/Ladybird-17535- medium.html http://www.pngall.com/caterpillar-png https://commons.wikimedia.org/wiki/File:Derived_N euron_schema_with_no_labels.svg

×