perceptron de múltiplas camadas (multilayer perceptron-mlpfabro/if67d/slidesrna/backpropok.pdf ·...

26
Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP) com algoritmo de treinamento por RetroPropagação de Erros (Error BackPropagation) IF67D – Sistemas Inteligentes 1 UTFPR - 2015 Prof. João Alberto Fabro

Upload: hoangkien

Post on 20-Jan-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer

Perceptron-MLP)com algoritmo de treinamento por RetroPropagação de Erros

(Error BackPropagation)

IF67D – Sistemas Inteligentes 1 UTFPR - 2015

Prof. João Alberto Fabro

Page 2: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

......

...Entradas Saídas

Page 3: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

Características da Arquitetura MLP: A camada de entrada apenas reproduz as

entradas para todos os neurônios da camada intermediária - NÃO possui processamento!!!

Deve existir pelo menos uma camada intermediária (denominada camada escondida-HIDDEN LAYER), e uma camada de saída (OUTPUT LAYER)

Foi provado matematicamente que “TODO” mapeamento entrada/saída, linearmente separável ou não, pode ser treinado em um MLP com apenas uma camada escondida, com a adequada função de transferência

Page 4: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

..

.. ....

wij

Pesos

de SaídaIntermediáriaCamada CamadaCamada

de Entrada

vki

s1

sm

.

.

.

.

e1

en

Page 5: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

y= f ∑i=1

n

xi∗wi= f x t w

x1

x2

xn

w1

w2

wn

+y

.

.

.

vetor de entrada

peso daconexão

somador função de ativação saída

Page 6: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

Função de Ativação: Não Linear e Diferenciável

Page 7: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)

Função de Ativação: Não Linear e Diferenciável

(a) função tangente hiperbólica

Page 8: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation

O Perceptron de uma camada possui um algoritmo de treinamento bem definido(delta)

Entretanto, com apenas uma camada, só é possível treinar para reconhecimento padrões que sejam linearmente separáveis

Isto é uma grave limitação (prova matemática) Concluiu-se que somente uma rede com mais

de uma camada poderia ser treinada para problemas não-linearmente-separáveis... (Cybenko, 1989)

Page 9: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation

Solução: A generalização da regra Delta para redes com múltiplas camadas!(MLP)

Várias derivações do algoritmo básico: Bryson e Ho (69), Werbos (74), Parker e Le Cun (85)

Idéia básica:

1. Propagam-se as entradas, obtendo as saídas

2. Encontram-se os erros (saídas obtidas-desejadas)

3. Retropropagam-se os erros (via regra delta GENERALIZADA)

4. Atualizam-se os pesos das conexões da rede!

Page 10: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation

Primeira Fase: Propagação das Entradas Apresentar a entrada à primeira camada da rede Calcular a saída de cada neurônio-

modelo matemático do Perceptron: Subtrair das saídas obtidas com as saídas desejadas=erro!

Segunda Fase: Retropropagação dos Erros Calcular a atualização dos pesos da camada de

saída, proporcionalmente ao erro obtido (regra D-gen) Atualizar os pesos da camada intermediária,

proporcionalmente à estimativa da contribuição de cada neurônio com o erro na saída! (regra D-gen)

Após isto, basta atualizar os pesos, fazendo isto até que o erro global seja pequeno o suficiente.

y= f ∑i=1

n

xi∗wi= f x t w

Page 11: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

A proposta de Widrow(Adaline) é utilizada, porém de forma generalizada, para obter um conjunto de pesos que forneça um erro(e) mínimo, para um conjunto de padrões de treinamento {xl, yl} l=1..L

Para isto, foi calculado o erro quadrático global E para um conjunto de pesos

Podemos simplificar isto para um único neurônio:

E w =12∑l=1

L

∑i=1

k

yid− y i

2

E w =12∑l=1

L

y l− y ld 2=

12∑l=1

L

f wt xld − y l

d 2

Page 12: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Agora precisamos achar o gradiente desta função em relação ao vetor de pesos, para podermos aplicar a fórmula de atualização:

w k1=w k −∂E w

∂w

∂E w

∂w=

12

2∑l=1

L

f w t x ld − yl

d

E w =12∑l=1

L

f wt xld − yl

d 2

∂E w

∂w=∑

l=1

L

f wt x ld − yl

d ∂ f w t xl

d

∂w

Page 13: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Isolando apenas o segundo termo, e continuando a derivação pela regra da cadeia, temos:

Simplificando, temos:

Montando a equação:

Fazendo , temos

∂ f wt xld

∂w=

∂ f v

∂v∂v∂w

,e comv=wt xld

∂ v∂w

=∂w t xl

d

∂w=x l

d

∂E w

∂w=−∑

l=1

L

l x ld l= y l

d− yl∂ f v

∂ v

∂E w

∂w=∑

l=1

L

y l− yld

∂ f v ∂ v

x ld

Page 14: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Agora podemos montar a regra de atualização de pesos:

, com Agora, basta definir a função de ativação:

, e derivar

, tendo a fórmula completa!

l= y ld− yl

∂ f v ∂ v

w t1=w t −∂E w

∂w=w t −−∑

l=1

L

l xld

w t1=w t ∑l=1

L

l x ld

f v =1

1e−2v =1e−2 v−1

∂ f v ∂ v

=21− f v f v

Page 15: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Assim, temos a fórmula completa:

Com e

Fazendo = 1/2, temos a fórmula final

w k1=w k −∂E w

∂w=w k ∑

l=1

L

l xld

l= y ld− yl

∂ f v ∂ v

w k1=w k ∑l=1

L

yld− y l 1− yl y l xl

d

∂ f v ∂ v

