Este documento apresenta o roteiro para o exame de qualificação de doutorado de Rafael Coimbra Pinto sobre redes neurais. O documento discute a diferença entre inteligência artificial e inteligência computacional, apresenta vários tipos de redes neurais como perceptrons, autoencoders profundos e convolucionais, e discute aplicações como reconhecimento de imagens, fala e gestos.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.”
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
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
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
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.