Perceptron e Multilayer Perceptron

elainececiliagatto 3,200 views 62 slides Jun 15, 2018
Slide 1
Slide 1 of 62
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62

About This Presentation

apostila que descreve matematicamente a resolução destas redes neurais


Slide Content

Elaine Cecília Gatto
Apostila de Perceptron e Multilayer Perceptron
São Carlos/SP
Junho de 2018

Elaine Cecília Gatto
Apostila de Perceptron e Multilayer Perceptron
Elaborada com base nas aulas da disciplina de
Introdução a Redes Neurais Articiais minis-
trada pelo Professor Doutor Ricardo Cerri e
também nos cursos Online do Professor Dou-
tor Jones Granatyr
Universidade Federal de São Carlos
Departamento de Computação
Programa de Pós-Graduação em Ciência da Computação
São Carlos/SP
Junho de 2018

Resumo
A ideia desta apostila surgiu da minha necessidade em aprender de forma mais aprofundada
os conceitos matemáticos envolvidos com o Perceptron e o Multilayer Perceptron. Tive
diculdades no entendimento básico dessas duas Redes Neurais Articiais (RNAs) e
também a Linguagem R, que são fundamentais para o entendimento e implementação
das outras RNAs. Devido a essa minha diculdade, z alguns cursos online na UDEMY,
ministrados pelo Professor Doutor Jones, os quais me ajudaram a entender muito melhor
o funcionamento das Redes Neurais e, a partir das minhas anotações feitas em caderno,
tanto das aulas do Professor Doutor Ricardo, quanto desses cursos online, decidi por a
prova o que eu tinha aprendido, organizando meu pensamento, de forma que pudesse
me auto-orientar posteriormente e, até mesmo compartilhar isto com outras pessoas que
tenham também diculdades como eu tive. Esta apostila é o resultado desses estudos
e apresenta a resolução matemática passo a passo, minuciosamente, sem deixar de fora
nenhum detalhe, é uma verdadeira entrega mastigada e quase digerida do conhecimento,
que me ajudou e espero que ajude outras pessoas. O
unidade básica de processamento de toda rede neural, e o
Perceptron, que é uma RNA mais complexa e permite aplicação de Deep Learning. A
Teoria não é abordada aqui pois há muito material disponível na Internet (livros, artigos,
etc.), assim sugiro que utilize esta apostila como material de apoio ao seu material teórico.
Dúvidas podem ser encaminhadas ao meu e-mail: [email protected]. Muito
Obrigada e bons estudos.
Palavras-chaves: Redes Neurais Articiais, Perceptron, Multilayer Perceptron.

Lista de ilustrações
Figura 1 Representação Gráca e Tabular do Perceptron
Figura 2 Perceptron Exemplo
Figura 3 1.
a
Época + 1.
o
Exemplo
Figura 4 1.
a
Época + 2.
o
Exemplo
Figura 5 2.
a
Época + 1.
o
Exemplo
Figura 6 2.
a
Época + 2.
o
Exemplo
Figura 7 Representação Gráca do MLP
Figura 8 Arquitetura do MLP para o XOR
Figura 9 MLP XORCE!CO. . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Figura 10 MLP XORCO!CS. . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Figura 11 Arquitetura sugerida MLP-IRIS

Lista de tabelas
Tabela 1 Dados de Entrada
Tabela 2 Vetor de Pesos Inicial
Tabela 3 Pesos Atualizados: 1.
a
Época + 1.
o
Exemplo
Tabela 4 Pesos Atualizados: 1.
a
Época + 2.
o
Exemplo
Tabela 5 Porta Lógica XOR
Tabela 6 Matriz Potencial de Ativação
Tabela 7 Matriz Função de Ativação
Tabela 8 Dados de Entrada daCO!CS. . . . . . . . . . . . . . . . . . . . . 37
Tabela 9 Pesos daCO!CS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Tabela 10 Matriz Potencial de Ativação
Tabela 11 Matriz Função de Ativação
Tabela 12 Matriz do Erro Simples
Tabela 13 Matriz do Erro Quadrático
Tabela 14 Matriz Delta daCS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Tabela 15 Matriz da Derivada daCO. . . . . . . . . . . . . . . . . . . . . . . . 43
Tabela 16 Matriz Delta daCO. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Tabela 17 EntradasCS!CO. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Tabela 18 Pesos daCO!CSatualizados
Tabela 19 EntradasCO!CE. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Tabela 20 Pesos daCE!COatualizados

Lista de abreviaturas e siglas
RNAs
MLP
CE
CO
CS
CE!COCamada de Entrada PARA a Camada Oculta
CO!CSCamada Oculta PARA a Camada de Saída
CS!COCamada de Saída PARA a Camada Oculta
CO!CECamada Oculta PARA a Camada de Entrada

Lista de símbolos
i i-ésimo elemento da linha da matriz
j j-ésimo elemento da coluna da matriz
n Número total de entradas
m Momentum
Taxa de Aprendizagem
k Neurônio
ksi Neurônios daCS
koi Neurônios daCO
x Matriz de Entrada
xeo Matriz de Entrada daCE!CO
xos Matriz de Entrada daCO!CS
w Matriz de Pesos
weo Matriz de Pesos daCE!CO
wos Matriz de Pesos daCO!CS
v Potencial de Ativação
veo Potencial de Ativação daCE!CO
vos Potencial de Ativação daCO!CS
f(v) Função de Ativação
f(veo) Função de Ativação daCE!CO
f(vos) Função de Ativação daCO!CS
y Saída do Neurônio
yeo Saída do Neurônio daCE!CO
yos Saída do Neurônio daCO!CS

erro Erro Simples
mediaE Média do Erro Simples
erroQ Erro Quadrático
mediaEQ Média do Erro Quadrático
4 Delta
4s Delta daCS
4o Delta daCO
d Derivada da Função de Ativação
ds Derivada da Função de Ativação daCS
do Derivada da Função de Ativação daCO

Listings
1.1 Perceptron.R
1.2 TreinaTestaPerceptron.R
1.3 PerceptronIris.R
2.1 MultilayerPerceptron.R
2.2 TreinaMLP.R
2.3 TestaMLP.R
2.4 TestaMLP.R
2.5 TestaMLP.R

Sumário
1 PERCEPTRON
1.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
1.2 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
1.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
2 MLP
2.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
2.2 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
2.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

15
1 Perceptron
1.1 Conceitos
Criador:Rosenbalt
Ano:1958
Arquitetura:
Uma camada de entrada comnatributos e uma camada de saída com
apenas um neurônio. Não há camada oculta.
Tipo de RNA:O Perceptron é uma RNA do Tipo FeedForward.
Paradigma de Aprendizado:
O Perceptron é uma RNA que emprega o Aprendizado
Supervisionado.
Algoritmo de Treinamento:
O Perceptron faz uso do Algoritmo de Correção e Erro
para o Treinamento.
Modo de Treinamento:Batch ou Online
Tipo de Função de Ativação:Degrau, Sinal, etc.
Tipo de Separação das Classes:Hiperplanos
Problemas que resolve:Linearmente Separáveis e Classicação.
Vantagens:
O perceptron pode ser utilizado para resolver diversos problemas que sejam
linearmente separáveis.
Desvantagens:
O perceptron não consegue solucionar problemas não linearmente separá-
veis.
Representação Gráca e Tabular:Apresentada na
1.2 Exemplo
Considere os seguintes dados de entrada apresentados na:
Tabela 1 Dados de Entrada
Exemplox1x2x3BiasClasse
E1 001-1 -1
E2 110-1 1
Considere também o seguinte vetor de pesos indicado pela:

16 Capítulo 1. Perceptron
Figura 1 Representação Gráca e Tabular do Perceptron
Fonte: Elaborado pela autora
Tabela 2 Vetor de Pesos Inicial
123b
w0.4-0.50.60.5
Calcule o Perceptron considerando os seguintes parâmetros:
Potencial de Ativação:v=
P
n
i=1(xiwi)
Função de Ativação Sinal:
f(v) =
8
<
:
1;sev0
1;sev >0
Saída:y=f(v)
Erro Simples:Erro=DesejadoObtido
Erro Quadrático:ErroQ=ErroQ+ (ErroErro)
Média do Erro:MediaE=ErroQ=N:
o
deLinhas
Taxa de Aprendizagem:= 0:4

