Deep Learning

43
1 Exame de Qualificação Doutorando: Rafael Coimbra Pinto Orientador: Paulo Martins Engel

description

Apresentação para o exame de qualificação do doutorado. Tema: Deep Learning.

Transcript of Deep Learning

Page 1: Deep Learning

1

Exame de Qualificação

Doutorando: Rafael Coimbra PintoOrientador: Paulo Martins Engel

Page 2: Deep Learning

2

Exame de Qualificação

● Área: Inteligência Artificial

● Abrangência: Inteligência Computacional

● Profundidade: Redes Neurais

Page 3: Deep Learning

3

Roteiro

● IA x IC

● Redes Neurais

– Perceptron, Adaline, Multi-Layer Perceptron● Autoencoders e Deep Autoencoders

– Sparse Autoencoders, Denoising Autoencoders, Contractive Autoencoders, Convolutive Autoencoders

– Treinamento

– Técnicas de Aceleração

– Aplicações

Page 4: Deep Learning

4

IA x IC

● Divisão mais comum: IC como sub-área da IA

– Ex.: divisão neste exame de qualificação● Também: IC como alternativa à IA

– Ex.: ENIAC, Encontro Nacional de IA E IC

Page 5: Deep Learning

5

IA x IC

Inteligência Artificial Inteligência Computacional

Mais simbólica Mais sub-simbólica

Menos bioinspirada Mais bioinspirada

Mais algoritmos de busca Mais algoritmos numéricos

Mais conhecimento prévio Mais aprendizagem

Mais soluções exatas Mais soluções aproximadas

Mais top-down Mais bottom-up

Mais discreta Mais contínua

Page 6: Deep Learning

6

Inteligência Computacional

● Computação Evolutiva

– Algoritmos genéticos, programação genética, estratégias evolucionárias

● Inteligência Coletiva (Swarm)

– Ant Colony Optimization (ACO), Particle Swarm Optimization (PSO)

● Redes Neurais

Page 7: Deep Learning

7

Redes Neurais

● Algoritmos inspirados no funcionamento do sistema nervoso

● Uma rede neural é uma composição de neurônios interligados de diferentes maneiras

● Cada neurônio é uma unidade de processamento simples

● As ligações entre neurônios (sinapses) podem ter suas forças modificadas (aprendizado)

Page 8: Deep Learning

8

Redes Neurais

● O que faz cada neurônio?

● Como eles são interligados?

● Como ocorre o aprendizado?

● Cada combinação de respostas para estas perguntas resulta em um diferente algoritmo de redes neurais

Page 9: Deep Learning

9

Redes Neurais

● Supervisionadas: regressão e classificação

– Perceptron

– Adaline

– Multi-Layer Perceptron (MLP)● Não Supervisionadas: clustering, redução de

dimensionalidade, filtros

– Self-Organizing Map (SOM)

– Rede de Hopfield

– Máquina de Boltzmann

– (Deep / Stacked) Autoencoder

Page 10: Deep Learning

10

Redes Supervisionadas

● Uma série de pares entrada-saída de exemplos deve ser apresentada à rede

● Sempre que a estimativa da saída da rede para determinada entrada não confere com a saída informada, ocorre aprendizado

● Os pesos da rede devem ser corrigidos de forma que o exemplo seja calculado corretamente nas próximas tentativas

Page 11: Deep Learning

11

Redes Supervisionadas

● Ex.: suponha que os seguintes pares entrada-saída foram apresentados a uma rede neural

1 1, 2 4, 3 9, 4 16, 5 25, 6 36, 7 49, 8 64, 9 81, 10 100● Ao receber o par '5 25', a rede neural deve computar uma saída

para a entrada 5

● Se a saída computada for diferente de 25, deve ocorrer uma alteração nos pesos das conexões da rede neural (aprendizado), para que futuramente a resposta para 5 seja 25

● Também podemos apresentar todos os exemplos e calcular um erro global para fazer os ajustes de pesos (aprendizado em lote)

Page 12: Deep Learning

