SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
1
Exame de Qualificação
Doutorando: Rafael Coimbra Pinto
Orientador: 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.

Mais conteúdo relacionado

Mais procurados

Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
Edvaldo Araújo
 
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
Simplilearn
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos Scrum
Gustavo Quezada
 

Mais procurados (20)

Flip Chart
Flip ChartFlip Chart
Flip Chart
 
Aula 04 dicionario de dados
Aula 04   dicionario de dadosAula 04   dicionario de dados
Aula 04 dicionario de dados
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
Aprendizado de Máquina para Classificação de Dados
Aprendizado de Máquina para Classificação de DadosAprendizado de Máquina para Classificação de Dados
Aprendizado de Máquina para Classificação de Dados
 
Notes from Coursera Deep Learning courses by Andrew Ng
Notes from Coursera Deep Learning courses by Andrew NgNotes from Coursera Deep Learning courses by Andrew Ng
Notes from Coursera Deep Learning courses by Andrew Ng
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
 
Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)
 
Deep learning based object detection basics
Deep learning based object detection basicsDeep learning based object detection basics
Deep learning based object detection basics
 
Recurrent Neural Networks, LSTM and GRU
Recurrent Neural Networks, LSTM and GRURecurrent Neural Networks, LSTM and GRU
Recurrent Neural Networks, LSTM and GRU
 
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
Deep Learning Frameworks 2019 | Which Deep Learning Framework To Use | Deep L...
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Faster R-CNN - PR012
Faster R-CNN - PR012Faster R-CNN - PR012
Faster R-CNN - PR012
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos Scrum
 
PR-433: Test-time Training with Masked Autoencoders
PR-433: Test-time Training with Masked AutoencodersPR-433: Test-time Training with Masked Autoencoders
PR-433: Test-time Training with Masked Autoencoders
 
Big Data
Big DataBig Data
Big Data
 
A evolução do ti até os dias atuais
A evolução do ti até os dias atuaisA evolução do ti até os dias atuais
A evolução do ti até os dias atuais
 
Deep Learning A-Z™: Recurrent Neural Networks (RNN) - The Vanishing Gradient ...
Deep Learning A-Z™: Recurrent Neural Networks (RNN) - The Vanishing Gradient ...Deep Learning A-Z™: Recurrent Neural Networks (RNN) - The Vanishing Gradient ...
Deep Learning A-Z™: Recurrent Neural Networks (RNN) - The Vanishing Gradient ...
 
Introduction of Faster R-CNN
Introduction of Faster R-CNNIntroduction of Faster R-CNN
Introduction of Faster R-CNN
 
Deep Learning in Computer Vision
Deep Learning in Computer VisionDeep Learning in Computer Vision
Deep Learning in Computer Vision
 

Semelhante a Deep Learning

A rede neural supervisionada chamada perceptron multicamadas
A rede neural supervisionada chamada perceptron multicamadasA rede neural supervisionada chamada perceptron multicamadas
A rede neural supervisionada chamada perceptron multicamadas
cesar do amaral
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exercicios
redesinforma
 
Unidade2 projeto lógico da rede
Unidade2   projeto lógico da redeUnidade2   projeto lógico da rede
Unidade2 projeto lógico da rede
Leandro Almeida
 

Semelhante a Deep Learning (20)

Aula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoAula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvido
 
A rede neural supervisionada chamada perceptron multicamadas
A rede neural supervisionada chamada perceptron multicamadasA rede neural supervisionada chamada perceptron multicamadas
A rede neural supervisionada chamada perceptron multicamadas
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 
Aula 6 a camada de rede
Aula 6   a camada de redeAula 6   a camada de rede
Aula 6 a camada de rede
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Metaheurísticas Aplicadas ao Problema de Designação de Servidores e Clientes ...
Metaheurísticas Aplicadas ao Problema de Designação de Servidores e Clientes ...Metaheurísticas Aplicadas ao Problema de Designação de Servidores e Clientes ...
Metaheurísticas Aplicadas ao Problema de Designação de Servidores e Clientes ...
 
