REDES NEURAIS ARTIFICIAIS Rede Neural Perceptron
T
1
X1
X2
W0
W1
W2
Consiste num único neurônio com peso ajustável e bias
1.2 Rede de alimentação direta
a2
a5 1
a1 W1,3
W2,3
W2,4
3
4
5
2
W1,4
Vetor de saída : y = (y1) = (a5)
Vetor de entrada x = (x1, x2) = (a1, a2)
a5 = g(w3,5 a3 + w4,5 a4) , mas {a3 = g(w1,3 a1 + w2,3 a2)
{a4 = g(w1,4 a1 + w2,4 a2)
1.2 Unidade de Redes Neurais
X0 = 1
g ai
Função
de
entrada
Função de
ativação Saída
W0
W1
W2
yj aj
Função de entrada (soma ponderada das entradas) (ini)
ini = X0 W0,i + X1 W1,i + x2 w2,i + … XnWn,i
ini = Σ Wj,i Xj
Função de ativação (degrau/limiar):
- Entrada “corretas” => unidade ativa (valores menor 1)
Essa avaliação é feita pelo cálculo da função de ativação aplicada a função de entrada ().
ai = g(ini) = g(Σ Wj,i Xj )
Exemplos:
a)Função de Limiar b) Função signóide
g(x) {x>0, g=1
{x<0, g=0
2. Perceptron
- Redes neurais de alimentação direta de única camada
- Representam apenas funções linearmente separáveis.
3. Aprendizagem
Aprendizagem de redes neurais tem a função de ajustar os pesos da rede para minimizar alguma medida de erro.
Err = Y – hw(x)
Análise do erro
- A média clássica para estimativa do erro:
- Soma dos erros quadráticos:
E = ½ Err² = ½ (y – hw (x))²
em que { y = valor real
{ hw (x) = g (∑ Wj Xj)
hw(x)
wj
- Análise da influência de variação de erro sobre a variação do peso. Err² 2 1 Wj Wj
E = Err
WjXj g y Wj Err ErrWj , mas Wj
y = 0, pois y = Cte
Err Wj
E
x
g
WjXjWj = -Err . g’(in) . Xj
Como o gradiaente aponta o sentido de maior crescimento, como quero minimizar o erro devo inverter o sinal do gradiente:
Wj(n+1) Wj(n) + Err. g’(in) . Xj
Para melhor domínio no refino dos pesos, acrescenta-se (taxa de
treinamento)
Para função de ativação signóide : g’(in) g(1-g)
Para função de ativação de Limiar desconsidera g’(in), pois não há derivada
em X=0 (descontinua)
Treinamento
Ex1: Distinção de atletas por modalidade de esportes:
Atleta Futebol F1
Pelé X
Zico x
Senna X
Piquet x
Entradas Saida
X1 X2 Y
Padrão 1 0 0 0
Padrão 2 0 1 0
Padrão 3 1 0 1
Mantendo a rede
Função de ativação Limiar
Sigma: in= 1 Wo + X1W1 + X2W2
Condições iniciais: W= { Wo, W1, W2} = {0 , 0 , 0}
Taxa de aprendizado 1
∑ g (in) 0
1
W0
W1
W2
1
X1
1º - apresentação (epochs) (n=1)
Entrada 1 Calculo da saída:
Erro = Y – d = 0 , saída correta
In = 1.0 + 0.0 + 0.0 = 0
G(in){in > 0, g = 1
{ in 0, g = 0
g (0) = 0 d = 0
g
1
0
0
0
0
0
d
Δw
Entrada 2
In = 1.0 + 0.0 + 1.0 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 0 – 0 = 0
Wi = . Erro . Xi = 0
g
0
1
0
0
d 0
1
Δw
Entrada 3
Wi = . Erro . Xi Win+1 = Win + Win Wo = 1 . 1 . 1 = 1 Wo= 0 + 1 = 1
W1 = 1 . 1 . 1 = 1 W11 = 0 + 1 = 1
W2 = 1 . 1 . 0 = 0 W22 = 0 + 0 = 0
In = 1.0 + 0.0 + 1.0 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 1 – 0 = 1
g
1
0
0
0
d 0
1
Δw
Entrada 4
In = 1.1 + 1.1 + 1.0 = 2
g(in) = g(2) = 1 d = 1
Erro = y – d = 1 – 1 = 0 Wi = 0
g
1
1
1
0
d 1
1
Δw
2º - Apresentação
Entrada 1
Wo = 1 . (-1) . 1 = -1 Wo2 = 1 - 1 = 0
W1 = 1 . (-1) . 0 = 0 W11 = 1 - 0 = 1
W2 = 1 . (-1) . 0 = 0 W22 = 0 - 0 = 0
In = 1.1 + 0.1 + 0.0 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 0 – 1 = -1
g
0
0
1
0
d 1
1
Δw
Entrada 2
In = 1.0 + 0.1 + 1.0 = 0
g(in) = g(0) = 0 d = 0
Erro = 0 – 0 = 0
Wi = . 0 . Xi = 0
g
0
1
1
0
d 0
1
Δw
Entrada 3
In = 1.0 + 1.1 + 0.0 = 1
g(in) = g(1) = 1 d = 1
Erro = 1 – 1 = 0
Wi = . 0 . Xi = 0
g
1
0
1
0
d 0
1
Δw
Entrada 4
Houve Convergência!
Wj Xj = 0 Hiperplano de Separação = Separação linear
1 . Wo + X1W1 + X2W2 = 0
X2 = -
2 0 1 . 2 W1
W W X
W
In = 1.0 + 1.1 + 1.0 = 1
g(in) = g(1) = 1 d = 1
Erro = 1 – 1 = 0
Wi = . 0 . Xi = 0
g
1
1
1
0
d 0
1
Δw
Ex2: Treinamento da função união (OU)
X1 X2 Y
0 0 0
0 1 1
1 0 1
1 1 1
g
X1
X2
w1
w2
d w0
1
Δw
Pesos : Wo = ( Wo , W1 , W2 ) = ( 0 , 0 , 0 )
Soma : 2 = in = 1 . Wo + X
1W1 + X2W2 J = 0
Função de ativação : Limiar: g(in) {in > 0, g = 1
{ in 0, g = 0
1º Apresentação (Epochs)
- Entrada 1
0 0 0 0 0 0 0 0 0 2 2 1 2 1 1 1 1 1
W
W
W
W
W
W
W
W
W
o o o o o o o o o gIn = 1.0 + 0.0 + 0.0 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 0 – 0 = 0
Wi = 0, Wi = . Erro .
- Entrada 2
Win= . Erro . Xi Win+1 = Win + Win Wo = 1 . 1 . 1 = 1 Wo= 0 + 1 = 1
W1 = 1 . 1 . 0 = 0 W11 = 0 + 0 = 0
W2 = 1 . 1 . 1 = 1 W21 = 0 + 1 = 1
g In = 1.0 + 0.0 + 1.0 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 1 – 0 = 1 0
1
0
0
d 0
1
Δw
Entrada 3
In = 1.1 + 1.0 + 1.0 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = . 0 . Xi = 0
g 1
0
0
1
d 1
1
Δw
Entrada 4
In = 1.1 + 1.0 + 1.1 = 2
g(in) = g(2) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = . 0 . Xi = 0
g 1
1
0
1
d 1
1
Δw
2º Apresentação
- Entrada 1
Wo = 1 . (-1) . 1 = -1 Wo= 1 + (-1) = 0
W1 = 1 . (-1) . 0 = 0 W11 = 0 + 0 = 0
W2 = 1 . (-1) . 0 = 0 W21 = 1 + 0 = 1
In = 1.1 + 0.0 + 0.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 0 – 1 = -1 g
0
0
0
1
d 1
1
ΔWi
- Entrada 2
In = 1.0 + 0.0 + 1.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = . 0 . Xi = 0
g 0
1
0
1
d 0
1
ΔWi
- Entrada 3
Wo = 1 . 1 . 1 = 1 Wo= 0 + 1 = 1
W1 = 1 . 1 . 1 = 1 W11 = 0 + 1 = 1
W2 = 1 . 1 . 0 = 0 W21 = 1 + 0 = 1
In = 1.0 + 1.0 + 0.1 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 1 – 0 = 1 g
1
0
0
1
d 0
1
ΔWi
- Entrada 4
In = 1.1 + 1.1 + 1.1 = 3
g(in) = g(3) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = . 0 . Xi = 0
g 1
1
1
1
d 1
1
ΔWi
3º Apresentação
- Entrada 1
Wo = 1 . (-1) . 1 = -1 Wo= 1 + (-1) = 0
W1 = 1 . (-1) . 0 = 0 W11 = 1
W2 = 1 . (-1) . 0 = 0 W21 = 1
In=1.1 + 0.1+ 0.1 =1
g(in) = g(1) = 1 d = 1
Erro = 0 – 1 = -1 g
0
0
1
1
d 1
1
ΔWi
- Entrada 2
In = 1.0 + 0.1 + 1.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 0
1
1
1
d 0
1
ΔWi
- Entrada 3
In = 1.0 + 1.1 + 0.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 1
0
1
1
d 0
1
ΔWi
Entrada 4
In = 1.0 + 1.1 + 1.1 = 2
g(in) = g(2) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 1
1
1
1
d 0
1
ΔWi
4º Apresentação
- Entrada 1
In = 1.0 + 0.1 + 0.1 = 0
g(in) = g(0) = 0 d = 0
Erro = y – d = 0 – 0 = 0
Wi = 0
g 0
0
1
1
d 0
1
ΔWi
- Entrada 2
In = 1.0 + 0.1 + 1.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 0
1
1
1
d 0
1
ΔWi
- Entrada 3
In = 1.0 + 1.1 + 0.1 = 1
g(in) = g(1) = 1 d = 1
Erro = 0
Wi = 0
g 1
0
1
1
d 0
1
ΔWi
- Entrada 4
OBTEVE A CONVERGÊNCIA
In = 1.0 + 1.1 + 1.1 = 2
g(in) = g(2) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 1
1
1
1
d 0
1
ΔWi
Exemplo de Treinamento da função união (OU)
- Pesos: W = ( W1 , W2 , W3 ) = ( 0 , 0 , 0 )
- Função somatória : Wj Xj = in = 1 . Wo + X1W1 + X2W2
J = 0
- Função de ativação (diferente do exemplo anterior): g(in) {in < 0, g(in) = 0 { in 0, g(in) = 1
- Erro = Y – d Wi = . Erro . Xi Taxa de Aprendizado () = 1
X1 X2 Y
0 0 0 0 1 1 1 0 1 1 1 1
g X1
X2
W1
W2
d W0
1
ΔWi
1º Apresentação (epoch)
- Entrada 1
Win= . Erro . Xi Wi1 = Wi0 + Wi
Wo = 1 . (-1) . 1 = -1 Wo1 = 0 + (-1) = -1
W1 = 1 . (-1) . 0 = 0 W11 = 0 + 0 = 0
W2 = 1 . (-1) . 0 = 0 W21 = 0 + 0 = 0
In = 1.0 + 0.0 + 0.0 = 0
g(in) = g(0) = 1 d = 1
Erro = y – d = 0 – 1 = -1 g
0
0
0
0
d 0
1
ΔWi
- Entrada 2
Wo = 1 . 1 . 1 = 1 Wo= (-1) + 1 = 0
W1 = 1 . 1 . 0 = 0 W11 = 0
W2 = 1 . 1 . 1 = 1 W21 = 0 + 1 = 1
In = 1.-1 + 0.0 + 1.0 = -1
g(in) = g(-1) = 0 d = 0
Erro = y – d = 1 – 0 = 1 g
0
1
0
0
d -1
1
ΔWi
- Entrada 3
In = 1.0 + 1.0 + 0.0 = 0
g(in) = g(0) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi =. 0 . Xi = 0
g 1
0
0
1
d 0
1
ΔWi
- Entrada 4
In = 1.0 +1.0 + 1.1 = 1
g(in) = g(1) = 1 d = 1
Erro = y – d = 1 – 1 = 0
Wi = 0
g 1
1
0
1
d 0
1
ΔWi
2º Apresentação
- Entrada 1
Wo = 1 . (-1) . 1 = -1 Wo= 0 + (-1) = -1
W1 = 1 . (-1) . 0 = 0 W11 = 0
W2 = 1 . (-1) . 0 = 1 W21 = 1
In = 1.0 + 0.0 + 0.1 = 0
g(in) = g(0) = 1 d = 1
Erro = 0 – 1 = -1 g
0
0
0
1
d 0
1
ΔWi
- Entrada 2
In = -1 + 0 + 1 = 0
g(in) = g(0) = 1 d = 1
Erro = 1 – 1 = 0 Wi = 0
g 0
1
0
1
d -1
1
ΔWi
- Entrada 3
Wo = 1 . 1 . 1 = 1 Wo= -1 + 1 = 0
W1 = 1 . 1 . 1 = 1 W11 = 0 + 1 = 1
W2 = 1 . 1 . 0 = 0 W21 = 1 + 0 = 1
In = -1 + 0 + 0 = -1
g(in) = g(-1) = 0 d = 0
Erro = 1 – 0 = 1 g
1
0
0
1
d -1
1
ΔWi
- Entrada 4
In = 0 + 1 + 1 = 2
g(in) = g(2) = 1 d = 1
Erro = 1 – 1 = 0 Wi = 0
g 1
1
1
1
d 0
1
ΔWi
3º Apresentação
- Entrada 1
Wo = 1 . (-1) . 1 = -1 Wo= 0 + (-1) = -1
W1 = 1 . (-1) . 0 = 0 W11 = 1 + 0 = 0
W2 = 1 . (-1) . 0 = 1 W21 = 1 + 0 = 0
In = 0 + 0 + 0 = 0
g(in) = g(0) = 1 d = 1
Erro = 0 – 1 = -1 g
0
0
1
1
d 0
1
ΔWi
- Entrada 2
In = -1 + 0 + 1 = 0
g(in) = g(0) = 1 d = 1
Erro = 1 – 1 = 0 Wi = 0
g 1
0
1
1
d 0
1
ΔWi
- Entrada 3
- Entrada 4
4º Apresentação
In = -1 + 1 + 0 = 0
g(in) = g(0) = 1 d = 1
Erro = 1 – 1 = 0 Wi = 0
g
In = -1 + 1 + 1 = 1
g(in) = g(0) = 1 d = 1
Erro = 1 – 1 = 0 Wi = 0
g 0
1
1
1
d -1
1
ΔWi
y 1 1
1
1
1
1
d -1
1
ΔWi
- Entrada 1
Convergência!
In = -1 + 0 + 0 = -1
g(in) = g(-1) = 0 d = 0
Erro = 0 – 0 = 0 Wi = 0
g 0
0
1
1
d -1
1
ΔWi
Análise da Fronteira de decisão (Hiperplano de separação)
² Wj Xj = in = 1 . Wo + X1W1 + X2W2 J = 0
X2 = -
2 0 1 1 . 2 W1
W W X
W
X2 = 1 1
1 1 1 1
1
- Função não linearmente separável (XOR) ou – exclusivo:
Não há hiperplano de separação. Logo não converge. Realize o teste no MatLab!
X1 X2 Y
0 0 0
1 0 1
0 1 1
REDE PERCEPTRON DE MÚLTIPLOS COMANDOS (MLP)
Apredizagem: Back Propagation Learning (Retropopagação)
ai wji
aj
ak
wk,j
Unidades de Entrada (k)
Unidades ocultas (j)
- Comandos de saída: Wji Wj,i + . aj . i
Em que, i = Erroi . g’(ini)
- Atualização dos pesos para a camada oculta:
Wk,j Wk,j + . ak .
j , em queAnálise de erro:
- Soma dos erros Quadráticos
E =
i ai Yi ) ( 2 1 ²
Aplicando a derivada direcional em relação aos pesos Wj,i, temos:
i ai Yi i Wj i Wj E 2 . , . 2 1, =
Wj iini g ai Yi i Wj ai ai Yi , ) ( , 2 2 =
j ai i Wj i Wj gi aiYi . , .
,
polinômio
Yi ai
g ini aj aj i iWj
E
Aplicando a derivada direcional para obter a gradiente sobre os pesos Wk,j que conectam a camada de entrada e a camada oculta.
E =
i ai Yi ) ( 2 1 ²
Todos dependem do peso Wk,j
i i j
aj i Wj j Wk ini g ai Yi j Wk ini g ai Yi j Wk ai ai Yi j Wk E . , . , ). ( ' . , ) ( , . 1 . 2 2 ,
mas Wj,i = Cte, Wk,j≠Wj,i e aj = g(inj) = g(
k
j Wk, .
. ak ) =
i k ak j Wk g j Wk i Wj
i . , .
, . , . . polinômio =
i i Wj i. ,ADALINE (Adaptive Linear Element)
- Pesos ajustados em função do erro.
- Único comando de pesos ajustáveis.
Considerações:
(i) Um neurônio de saída
(ii) Função de ativação Linear g w
wij
wpj
X0
X2
X1
X3
i
g
j
Erro j (k)
yj (k)
-Função Soma:
inj =
p
o j
-Função de transferência:
g(in j) = inj =
p o j Xi j Wi, .
dj = g(inj)
- Soma dos erros quadráticos:
j Yj dj J yj inj
j Erro
E 2 2 ( ) 2
-
Yj dj
Yj dj
Yj dj
djdj E
j
. 12 2 2
1 2
- g
inj XjWij Wij dj
oj Wij Xi WojXo W jXi WijXi WpjXp
inj inj
g( ) . 1 1 ... ...
-
Yj dj
XiComo o ajuste é feito na direção contrária ao gradiente,
Wj E k
Wij
( )
)
(
)
.(
)
1
(
k
Wij
k
Wij
k
Wj
Xi
dj
Yj
k
Wij
k
REDE PERCEPTRON DE MÚLTIPLO COMANDOS (MPL) Aprendizagem: Back Propagation Leaninng
f
f
f
g g
g
y1
yk
yl
wij wjk
xp
xi
Cálculo do erro: Ek = dk – Yk (1)
- Soma dos erros quadráticos:
-
K k
E
E . 2
2 1
(2) - Yk = g(Vk) (4)
- Yk =
m
o j
Yj
Aplicando a derivada parcial (nos neurônios da camada de saída): Wjw yk Vk Yk Yk ek ek E Wjk E .
. (6)
Cálculo de
ek
E
: k lk e e
e e
ek ek
E
) ... ... ( 2
1 2 2 2
1 (7)
- Cálculo
Yk ek
: ( ) 1
Yk Yk dk Yk ek (8)
- Cálculo
Vk Yk
: (g(Vk)) g'(Vk)
- Cálculo
Wjk Vk
:
m
j WjkYj Yj
Wjk Wjk
Vk
0. . ) (
(10)
- ek g Vk Yj
Wjk E
) ( ' .
Como quero reduzir o valor de E, usa-se o sinal negativo, que indica a decida do gradiente.
ek g Vk Yj
ek g Vk Yj WjkE
Wjk . '( ) . . '( ).
(11)
- Cálculo de
Yk E
:
- ek g Vk k
Vk Yk Yk ek ek E Vk
E
. . .( 1). '( )
(12)
- Neurônio Oculto:
- Yj = g(Vj) (13)
- Vj =
p o j Xi Wij.
. (14)
-Wij Vj Yj Vk Vk Yk Yk ek ek E Wij E . .
- Cálculo
Yj Vk
: WjkYj Wjk
Yj Yj Vk m o j
.- Cálculo
Vj Yj
:
g(Vj)
g'(Vj)- Cálculo
Wij Vj
: Wij Xi Xi
Wij Wij Vj p j
0 . -
l k jkk W g Vj
Xi Wij E 1 ) ( ' . . .
Wji = Wji + . aj.
ij = Erri. g’(ini)
Wkj = Wkj + . ak . j
- Função não linearmente superável (XOR) ou-exclusivo:
X1 X2 Y
0 0 0
1 0 1
0 1 1
- Pesos: Wij = (W11, W12, W21, W22) = (0, 0, 0, 0)
- Wjk = (W11,W21) = (0,0)
∑ g
∑ g
∑ g
x1
wij wjk
y1
x2
i=1
i=2
- Função Somatório
- inj =
2
0
.
j
Xi
Wij ink =
2
0
.
j
Yi
Wij
- Função de ativação (função linear)
- g(in) = p.in , em que p = 1
1º Apresentação (epoch)
- Entrada 1
Erro
x1
d3
x2
W12
0
Y3
W21
W11
W22
0
Y2
Y1
W3
Wc 1
2
3
0 0
Erro = Y3 - d3 = 0 k = Erro . g’(in3) = 0.p = 0
In1 = X1W11 + X2W21 = 0 + 0 = 0
In2 = X1+W12 + X2W22 = 0 + 0 = 0
g(in1) = P in1 = 1 . 0 = 0 Y1 = 0
g(in2) = P in2 = 1 . 0 = 0 Y2 = 0
in3 = Y1W3 + Y2W6 = 0.0 + 0.0 = 0
- Entrada 2
In1 = 1.0 + 0.0 = 0 g(in1) = p in1 = 1.0 = 0 Y1 = 0
In2 = 1.0 + 0.0 = 0 g(in1) = p 0 = 1.0 = 0 Y2 = 0
In3 = 0.0 + 0.0 = 0 g(in3) = 0 Y3 = 0
Erro = d3 – y3 = 1 – 0 = 1 k = Erro g’(in3) = 1 (p=1)
x1
d3
x2
0
0
Y3 0
0
0
1
Y2
Y1
0
0 1
2
3
1 0
i j
W5 = W5 + W5 = W5 + . k . Y1 = 0 + 1.1.0 = 0
W6 = W6 + W6 = W6 + . k . Y2 = 0 + 1.1.0 = 0
FUNÇÕES IMPORTANTES NO MATLAB - Training function:
Traingd = Gradient descent backpropagation.
- Adaption learning function:
- Transfer Function:
Logsig= log sigmoid transfer function: px
e
x
f
1
1
)
(
Purelin= linear transfer function:
f
(
x
)
p
.
x
Tansig= hyperbolic tangent sigmoid transfer function: px
x p
e e x
f
1 1 ) (