1.2. Exemplo 17
Figura 2 Perceptron Exemplo
Fonte: Elaborado pela autora
Figura 3 1.
a
Época + 1.
o
Exemplo
Fonte: Elaborado pela autora
Atualização dos pesos:
8
<
:
NãoCalculaNovosPesos;seErro= 0
winovo=wiatual+ (Erroxi);seErro6= 0
Critério de Parada:8
<
:
Finaliza;seMediaE= 0
Repete;seMediaE6= 0
A Representação Gráca deste Perceptron é apresentada na
mostra o seu estado atual, com os respectivos valores iniciais de entrada e pesos deE1,
para o início do cálculo.
A. Primeira Época

18 Capítulo 1. Perceptron
A.1. Primeiro Exemplo (E1)
1.
o
Passo:Calcular o Potencial de Ativação
v= (x1w1) + (x2w2) + (x3w3) + (biaswb)
v= (00:4) + (0(0:5)) + (10:6) + (10:5)
v= (0:5 + 0 + 0 + 0:6) = 0:1
2.
o
Passo:Calcular a Função de Ativação
0:1>0 =V
0:10 =F
f(v) =f(0:1) = 1
3.
o
Passo:Calcular a Saída
y=f(v) = 1
4.
o
Passo:Calcular o Erro
Erro=DesejadoObtido=ClasseE1Y= 11 =2
5.
o
Passo:Calcular o Erro Quadrático
ErroQ=ErroQ+ (ErroErro) = 0 + (2 2) = 0 + (4) = 4
6.
o
Passo:Calcular a Média do Erro
MediaE=ErroQ=2 = 4=2 = 2
7.
o
Passo:Calcular Novos Pesos
w1novo=w1atual+ (Errox1)
w1novo= 0:4 + (0:4(2)0) = 0:4 + (0) = 1:3
w2novo=w2atual+ (Errox2)
w2novo=0:5 + (0:4(2)0) =0:5 + (0) =0:5
w3novo=w3atual+ (Errox3)
w3novo= 0:6 + (0:4(2)1) = 0:6 + (0:8) =0:2
wbnovo=wbatual+ (Erroxb)
wbnovo= 0:5 + (0:4(2)(1)) = 0:5 + (0:8) = 1:3

1.2. Exemplo 19
Figura 4 1.
a
Época + 2.
o
Exemplo
Fonte: Elaborado pela autora
Fim do Cálculo para o Primeiro Exemplo. Novo Vetor de Pesos:
Tabela 3 Pesos Atualizados: 1.
a
Época + 1.
o
Exemplo
12 3b
w0.4-0.5-0.21.3
A.2 Segundo Exemplo (E2)
A
e já com os valores de entrada do Segundo Exemplo. Note que os pesos que estão em
vermelho são aqueles que sofreram atualizações no processo de execução do Primeiro
Exemplo.
1.
o
Passo:Calcular o Potencial de Ativação
v= (x1w1) + (x2w2) + (x3w3) + (biaswb)
v= (10:4) + (0(0:5)) + (0(0:2)) + (11:3)
v= (0:4 + 0 + 01:3) =0:9
2.
o
Passo:Calcular a Função de Ativação
0:9>0 =F
0:9 = 0 =F
0:9<0 =V
f(v) =f(0:9) =1
3.
o
Passo:Calcular a Saída
y=f(v) =1

20 Capítulo 1. Perceptron
4.
o
Passo:Calcular o Erro
Erro=DesejadoObtido=ClasseE2y= 1(1) = 2
5.
o
Passo:Calcular o Erro Quadrático
ErroQ=ErroQ+ (ErroErro) = 4 + (22) = 4 + (4) = 8
6.
o
Passo:Calcular a Média do Erro
MediaE=ErroQ=2 = 8=2 = 4
7.
o
Passo:Calcular Novos Pesos
w1novo=w1atual+ (Errox1)
w1novo= 0:4 + (0:421) = 0:4 + (0:4) = 1:2
w2novo=w2atual+ (Errox2)
w2novo=0:5 + (0:420) =0:5 + (0) =0:5
w3novo=w3atual+ (Errox3)
w3novo=0:2 + (0:420) =0:2 + (0) =0:2
wbnovo=wbatual+ (Erroxb)
wbnovo= 1:3 + (0:42(1)) = 1:3 + (0:8) = 0:5
Fim do Cálculo para o Segundo Exemplo. Novo Vetor de Pesos:
Tabela 4 Pesos Atualizados: 1.
a
Época + 2.
o
Exemplo
12 3b
w1.2-0.5-0.20.5
8.
o
Passo:Critério de Parada
MediaE= 0 =>4 = 0 => F
Fim da Primeira Época. A execução do Algoritmo continua. Agora será repetido
todo o cálculo, para os exemplos 1 e 2. A
com os novos valores dos pesos e os valores de entrada deE1. Observe que os pesos que
foram alterados estão na cor vermelha!

1.2. Exemplo 21
Figura 5 2.
a
Época + 1.
o
Exemplo
Fonte: Elaborado pela autora
B. Segunda Época
B.1. Primeiro Exemplo (E1)
1.
o
Passo:Calcular o Potencial de Ativação
v= (x1w1) + (x2w2) + (x3w3) + (biaswb)
v= (01:2) + (0(0:5)) + (1(0:2)) + (10:5)
v= (0 + 0 +0:2 + (0:5)) =0:7
2.
o
Passo:Calcular a Função de Ativação
0:7>0 =F
0:70 =V
f(v) =f(0:7) =1
3.
o
Passo:Calcular a Saída
y=f(v) =1
4.
o
Passo:Calcular o Erro
Erro=DesejadoObtido=ClasseE1y=1(1) =1 + 1 = 0
5.
o
Passo:Calcular o Erro Quadrático
ErroQ=ErroQ+ (ErroErro) = 0 + (00) = 0 + (0) = 0
6.
o
Passo:Calcular a Média do Erro
MediaE=ErroQ=2 = 0=2 = 0

22 Capítulo 1. Perceptron
Como o Erro é igual a 0 não é necessário calcular novos pesos! Fim do cálculo para
o primeiro exemplo. A
valores de E2 e pesos.
Figura 6 2.
a
Época + 2.
o
Exemplo
Fonte: Elaborado pela autora
B. Segundo Exemplo (E2)
1.
o
Passo:Calcular o Potencial de Ativação
v= (x1w1) + (x2w2) + (x3w3) + (biaswb)
v= (11:2) + (0(0:5)) + (0(0:2)) + (10:5)
v= (1:2 + 0 + 0 + (0:5)) = 0:7
2.
o
Passo:Calcular a Função de Ativação
0:7>0 =V
0:70 =F
f(v) =f(0:7) = 1
3.
o
Passo:Calcular a Saída
y=f(v) = 1
4.
o
Passo:Calcular o Erro
Erro=DesejadoObtido=ClasseE2y= 11 = 0
5.
o
Passo:Calcular o Erro Quadrático
ErroQ=ErroQ+ (ErroErro) = 0 + (00) = 0 + (0) = 0

