Você está na página 1de 44

Universidade Federal de Ouro Preto (UFOP)

Programa de Ps-Graduao em Cincia da Computao (PPGCC)

Reconhecimento de Padres
Multi-Layer Perceptron
(MLP)

David Menotti, Ph.D.


www.decom.ufop.br/menotti

Redes Neuronais

Crebro humano.
Mais fascinante processador existente.
Aprox. 10 bilhes de neurnios conectados
atravs de sinapses.
Sinapses transmitem estmulos e o resultado
pode ser estendido por todo o corpo humano.

Redes Neuroniais Artificiais:


Um breve histrico
1943 McCulloch e Pitts.
Sugeriam a construo de uma mquina baseada ou
inspirada no crebro humano.

1949 Donald Hebb.


Prope uma lei de aprendizagem especfica para as
sinpses dos neurnios.

1957/1958 - Frank Rosenblatt.


Estudos aprofundados
pai da neuro-computao.
Perceptron.
Criador do primeiro neuro-computador a obter
sucesso (Mark I).

Mark I - Perceptron

Um breve histrico (cont)


1958-1967.
Vrias pesquisas mal sucedidas.

1967-1982.
Pesquisas silenciosas.

1986 David Rumelhart.


Livro parallel distributed processing.
Algoritmo eficaz de aprendizagem.

1987.
Primeira conferncia IEEE Int. Conf. On Neural Nets.

Neurnio

Dendritos:
Receber os estmulos transmitidos por outros
neurnios.

Corpo (somma).
Coletar e combinar informaes vindas de outros
neurnios.

Axnio.
Transmite estmulos para outras clulas.

Redes Neuronais Artificiais


Tcnica computacional que apresenta um
modelo inspirado na estrutura neural.
Simula o crebro humano:
Aprendendo, errando e fazendo descobertas.

Estrutura de processamento de
informao distribuda paralelamente na
forma de um grafo direcionado.

Crebro X Computador
Parmetro

Crebro

Computador

Material

Orgnico

Metal e Plstico

Velocidade

Milisegundos

Nanosegundos

Tipo de Processamento

Paralelo

Sequncial

Armazenamento

Adaptativo

Esttico

Controle de Processos

Distribudo

Centralizado

Nmero de Elementos
Processados

1011 a 1014

105 a 106

Ligaes entre Elementos


Processados

10.000

< 10

Neurnio artificial

Sinais so apresentados entrada.


Cada sinal multiplicado por um peso.
Soma ponderada produz um nvel de ativao.
Se esse nvel excede um limite (threshold) a
unidade produz uma sada.

[PERCEPTRON]

Perceptron
Resolve problemas linearmente separveis
somente.
Problemas reais, entretanto, na maioria das
vezes so mais complexos.

Exemplo
Considere por exemplo, o problema XOR
w1

x1

w2

x2

Como visto anteriormente com SVMs, podemos afirmar que em altas


dimenses os problemas so linearmente separveis.
Sendo assim, vamos mudar o problema de R2 para R3 adicionando
uma terceira caracterstica.

Exemplo
X1

X2

X3

Output

Nesse caso, a caracterstica adicionada


(X3) a operao AND entre X1 e X2
O fato de adicionarmos essa
caracterstica faz com que o problema
torne-se linearmente separvel.

Adicionando uma camada


Outra maneira de resolver esse problema
consiste em adicionar uma camada extra
(escondida) entre as camadas de entrada e
sada.
Dado uma quantidade suficiente de neurnios
na camada escondida, possvel resolver
qualquer tipo de problemas
Claro que isso depende das caractersticas de
entrada.

Camada Escondida
Essa camada pode ser vista como um
extrator de caractersticas, ou seja, a
grosso modo, o neurnio escondido seria
uma caracterstica a mais
O que torna o problema do XOR linearmente
separvel.

Camadas X Fronteiras

Geralmente uma camada escondida resolve a grande maioria


dos problemas.

O problema de atribuio de
crditos
Quando temos uma camada escondida,
surge o problema de atribuio de
crditos aos neurnios desta camada
No existem targets como na camada de
sada.
Perodo entre 58 e 82 foi dedicado a resolver
esse problema
Soluo foi o algoritmo conhecido como
Backpropagation.
David E. Rumelhart et al (1986)

