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 |