1.3. Algoritmo 23
6.
o
Passo:Calcular a Média do Erro
MediaE=ErroQ=2 = 0=2 = 0
Como o Erro é igual a 0 não é necessário calcular novos pesos, portanto, m do
cálculo para o segundo exemplo, m da segunda época, m do algoritmo e m do Exemplo.
1.3 Algoritmo
Nesta seção são apresentadas uma versão do Algoritmo do Perceptron em pseudo-
código (Algoritmo) e em linguagem R (Listing 1.1,) de forma
que traduzam os cálculos feitos manualmente na. É importante enfatizar que
na Treinamento
da RNA. Depois disto, a RNA já pode ser usada para teste, isto é, já está pronta para
classicar novos dados, é o que será demonstrado agora. É importante frisar que em Algo-
ritmo
matriz de entrada que contém a Classe daquele exemplo em particular. Este é o algoritmo
em Pseudocódigo, isto signica que você pode pegar este algoritmo e transportá-lo para
qualquer linguagem e ele funcionará, talvez sejam necessários ajustes por conta da sintaxe
da linguagem, mas a lógica é esta. O código fonte de é um arquivo de script R chamado
Perceptron e o código fonte em é outro script chamado TreinaTestaPerceptron.
Listing 1.1 Perceptron.R
setwd("caminho da sua pasta")
#
perceptron2. function(dados,pesos){
n0.4
erro 1
epocas 0
nRowsD nrow(dados)
tamP length(pesos)
while
cat
epocas epocas
cat
erro 0
erroQ 0
mediaErro 0
for){
cat

24 Capítulo 1. Perceptron
Algorithm 1Perceptron em Pseudocódigo
1:functiontreinaPerceptron(dados; pesos)
2:n 0
3:erro 1
4:epocas 0
5:tam dimensaoV etorPesos
6:nRowsD quantidadeTotalDeLinhasDaMatrizDados
7:while(erro== 0)do
8: epocas epocas+ 1
9: erroQ 0
10: mediaE 0
11: fori 1tonrowsdo do
12: v 0
13: forj 1totamdo do
14: v v+dados[i; j]pesos[j]
15: end for
16: y funcaoSinal(v)
17: erro desejadoy
18: erroQ erroQ+ (erroerro)
19: if(desejado6=y)then
20: erro 1
21: forj 1totamdo do
22: pesos[j] pesos[j] + (n(desejadoy)dados[i; j])
23: end for
24: end if
25: end for
26: mediaE erroQ=nRowsD
27:end while
28:returnpesos
29:end function
30:functiontestaPerceptron(exemplo; pesos)
31:v 0
32:fori 1totamanhoDoExemplodo do
33: v v+ (exemplo[i]pesos[i])
34:end for
35:y funcaoSinal(v)
36:returny
37:end function

1.3. Algoritmo 25
cat)
v0
for){
vv[i,j] pesos[
}
ysign(v)
erro dados[i,4] y
erroQ erroQerro (erro)
cat)
if[){
erro 1
for)){
pesos pesos[j] + (n (dados[i,4] y)
dados[i,
}
}
}
mediaErro mediaErro/nrow(dados)
cat)
}
catepocas," épocas")
return)
}
#
perceptron2 function(exemplo,pesos){
cat
cat
v0
for)){
vv[i] pesos[i]
}
ysign(v)
cat
return)
}
Listing 1.2 TreinaTestaPerceptron.R
setwd("caminho da sua pasta")

26 Capítulo 1. Perceptron
source
#
x1 c
x2 c
bias c
classe c(1,1,1,1,1,1,1,1,1,1,1,1)
dados data.frame(x1,x2,bias,classe)
dados
#
#
dados
dados
dados
dados
nrow(dados)
ncol)
#
pesos runif(3,1,1)
pesos t(pesos)
length)
novos.pesos perceptron2.treino(dados,pesos)
#
cores dados$classe
cores 1] <2
plotcores,pch=ifelse>0,"+"," "),cex=2,lwd=2)
#
intercept novos.pesos[3] /.pesos[2]
slope novos.pesos[1] /.pesos[2]
abline
#
perceptron2(c.pesos)
perceptron2(c.pesos)