Palestra
PalestraPalestra
Palestra
 
Projeto de Elasticidade e Evolução do Projeto FIBRE
Projeto de Elasticidade e Evolução do Projeto FIBREProjeto de Elasticidade e Evolução do Projeto FIBRE
Projeto de Elasticidade e Evolução do Projeto FIBRE
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exercicios
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Unidade2 projeto lógico da rede
Unidade2   projeto lógico da redeUnidade2   projeto lógico da rede
Unidade2 projeto lógico da rede
 
Curso redes seed
Curso redes seedCurso redes seed
Curso redes seed
 
Paralelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto EscalarParalelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto Escalar
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Geração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e SistemasGeração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e Sistemas
 
Aula1 mba fiap_2018_redes_neurais
Aula1 mba fiap_2018_redes_neuraisAula1 mba fiap_2018_redes_neurais
Aula1 mba fiap_2018_redes_neurais
 
Cap4
Cap4Cap4
Cap4
 
A SCALABLE, COMMODITY DATA CENTER NETWORK ARCHITECTURE - Fatree
A SCALABLE, COMMODITY DATA CENTER NETWORK ARCHITECTURE - FatreeA SCALABLE, COMMODITY DATA CENTER NETWORK ARCHITECTURE - Fatree
A SCALABLE, COMMODITY DATA CENTER NETWORK ARCHITECTURE - Fatree
 

Mais de Rafael Pinto

Mais de Rafael Pinto (10)

Inteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosInteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos Genéticos
 
Inteligência Artificial - Aula5 - PageRank
Inteligência Artificial - Aula5  - PageRankInteligência Artificial - Aula5  - PageRank
Inteligência Artificial - Aula5 - PageRank
 
Inteligência Artificial - Aula2 - Busca em Grafos
Inteligência Artificial - Aula2 - Busca em GrafosInteligência Artificial - Aula2 - Busca em Grafos
Inteligência Artificial - Aula2 - Busca em Grafos
 
Inteligência Artificial - Aula1 intro
Inteligência Artificial - Aula1 introInteligência Artificial - Aula1 intro
Inteligência Artificial - Aula1 intro
 
Slow Feature Analysis
Slow Feature AnalysisSlow Feature Analysis
Slow Feature Analysis
 
Ratslam
RatslamRatslam
Ratslam
 
Online Incremental One-Shot Learning of Temporal Sequences (Portuguese)
Online Incremental One-Shot Learning of Temporal Sequences (Portuguese)Online Incremental One-Shot Learning of Temporal Sequences (Portuguese)
Online Incremental One-Shot Learning of Temporal Sequences (Portuguese)
 
Neuroevolução com o algoritmo NEAT e suas Extensões
Neuroevolução com o algoritmo NEAT e suas ExtensõesNeuroevolução com o algoritmo NEAT e suas Extensões
Neuroevolução com o algoritmo NEAT e suas Extensões
 
LoopSOM
LoopSOMLoopSOM
LoopSOM
 
Um Reconhecedor de Padrões Espaço-Temporais Inspirado no Neocórtex
Um Reconhecedor de Padrões Espaço-Temporais Inspirado no NeocórtexUm Reconhecedor de Padrões Espaço-Temporais Inspirado no Neocórtex
Um Reconhecedor de Padrões Espaço-Temporais Inspirado no Neocórtex
 

Deep Learning

  • 1. 1 Exame de Qualificação Doutorando: Rafael Coimbra Pinto Orientador: Paulo Martins Engel
  • 2. 2 Exame de Qualificação ● Área: Inteligência Artificial ● Abrangência: Inteligência Computacional ● Profundidade: Redes Neurais
  • 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
  • 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 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
  • 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 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 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 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.