Redes Neurais Artificiais Marcelo K. Albertini 24 de Julho de 2014
2/34 Conteúdo Perceptron Gradiente descendente Redes multicamadas Retropropagação de erros
3/34 Modelos conexionistas Humanos Tempo de ativação neural 0.001s Número de neurônios 10 10 Conexões por neurônio 10 4a5 Tempo de reconhecimento de cenas 0.1s Computação paralela massiva
Exemplo: carro autônomo 4/34
5/34 Propriedades de redes neurais Muitas unidades de ativação Muitas conexões ponderadas entre unidades Processo altamente paralelizado Ênfase no ajuste de pesos automático
6/34 Perceptron 1 w 0 x 1 w 1 x 2 w 2.. x n w n entradas pesos Função de ativação Saída: o(x 1,..., x n) { 1 se w0 + w o(x 1,..., x n ) = 1 x 1 +... + w n x n > 0 1 caso contrário. Na notação simplificada vetorial: { 1 se w x > 0 o( x) = 1 caso contrário.
Superfície de decisão de um perceptron + + + + + + + + +? + + Representa algumas funções úteis Quais pesos representam g(x 1, x 2 ) = AND(x 1, x 2 )? Mas algumas funções não são representáveis Todas as não linearmente separáveis Portanto, queremos redes de perceptrons para representar dados não linearmente separáveis 7/34
8/34 Treino do Perceptron w i w i + w i onde w i = η(t o)x i Onde: t = c( x) é valor-alvo o é a saída do perceptron η é uma constante pequena (exemplo 0.1) chamada de taxa de aprendizado
9/34 Regra de treino do Perceptron Possível provar convergência se Dados de treino são linearmente separáveis η é suficientemente pequeno
10/34 Gradiente descendente Considere o caso simplificado unidade linear, onde o = w 0 + w 1 x 1 +... + w n x n Objetivo é aprender w i que minimiza o erro quadrático E[ w] 1 (t d o d ) 2 2 d D onde D é conjunto de exemplos de treino, t d é o valor de treino para o exemplo d e o d o valor obtido pelo perceptron.
Figura gradiente descendente 0.5 0.4 E[w] 0.3 0.2 0.1 0 0 0.2 0.4 w0 0.6 0.8 1 0 0.2 0.4 0.6 0.8 w1 1 11/34
12/34 Cálculo do gradiente Gradiente E[ w] [,,..., ] w 0 w 1 w n Regra de treino w = η E[ w] Isto é w i = η
13/34 Gradiente descendente = 1 w 2 d (t d o d ) 2 i
13/34 Gradiente descendente = 1 w 2 d (t d o d ) 2 i = 1 2 d (t d o d ) 2
13/34 Gradiente descendente = 1 w 2 d (t d o d ) 2 i = 1 2 d (t d o d ) 2 = 1 2 d 2(t d o d ) (t d o d )
Gradiente descendente = 1 w 2 d (t d o d ) 2 i = 1 2 d (t d o d ) 2 = 1 2 d 2(t d o d ) (t d o d ) = d (t d o d ) (t d w x d ) = d w (t d o d )( x i,d ) i 13/34
14/34 Gradiente descendente Gradiente(exemplosDeTreino, eta) Inicializar w i com valor aleatório pequeno Fazer até convergir (ou treinar demais) 1. Inicializar cada w i para zero 2. Para cada x, t de exemplosdetreino fazer 2.1 Apresentar x ao neurônio e calcular a saída o 2.2 Para cada peso w i fazer w i w i + η(t o)x i 3. Para cada w i fazer w i w i + w i
15/34 Resumo Treino do perceptron é garantido se Exemplos são linearmente separáveis Taxa de aprendizado η suficientemente pequena é usada Treino do perceptron com gradiente descendente Convergência para hipótese de menor erro quadrático Mesmo quando dados de treino tem ruído Mesmo quando dados não são separáveis por H
16/34 Treino com gradiente: em lote vs. incremental Modo em lote Fazer até convergir 1. Computar o gradiente E D [ w] 2. w w η E D [ w] E D [ w] 1 (t d o d ) 2 2 d D
17/34 Gradiente descendente: modo incremental Modo incremental Fazer até convergir Para cada exemplo de treino d D 1. Computar o gradiente E d [ w] 2. w w η E d [ w] E d [ w] 1 2 (t d o d ) 2 Gradiente descendente incremental pode aproximar o modo em lote se η for pequeno o suficiente.
18/34 Redes multi-camadas de unidades sigmóides Neural net and traditional classifiers, WY Huang, RP Lippmann - Neural information processing systems, 1988
19/34 Unidade sigmóide 1 w 0 x 1 w 1 x 2 w 2.. x n w n entradas pesos σ(x) = 1 1+exp x Propriedade útil Função de ativação sigmóide Saída: o = σ(ganho) = ganho = n t=0 w ix i é a função de transferência sigmóide 1 1+exp ganho σ(x) x = σ(x)(1 σ(x))
20/34 Podemos derivar regras de gradiente descendente para Uma unidade sigmóide Rede multi-camadas de unidades sigmóides Retroprogação de erros
21/34 Gradiente de erro para uma unidade sigmóide ganho = n t=0 w ix i o d = σ(ganho d ) é a saída da função de transferência do neurônio respondendo ao d-ésimo exemplo no conjunto D t d é a resposta esperada para o d-ésimo exemplo E é o erro da rede t d não varia de acordo com w i, então t d = 0 = 1 w 2 d D (t d o d ) 2,usa regra da soma e obtém: i
21/34 Gradiente de erro para uma unidade sigmóide ganho = n t=0 w ix i o d = σ(ganho d ) é a saída da função de transferência do neurônio respondendo ao d-ésimo exemplo no conjunto D t d é a resposta esperada para o d-ésimo exemplo E é o erro da rede t d não varia de acordo com w i, então t d = 0 = 1 w 2 i = 1 2 d D (t d o d ) 2,usa regra da soma e obtém: d (t d o d ) 2,usa regra da cadeia e obtém:
21/34 Gradiente de erro para uma unidade sigmóide ganho = n t=0 w ix i o d = σ(ganho d ) é a saída da função de transferência do neurônio respondendo ao d-ésimo exemplo no conjunto D t d é a resposta esperada para o d-ésimo exemplo E é o erro da rede t d não varia de acordo com w i, então t d = 0 = 1 w 2 d D (t d o d ) 2,usa regra da soma e obtém: i = 1 2 = 1 2 d (t d o d ) 2,usa regra da cadeia e obtém: d 2(t d o d ) (t d o d ), aplica derivada de constante e obtém:
21/34 Gradiente de erro para uma unidade sigmóide ganho = n t=0 w ix i o d = σ(ganho d ) é a saída da função de transferência do neurônio respondendo ao d-ésimo exemplo no conjunto D t d é a resposta esperada para o d-ésimo exemplo E é o erro da rede t d não varia de acordo com w i, então t d = 0 = 1 w 2 d D (t d o d ) 2,usa regra da soma e obtém: i = 1 2 = 1 2 d (t d o d ) 2,usa regra da cadeia e obtém: d 2(t d o d ) (t d o d ), aplica derivada de constante e obtém: = ( ) d (t d o d ) o d w,usa regra da cadeia e obtém: i
Gradiente de erro para uma unidade sigmóide ganho = n t=0 w ix i o d = σ(ganho d ) é a saída da função de transferência do neurônio respondendo ao d-ésimo exemplo no conjunto D t d é a resposta esperada para o d-ésimo exemplo E é o erro da rede t d não varia de acordo com w i, então t d = 0 = 1 w 2 d D (t d o d ) 2,usa regra da soma e obtém: i = 1 2 = 1 2 d (t d o d ) 2,usa regra da cadeia e obtém: d 2(t d o d ) (t d o d ), aplica derivada de constante e obtém: = ( ) d (t d o d ) o d w,usa regra da cadeia e obtém: i = d o d ganho d (t d o d ) ganho d 21/34
22/34 Da equação que relaciona o erro E e os pesos da rede w i : Falta obter = d o d ganho d o d ganho d (t d o d ) ganho d e ganho d
22/34 Da equação que relaciona o erro E e os pesos da rede w i : Falta obter = d o d ganho d o d ganho d (t d o d ) ganho d e ganho d Lembrando que o d = σ(ganho d ) e σ(x) x o d ganho d = σ(ganho d) ganho d = o d (1 o d ) = σ(x)(1 σ(x)), temos:
22/34 Da equação que relaciona o erro E e os pesos da rede w i : Falta obter = d o d ganho d o d ganho d (t d o d ) ganho d e ganho d Lembrando que o d = σ(ganho d ) e σ(x) x o d ganho d = σ(ganho d) ganho d = o d (1 o d ) = σ(x)(1 σ(x)), temos: E lembrando que ganho d = w x d, temos do segundo termo: ganho d = w x d = x i,d
22/34 Da equação que relaciona o erro E e os pesos da rede w i : Falta obter = d o d ganho d o d ganho d (t d o d ) ganho d e ganho d Lembrando que o d = σ(ganho d ) e σ(x) x o d ganho d = σ(ganho d) ganho d = o d (1 o d ) = σ(x)(1 σ(x)), temos: E lembrando que ganho d = w x d, temos do segundo termo: ganho d = w x d = x i,d Então, a parte da culpa do erro E relativa ao peso w i é = (t d o d )o d (1 o d )x i,d d D
23/34 Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k
23/34 Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k = k Saidas(j) δ k ganho k
23/34 Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k = k Saidas(j) δ k ganho k = k Saidas(j) δ k ganho k o j o j
23/34 Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k = k Saidas(j) δ k ganho k = k Saidas(j) δ k ganho k o j o j = k Saidas(j) δ kw kj o j
23/34 Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k = k Saidas(j) δ k ganho k = k Saidas(j) δ k ganho k o j o j = k Saidas(j) δ kw kj o j = k Saidas(j) δ kw kj o j (1 o j )
Definição: δ k = ganho k será a parte do erro passada às camadas internas δ k é obtido desde a última camada até a de entrada = k Saidas(j) ganho k ganho k = k Saidas(j) δ k ganho k = k Saidas(j) δ k ganho k o j o j = k Saidas(j) δ kw kj o j = k Saidas(j) δ kw kj o j (1 o j ) δ j = = o j (1 o j ) δ k w kj k Saidas(j) 23/34
24/34 Algoritmo de retropagação Inicializar todos os pesos para valores aleatórios pequenos. Até convergência, faça para cada exemplo de treino 1. Apresente exemplo à rede e compute a saída da rede 2. Para cada unidade de saída k 3. Para cada unidade interna h δ k o k (1 o k )(t k o k ) δ h o h (1 o h ) 4. Atualizar cada peso da rede w ij onde w ij = ηδ j x ij k saidas w ij w ij + w ij δ k w hk
25/34 Mais em retroprogação Gradiente descendente sobre toda rede de vetores de pesos Generalizável para grafos direcionados (redes neurais recorrentes) Encontra mínimo local Funciona bem na prática ao rodar várias vezes Frequentemente inclui um momentum do peso α w i,j (n) = ηδ j x i,j + α w i,j (n 1) Minimiza erro nos exemplos de treino necessário cuidado para evitar overfitting Treino pode ser lento, mas usar a rede treinada é rápido
26/34 Capacidade de representação de redes neurais Funções booleanas Toda função booleana pode ser representada por uma rede com apenas uma camada interna Mas pode ser necessário um número exponencial de unidades internas em relação ao número de entradas Funções contínuas Toda função contínua compacta pode ser aproximada com erro arbitrariamente pequeno por rede com uma camada interna Qualquer função pode ser aproximada com acurácia arbitrária por uma rede com duas camadas internas
27/34 Evitando overfitting: opções Penalizar pesos grandes: E( w) 1 2 d D k saidas(t kd o kd ) 2 + γ i,j w 2 ji Treino em inclinações alvo e em valores: E( w) 1 2 d D k saidas (t kd o + kd) 2 + µ j entradas ( t kd x j d o kd x j d ) 2 Compartilhamento de pesos Critério de parada prematura
28/34 Precursor de deep learning Figura: Fonte: Neural net and traditional classifiers de Huang& Lippmann (1988).
29/34 Deep learning Redes com várias camadas intermediárias Objetivo: atingir níveis mais profundos de abstração Custo de treino relativamente alto Uso com grandes bases de dados Resultados empíricos e pouco teóricos Referência: Deep Learning Tutorial: deeplearning.net/tutorial/deeplearning.pdf 1. Para cada camada 1.1 Pré-treinar separadamente com algoritmo não supervisionado 1.2 Empilhar nas camadas previamente treinadas e refinar com retropropagação Uso de técnicas para melhoria do aprendizado.
30/34 Técnicas: inicialização Para usar tanh como função de ativação, inicializar pesos no seguinte intervalo: 6 6 [, ] fan in + fan out fan in + fan out Facilita propagação e correção de erros.
31/34 Técnicas: taxa de aprendizado Varredura em 10 1, 10 2,..., e concentrar no intervalo de menor erro de validação µ Descrescente 0 1+d t, com µ 0 inicial e d sendo uma constante de decréscimo
32/34 Técnicas: atualização de pesos em minibatch Intermediário entre estocástico e em lote. Estimativa grosseira do gradiente. Ajuda a reduzir custo computacional. Varia de acordo com o número de épocas usado.
33/34 Parada antes de overfitting Usar conjunto de validação. Verificar periodicamente o desempenho no conjunto de validação. Quando piorar, pára. Verificar pode envolver usar teste de hipótese ou uma simples comparação.
34/34 Redes neurais: sumário Perceptrons Gradiente descendente Redes multi-camadas Retroprogação de erros Deep learning