1.3. Algoritmo 27
Na
mesmas listagens de códigos fontes é possível fazer o treinamento e teste, de forma
adaptada, do banco de dados Iris, conforme apresenta a
Listing 1.3 PerceptronIris.R
setwd("caminho da sua pasta")
source
#
data(
#
dim(
#
names(
#
summary(iris$Species)
#
pairs
#
xcbind(iris$Sepal.Width,iris$Petal)
x
#
yifelse 1)
y
#
bias rep(1,nrow(x))
bias
xcbind(x,bias)
x
#

28 Capítulo 1. Perceptron
xcbind(x,y)
x
#
pesos runif(3,1,1)
pesos
pesos t(pesos)
pesos
#
pesos perceptron2.treino(x,pesos)
#
plot=0.2)
points==1),col="black",pch="+",cex=2)
points== 1),col="red",pch=" ",cex=2)
#
intercept pesos.iris
slope pesos.iris
abline
#
perceptron2(c
perceptron2(c
A função de ativação utilizada no Exemplo demonstrado em
tuída por outras, conforme o problema a ser resolvido. Apenas a título de curiosidade,
reimplemente os códigos aqui apresentados para resolver os problemas das portas lógicas
AND, OR, NAND, NOR e NOT. Faça também a resolução manual para conferir os
resultados, os pesos podem começar com 0.0 (ou 0.5) e a taxa de aprendizagem como 1 ou
0.5. Boa Sorte.

29
2 Multilayer Perceptron
2.1 Conceitos
Criadores:Rumelhart, Hinton e Williams
Ano:Década de 80
Arquitetura:
Uma camada de entrada(CE)comnatributos, uma ou mais camadas
ocultas(CO)com um ou mais neurônios em cada uma delas e, por m, uma camada de
saída(CS)com um ou mais neurônios, conforme o problema a ser modelado.
Tipo de R.N.A.:Recorrente ou Retroalimentação
Paradigma de Aprendizado:Supervisionado
Algoritmo de Treinamento:BackPropagation (Gradiente Descendente)
Modo de Treinamento:Batch ou Online
Tipo de Função de Ativação:Sigmoidal, Tangente Hiperbólica, etc.
Tipo de Separação das Classes:Hiperplanos
Problemas que resolve:Não Linearmente Separáveis, Classicação e Regressão
Representação Gráca:
A
com uma camada de entrada com vários atributos de entrada, duas camadas escondidas
com vários neurônios cada, e uma camada de saída também com vários neurônios.
2.2 Exemplo
A porta lógica XOR será utilizada como exemplo para demonstração de resolução
passo a passo do MLP. A
problema. A Rede Neural é composta por uma camada de entrada (CE) com três entradas
(Bias, x1 e x2), uma camada oculta (CO) com quatro neurônios (Bias, k1, k2 e k3) e
uma camada de saída (CS) com apenas um neurônio (ky). A
Lógica XOR que tem a saída igual a 1 quando as entradas são diferentes e a saída igual a 0
quando as entradas são iguais. Conforme o desenvolvimento do exercicio vai ocorrendo, as
tabelas e imagens serão apresentadas com seu estado atual para facilitar o entendimento.
Considere os seguintes parâmetros para o MLP especicamente para o problema
XOR. Praticamente todas as equações são utilizadas aqui para o MLP em geral, apenas
enfatizei algumas coisas relativas ao XOR para facilitar o entendimento.

30 Capítulo 2. MLP
Figura 7 Representação Gráca do MLP
Figura 8 Arquitetura do MLP para o XORTabela 5 Porta Lógica XOR
x1x2S
000
011
101
110

2.2. Exemplo 31
A xi1=bias
vij= (xijwij) + (xijwij) +:::+ (xnnwnn) (2.1)
A
f(vij) =
1
1 +e
vij
(2.2)
A
yij=f(vij) (2.3)
A xi4=classe
erroi=xi4yij (2.4)
A
mediaE=
(erro1+erro2+:::+erron)
n
(2.5)
A
erroQi=erroQi+ (erroierroi) (2.6)
A
mediaEQ=
(erroQ1+erroQ2+:::+erroQn)
n
(2.7)
A
dij= (yij(1yij)) (2.8)
A
4sij=erroidij (2.9)
A
4oij=dijwsij 4sij (2.10)
A
de saída para a camada oculta
kij= (yij 4sij) + (yij 4sij) +:::+ynn 4snn) (2.11)

32 Capítulo 2. MLP
wijN ovo= (wijAtualm) + (kij) (2.12)
A
oculta para a camada de entrada
xij= (xij 4oij) + (xij 4oij) +:::+ (xnn 4onn) (2.13)
wijN ovo= (wijAtualm) + (xij) (2.14)
O momentum é igual a 1 (m= 1) e a taxa de aprendizado é igual a 0.3 (= 0:3)
A. Cálculo daCE!CO
A.1. Primeiro Exemplo
Dados de Entrada:xeo
Biasx1 x2
E1 1 0 0
E2 1 0 1
E3 1 1 0
E4 1 1 1
Pesos daCE!CO:weo
K1 K2 K3
Bias0.896-0.4240.258
X1-0.422-0.740-0.577
X2-0.082-0.961-0.469
1.
o
Passo:Calcular o Potencial de Ativação
veo11= (xeo11weo11) + (xeo12weo21) + (xeo13weo31)
= (10:896) + (0(0:424)) + (00:358) = (0:896 + 0 + 0) = 0:896
veo12= (xeo11weo12) + (xeo12weo22) + (xeo13weo32) =
= (1(0:422)) + (0(0:740)) + (0(0:577)) = (0:422 + 0 + 0) =0:422
veo13= (xeo11weo13) + (xeo12weo23) + (xeo13weo33)
= (1(0:082)) + (0(0:961)) + (0(0:469)) = (0:082 + 0 + 0) =0:082
2.
o
Passo:Calcular a Função de Ativação
f(veo11) =f(0:986) =
1
1 +e
veo11
=
1
1 +e
0:986
=
1
1 + 0:373
=
1
1:373
= 0:7283
f(veo12) =f(0:422) =
1
1 +e
veo12
=
1
1 +e
(0:422)
=
1
1 + 1:5250
=
1
2:5250
= 0:3960
f(veo13) =f(0:082) =
1
1 +e
veo13
=
1
1 +e
(0:082)
=
1
1 + 1:0854
=
1
2:0854
= 0:4795

2.2. Exemplo 33
3.
o
Passo:Calcular a Saída
yeo11=f(veo11) = 0:7283
yeo12=f(veo12) = 0:3960
yeo13=f(veo13) = 0:4795
A.2. Segundo Exemplo
Dados de Entrada:xeo
Biasx1 x2
E1 1 0 0
E2 1 0 1
E3 1 1 0
E4 1 1 1
Pesos daCE!CO:weo
K1 K2 K3
Bias0.896-0.4240.258
X1-0.422-0.740-0.577
X2-0.082-0.961-0.469
1.
o
Passo:Calcular o Potencial de Ativação
veo21= (xeo21weo11) + (xeo22weo21) + (xeo23weo31)
= (10:896) + (0(0:424)) + (10:358) = (0:896 + 0 + 0:358) = 1:254
veo22= (xeo21weo12) + (xeo22weo22) + (xeo23weo32)
= (1(0:422)) + (0(0:740)) + (1(0:577)) = (0:422 + 0 + (0:577)) =0:999
veo23= (xeo21weo13) + (xeo22weo23) + (xeo23weo33)
= (1(0:082)) + (0(0:961)) + (1(0:469)) = (0:082 + 0 + (0:469)) =0:551
2.
o
Passo:Calcular a Função de Ativação
f(veo21) =f(1:254) =
1
1 +e
veo21
=
1
1 +e
1:254
=
1
1 + 0:2853
=
1
1:2853
= 0:7780
f(veo22) =f(0:999) =
1
1 +e
veo22
=
1
1 +e
(0:999)
=
1
1 + 2:715
=
1
3:715
= 0:2665
f(veo23) =f(0:551) =
1
1 +e
veo23
=
1
1 +e
(0:551)
=
1
1 + 1:73498
=
1
2:73498
= 0:3656
3.
o
Passo:Calcular a Saída
yeo21=f(veo21) = 0:7780
yeo22=f(veo22) = 0:2665
yeo23=f(veo23) = 0:3656

34 Capítulo 2. MLP
A.3 Terceiro Exemplo
Dados de Entrada:xeo
Biasx1 x2
E1 1 0 0
E2 1 0 1
E3 1 1 0
E4 1 1 1
Pesos daCE!CO:weo
K1 K2 K3
Bias0.896-0.4240.258
X1-0.422-0.740-0.577
X2-0.082-0.961-0.469
1.
o
Passo:Calcular o Potencial de Ativação
veo31= (xeo31weo11) + (xeo32weo21) + (xeo33weo31)
= (10:896) + (1(0:424)) + (00:358) = (0:896 + (0:424) + 0) = 0:742
veo32= (xeo31weo12) + (xeo32weo22) + (xeo33weo32)
= (1(0:422)) + (1(0:740)) + (0(0:577)) = (0:422 + (0:740) + 0) =1:162
veo33= (xeo31weo13) + (xeo32weo23) + (xeo33weo33)
= (1(0:082)) + (1(0:961)) + (0(0:469)) = (0:082 + (0:961) + 0)) =1:043
2.
o
Passo:Calcular a Função de Ativação
f(veo31) =f(0:742) =
1
1 +e
veo31
=
1
1 +e
0:742
=
1
1 + 0:4761
=
1
1:4761
= 0:6774
f(veo32) =f(1:162) =
1
1 +e
veo32
=
1
1 +e
(1:162)
=
1
1 + 3:1963
=
1
4:1963
= 0:2383
f(veo33) =f(1:043) =
1
1 +e
veo33
=
1
1 +e
(1:043)
=
1
1 + 2:8377
=
1
3:8377
= 0:2605
3.
o
Passo:Calcular a Saída
yeo31=f(veo31) = 0:6774
yeo32=f(veo32) = 0:238
yeo33=f(veo33) = 0:2605
A.4. Quarto Exemplo
Dados de Entrada:xeo
Biasx1 x2
E1 1 0 0
E2 1 0 1
E3 1 1 0
E4 1 1 1
Pesos daCE!CO:weo
K1 K2 K3
Bias0.896-0.4240.258
X1-0.422-0.740-0.577
X2-0.082-0.961-0.469

2.2. Exemplo 35
1.
o
Passo:Calcular o Potencial de Ativação
veo41= (xeo41weo11) + (xeo42weo21) + (xeo43weo31)
= (10:896) + (1(0:424)) + (10:358)
= (0:896 + (0:424) + 0:358) = 0:83
veo42= (xeo41weo12) + (xeo42weo22) + (xeo43weo32)
= (1(0:422)) + (1(0:740)) + (1(0:577))
= (0:422 + (0:740) + (0:577)) =1:739
veo43= (xeo41weo13) + (xeo42weo23) + (xeo43weo33)
= (1(0:082)) + (1(0:961)) + (1(0:469))
= (0:082 + (0:961) + (0:469))) =1:512
2.
o
Passo:Calcular a Função de Ativação
f(veo41) =f(0:83) =
1
1 +e
veo41
=
1
1 +e
0:83
=
1
1 + 0:4360
=
1
1:4360
= 0:696
f(veo42) =f(1:739) =
1
1 +e
veo42
=
1
1 +e
(1:739)
=
1
1 + 5:6916
=
1
6:6916
= 0:1756
f(veo43) =f(1:512) =
1
1 +e
veo43
=
1
1 +e
(1:512)
=
1
1 + 4:5357
=
1
5:5357
= 0:1806
3.
o
Passo:Calcular a Saída
yeo41=f(veo41) = 0:696
yeo42=f(veo42) = 0:1756
yeo43=f(veo43) = 0:1806
Fim do Cálculo daCE!CO. A
Potencial de Ativaçãoveoe a
a saídayeo=f(veo). A
exemplo.

36 Capítulo 2. MLP
Figura 9 MLP XORCE!CO
(a) E1(b) E2(c) E3(d) E4
Tabela 6 Matriz Potencial de Ativação
CE!CO:veo
veo1veo2veo3
E10.896-0.422-0.082
E21.254-0.999-0.551
E30.742-1.162-1.043
E40.830-1.739-1.512
Tabela 7 Matriz Função de Ativação
CE!CO:yeo=f(veo)
yeo1yeo2yeo3
E10.72830.39600.4795
E20.77800.26650.3656
E30.67740.23830.2605
E40.69600.17560.1806
B. Cálculo daCO!CS
A Matriz de Entrada agora é a Matriz apresentada na
do Bias, conforme mostra a
CO!CS.

