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
Perceptron de Múltiplas Camadas
(MultiLayer Perceptron-MLP)
..
. ... ...
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
Perceptron de Múltiplas Camadas
(MultiLayer Perceptron-MLP)
y= f
∑
i=1 n xi∗wi
= f xt w x1 x2 xn w1 w2 wn + y . . . vetor deentrada peso daconexão
somador função de
Perceptron de Múltiplas Camadas
(MultiLayer Perceptron-MLP)
Função de Ativação:
Perceptron de Múltiplas Camadas
(MultiLayer Perceptron-MLP)
Função de Ativação:
Não Linear e Diferenciável
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
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)
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=1n
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:
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:
Algoritmo de treinamento
BackPropagation - Derivação
Isolando apenas o segundo termo, e continuando a
derivação pela regra da cadeia, temos:
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!
Algoritmo de treinamento
BackPropagation - Derivação
Assim, temos a fórmula completa:
Com e
Fazendo = 1/2, temos a fórmula final
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
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
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:
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:
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:
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:
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:
Algoritmo de treinamento
BackPropagation – Derivação
Mas a primeira parte é mais delicada
Fazendo para cada padrão de treinamento L temos
Algoritmo de treinamento
BackPropagation – Derivação
Continuando, temos que
e também temos que
Então
Agora temos que:
Algoritmo de treinamento
BackPropagation – Derivação
Agora podemos obter a fórmula completa do gradiente:
Fazendo:
Ficamos com
Ou para cada padrão: