Deep Learning

1.785 visualizações

Publicada em

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

Publicada em: Ciências
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.785
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
72
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Deep Learning

  1. 1. 1 Exame de Qualificação Doutorando: Rafael Coimbra Pinto Orientador: Paulo Martins Engel
  2. 2. 2 Exame de Qualificação ● Área: Inteligência Artificial ● Abrangência: Inteligência Computacional ● Profundidade: Redes Neurais
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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)
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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)
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 26 Convolutional Autoencoder
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 31 Treinamento
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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)
  36. 36. 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
  37. 37. 37 Aplicações ● Reconhecimento de placas de trânsito ● Acurácia de 98.52% com uma única rede e 99.46% com 5 redes
  38. 38. 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.”
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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.

×