2.2. Exemplo 37
Tabela 8 Dados de Entrada daCO!CS
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
Tabela 9 Pesos daCO!CS
CO!CS:wos
BiasK1 K2 K3
wos-0.017-0.8930.1480.896
1.
o
Passo:Calcular o Potencial de Ativação
Primeiro Exemplo
vos11= (xos11wos11) + (xos12wos21) + (xos13wos31) + (xos14wos41) =
= (1(0:017)) + (0:72830:893) + (0:36900:148) + (0:47950:896) =
= (0:017 + 0:650 + 0:054 + 0:429) = 1:11
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
CO!CS:wos
wosi
Bias-0.017
K1 -0.893
K2 0.148
K3 0.896
Segundo Exemplo
vos21= (xos21wos11) + (xos22wos21) + (xos23wos31) + (xos24wos41) =
= (1(0:017)) + (0:77800:893) + (0:26650:148) + (0:36560:896) =
= (0:017 + 0:694 + 0:039 + 0:327) = 1:04
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
CO!CS:wos
wosi
Bias-0.017
K1 -0.893
K2 0.148
K3 0.896
Terceiro Exemplo
vos31= (xos31wos11) + (xos32wos21) + (xos33wos31) + (xos34wos41) =
= (1(0:017)) + (0:67740:893) + (0:23830:148) + (0:26050:896) =
= (0:017 + 0:604 + 0:035 + 0:233) = 0:85

38 Capítulo 2. MLP
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
CO!CS:wos
wosi
Bias-0.017
K1 -0.893
K2 0.148
K3 0.896
Quarto Exemplo
vos41= (xos41wos11) + (xos42wos21) + (xos43wos31) + (xos44wos41) =
= (1(0:017)) + (0:69600:893) + (0:17560:148) + (0:18060:896) =
= (0:017 + 0:621 + 0:025 + 0:161) = 0:79
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
CO!CS:wos
wosi
Bias-0.017
K1 -0.893
K2 0.148
K3 0.896
2.
o
Passo:Calcular a Função de Ativação
Primeiro Exemplo
f(vos11) =f(1:11) =
1
1 +e
vos11
=
1
1 +e
1:11
=
1
1 + 0:3295
=
1
1:3295
= 0:752
Segundo Exemplo
f(vos21) =f(1:04) =
1
1 +e
vos21
=
1
1 +e
1:04
=
1
1 + 0:353
=
1
1:353
= 0:739
Terceiro Exemplo
f(vos31) =f(0:85) =
1
1 +e
vos31
=
1
1 +e
0:85
=
1
1 + 0:427
=
1
1:427
= 0:7007
Quarto Exemplo
f(vos41) =f(0:79) =
1
1 +e
vos41
=
1
1 +e
0:79
=
1
1 + 0:453
=
1
1:453
= 0:688
3.
o
Passo:Calcular a Saída
Primeiro Exemplo:yos1=f(vos1) = 0:752

2.2. Exemplo 39
Segundo Exemplo:yos2=f(vos2) = 0:739
Terceiro Exemplo:yos3=f(vos3) = 0:7007
Quarto Exemplo:yos4=f(vos4) = 0:688
Figura 10 MLP XORCO!CS
(a) E1(b) E2(c) E3(d) E4

40 Capítulo 2. MLP
A CO
!CS. As Figuras
Tabela 10 Matriz Potencial de Ativação
CO!CS:vos
E1E2E3E4
vosi1.111.040.850.79
Tabela 11 Matriz Função de Ativação
CO!CS:yos=f(vos)
E1 E2 E3 E4
yosi0.7520.7390.70070.688
C. Cálculo do Erro
1.
o
Passo:Calcular o Erro
Primeiro Exemplo:erro1=xeo14yos1= 00:752 =0:752
Segundo Exemplo:erro2=xeo24yos2= 10:739 = 0:261
Terceiro Exemplo:erro3=xeo34yos3= 10:7007 = 0:2993
Quarto Exemplo:erro4=xeo44yos4= 00:688 =0:688
2.
o
Passo:Calcular a Média do Erro
mediaE=
(erro1+erro2+erro3+erro4)
4
=
(0:752 + 0:261 + 0:2993 + (0:688))
4
=
=
0:8797
4
=0:2199
3.
o
Passo:Calcular o Erro Quadrático
Primeiro Exemplo
erroQ1=erroQ1+ (erro1erro1) = 0 + (0:752(0:752)) = 0 + 0:5655 = 0:5655
Segundo Exemplo
erroQ2
=erroQ2 + (erro2erro2 ) = 0:5655 + (0:2610:261) = 0:5655 + 0:0681 = 0:6336
Terceiro Exemplo
erroQ3
=erroQ3 + (erro3erro3 ) = 0:6336 + (0:29930:2993) = 0:6336 + 0:0895 = 0:7231
Quarto Exemplo
erroQ4
=erroQ4 +(erro4erro4 ) = 0:7231+(0:688(0:688)) = 0:7231+0:4733 = 1:1964
4.
o
Passo:Calcular a Média do Erro Quadrático
mediaEQ=
(erroQ1+erroQ2+erroQ3+erroQ4)
4
=
(0:5655 + 0:6336 + 0:7231 + 1:1964)
4
=
=
3:1186
4
= 0:077965

2.2. Exemplo 41
Tabela 12 Matriz do Erro Simples
ERRO:erroij
E1 E2 E3 E4
erroi-0.7520.2610.2993-0.688
Tabela 13 Matriz do Erro Quadrático
Erro Quadrático:erroQij
E1 E2 E3 E4
erroQi0.56550.63360.72311.1964
Fim do cálculo daCO!CS.
D. Cálculo daCS
Calcular o Delta daCS
Para o cálculo do delta daCSserá necessário usar os dados obtidos da saída da
CO!CSe os resultados calculados para o erro simples de cada exemplo.
Erro Simples
erroi
E1 -0.752
E2 0.261
E3 0.2993
E4 -0.688
CO!CS:yos
E1 E2 E3 E4
yos0.7520.7390.70070.688
4s1=erro1(yos1(1yos1)) =0:752(0:752(10:752))
=0:752(0:7520:248) =0:7520:1864 =0:1402
4s2=erro2(yos2(1yos2)) = 0:261(0:739(10:739))
= 0:261(0:7390:261) = 0:2610:1928 = 0:050
4s3=erro3(yos3(1yos3)) = 0:2993(0:7007(10:7007))
= 0:2993(0:70070:2993) = 0:29930:2097 = 0:0627
4s4=erro4(yos4(1yos4)) =0:688(0:688(10:688))
=0:688(0:6880:312) =0:6880:2146 =0:1476
Tabela 14 Matriz Delta daCS
4s
E1 E2 E3 E4
4s-0.14020.0500.0627-0.1476

42 Capítulo 2. MLP
E. Cálculo daCO
Primeiro é calculada a derivada da função de ativação daCE!CO:yeopara
somente depois multiplicar com a matriz de pesoswose o4s. A
1.
o
Passo é usada no 2.
o
Passo.
1.
o
Passo:Calcular a Derivada da Função de Ativação daCO
Primeiro Exemplo:
do11= (yeo11(1yeo11)) = (1(11)) = (10) = 0
do12= (yeo12(1yeo12)) = (0:7283(10:7283)) = (0:72830:2717) = 0:1978
do13= (yeo13(1yeo13)) = (0:3960(10:3960)) = (0:39600:604) = 0:2398
do14= (yeo14(1yeo14)) = (0:4795(10:4795)) = (0:47950:5205) = 0:2495
CO!CS:xos=yeo=f(veo)
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
Segundo Exemplo:
do21= (yeo21(1yeo21)) = (1(11)) = (10) = 0
do22= (yeo22(1yeo22)) = (0:7780(10:7780)) = (0:77800:222) = 0:1727
do23= (yeo23(1yeo23)) = (0:2665(10:2665)) = (0:26650:7335) = 0:1954
do24= (yeo24(1yeo24)) = (0:3656(10:3656)) = (0:36560:6344) = 0:2319
Terceiro Exemplo:
do31= (yeo31(1yeo31)) = (1(11)) = (10) = 0
do32= (yeo32(1yeo32)) = (0:6774(10:6774)) = (0:67740:3226) = 0:2185
do33= (yeo32(1yeo33)) = (0:2383(10:2383)) = (0:23830:7617) = 0:1815
do34= (yeo34(1yeo34)) = (0:2605(10:2605)) = (0:26050:7395) = 0:1926
Quarto Exemplo:
do41= (yeo41(1yeo41)) = (1(11)) = (10) = 0
do42= (yeo42(1yeo42)) = (0:6960(10:6960)) = (0:69600:304) = 0:2115
do43= (yeo43(1yeo43)) = (0:1756(10:1756)) = (0:17560:8244) = 0:1447
do44= (yeo44(1yeo44)) = (0:1806(10:1806)) = (0:18060:8194) = 0:1479