MLP para o problema XOR


Considere o problema XOR e a seguinte
rede j treinada.
A sada calculada de maneira
similar ao perceptron, mas a
MLP geralmente usa sigmoid
como funo de ativao.
v

1
1 eS

Para grandes quantidades de dados


o resultado da sigmoid pode ser
interpretado como estimao de
probabilidade.

MLP para o problema XOR


Para calcular a sada da rede,
primeiramente devemos encontrar o valor
do neurnio escondido.
1 * 7.1 + 1 * -2.76 +0 * 7.1 = 4.34

Passando o valor 4.34 na funo de


ativao, temos 0.987.
O valor de sada ento calculado
1 * -4.95 + 0 * -4.95 + 0.987 * 10.9 + 1 X -3.29 = 2.52
Passando 2.52 na funo de ativao temos a sada
igual a 0.91

MLP para o problema XOR


Aps classificarmos todos os padres de
entrada teramos
1

0.91

0.08

1.00

0.10

Podemos usar como regra de deciso um limiar igual a 0.9, por exemplo.

BackProp

Seja oj o valor de ativao para o neurnio j.


Seja f uma funo de ativao.
Seja wij o peso entre os neurnios i e j.
Seja netj a entrada para o neurnio j, a qual
calculada por
n

net j wij oi

i 1
onde n o nmero de unidades
ligadas ao
neurnio j e

o j f (net j )

BackProp

O treinamento acontece da seguinte maneira:


1. Inicializar os valores dos pesos e neurnios
aleatoriamente.
2. Apresentar um padro a camada de entrada da rede
3. Encontrar os valores para as camadas escondidas e
a camada de sada.
4. Encontrar o erro da camada de sada.
5. Ajustar os pesos atravs da retropropagao dos
erros (Backpropagation)
1. Diminuir o erro a cada iterao

6. Encontrar o erro na camada escondida


7. Ajustar os pesos.
Critrio de parada o erro desejado

BackProp
O valor corrente de ativao de um
neurnio k ok e o target tk
Aps realizar os passos 1, 2, e 3, o
prximo passo consiste em calcular o
erro, o qual pode ser realizado atravs da
seguinte equao

k (t k ok )ok (1 ok )

BackProp: Exemplo
Considere uma rede inicializada da
seguinte forma

Nesse caso

z (1 0.5) 0.5 (1 0.5) 0.125

BackProp: Exemplo
A frmula para atualizar os pesos W entre
o neurnio i e j

