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
Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)
......
...Entradas Saídas
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
Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)
..
.. ....
wij
Pesos
de SaídaIntermediáriaCamada CamadaCamada
de Entrada
vki
s1
sm
.
.
.
.
e1
en
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
Perceptron de Múltiplas Camadas (MultiLayer Perceptron-MLP)
Função de Ativação: Não Linear e Diferenciável
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
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)
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!
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
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
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
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
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
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
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! )
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:
Algoritmo de treinamento BackPropagation – Derivação
.... ....
SaídaIntermediáriaCamada
de Entrada
y1
ym
.
.
.
.
x1
xn
h
Pesos wij Pesos wjk
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
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
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
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
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
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
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
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
Top Related