2.2. Exemplo 43
2.
o
Passo:Calcular o Delta daCO
Tabela 15 Matriz da Derivada daCO
Derivada da Função de Ativação
Biasyeo1yeo2yeo3
E1 00.19780.23980.2495
E2 00.17270.19540.2319
E3 00.21850.18150.1926
E4 00.21150.14470.1479
Delta daCS
4s
E1-0.1402
E2 0.050
E30.0627
E4-0.1476
Pesos daCO!CS
wos
Bias -0.017
K1 -0.893
K2 0.148
K3 0.896
4o11=do11wos11 4s1= 0(0:017)(0:1402) = 0
4o12=do12wos21 4s1= 0:1978(0:893)(0:1402) = 0:0247
4o13=do13wos31 4s1= 0:23980:148(0:1402) =0:004975
4o14=do14wos41 4s1= 0:24950:896(0:1402) =0:0313
4o21=do21wos11 4s2= 0(0:017)0:050 = 0
4o22=do22wos21 4s2= 0:1727(0:893)0:050 =0:007711
4o23=do23wos31 4s2= 0:19540:1480:050 = 0:001445
4o24=do24wos41 4s2= 0:23190:8960:050 = 0:0103
4o31=do31wos11 4s3= 0(0:017)0:627 = 0
4o32=do32wos21 4s3= 0:2185(0:893)0:0627 =0:01223
4o33=do33wos31 4s3= 0:18150:1480:0627 = 0:001684
4o34=do34wos41 4s3= 0:19260:8960:0627 = 0:01082
4o41=do41wos11 4s1= 0(0:017)(0:1476) = 0
4o42=do42wos21 4s4= 0:2115(0:893)(0:1476) = 0:0278
4o43=do43wos13 4s4= 0:14470:148(0:1476) = 0:0031609
4o44=do44wos41 4s4= 0:14790:896(0:1476) =0:01955

44 Capítulo 2. MLP
Tabela 16 Matriz Delta daCO
Delta daCO
Bias k1 k2 k3
E1 0 0.0247-0.004975-0.0313
E2 0-0.0077110.0014450.0103
E3 0 -0.012330.0016840.01082
E4 0 0.02780.0031609-0.01955
F. Cálculo daCS!CO
1.
o
Passo:Calculando as entradas
Saída daCE!CO
Biasyeo1yeo2yeo3
E1 10.72830.39600.4795
E2 10.77800.26650.3656
E3 10.67740.23830.2605
E4 1 0.6960.17560.1806
Delta da Saída
4s
E1 -0.1402
E2 0.050
E3 0.0627
E4 -0.1476
Bias= (yeo11 4s1) + (yeo21 4s2) + (yeo31 4s3) + (yeo41 4s4)
= (1(0:1402)) + (10:050) + (10:0627) + (1(0:1476))
=0:1402 + 0:050 + 0:0627 + (0:1476) =0:1751
k1= (yeo12 4s1) + (yeo22 4s2) + (yeo32 4s3) + (yeo42 4s4)
= (0:7283(0:1402)) + (0:7780:050) + (0:67740:0627) + (0:696(0:1476))
=0:1021 + 0:0389 + 0:0427 + (0:1027) =0:1232
k2= (yeo13 4s1) + (yeo23 4s2) + (yeo33 4s3) + (yeo423 4s4)
= (0:3960(0:1402)) + (0:26650:050) + (0:23830:0627) + (0:1756(0:1476))
=0:0555 + 0:0133 + 0:0149 +0:0259v=0:0532
k3= (yeo14 4s1) + (yeo24 4s2) + (yeo34 4s3) + (yeo43 4s4)
= (0:4795(0:1402)) + (0:36560:050) + (0:26050:0627) + (0:1806(0:1476))
=0:0672 + 0:01828 + 0:0129 + (0:0266) =0:06262
2.
o
Passo:Calculando novos pesos:

2.2. Exemplo 45
Pesos daCO!CS
wosi
Bias -0.017
K1 -0.893
K2 0.148
K3 0.896
Tabela 17 EntradasCS!CO
Novas Entradas
xij=kij
Bias-0.1751
K1 -0.1232
K2 -0.0532
K3 -0.06262
wos11novo= (wos11m) + (bias) = (0:17511) + (10:3)
=0:01751 + 0:3 =0:1249
wos21novo= (wos21m) + (k1) = (0:8931) + (0:12320:3)
=0:893 + (0:03696) =0:92996
wos31novo= (wos31m) + (k2) = (0:1481) + (0:05320:3)
= 0:148 + (0:01596) = 0:13204
wos41novo= (wos41m) + (k3) = (0:8961) + (0:062620:3)
= 0:896 + (0:01878) = 0:87722
Tabela 18 Pesos daCO!CSatualizados
Novos Pesos
wosi
Bias-0.1249
K1-0.92996
K20.13204
K30.87722
G. Cálculo daCO!CE
1.
o
Passo:Calcular novas entradas
EntradasCE!CO
BiasX1X2
E1 1 0 0
E2 1 0 1
E3 1 1 0
E4 1 1 1
Delta Camada Oculta
E1 E2 E3 E4
k10.0247-0.007711-0.12330.0278
k2-0.0049750.0014450.0016840.0031
k3-0.03130.01030.01082-0.01955

46 Capítulo 2. MLP
Calculando parak1:
bias=x11= (xeo11 4o11) + (xeo21 4o12) + (xeo31 4o13) + (xeo41 4o14)
= (10:0247) + (1(0:007711)) + (1(0:01233)) + (10:0278)
= (0:0247 + (0:07711) + (0:01233) + 0:0278) =0:03694
x12= (xeo12 4o11) + (xeo22 4o12) + (xeo32 4o13) + (xeo42 4o14)
= (00:0247) + (0(0:007711)) + (1(0:01233)) + (10:0278)
= (0 + 0 + (0:01233) + 0:0278) = 0:01547
x13= (xeo13 4o11) + (xeo23 4o12) + (xeo33 4o13) + (xeo43 4o14)
= (00:0247) + (1(0:007711)) + (0(0:01233)) + (10:0278)
= (0 + (0:007711) + 0 + 0:0278) = 0:020089
Calculando parak2:
bias=x21= (xeo11 4o21) + (xeo21 4o22) + (xeo31 4o23) + (xeo41 4o24)
= (1(0:0497)) + (10:014) + (10:0016) + (10:0031)
= (0:0497 + 0:014 + 0:0016 + 0:0032) =0:0309
x22= (xeo12 4o21) + (xeo22 4o22) + (xeo32 4o23) + (xeo42 4o24)
= (0(0:0497)) + (00:014) + (10:0016) + (10:0031)
= (0 + 0 + 0:0016 + 0:0031) = 0:0191
x23= (xeo13 4o21) + (xeo23 4o22) + (xeo33 4o23) + (xeo43 4o24)
= (0(0:0497)) + (10:014) + (00:0016) + (10:0031)
= (0 + 0:014 + 0 + 0:0031) = 0:0171
Calculando parak3:
bias=x31= (xeo11 4o31) + (xeo12 4o32) + (xeo13 4o33) + (xeo14 4o34)
= (1(0:0313)) + (10:0103) + (10:0108) + (1(0:0195))
= (0:0313 + 0:0103 + 0:0108 + (0:0195)) =0:0297
x32= (xeo21 4o31) + (xeo22 4o32) + (xeo23 4o33) + (xeo24 4o34)
= (0(0:0313)) + (00:0103) + (10:0108) + (1(0:0195))
= (0 + 0 + 0:0108 + (0:0195)) =0:0087