wij ` wij j oi
onde eta uma constante pequena e
positiva camada de taxa de
aprendizagem (learning rate)
Usando uma taxa de 0.1, temos

BackProp: Exemplo
wxz 0 0.1 0.125 1 0.0125
wyz 0 0.1 0.125 0 0
whz 0 0.1 0.125 0.5 0.00625
wbz 0 0.1 0.125 1 0.0125
A frmula para calcular o erro dos neurnios da camada escondida

i oi (1 oi ) k wik
k

Como temos somente um neurnio no nosso exemplo

h oh (1 oh ) z whz

BackProp:Exemplo
Nesse caso teramos

h 0.5(1 0.5)0.125 0.00625 0.000195313


Para atualizar os pesos, usamos a mesma frmula

whx 0 0.1 0.0001953 1 0.00001953


why 0 0.1 0.0001953 0 0
whbh 0 0.1 0.0001953 1 0.00001953
Como os novos pesos calculados, a sada da rede seria 0.507031

BackProp:Exemplo
Aps aplicarmos todos os padres,
teramos o seguinte
1

0.4998

0.4998

0.4998

0.4997

Usando uma taxa de aprendizagem = 0.1, o algoritmo levar 20.000


iteraes para convergir. Uma soluo para melhorar isso seria aumentar
a taxa de aprendizagem. Se usarmos 2, o algoritmo converge em
480 iteraes.

Aspectos Prticos
Alguns aspectos prticos devem ser
considerados na utilizao de redes neurais
MLP.

Taxa de aprendizagem
Momentum
Online vs batch
Shuffle
Normalizao
Inicializao dos pesos
Generalizao

Referncia Interessante:
Efficient Backprop, Y. LeCun et al,
1998

Taxa de Aprendizagem
Taxas muito pequenas tornam o processo
bastante lento.
Taxas muito grandes tornam o processo
rpido.
Podem no trazer os resultados ideais.
Superfcie do
erro

Erro mnimo

Taxa pequena

Taxa grande

Taxa de Aprendizagem
O ideal comear com uma taxa grande
e reduzir durante as iteraes.
Permite a explorao global no incio
(exploration) a local (exploitation) quando
o algoritmo estiver prximo do timo
global.
Geralmente valores entre 0.05 e 0.75
fornecem bons resultados.

Momentum
uma estratgia usada para evitar mnimos
locais. Considere a seguinte superfcie

Existem trs mnimos locais antes do


mnimo global.

Momentum
Considere, por exemplo, que uma bola
seja solta no incio da superfcie.
Se ela tiver momentum suficiente, ela vai
conseguir passar os trs mnimos locais e
alcanar o mnimo global.

wij wij j ok
Normalmente 0<= <= 0.9

On-line vs Batch
A diferena est no momento em que os pesos so
atualizados.
Na verso on-line, os pesos so atualizados a cada
padro apresentado a rede.
Na verso batch, todos os pesos so somados durante
uma iterao (todos os padres) e s ento os pesos
so atualizados.
Verso batch
Interessante para aplicaes que possam ser paralelizadas.

Verso online
Geralmente converge mais rapidamente.

Misturando Exemplos (Shuffle)


Redes neuronais aprendem melhor
quando diferentes exemplos de diferentes
classes so apresentados a rede.
Uma prtica muito comum consiste em
apresentar um exemplo de cada classe a
rede
Isso garante que os pesos sero atualizados
levando-se em considerao todas as
classes.

Misturando Exemplos (Shuffle)


Se apresentarmos rede todos os
exemplos de uma classe, e assim por
diante, os pesos finais tendero para a
ltima classe
A rede vai esquecer o que ela aprendeu
antes.

Normalizao
A normalizao interessante quando existem
caractersticas em diversas unidades dentro do
vetor de caractersticas.
Nesses casos, valores muito altos podem
saturar a funo de ativao.
Uma maneira bastante simples de normalizar os
dados consiste em somar todas as
caractersticas e dividir pela soma
Outra normalizao bastante usada a
normalizao Z-score.

Normalizao
Para redes neurais MLP, geralmente
interessante ter as caractersticas com
mdia prxima de zero
X
Z

Melhora o tempo de convergncia durante


a aprendizagem.

Normalizao
As caractersticas devem ser no
correlacionadas se possvel
Quando temos poucas caractersticas
podemos verificar isso facilmente.
Com vrias caractersticas, o problema se
torna muito mais complexo.
Mtodos de seleo de caractersticas.

Inicializao dos Pesos


Assumindo que os dados foram
normalizados e uma sigmoid est sendo
usada como funo de ativao.
Os pesos devem ser inicializados
aleatoriamente mas de modo que fiquem na
regio linear da sigmoid
Pesos muito altos ou muito baixo a sigmoid
deve saturar
- Gradientes pequenos
- Aprendizagem muito lenta.

Generalizao
Um aspecto bastante importante quando
treinamos um classificador garantir que
o mesmo tenha um bom poder de
generalizao.
Evitar overfitting.

A maneira clssica de se garantir uma


boa generalizao consiste em reservar
uma parte da base para validar a
generalizao.

Generalizao
A cada iterao, devemos monitorar o
desempenho na base de validao.
No raro observar o seguinte
desempenho

Generalizao
Uma outra estratgia a validao
cruzada.
Interessante quando a base no muito
grande
Separar alguns exemplos para validao pode
prejudicar o treinamento.

Consiste em dividir a base de


aprendizagem em n parties iguais e usar
n-1 parties para aprendizagem e uma
partio para validao.

Generalizao
A cada iterao a partio usada para
validao trocada.

1. iterao

2. iterao

3. iterao

Tamanho da Rede
Geralmente uma camada escondida
suficiente.
Em poucos casos voc vai precisar adicionar
uma segunda camada escondida.
No existe uma formula matemtica para se
encontrar o nmero de neurnios.
Emprico

Dica prtica
Comece com uma rede menor, pois a aprendizagem
vai ser mais rpida.

Você também pode gostar