=21− f v f v

Page 16: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

E para o caso em que a rede possui mais neurônios????

Se os neurônios formarem apenas uma camada, a generalização é trivial!!!(óbvia!)

Basta aplicar a regra para cada neurônio individualmente!

Mas e se houver mais de uma camada???? (este é o caso interessante, que pode ser treinado com qualquer conjunto de padrões, linearmente separáveis ou não! )

Page 17: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Neste caso, precisamos modificar a regra de aprendizado(regra Delta Generalizada!)

Supondo um conjunto de padrões com: L padrões

cada padrão com N entradas e M saídas e uma camada intermediária com H nodos

teremos uma rede neural como a seguir:

Page 18: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

.... ....

SaídaIntermediáriaCamada

de Entrada

y1

ym

.

.

.

.

x1

xn

h

Pesos wij Pesos wjk

Page 19: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation - Derivação

Dado o cjto de padrões de treinamento {xl, yl} l=1..L

Deve-se calcular o erro quadrático global E

Especificando para cada neurônio da camada de saída:

Mas sabemos que a saída de um neurônio é dada por:

E w =12∑l=1

L

∑k=1

m

y l− yld 2

E w =12∑l=1

L

∑k=1

m

y3, k , l− y3, k , ld 2

y= f ∑i=1

numinput

x i∗w i

Page 20: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Deste modo, podemos reescrever a equação do erro:

De maneira similar, as saídas dos neurônios da primeira camada (y1,j,l) podem ser calculadas:

Assim, temos a equação completa do Erro da Rede:

E w=12∑l=1

L

∑k=1

m

f ∑j=1

h

y1

j , l w2

jk−y2

k , ld

2

y1

j , l=f ∑i=1

n

xi , l∗w1

ij

E w=12∑l=1

L

∑k=1

m

f ∑j=1

h

f ∑i=1

n

xi , ld ∗w

1ijw

2jk−y

2k , ld

2

Page 21: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Com a equação do erro:

Podemos achar os gradientes para minimizar esta função de erro! Para a camada de saída, derivamos em relação ao vetor de pesos w2,kj:

Assim, obtemos o gradiente:

w2

kj t1=w2

kj t −∂E w

∂ w2

kj

∂E w

∂w2

kj

=212 ∑l=1

L

f ∑j=1

h

w2

kj y1

k , ld −y

2k , ld

∂ f vk

∂vk

y1

j, l

E w=12∑l=1

L

∑k=1

m

f ∑j=1

h

y1

j , l w2

kj−y2

k , ld

2

Page 22: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Obtemos:

Que é exatamente a mesma equação já obtida anteriormente(a famosa regra delta!). Fazendo:

e com

obtemos a fórmula final de atualização de pesos:

∂E w

∂w2

jk

=∑l=1

L

y2

k , l−y2

k , ld

∂ f vk

∂vk

y1

j , l

k , l=y2

k , ld −y

2k , l

∂ f vk

∂ vk

w2

kj t1=w2

kj t k , l y1

j, l

w2

kj t1=w2

kj t y2

k , ld −y

2k , l

∂ f vk

∂vk

y1

j , l

Page 23: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Mas e para a camada intermediária? Fazemos a mesma derivação, porém em relação aos pesos desta camada. Partindo da equação global do erro:

Fazemos o cálculo do gradiente:

A segunda parte é simples:

E w=12∑l=1

L

∑k=1

m

f ∑j=1

h

f ∑i=1

n

xi , ld ∗w

1ijw

2jk−y

2k , ld

2

∂E w

∂ w1

ji

=∂E w

∂y1

j, l

∂y1

j , l

∂ w1

ji

∂y1

j , l

∂w1

ji

=∂ f w

1ji x i

d

∂w1

ji

=∂ f g j

∂g j

xi , ld

Page 24: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Mas a primeira parte é mais delicada

Fazendo para cada padrão de treinamento L temos

∂E w

∂ y1

j, l

=∂

∂ y1

j , l 12∑l=1

L

∑k=1

m

f ∑j=1

h

y1

j , l w2

kj−y2

k , ld

2

∂E w

∂y1

j, l

=∂

∂ y1

j , l 12∑k=1

m

f ∑j=1

h

y1

j, l w2

kj−y2

k , ld

2

∂E w

∂y1

j, l

=212 ∑k=1

m

f ∑j=1

h

y1

j , l w2

kj−y2

k , ld ∂ f vk

∂vk

∂vk

∂ y1

j , l

Page 25: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Continuando, temos que

e também temos que

Então

Agora temos que:

∂E w

∂y1

j, l

=∑k=1

m

y2

k , l−y2

k , ld

∂ f vk

∂ vk

w2

kj

yk , l=f ∑j=1

h

y1

j , l w2

kj

∂vk

∂y1

j , l

=w2

kj

∂E w

∂y1

j, l

=−∑k=1

m

k , l w2

kj

Page 26: Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLPfabro/IF67D/SlidesRNA/backpropok.pdf · Algoritmo de treinamento BackPropagation - Derivação Isolando apenas o segundo

Algoritmo de treinamento BackPropagation – Derivação

Agora podemos obter a fórmula completa do gradiente:

Fazendo:

Ficamos com

Ou para cada padrão:

∂E w

∂ w1

ji

=∂E w

∂y1

j, l

∂y1

j , l

∂ w1

ji

=−2∑l=1

L

∑k=1

m

k , l w2

kj

∂ f g j

∂g j

x i , ld

j , l=∑k=1

m

k , l w2

kj ∂ f g j

∂g j

w1

ji t1=w1

ji t ∑l=1

L

j , l xi , ld

w1

ji t1=w1

ji t j, l x i , ld