2.2. Exemplo 47
x33= (xeo31 4o31) + (xeo32 4o32) + (xeo33 4o33) + (xeo34 4o34)
= (0(0:0313)) + (10:0103) + (00:0108) + (1(0:0195))
= (0 + 0:0103 + 0 + (0:0195)) =0:0092
2.
o
Passo: Calcular Novos Pesos
w11novo= (weo11m) + (x11)
= (0:8961) + (0:036940:3) = 0:896 + (0:011082) = 0:884918
w12novo= (weo12m) + (x12)
= (0:4241) + (0:01540:3) =0:424 + 0:00462 =0:41938
w13novo= (weo13m) + (x13)
= (0:3581) + (0:0200890:3) = 0:358 + (0:0060267) = 0:35197
w21novo= (weo21m) + (x21)
= (0:4221) + (0:03090:3) =0:422 + (0:00927) =0:43127
w22novo= (weo22m) + (x22)
= (0:7401) + (0:01910:3) =0:740 + 0:00573 =0:73427
w23novo= (weo23m) + (x23)
= (0:5771) + (0:01710:3) =0:577 + 0:00513 =0:57187
w31novo= (weo31m) + (x31)
= (0:0821) + (0:02970:3) =0:082 + (0:00891) =0:09091
w32novo= (weo32m) + (x32)
= (0:09611) + (0:00870:3) =0:0961 + (0:0261) =0:1222
w33novo= (weo33m) + (x33)
= (0:4691) + (0:00920:3) =0:469 + (0:00276) =0:47176
Tabela 19 EntradasCO!CE
xij
Bias X1 X2
K1-0.036940.01540.020089
K2-0.03090.01910.0171
K3-0.0297-0.0087-0.0092
Pesos daCE!CO:weo
K1 K2 K3
Bias0.896-0.4240.258
X1-0.422-0.740-0.577
X2-0.082-0.961-0.469

48 Capítulo 2. MLP
Tabela 20 Pesos daCE!COatualizados
weo
K1 K2 K3
Bias0.884918-0.419380.351597
X1-0.43127-0.73427-0.57187
X2-0.09091-0.1222-0.4176
H. Critério de Parada
Enquanto o Erro Quadrático for maior que duas vezes o limiar, normalmente 1e-3,
então continua a executar o algoritmo até alcançar valores de pesos estáveis.
FIM DO ALGORITMO
I. Resumo
1. CE!CO
a)
b)
c)
2. CO!CS
a)
b)
c)
3.
a)
b)
c)
d)
4. CS
a) CO!CS
b) 4s
5. CO

2.2. Exemplo 49
a) CE!CO
b) 4o
6. CS!CO
a)
b)
7. CO!CE
a)
b)
8.
VERSÃO MATRICIAL
CE!CO:
Entradas Pesos
BIAS X2...XN K1 K2...KN
E1xeo11xeo12...xeo1n BIASweo11weo12...weo1n
E2xeo21xeo22...xeo2n X2 weo21weo22...weo2n
............... ... ............
ENxeon1xeon2...xeonn
*
XN weon1weon2...weonn
=
Potencial de Ativação
K1 K2...KN
E1veo11veo12...veo1n
E2veo21veo22...veo2n
...............
EN veon1veon2...veonn
Potencial de Ativação Função de Ativação
K1 K2...KN K1 K2 ...KN
E1veo11veo12...veo1n E1f(veo11)f(veo12)...f(veo1n)
E2veo21veo22...veo2n E2f(veo21)f(veo22)...f(veo2n)
............... ... ... .........
ENveon1veon2...veonn
=
ENf(veon1)f(veon2)...f(veonn)
=
Saída dos Neurônios
K1 K2...KN
E1yeo11yeo12...yeo1n
E2yeo21yeo22...yeo2n
...............
ENyeon1yeon2...yeonn

50 Capítulo 2. MLP
CO!CS:
Entradas Entradas
BiasK1...KN BiasK1...KN
E1 yeo11...yeo1n E1xos11xos12...xos1n
E2 yeo21...yeo2n E2xos21xos22...xos2n
............... ...............
EN yeon1...yeonn
=
ENxosn1xosn2...xosnn
*
Pesos Potencial de Ativação
K1 K2 KN K1 K2...KN
E1wos11wos12...wos1n E1vos11vos12...vos1n
E2wos21wos22...wos2n E2vos21vos22...vos2n
............... ...............
ENwosn1wosn2...wosnn
=
ENvosn1vosn2...vosnn
Potencial de Ativação Função de Ativação
K1 K2...KN K1 K2 ...KN
E1vos11vos12...vos1n E1f(vos11)f(vos12)...f(vos1n)
E2vos21vos22...vos2n E2f(vos21)f(vos22)...f(vos2n)
............... ... ... .........
ENvosn1vosn2...vosnn
=
ENf(vosn1)f(vosn2)...f(vosnn)
=
Saída dos Neurônios
K1 K2 KN
E1yos11yos12...yos1n
E2yos21yos22...os2n
...............
ENyosn1yosn2...yosnn
Erro Simples e Erro Quadrático:
Erro Simples Erro Quadrático
E1 erroi E1 erroQi
E2 erroi E2 erroQi
... ... ... ...
EN erroi EN erroQi
CS:
Função de Ativação Derivada da Função de Ativação
K1 K2 ...KN K1 K2... KN
E1f(vos11)f(vos12)...f(vos13) E1dos11dos12... dos1n
E2f(vos21)f(vos22)...f(vos23) E2dos21dos22... dos2n
... ... ......... ............ ...
ENf(vosn1)f(vosn2)...f(vosnn)
=
ENdosn1dosn2...dosnn

2.2. Exemplo 51
Erro Simples Derivada da Função de Ativação Delta da Saída
E1 erroi1 E1 E2... EN E1 E2...EN
E2 erroi1 K1dos11dos12...dos1n K14s114s12...4s1n
... ... K2dos21dos22...dos2n K24s214s22...4s2n
EN erroi1 ............ ... ...............
*
KNdosn1dosn2...dosnn
=
KN4sn14sn2...4snn
CO:
Função de Ativação Função de Ativação
K1 K2 ...KN BIAS K1 ...KN
E1f(veo11)f(veo12)...f(veo13) E1f(veo11)f(veo12)...f(veo1n)
E2f(veo21)f(veo22)...f(veo23) E2f(veo21)f(veo22)...f(veo2n)
... ... ... ... ... ... ... .........
ENf(veon1)f(veon2)...f(veonn)
=
ENf(veon1)f(veon2)...f(veonn)
Derivada da Função de Ativação
BIAS K1 K2 ...KN
E1 deo11deo12deo13...deo1n
E2 deo21deo22deo23...deo2n
... ... ... .........
=
EN deon1deon2deon3...deonn
Derivada da Função de Ativação Pesos
BIAS E1 E2...EN
K1 dos11dos12dos13... BIASwos11wos12..wos1n
K2 dos21dos22dos23...dos2n K1 wos21wos22...wos2n
.................. ... ...
KN dosn1dosn2dosn3...dosnn
*
KN wosn1wosn2...wosnn
Delta da Saída Delta da Camada Oculta
E1 E2...EN E1 E2...EN
K1 4s114s12...4s1n K1 4o114o12...4o1n
K2 4s214s22...4s2n K2 4o214o22...4o2n
............... ... ............
*
KN 4sn14sn2...4snn
=
KN 4on14on2...4onn
CS!CO:

