Escolar Documentos
Profissional Documentos
Cultura Documentos
Attux
DCA/FEEC/Unicamp & DECOM/FEEC/Unicamp
* Versões anteriores deste material foram elaboradas pelos Profs. Leandro N. de Castro e Fernando J. Von
Zuben.
1. Introdução
• Como o erro é função indireta dos pesos nas camadas intermediárias, a regra da
cadeia deverá ser usada para o cálculo das derivadas.
• O perceptron de múltiplas camadas (multi-layer perceptron) é uma rede do tipo
perceptron com, pelo menos, uma camada intermediária.
• Trata-se de uma generalização do perceptron simples discutido em aula.
• Com a publicação do livro Perceptrons (Minsky & Papert, 1969) no final da
década de 1960, foi proposta a rede perceptron com múltiplas camadas como uma
tentativa de superar as limitações encontradas no perceptron simples.
• Tornou-se então necessário desenvolver um algoritmo de treinamento mais
sofisticado capaz de definir de forma automática os pesos para este tipo de rede.
• Como será detalhado a seguir, o algoritmo de treinamento desta rede é uma
generalização da regra delta proposta por Widrow & Hoff para o treinamento da
Adaline.
+1 +1 +1
x1
x2 y1
x3 y2
…
…
yo
… …
Functional signal propagation
xm Error backpropagation
Input layer
First hidden Second Output layer
layer hidden layer
• A regra delta generalizada será utilizada para ajustar os pesos e limiares (bias) da
rede de forma a minimizar o erro entre a saída da rede e a saída desejada para
todos os padrões de treinamento.
• Para isso, serão utilizadas informações sobre o gradiente do erro em relação aos
pesos e limiares da rede, pois já sabemos que, atualizando os pesos da rede na
direção oposta à do vetor gradiente, estamos minimizando o erro entre a saída da
rede e a saída desejada.
• Entretanto, o erro é calculado diretamente apenas para a camada de saída. A
pergunta que o algoritmo de retropropagação do erro responde é: como determinar
a influência do erro nas camadas intermediárias da rede?
∂ℑ(t ) ∂ℑ(t )
wim, j (t + 1) = wim, j (t ) − α , bim (t + 1) = bim (t ) − α
∂wim, j ∂bim
x 1 y1 2 y2 3 y3
W W W
u1 u2 u3
∑ f1 ∑ f2 ∑ f3
1 1 1 2 1 3
b b b
• O segundo termo de cada uma das equações acima pode ser facilmente calculado,
uma vez que a entrada líquida da camada m é uma função explícita dos pesos e
limiares nesta camada (Sm é a quantidade de neurônios na camada m):
S m −1
u = ∑ wim, j y mj−1 + bim .
m
i
j =1
∂uim m −1 ∂u i
m
= y , = 1.
∂wim, j ∂bim
j
∂ℑ
δ im ≡ ,
∂uim
então:
∂ℑ ∂ℑ
= δ im y mj−1 , = δ im .
∂wi , j
m
∂bim
∂uim+1 ∂y mj ∂f m (u mj )
m +1
= wi , j m +1
= wi , j = wim, j+1 f& m (u mj ),
∂u j
m
∂u jm
∂u jm
&f m (u m ) = ∂f (u j ) .
m m
onde ∂u mj
j
• Em notação matricial:
∂u m+1
= W m+1F& m (u m ),
∂u m
f& m (u1m ) 0 L 0
&F m (u m ) = 0 f& (u 2m )
m
L 0
.
onde M M O M
0 0 L f& m (u Smm )
m +1 T
∂ℑ ∂u ∂ℑ ∂ℑ
δ = m =
m
= F& m (u m )( W m+1 )T = F& m (u m )( W m+1 )T δ m+1 .
∂u ∂u ∂u
m m +1
∂u m +1
• Observe que as sensibilidades são propagadas da última para a primeira camada
através da rede:
δM → δM – 1 → …→ δ2 → δ1
• Ainda existe um último passo a ser executado para que o algoritmo de retro-
propagação fique completo. Precisamos do ponto de partida, δM, para a relação de
recorrência da equação acima. Este ponto é obtido na última camada:
SM
∂∑ (s j − y j ) 2
∂J ∂(s − y ) (s − y )
T
j =1 ∂yi
δ iM = = = = −2( si − yi ) .
∂uiM
∂uiM ∂u i
M
∂uiM
• Como:
= = = f (u j ), &
então δ i = −2( si − yi ) f
M M
(u Mj ).
∂uiM ∂uiM ∂uiM
&M M
• Em notação matricial: δ = −2F (u )(s − y ).
M
Retro-propagação
das sensibilidades
. . .
F1 F2 F3
(W2)T (W3)T
π π δ2
π π δ3
π 2 (y – s)
δ1 δ2 δ3
1 w01
w11
+ f
w1m
1 w02 1
α0
xl1
w21
α1
+ f Fl
+
α2
xlm
w2m
αM
1 w0
wM1
+ f
wMm
• Para um dado conjunto de treinamento, a atualização dos pesos pode ser feita de
duas maneiras básicas:
o Atualização local: neste método, a atualização dos pesos é feita imediatamente
após a apresentação de cada amostra de treinamento. Especificamente, considere
uma época consistindo de N padrões de treinamento arbitrariamente ordenados
{(x1 , s1 ),..., (x N , s N )}. A primeira amostra (x1 , s1 ) da época é apresentada à rede, e
são efetuados o passo positivo e a retro-propagação do erro, resultando em um
ajuste dos pesos das conexões. Em seguida, a próxima amostra (x 2 ,s 2 ) é
apresentada à rede e o passo positivo e a retro-propagação do erro são efetuados,
resultando em mais um ajuste do conjunto de pesos. Este processo é repetido até
que a última amostra seja apresentada à rede. Este método também é conhecido
como método de atualização online ou padrão a padrão.
o Atualização em lote: no método em lote, a atualização dos pesos só é feita após
a apresentação de todas as amostras de treinamento que constituem uma época.
1.0 1.0
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0.0 0.0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1.0 -1.0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
1.0 1.0
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0.0 0.0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1.0 -1.0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
este mínimo for o mínimo global, ou um bom mínimo local da superfície de erro,
então a rede neural estará em, ou próxima de, seu limite de desempenho. Caso
contrário, quanto pior for o mínimo local, pior o desempenho da rede treinada.
• Diversas estratégias de inicialização dos pesos já foram sugeridas. Os métodos
mais simples baseiam-se em uma distribuição uniforme aleatória (KOLEN &
POLLAK 1990), representando a ausência total de conhecimento sobre o conjunto
amostral.
• Há abordagens mais sólidas, como os dois paradigmas alternativos para busca do
melhor conjunto inicial de pesos via treinamento supervisionado que exporemos a
seguir:
• Paradigma do caminho mais fácil: não é tão comum na literatura. A idéia básica é
fornecer uma condição inicial não necessariamente próxima da solução ótima, mas
que seja tal que o processo de treinamento possa, a partir da condição inicial,
evoluir mais rapidamente (em média) e mais eficientemente. A estratégia mais