12

Perceptron

● Recebe como entrada um vetor de valores reais

● Calcula uma combinação linear deles

● Retorna 1 caso o resultado da combinação ultrapasse um determinado limiar e -1 caso contrário

● Portanto, o Perceptron é utilizado em tarefas de classificação

Page 13: Deep Learning

13

Perceptron● O Perceptron pode ser treinado

basicamente de 2 formas:

– Regra do Perceptron: os erros são calculados em relação à saída da rede após a aplicação do limiar

● Convergência garantida apenas se o problema for linearmente separável

– Regra Delta: os erros são calculados antes da aplicação do limiar

● Convergência garantida

Page 14: Deep Learning

14

Adaline

● Similar ao Perceptron, porém sem aplicação do limiar

● Portanto, pode ser usada para regressão linear

● Usa-se a regra delta para a aprendizagem

● Convergência garantida

Page 15: Deep Learning

15

Limitações

● Tanto o Perceptron como a rede Adaline são limitados a problemas linearmente separáveis

– Não resolvem o XOR, por exemplo

Page 16: Deep Learning

16

Multi-Layer Perceptron

● Podemos ligar vários perceptrons/adalines para obter um Perceptron Multi-Camadas, capaz de resolver problemas não-linearmente separáveis

● As camadas intermediárias (ocultas) aprendem representações das entradas

Page 17: Deep Learning

17

Backpropagation

● O problema é que só temos os valores de saída para a camada de saída em nossos exemplos, e portanto não temos como treinar as camadas ocultas com os mesmos algoritmos usados no perceptron ou na rede adaline

● A solução está em propagar o erro das saídas para as outras camadas através do algoritmo Backpropagation

Page 18: Deep Learning

18

Backpropagation

● 2 problemas:

– O gradiente do erro se dilui ao longo das camadas, portanto redes de muitas camadas acabam sendo inviáveis

– Este algoritmo pode ficar preso em mínimos locais

Page 19: Deep Learning

19

Autoencoder

● Rede não-supervisionada (ou auto-supervisionada) que tenta aprender um mapeamento de suas entradas para elas próprias (função identidade)

● Para que??

● Ao colocar uma camada oculta menor que a entrada, a rede é forçada a criar uma representação compacta do espaço de entrada

– Filtragem e redução de dimensionalidade

Page 20: Deep Learning

20

Autoencoder

● Em um exemplo clássico, construímos um autoencoder com 8 entradas e 3 neurônios na camada oculta

● Os exemplos de treinamento consistem em 8 bits onde apenas um deles é 1 e o restante é 0 (8 exemplos portanto)

● O autoencoder aprende a representar os 8 exemplos com codificação binária de 3 bits, sem nenhuma supervisão

Page 21: Deep Learning

21

Autoencoder

● O número de neurônios na camada oculta deve ser menor que a dimensão de entrada para evitar que a rede aprenda a solução trivial, ou seja, simplesmente copiar a entrada

● Com menos neurônios para codificar a entrada, a rede é forçada a aprender uma representação compacta do espaço de entrada

Page 22: Deep Learning

22

Denoising Autoencoder

● Uma alternativa a criar um gargalo nas camadas ocultas está em aplicar ruído nas entradas e fazer a rede reconstruir a entrada original

Page 23: Deep Learning

23

Sparse Autoencoder

● Outra possibilidade está em restringir as ativações da camada oculta

● Podemos modificar a função de custo da rede para incluir um termo que penaliza muitas ativações nos neurônios

● Como resultado, uma codificação esparsa é aprendida (poucos neurônios ativados por vez), mesmo que a camada oculta seja maior que a dimensionalidade de entrada, evitando a solução trivial

Page 24: Deep Learning

24

Contractive Autoencoder

● Ainda outra alternativa está em modificar a função de custo da rede para minimizar a matriz jacobiana das ativações da camada oculta em relação às entradas

● Equivale a dizer que pequenas perturbações na entrada devem produzir pequenas perturbações na codificação

● É um equivalente determinístico ao Denoising Autoencoder

● O resultado também é muito similar ao Sparse Autoencoder

Page 25: Deep Learning

25

Convolutional Autoencoder

● Podemos utilizar compartilhamento de pesos para reduzir o número de parâmetros no autoencoder e ao mesmo tempo explorar conhecimento prévio dos problemas

● Por exemplo, podemos trabalhar com imagens de tamanho 32x32 utilizando pequenas regiões 3x3 onde todas utilizam os mesmos pesos, efetivamente reduzindo a dimensão de entrada de 1024 para 9

Page 26: Deep Learning

26

Convolutional Autoencoder

Page 27: Deep Learning

27

Pooling

● Redes convolutivas também possuem camadas de pooling que reduzem a dimensionalidade das entradas e também deixam a rede mais robusta a transformações espaciais (mais invariante)

● A camada possui pesos fixos e realiza processamento mais 'hard-wired' como reduzir as saídas de um conjunto de neurônios a um único valor que pode ser o máximo do conjunto, a média, a norma, entre outros

Page 28: Deep Learning

28

Deep Autoencoder

● Um Deep Autoencoder ou Stacked Autoencoder é a ligação de vários autoencoders em série

● O código gerado por um é repassado como entrada para o seguinte

● Qualquer variante do autoencoder pode ser utilizada

Page 29: Deep Learning

29

Deep Autoencoder

● Cada camada abstrai um pouco a camada anterior, criando representações de alto nível

● Isso facilita o trabalho de camadas superiores, pois elas passam a trabalhar sobre conceitos de mais alto nível

● Ex.: pixels → linhas → formas → objetos

Page 30: Deep Learning

30

Treinamento

● Podemos treinar o deep autoencoder normalmente com backpropagation...

– ...mas caímos no problema dos gradientes diluídos

– O treinamento fica demorado ou mesmo inviável● A solução desenvolvida recentemente está em treinar

cada camada como um autoencoder isolado, o que reduz o caminho do gradiente para uma única camada

● Com isso, os deep autoencoders se tornaram o estado-da-arte em rede neurais, batendo inúmeros recordes em diversos problemas

Page 31: Deep Learning

31

Treinamento

Page 32: Deep Learning

32

Camada Supervisionada

● Um deep autoencoder também pode ser usado de forma supervisionada ao adicionar uma camada de saída após a última camada de codificação

● O treinamento pode ser feito em 2 etapas: primeiro de forma não-supervisionada, ignorando a camada de saída, e após de forma supervisionada

– Esta técnica tem a vantagem de configurar os pesos da rede já em regiões promissoras antes de iniciar o backpropagation, reduzindo as chances de mínimos locais

– Outra vantagem está no uso reduzido de exemplos rotulados, que só são necessários na etapa supervisionada final

Page 33: Deep Learning

33

Implementação em GPU

● Deep Autoencoders, assim como a maioria dos tipos de redes neurais, dependem fortemente de operações matriciais

● Placas de vídeo (GPUs) são propícias para executar estes tipos de operações com altíssima velocidade

● Deep Autoencoders foram implementados em GPUs, obtendo um aumento de velocidade de, no mínimo, 2x

Page 34: Deep Learning

34

Dropout

● A cada exemplo apresentado para a rede, podemos ignorar neurônios da camada oculta aleatoriamente

● Isto faz com que, em uma rede com H neurônios, tenhamos 2H modelos diferentes, onde cada exemplo tem seu próprio modelo (bagging)

● Todos modelos compartilham pesos, o que resulta em regularização melhor que as vistas anteriormente

● O treinamento também fica mais rápido

Page 35: Deep Learning

35

Aplicações

● Recentemente uma aplicação desenvolvida por Andrew Ng e sua equipe no Google virou notícia: a rede neural aprendeu a identificar gatos em vídeos do YouTube (entre outras categorias)

– A rede era um deep sparse autoencoder massivo (1bi de pesos) que recebia quadros aleatórios de vídeos aleatórios do YouTube (total de 10M imagens) e aprendia conceitos de forma não-supervisionada

