Académique Documents
Professionnel Documents
Culture Documents
Learning
Anderson
Tenório
Bacharel
em
Engenharia
da
Computação,
POLI-‐UPE
Mestre
em
Ciência
da
Computação,
CIn-‐UFPE
Doutorando
em
Ciência
da
Computação,
CIn-‐UFPE
Agenda
• Aprendizagem
de
Máquinas
e
Redes
Neurais
• MoJvação
• Introdução
• Arquiteturas
Deep
Learning
• Aplicações
Aprendizagem
de
Máquinas
• Treinamento
supervisionado
– Os
dados
de
treinamento
consistem
das
informações
de
entrada
com
sua
saída
correspondente
• Treinamento
não
supervisionado
– Os
dados
de
treinamento
consistem
das
informações
de
entrada
sem
sua
saída
correspondente
Redes
Neurais
• Duas
camadas
(uma
camada
escondida
e
uma
camada
de
saída)
MoJvação
• PermiJr
aos
computadores
modelar
nosso
mundo
bem
o
suficiente
para
exibir
o
que
nós
chamamos
de
inteligência
tem
sido
o
foco
de
pesquisas
de
mais
da
metade
de
um
século
• Para
alcançar
esse
objeJvo,
é
claro
que
a
grande
quanJdade
de
informação
sobre
o
nosso
mundo
deve
ser
de
alguma
forma
armazenada,
explicitamente
ou
implicitamente,
no
computador
• Já
que
não
podemos
formalizar
manualmente
a
informação,
uJlizamos
algoritmos
de
aprendizagem
MoJvação
• Muito
esforço
(e
progresso!)
tem
sido
feito
em
entender
e
melhorar
algoritmos
de
aprendizagem,
mas
o
desafio
em
IA
permanece
• Temos
algoritmos
capazes
de
entender
cenas
e
descrevê-‐las
em
linguagem
natural?
• Temos
algoritmos
capazes
de
inferir
conceitos
semân9cos
suficientes
a
ponto
de
interagir
com
humanos?
MoJvação
MoJvação
• Um
modo
plausível
e
comum
de
extrair
informação
úJl
a
parJr
de
imagens
naturais
envolve
transformar
gradualmente
os
pixels
“crus”
em
representações
mais
abstratas
– Presença
de
bordar,
detecção
de
formas
locais,
idenJficação
de
categorias
etc
• Assim,
uma
máquina
que
expresse
“inteligência”
requer
funções
matemáJcas
altamente
variáveis
– Não-‐lineares
em
termos
de
entradas
cruas,
sendo
capazes
de
apresentar
muitas
variações
MoJvação
• A
imagem
anterior
contém
uma
abstração
de
alto
nível
chamada
HOMEM
• Corresponde
a
um
grande
conjunto
de
imagens
possíveis
– Podendo
ser
muito
diferentes
uma
das
outras
em
termos
de,
por
exemplo,
distância
euclidiana
• A
abstração
HOMEM
pode
ser
encarada
como
uma
categoria
ou
caracterísJca/feature
(discreta
ou
con^nua)
• Muitos
conceitos
em
nível
mais
baixo
ou
intermediário
poderiam
ser
úteis
para
construir
um
detector
mais
sofisJcado
MoJvação
• O
foco
em
arquiteturas
profundas
é
automaJcamente
descobrir
essas
abstrações
– ParJndo
features
com
níveis
mais
baixos
até
conceitos
de
nível
mais
alto
• UJlizar
algoritmos
de
aprendizagem
que
descubram
essas
abstrações
com
o
mínimo
esforço
humano
possível
– Sem
a
necessidade
de
prover
um
grande
conjunto
de
dados
rotulados
(textos
e
imagens
da
internet,
por
exemplo)
MoJvação
• Redes
Neurais
ArJficiais
feed-‐forward
– MALDIÇÃO
DA
DIMENSIONALIDADE
MoJvação
• Maldição
da
Dimensionalidade
MoJvação
• Uma
das
soluções
encontradas
para
a
maldição
de
dimensionalidade
é
pré-‐
processamento
de
dados
– Redução
da
dimensionalidade
(às
vezes
por
humanos)
– Desafiante
e
altamente
dependente
da
tarefa
• Se
pensarmos
no
cérebro
humano,
não
há
indícios
de
que
ele
resolve
esse
problema
dessa
forma
Introdução
• Métodos
Deep
Learning
(DL)
focam
em
aprender
caracterísJcas
de
nível
mais
alto
pela
composição
de
caracterísJcas
de
nível
mais
baixo
– Tendo
o
cérebro
humano
como
inspiração
• Aprender
caracterísJcas
automaJcamente
em
múlJplos
níveis
de
abstração
permite
ao
sistema
mapear
funções
complexas
sem
depender
de
caracterísJcas
intermediárias
inteligíveis
aos
humanos
– Essa
habilidade
é
necessária
porque
o
tamanho
dos
dados
tende
a
crescer
Introdução
• Algoritmos
Deep
Learning
podem
ser
considerados
como
processos
de
aprendizagem
que
descobrem
múlJplos
níveis
de
abstração
• As
representações
mais
abstratas
podem
ser
mais
úteis
em
extrair
informações
para
classificadores
ou
preditores
– CaracterísJcas
intermediárias
aprendidas
podem
ser
comparJlhadas
entre
diferentes
tarefas
Introdução
• A
profundidade
de
uma
arquitetura
diz
respeito
ao
número
de
níveis
de
composição
de
operações
não
lineares
na
função
aprendida
– Numa
rede
neural,
corresponde
ao
número
de
camadas
• Funções
que
podem
ser
representadas
por
uma
arquitetura
de
profundidade
k
podem
requerer
um
número
exponencial
de
elementos
computacionais
para
que
sejam
representadas
por
uma
arquitetura
de
profundidade
k
–
1
– Algumas
funções
do
mundo
real
não
podem
ser
representadas
por
arquiteturas
rasas
Introdução
• Por
décadas,
diversos
pesquisadores
tentaram,
sem
sucesso,
treinar
redes
neurais
de
múlJplas
camadas
profundas
– Sendo
as
redes
inicializadas
com
pesos
aleatórios,
elas
geralmente
ficavam
presas
em
mínimos
locais
– À
medida
que
a
profundidade
aumentava,
tornava-‐se
ainda
mais
digcil
uma
boa
generalização
Introdução
• Em
2006,
Hinton
et
al
descobriram
que
os
resultados
de
uma
rede
neural
profunda
poderiam
ser
sensivelmente
melhorados
quando
pré-‐treinadas
com
um
algoritmo
de
aprendizagem
não-‐supervisionado,
uma
camada
após
outra
e
parJndo
da
primeira
camada
• Esse
trabalho
inicializou
a
área
hoje
conhecida
como
Deep
Learning
Introdução
• Treinar
redes
com
muitas
camadas
(vs.
redes
“rasas”
com
uma
ou
duas
camadas)
• MúlJplas
camadas
constroem
um
espaço
de
caracterísJcas
melhorado
– Primeira
camada
aprende
as
caracterísJcas
de
primeira
ordem
(por
exemplo,
bordas)
– Segunda
camada
aprende
caracterísJcas
de
maior
ordem
(por
exemplo,
combinação
de
bordas
e
outras
caracterísJcas)
– As
camadas
são
treinadas
de
modo
não-‐supervisionado
de
modo
a
descobrir
caracterísJcas
gerais
do
espaço
de
entrada
– As
caracterísJcas
finais
alimentam
uma
camada
supervisionada
• A
rede
inteira
é
então
ajustada
de
modo
supervisionado
– Deep
Learning
é
indicado
em
tarefas
cujo
espaço
de
entrada
seja
localmente
estruturado
–
espacial
ou
temporal
• Imagens,
linguagem
etc
Introdução
Por
que
Deep
Learning?
• Plausibilidade
biológica
–
córtex
visual
• Problemas
que
podem
ser
representados
com
um
número
polinomial
de
nós
com
k
camadas
podem
requerer
número
exponencial
de
nodos
com
k-‐1
camadas
• Funções
muito
variáveis
podem
ser
eficientemente
representadas
com
arquiteturas
profundas
– Menos
pesos/parâmetros
para
atualizar
do
que
uma
rede
rasa
menos
eficiente
• SubcaracterísJcas
criadas
em
arquiteturas
profundas
podem
ser
comparJlhadas
entre
múlJplas
tarefas
– Transferência
de
aprendizado
Trabalhos
Prévios
• Fukushima
(1980)
–
Neo-‐Cognitron
• LeCun
(1998)
–
ConvoluJonal
Neural
Networks
– Similar
a
Neo-‐Cognitron
• MLP
mulJcamadas
com
backpropagaJon
– Tentado
mas
sem
muito
sucesso
• Muito
lento
• Difusão
do
gradiente
– Alguns
trabalhos
mostraram
melhoramentos
significaJvos
por
“pacientemente”
treinarem
MLP
profundas
com
BP
em
máquinas
rápidas
(GPU)
ConvoluJnal
Neural
Networks
• Cada
camada
combina
(merge,
suaviza)
trechos
(patches)
das
camadas
anteriores
– Tipicamente
tenta
comprimir
dados
grandes
(imagens)
em
um
conjunto
menor
de
caracterísJcas
robustas
– Convoluções
básicas
podem
ainda
criar
muitas
caracterísJcas
• Pooling
– Esse
passo
comprime
e
suaviza
os
dados
– Normalmente
toma
a
média
ou
o
valor
máximo
entre
trechos
disjuntos
• Frequentemente
filtros
de
convolução
e
pooling
são
feitos
manualmente
• Após
essa
convolução
manual/não
treinada/parcialmente
treinada
o
novo
conjunto
de
caracterísJcas
é
usado
para
treinar
um
modelo
supervisionado
• Requer
regularidades
na
vizinhança
no
espaço
de
entrada
(por
exemplo,
imagens)
ConvoluJonal
Neural
Networks
Treinando
Redes
Profundas
• Construir
um
espaço
de
caracterísJcas
– É
o
que
é
feito
com
camadas
escondidas
em
uma
MLP,
mas
em
uma
arquitetura
rasa
– Treinamento
não
supervisionado
entre
camadas
podem
decompor
o
problema
em
sub-‐problemas
(com
níveis
mais
altos
de
abstração)
a
serem
decompostos
mais
uma
vez
pelas
camadas
subsequentes
Treinando
Redes
Profundas
• Dificuldades
do
treinamento
supervisionado
em
redes
profundas
– As
camadas
no
MLP
não
aprendem
bem
• Difusão
do
gradiente
• Treinamento
muito
lento
• Camadas
mais
baixas
tendem
a
fazer
um
mapeamento
aleatório
– Frequentemente
há
mais
dados
não
rotulados
do
que
dados
rotulados
– Mínimo
local
Greedy
Layer-‐Wise
Training
1. Treinar
primeira
camada
uJlizando
dados
sem
rótulos
– Já
que
não
há
targets
nesse
nível,
rótulos
não
importam
2. Fixar
os
parâmetros
da
primeira
camada
e
começar
a
treinar
a
segunda
usando
a
saída
da
primeira
camada
como
entrada
não
supervisionada
da
segunda
camada
3. RepeJr
1
e
2
de
acordo
com
o
número
de
camadas
desejada
(construindo
um
mapeamento
robusto)
4. Usar
a
saída
da
camada
final
como
entrada
para
uma
camada/modelo
supervisionada
e
treinar
de
modo
supervisionado
(deixando
pesos
anteriores
fixos)
5. Liberar
todos
os
pesos
e
realizar
ajuste
fino
da
rede
como
um
todo
uJlizando
uma
abordagem
supervisionada
Greedy
Layer-‐Wise
Training
• Evita
muitos
dos
problemas
associados
ao
treinamento
de
uma
rede
profunda
de
modo
totalmente
supervisionado
– Cada
camada
toma
foco
total
no
processo
de
aprendizagem
– Pode
tomar
vantagem
de
dados
não
rotulados
– Quando
a
rede
completa
é
treinada
de
modo
supervisionado,
os
pesos
já
estão
minimamente
ajustados
(evita
mínimos
locais)
• As
duas
abordagens
mais
comuns
desse
processo
– Stacked
Auto-‐Encoders
– Deep
Belief
Nets
Auto-‐Aprendizagem
vs
Aprendizado
Não
Supervisionado
• Quando
se
usa
aprendizagem
não
supervisionada
como
pré-‐processador
para
aprendizagem
supervisionada,
Jpicamente
os
exemplos
são
da
mesma
distribuição
• Na
auto-‐aprendizagem,
a
fase
supervisionada
não
requer
dados
da
mesma
distribuição
– Maior
disponibilidade
– Mas
se
os
dados
são
muito
diferentes...
• Similaridades:
ambos
podem
transferir
conhecimento
Auto-‐Encoders
• Um
Jpo
de
modelo
não
supervisionado
que
tenta
descobrir
caracterísJcas
genéricas
dos
dados
– Aprende
a
idenJficar
funções
através
do
aprendizado
de
sub-‐caracterísJcas;
compressão;
pode
usar
novas
caracterísJcas
como
um
novo
conjunto
de
treinamento
Stacked
Auto-‐Encoders
• Bengio
(2007)
• Empilhar
muitos
auto-‐encoders
esparsos
e
treiná-‐los
de
forma
gulosa
• Desprezar
a
camada
decoder
(saída)
Stacked
Auto-‐Encoders
• Realizar
treinamento
supervisionado
na
úlJma
camada
uJlizando
caracterísJcas
finais
• Treinamento
supervisionado
da
rede
como
um
todo
para
realizar
ajustes
finos
dos
pesos
Encoder
Esparso
• Auto-‐encoders
farão
frequentemente
uma
redução
dimensionalidade
– Do
Jpo
PCA
ou
não
linear
• Isso
leva
a
uma
representação
“densa”
– Todas
as
caracterísJcas
Jpicamente
tem
valores
não
zero
para
qualquer
entrada
• Entretanto,
essa
representação
distribuída
tem
algumas
desvantagens
– Mais
digcil
para
as
camadas
capturar
as
caracterísJcas
(matemaJcamente
provado
que
uma
boa
generalização
é
necessário
que
o
número
total
de
bits
para
codificar
o
conjunto
de
treinamento
deve
ser
pequeno)
– Memória
maior
e
velocidade
menor
– Não
é
biologicamente
plausível
• Uma
representação
esparsa
uJliza
mais
caracterísJcas
onde
em
um
dado
tempo
um
número
significante
de
caracterísJcas
terá
valor
0
Como
implementar
Auto-‐Encoder
esparso?