52 Capítulo 2. MLP
Saída Delta da Saída
BIAS X1...XN ...
E1yeo11yeo11...yeo11 E14s114s12...4s1n
E2yeo11yeo11...yeo11 E24s214s22...4s2n
............yeo11 ...............
EN yeo11yeo11...yeo11
*
EN4sn14sn2...4snn
=
Novas Entradas
BIAS X1...XN
E1xso11xso12...xso1n
E2xso21xso2...xso2n
...............
ENxson1xson2...xsonn
Pesos Novas Entradas
... BIAS X1...XN
BIASwos11wos12...wos1n E1xso11xso12...xso1n
K1 wos21wos2...wos2n E2xso21xso2...xso2n
... ............ ...............
KN wosn1wosn2...wosnn
* m +
ENxson1xson2...xsonn
*=
Novos Pesos
...
BIASwos11wos12...wos1n
K1 wos21wos2...wos2n
... ............
KN wosn1wosn2...wosnn
CE!CS:
Entradas Delta Camada Oculta
BIAS X1...XN E1 E2...EN
E1xeo11xeo11...xeo1n K14o114o12...4o1n
E2xeo21xeo21...xeo2n K24o214o22...4o2n
............... ...............
ENxeon1xeon1...xeonn
*
KN4on14on2...4onn
=
Novas Entradas
...
E1xoe11xoe11...xoe1n
E2xoe21xoe21...xoe2n
...............
ENxoen1xoen1...xoenn

2.3. Algoritmo 53
Pesos Novas Entradas
K1 K2...KN BIAS E1...EN
BIASxeo11xeo11...xeo1n E1xoe11xoe11...xoe1n
K1 xeo21xeo21...xeo2n E2xoe21xoe21...xoe2n
... ............ ...............
EN xeon1xeon1...xeonn
*m +
ENxoen1xoen1...xoenn
*n =
Novos Pesos
K1 K2...K3
BIASweo11weo11...weo1n
K1 weo21weo21...weo2n
... ............
KN weon1weon1...weonn
2.3 Algoritmo
Esta seção apresentará a implementação em R. Os comentários já explicam o código.
Vale ressaltar que o algoritmo demorará um tempo para executar, normalmente esses
algoritmos são assim mesmo, portanto, tenha paciência. A
MLP, a
datasetTreino.txt contém os valores da porta lógica XOR para2
2
variáveis e, o arquivo
datasetTeste.txt contém os valores da porta lógica XOR para2
3
variáveis.
Listing 2.1 MultilayerPerceptron.R
setwd("local da sua pasta")
#
REDE
#
mlp.funcao.ativacao(v){
y( v))
return)
}
#
mlp.derivada.funcao.ativacao(y){
d (1y)
return)
}
#

54 Capítulo 2. MLP
#
#
#
#
#
mlp.arquitetura(num.entrada,.oculta,.saida,.ativacao,
derivada.funcao.ativacao){
#
arq
arq$num.entrada.entrada
arq$num.oculta.oculta
arq$num.saida.saida
arq$funcao.ativacao.funcao.ativacao
arq$derivada.funcao.ativacao.derivada.funcao.ativacao
#
bias
#.
num.pesos.entrada.oculta.entrada) num.oculta
#ória
#úmerooúmeroônios
#úmerooúmero
Bias
arq$oculta(runif(min= 0.5,max=0.5,.pesos.entrada.oculta),
nrow.oculta,.entrada)
#úmeroída
num.pesos.oculta.saidanum.oculta) num.saida
#ória
#úmerooúmeroôniosída
#úmerooúmeroônios
Bias
arq$saida(runif(min= 0.5,max=0.5,num.pesos.oculta.saida),
num.saida,.oculta

2.3. Algoritmo 55
return)
}
# FEEDFOWARD
#
#
#% operador
mlp.propagacaoarq,){
# 1. >
# 1.a.ção
v %.numeric(c(exemplo, 1))
# 1.bçãoçãoc.
y.ativacao(v.entrada.oculta)
# 2. >
# 2.ação
v %(y.entrada.oculta, 1)
# 2.bçãoçãocída
y.ativacaov.oculta
#
resultados
resultados$v.entrada.oculta
resultados$y.entrada.oculta
resultados$v.oculta
resultados$y.oculta
return
}
# BACKPROPAGATION
mlp.retropropagacao(arq,,,
#ção
erroQuadratico (2limiar)

56 Capítulo 2. MLP
#
epocas 0
#
while){
erroQuadratico 0
#
for(dados)){
#
x dados[i, 1:arq$num.entrada]
#
x[i)]
#
resultado mlp.propagacao(arq,.entrada)
#ídaônio
yresultado$y.oculta.saida
# 3.
# 3.a.
erro x.saiday
# 3.cático
erroQuadraticoerro erro)
# 4.álculoída
# 4.a.
delta erroarq$derivada.funcao.ativacao(y)
# 5.álculo
# 5.a.
pesos arq$saida[,1:arq$num.oculta]
delta as.numeric(arq$derivada.funcao.ativacao(
resultado$y.entrada.oculta)) (delta %.

2.3. Algoritmo 57
saida)
# 6.álculoída
# 6.a
arq$saida arq$saida (delta.saida %(resultado$y.
entrada.oculta,1))
# 7.álculo
Entrada
# 7.a
arq$oculta arq$oculta (t(delta.oculta) % %.
numeric(c(x.entrada,1)))
}
# 3.b
mediaE erro(dados)
#ério
erroQuadratico erroQuadratico(dados)
caterroQuadratico, "")
#
epocas epocas
}
retorno
retorno$arq
retorno$epocas
return
}
Listing 2.2 TreinaMLP.R
setwd("caminho da sua pasta")
source
#
treino.table
treino

58 Capítulo 2. MLP
#
mlp.arq mlp.arquitetura(2,3,1,.ativacao,
mlp.arq
modelo mlp.retropropagacao(mlp.arq,, 0.3, 1e 2)
modelo
Listing 2.3 TestaMLP.R
setwd("caminho da sua pasta")
source
#
teste.table
teste
mlp.arq mlp.arquitetura(3,4,1,.ativacao,
mlp.arq
modelo mlp.retropropagacao(mlp.arq,, 0.3, 1e 2)
modelo
A
IRIS. A base de dados Iris tem 4 atributos de entrada, 150 exemplos (150 linhas) e três
atributos de saída (virginica, setosa, versicolor), assim, a arquitetura sugere 5 entradas,
sendo 4 para o IRIS (x1, x2, x3 e x4) e 1 para o BIAS, 4 neurônios na camada oculta,
sendo 3 normais e 1 para o BIAS, e obrigatoriamente três neurônios na saída. O código
MLP apresentado anteriormente não funcionará para problemas que precisem de mais de
um neurônio na saída, assim, será necessário modicá-lo, ou adicionando mais neurônios
na implementação, ou fazendo uma codicação diferenciada no único neurônio de saída. O
ideal é que as saídas sejam correspondentes ao problema a ser resolvido. Depois de fazer as
modicações necessárias no código, você deve dividir a sua base de dados IRIS em teste e
treino, e isso pode ser feito de várias formas. A
o conjunto em vários conjuntos diferentes, e a
base em oitenta porcento para treino e o restante para teste.
Listing 2.4 TestaMLP.R
Dados iris
Dados

2.3. Algoritmo 59
Figura 11 Arquitetura sugerida MLP-IRIS
Dados scale(Dados[,1:4])
Dados
Dados Dados[sample(nrow(Dados)),]
Dados
treino createDataPartition(,=.8,,
treino
ncol
nrow(treino)
irisTreino Dados[treino,]
irisTreino
ncol
nrow(
irisTeste Dados[ treino,]
irisTeste
ncol
nrow(

60 Capítulo 2. MLP
Arquitetura Arquitetura(4,3,3,fa,dfa)
Arquitetura
treina BackPropagation(Arquitetura,, 0.5, 1e 2)
treina
testa BackPropagation(Arquitetura,, 0.5, 1e 2)
testa
Listing 2.5 TestaMLP.R
#Lê
dados
#Normaliza
dados
#Randomiza
dados=dados[sample(nrow(dados)),]
#Cria folds
num.folds
folds createFolds(dados$Species,.folds)
Arquitetura Arquitetura(4,3,3,fa,dfa)
Arquitetura
#
for.folds){
treino[unlist
teste[folds
mlp.algoritmo(Arquitetura,, 0.5, 1e 2)
cati,"",sep=" "))
teste(
}