deep learning
DESCRIPTION
Apresentação para o exame de qualificação do doutorado. Tema: Deep Learning.TRANSCRIPT
1
Exame de Qualificação
Doutorando: Rafael Coimbra PintoOrientador: Paulo Martins Engel
2
Exame de Qualificação
● Área: Inteligência Artificial
● Abrangência: Inteligência Computacional
● Profundidade: Redes Neurais
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Convolutional Autoencoder
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
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
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
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
Treinamento
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
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
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
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
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
Aplicações
● Reconhecimento de placas de trânsito
● Acurácia de 98.52% com uma única rede e 99.46% com 5 redes
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
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
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
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
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
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.