COMO A REDE APRENDE

Exemplo de cálculo dos pesos de uma rede neural
usando o Backpropagation Algorithm (Delta Rule)

Exemplo didático

 

Usamos como exemplo o treinamento da rede para realizar a função OR, uma das duas operações básicas do computador (a outra é o NOT; são essas as duas únicas operações que qualquer computador consegue efetuar, não obstante a aparente infinidade de funções que realiza).

Uma vez estabelecida uma arquitetura de rede, através de métodos heurísticos (no caso usamos três neurônios e nenhuma hidden layer), passamos ao cálculo da memorização correta (W1 e W2):

Para cada linha da tabela abaixo seguimos os passos:

Com W1 e W2 obtidos do passo anterior, calculamos a saída da rede f(net) e o erro cometido. Com base no erro, calculam-se os novos valores de W1 e W2. O processo termina quando os erros cometidos são inferiores a um dado limite.

Como método de treinamento, usamos quatro pares de valores X1 e X2 por seção (época).
Neste caso, foi possível treinar a rede em 4 épocas, já que na última o erro foi zero em toda a seção. Os pesos resultaram W1=0.7 e W2=0.6. Com esses valores a rede acima consegue realizar a função OR corretamente.

Os valores iniciais de W1 e W2 foram 0.1 e 0.2 e podem ser alterados.
Learning rate = 0.2 (para apressar o treinamento, mas também pode gerar caos)
Synapse Threshold = 0.55 (parâmetro que define o funcionamento da sinapse)

Delta Rule (algorítmo de otimização, sem restrições, dos pesos):
W1 final = W1 inicial + learning rate * erro * X1
W2 final = W2 inicial + learning rate * erro * X2

 

Seção de
treinamento
X1 X2 X1 or X2 W1
inicial
W2
inicial
Net f(Net) ERRO W1
final
W2
final
1 0 0 0 0.1 0.2 0 0 0 0.1 0.2
  0 1 1 0.1 0.2 0.2 0 1 0.1 0.4
  1 0 1 0.1 0.4 0.1 0 1 0.3 0.4
  1 1 1 0.3 0.4 0.7 1 0 0.3 0.4
2 0 0 0 0.3 0.4 0 0 0 0.3 0.4
  0 1 1 0.3 0.4 0.4 0 1 0.3 0.6
  1 0 1 0.3 0.6 0.3 0 1 0.5 0.6
  1 1 1 0.5 0.6 1.1 1 0 0.5 0.6
3 0 0 0 0.5 0.6 0 0 0 0.5 0.6
  0 1 1 0.5 0.6 0.6 1 0 0.5 0.6
  1 0 1 0.5 0.6 0.5 0 1 0.7 0.6
  1 1 1 0.7 0.6 1.3 1 0 0.7 0.6
4 0 0 0 0.7 0.6 0 0 0 0.7 0.6
  0 1 1 0.7 0.6 0.6 1 0 0.7 0.6
  1 0 1 0.7 0.6 0.7 1 0 0.7 0.6
  1 1 1 0.7 0.6 1.3 1 0 0.7 0.6
      Função
OR
W1
anterior
W2
anterior
W1*X1+
+W2*X2
IF Net>.55
then 1
else 0
Delta=
(X1 or X2)
- f(Net)
   
Etapas     Lição a
aprender
Memória
antes
do
ensino
Memória
antes
do
ensino
Ensino Ensino Exame Aprendizagem Aprendizagem