Você está na página 1de 3

Resumo do algoritmo Back-Propagation em

notação matricial: um exemplo para o problema XOR


Ruben Carlo Benante1

Passo 1: Inicializar os valores e as matrizes

Meta = 0,001, erro total final desejado


P=4, núm. total de padrões
ns=1, núm. de neurônios na camada de saída
ne=2, núm. de neurônios na camada escondida
nx=2, núm. de neurônios na camada de entrada (ou núm. de características de cada
padrão)

WEne,nx = Matriz de pesos entre a camada de entrada e a escondida (inicia com valores
aleatórios próximos e diferentes de zero)
WE1,1 WE1, 2   0,01 − 0,02
WEne ,nx =  = 
WE2,1 WE2, 2  − 0,03 0,04 

WSns,ne = Matriz de pesos entre a camada escondida e a camada de saída (inicia com
valores aleatórios próximos e diferentes de zero)
 1,1  − 0,01
WS
WS ns ,ne =  = 
WS 2,1   0,02 

DSns,1 = Matriz dos gradientes locais da camada de saída


DEne,1 = Matriz dos gradientes locais da camada escondida

BEne,1 = Matriz de bias para os neurônios da camada escondida


 BE1,1   − 1,5 
BE ne ,1 =  = 
 BE2,1  − 0,5

BSns,1 = Matriz de bias para os neurônios da camada de entrada


BS ns ,1 = [ BS1,1 ] = [ − 0,5]

NETEne,1 = Matriz do "soma" dos neurônios da camada escondida


NETSns,1 = Matriz do "soma" dos neurônios da camada de saída

i = padrão atual, variando de 1 a p

Tns,p = Matriz com os resultados desejados para todos os padrões


Tns , p = [T1,1 T1, 2 T1,3 T1, 4 ] = [ 0 1 1 0]

TPns,1 = Matriz com os resultados desejados para o padrão i atual em treinamento

1
Doutorando em Ciências da Computação pela UFPE - Universidade Federal de Pernambuco,
Recife - PE. E-mail: rcb@cin.ufpe.br
Xnx,p = Matriz com os padrões de treinamento
 X 1,1 X 1, 2 X 1,3 X 1, 4  0 0 1 1
X nx , p =  = 
 X 2,1 X 2, 2 X 2,3 X 2 , 4  0 1 0 1

XPnx,1 = Matriz com o padrão i atual em treinamento


YEPne,1 = Matriz de saída da rede, para o padrão i atual em treinamento
YSns,p = Matriz de saída da rede, para todos os padrões
YSns , p = [YS1,1 YS1, 2 YS1,3 YS1, 4 ]

YSPns,1 = Matriz de saída da rede, para o padrão i atual em treinamento

ERRSns,ns = Matriz diagonal de erros propagados da camada de saída


ERRS ns , ns = [ ERRS1,1 ]

ERREne,ne = Matriz diagonal de erros propagados da camada escondida


ERRE1,1 0 
ERREne , ne = 
 0 ERRE2, 2 

ERRTns,p = Matriz de erros totais entre o desejado e o obtido

SIG(Net) = Função sigmóide


1
SIG ( Net ) =
1 + e − A. Net

SIG'(Net) = Derivada da função sigmóide


A.e − A. Net
SIG ' ( Net ) =
(1 + e )
− A. Net 2

A = Multiplicador para a inclinação da função sigmóide


N = Taxa de aprendizagem

Passo 2: Laço de Propagação

* Para todo i de 1 a p, faça:

Passo 2.1: Propagação para Frente

NETEne,1 = WEne,nx . XPnx,1 + BEne,1


YEPne,1 = SIG(NETEne,1)

NETSns,1 = WSns,ne . YEPne,1 + BSns,1


YSPns,1 = SIG(NETSns,1)

YSns,p = [C1 C2 ... Ci-1 YSPns,1 Ci+1 ... Cp]

Passo 2.2: Propagação para Trás


ERRSns,ns = Diag(YSPns,1 - TPns,1)
DSns,1 = ERRSns,ns . SIG'(NETSns,1)

ERREne,ne = Diag(WStne,ns . DS)


DEne,1 = ERREne,ne . SIG'(NETEne,1)

Passo 2.3: Atualizar os pesos

WSns,ne = WSns,ne + N.DSns,1.YEPt1,ne


WEne,nx = WEne,nx + N.DEne,1.XPt1,nx

Fim do Passo 2: Repita para todos os padrões

Passo 3: Calcule o erro e outros Critérios de Parada

ERRTns,p = YSns,p - Tns,p


Se | ERRTj,i | > Meta para qualquer j=1,...,ns ou i=1,...p
Então reinicie a partir do Passo 2
Senão Pare.