– Ao inspecionar o que cada neurônio havia aprendido, percebeu-se que um deles era sensível a imagens de gatos

– Usada como inicialização dos pesos para um classificador com backpropagation, resultou em 15% de acurácia no dataset Imagenet (recorde atual)

Page 36: Deep Learning

36

Aplicações● Hashing semântico de documentos● Cada documento recebe um endereço de acordo com o

seu conteúdo, e documentos similares recebem códigos similares

● Ao utilizar uma camada oculta com apenas 2 neurônios para codificação, podemos visualizar os documentos em um gráfico 2D

Page 37: Deep Learning

37

Aplicações

● Reconhecimento de placas de trânsito

● Acurácia de 98.52% com uma única rede e 99.46% com 5 redes

Page 38: Deep Learning

38

Aplicações

● Reconhecimento de fala

“We apply the recently proposed Context-Dependent Deep-Neural-Network HMMs, or CD-DNN-HMMs, to speech-to-text transcription. For single-pass speaker-independent recognition on the RT03S Fisher portion of phone-call transcription bench-mark (Switchboard), the word-error rate is reduced from 27.4%, obtained by discriminatively trained Gaussian-mixture HMMs, to 18.5%—a 33% relative improvement.”

Page 39: Deep Learning

39

Aplicações

● Reconhecimento de gestos

● Um deep autoencoder convolutivo com camadas de max-pooling bateu o recorde anterior de 9.52% de erro com 3.23% de erro

Page 40: Deep Learning

40

Aplicações

● Controle baseado em visão

● Tarefa clássica em controle: pêndulo invertido

● Normalmente temos o ângulo do pêndulo medido por sensores

● Neste trabalho, imagens de uma câmera foram utilizadas no lugar do sensor direto

Page 41: Deep Learning

41

Aplicações

● Aprendizado por reforço utilizando visão

● Foi possível ensinar um agente a achar a saída de um labirinto utilizando imagens do mapa em vez de informação direta

Page 42: Deep Learning

42

Conclusões

● Utilizando formas adequadas de regularização dos pesos, deep autoencoders têm produzido os melhores resultados em diversos benchmarks de classificação de padrões

● O processamento pode ser acelerado com diversas técnicas como convolução, implementação em GPU e dropout

● É possível e viável integrar deep autoencoders com aprendizado por reforço

Page 43: Deep Learning

43

Referências● Mitchell, Tom. “Machine Learning” (1997)

● Haykin, Simon. “Redes Neurais – Princípios e Prática” (2002)

● Rifai, Salah, et al. "Contractive auto-encoders: Explicit invariance during feature extraction." Proceedings of the 28th International Conference on Machine Learning (ICML-11). 2011.

● Ng, Andrew. "Cs294a lecture notes: Sparse autoencoder." (2010).

● Vincent, Pascal, et al. "Extracting and composing robust features with denoising autoencoders." Proceedings of the 25th international conference on Machine learning. ACM, 2008.

● Vincent, Pascal, et al. "Stacked denoising autoencoders: Learning useful representations in a deep network with a local denoising criterion." The Journal of Machine Learning Research 11 (2010): 3371-3408.

● Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. "Reducing the dimensionality of data with neural networks." Science 313.5786 (2006): 504-507.

● Le, Quoc V., et al. "Building high-level features using large scale unsupervised learning." arXiv preprint arXiv:1112.6209 (2011).

● Ngiam, Jiquan, et al. "On optimization methods for deep learning." Proceedings of the 28th International Conference on Machine Learning (ICML-11). 2011.

● Lange, Sascha, and Martin Riedmiller. "Deep learning of visual control policies." European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning (ESANN 2010), Brugge, Belgium. 2010.

● Mattner, Jan, Sascha Lange, and Martin Riedmiller. "Learn to swing up and balance a real pole based on raw visual input data." Neural Information Processing. Springer Berlin Heidelberg, 2012.