Você está na página 1de 24

Ambiente MATLAB

Redes Neurais
MATLAB MATrix LABoratory

Programao baseada em Matrizes

MATLAB 6.5
Vetores e escalares tambm podem ser
considerados matrizes, 1xN, Nx1, 1x1

Tela Principal do MATLAB Tela Principal do MATLAB


Janela de Comando

1
Tela Principal do MATLAB Tela Principal do MATLAB
Launch Pad

Janela de Histrico

Tela Principal do MATLAB Matrizes no MATLAB


Quadro Melancholia I, do artista
alemo e matemtico amador
Albrecht Drer

2
Definindo uma Matriz Explicitamente
Quadrado Mgico
Elementos de uma linha so separados
por espaos ou vrgulas.
vrgulas
O final de cada linha indicado por um
ponto-
ponto-e-vrgula.
vrgula
A lista de elementos delimitada por
colchetes [ ].

Definindo uma Matriz Explicitamente Redes Neurais no MATLAB

No caso do quadrado mgico: Duas formas de utilizao:

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]


Linhas de comando e m-files
A =
16 3 2 13
5 10 11 8 Interface grfica (NNTool)
9 6 7 12
4 15 14 1

3
Redes Neurais no MATLAB Passos para a Criao de uma RN

Duas formas de utilizao: Definir os padres


Inicializar a rede
Linhas de comando e m-
m-files Definir os parmetros de treinamento
Treinar a rede
Interface grfica (NNTool)
Testar a rede

O Problema do OU Exclusivo Passos para a Criao de uma RN


1
x2
0
Definir os padres
Inicializar a rede
x1
Definir os parmetros de treinamento
X1 X2 valor Treinar a rede
0 0 0 Testar a rede
0 1 1
1 0 1
1 1 0

4
Definindo os Padres Passos para a Criao de uma RN

X1 X2 valor
Definir os padres
0 0 0
Inicializar a rede
0 1 1
1 0 1 Definir os parmetros de treinamento
1 1 0 Treinar a rede
Testar a rede
Vetor de entrada: P = 0 0 1 1 P = [0 0 1 1; 0 1 0 1]
0 1 0 1

Vetor de sada: T = [0 1 1 0]

Inicializando a Rede Neural Funes de Ativao

Redes Feed-forward: Funo newff purelin Linear


logsig Sigmide
tansig Tangente hiperblica
satlin(s) Linear com saturao
net = newff( [min(P')' max(P')'], (limites dos padres de entrada)
[N_hidden 1], (nmero de neurnios de cada camada)
{'tansig' 'logsig'}, (funo de ativao de cada camada)
'traingd'); (algoritmo de treinamento)

5
Algoritmos de Treinamento Passos para a Criao de uma RN

traingd Gradient descent backpropagation Definir os padres


traingdm Gradient descent backpropagation com momentum
traingda Gradient descent backpropagation com taxa adaptativa
Inicializar a rede
traingdx Gradient descent backpropagation com momentum e Definir os parmetros de treinamento
taxa adaptativa
trainlm Levenberg-Marquardt backpropagation (default) Treinar a rede
trainrp Resilient backpropagation (Rprop) Testar a rede

Definindo parmetros de treinamento Passos para a Criao de uma RN

net.trainParam.epochs = 100; Nmero de epochs


Definir os padres
net.trainParam.goal = 1e-8; Erro final desejado
net.trainParam.lr = 0.01; Taxa de aprendizado Inicializar a rede
net.trainParam.show = 25; Atualizao da tela (epochs)
Definir os parmetros de treinamento
net.trainParam.mc = 0.9; Taxa de momentum
Treinar a rede
net.trainParam.lr_inc = 1.05; Taxa de incremento da l.r.
net.trainParam.lr_dec = 0.7; Taxa de decremento da l.r. Testar a rede
net.trainParam.max_perf_inc = 1.04; Incremento mximo do erro

6
Treinando a Rede Neural Passos para a Criao de uma RN

Definir os padres
net = train(net, P, T);
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Testando a Rede Neural M-file desenvolvida para o XOR


TESTE 1:
1: Rede neural com apenas uma camada
de processadores (Percetron bsico);
C = sim(net, P);

xor1.m

7
M-file desenvolvida para o XOR Validao Cruzada
TESTE 2:
2: Rede neural com uma camada escondida de
processadores (Multi-Layer Perceptron); Dividir os padres disponveis em trs
conjuntos:

treinamento (70%): matrizes Ptrain, Ttrain


xor1.m
xor2.m validao (20%): matrizes Pvalid, Tvalid
teste (10%): matrizes Ptest, Ttest

Validao Cruzada Validao Cruzada


% Inicializa a rede neural
net = newff([min(P')' max(P')'],[10 1],{'tansig' 'logsig'},'traingd'); % encontra o nmero de epochs timo
net.trainParam.goal = 1e-8; if (mape_valid(i) < mape_min)
mape_min = mape_valid(i);
% Treina a rede iterativamente, de 5 em 5 epochs, net_opt = net;
% at o total de 100 epochs, calculando os erros Noptim = Nepoch * i;
Nepoch = 5; end
NN = 20; end
mape_min = 1e38;
% Melhor rede:
for i = 1:NN, net = net_opt;
net.trainParam.epochs = Nepoch;
net = train(net, Ptrain, Ttrain); % Testa a rede com os 3 conjuntos de padres
Ctrain = sim(net, Ptrain);
Ctrain = sim(net, Ptrain); Cvalid = sim(net, Pvalid);
Cvalid = sim(net, Pvalid); Ctest = sim(net, Ptest);

% Calcula os erros MAPE para os padres de treinamento e validao


mape_train(i) = 100*mean(abs((Ttrain-Ctrain)./Ttrain))
mape_valid(i) = 100*mean(abs((Tvalid-Cvalid)./Tvalid))

8
Redes Neurais no MATLAB Interface Grfica NNTool

Duas formas de utilizao:

Linhas de comando, e m-files

Interface grfica (NNTool)


NNTool)

Passos para a Criao de uma RN Passos para a Criao de uma RN

Definir os padres Definir os padres


Criar a rede Criar a rede
Inicializar a rede Inicializar a rede
Definir os parmetros de treinamento Definir os parmetros de treinamento
Treinar a rede Treinar a rede
Testar a rede Testar a rede

9
Definindo os Padres Definindo os Padres

Definindo os Padres Definindo os Padres

10
Passos para a Criao de uma RN Criando a Rede Neural

Definir os padres
Criar a rede
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Criando a Rede Neural Visualizando a Rede Neural

11
Visualizando a Rede Neural Passos para a Criao de uma RN

Definir os padres
Criar a rede
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Inicializando a Rede Neural Inicializando a Rede Neural

12
Inicializando a Rede Neural Passos para a Criao de uma RN

Definir os padres
Criar a rede
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Definindo parmetros de treinamento Definindo parmetros de treinamento

13
Definindo parmetros de treinamento Passos para a Criao de uma RN

Definir os padres
Criar a rede
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Treinando a Rede Neural Treinando a Rede Neural

14
Passos para a Criao de uma RN Testando a Rede Neural

Definir os padres
Criar a rede
Inicializar a rede
Definir os parmetros de treinamento
Treinar a rede
Testar a rede

Testando a Rede Neural Testando a Rede Neural

15
Testando a Rede Neural Testando a Rede Neural

Testando a Rede Neural Exportando os Dados

16
Exportando os Dados O Problema do OU Exclusivo
1
x2
0

x1

X1 X2 valor
0 0 0
0 1 1
1 0 1
1 1 0

Rede Neural com Camada Escondida Rede Neural com Camada Escondida

17
Rede Neural com Camada Escondida Rede Neural com Camada Escondida

Rede Neural com Camada Escondida Rede Neural com Camada Escondida

18
Reconhecimento de Dgitos Reconhecimento de Dgitos

Reconhecimento de Dgitos Reconhecimento de Dgitos

19
Definio dos Padres de Entrada Definio dos Padres de Entrada
0 0

1 1

0 1

0 0

0 1 0 0 1 0 1 1 0 1

1 0
1 1 0 0 0
1 0 0 1 0

0 1
0 1 0 0 0 0 1 0
0 0

0 1 0 0 1 0 1 0 0 0

0 1
1 1 1 0 0
1 1 1 1 0

0 0

1 1

0 0

0 0

1 1

1 1

1 1

0 1

Definio dos Padres de Entrada Definio dos Padres de Entrada


0 0 1 1 1 0 1 0 0 0
1 1 1 0 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1
Cada dgito (padro): 20 bits 0 0 0 0 1 1 1 0 0 0
1 1 0 1 1 1 0 1 1 1
Nmero de padres: 10 dgitos 1 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
Representao: Matriz 20 x 10 0 1 1 0 0 0 1 1 1 1
0 0 0 1 1 1 0 0 0 1
1 0 0 1 1 1 0 1 1 0
Cada coluna representa um dgito 0 1 1 1 1 1 1 1 1 0
0 0 0 1 0 0 0 0 1 1
Cada linha representa um bit 0 0 0 0 0 1 0 1 0 1
1 1 0 0 0 0 1 0 0 0
Cada bit est associado com um neurnio 0 0 0 1 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
de entrada 1 1 1 0 1 0 0 0 1 0
1 1 1 0 1 1 1 1 1 1
1 1 1 1 1 1 0 1 1 1
0 1 0 0 0 0 0 0 1 0

20
Definio dos Padres de Sada Definio dos Padres de Sada

0
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
0

Converso dos Arquivos Importao dos Dados p/ NNTool

>> load digitos.txt


>> save digitos
>> load saidas.txt
>> save saidas

21
Importao dos Dados p/ NNTool Importao dos Dados p/ NNTool

Definio das Redes Definio das Redes

Network name: network15 Network name: network25


Tipo:
Tipo feed-forward backprop Tipo:
Tipo feed-forward backprop
Input Ranges:
Ranges Get from input Input Ranges:
Ranges Get from input
Training Function:
Function TRAINGDM Training Function:
Function TRAINGDM
Number of layers:
layers 2 Number of layers:
layers 2
Layer 1:
1 15 neurons TANSIG Layer 1:
1 25 neurons TANSIG
Layer 2:
2 10 neurons PURELIN Layer 2:
2 10 neurons PURELIN

22
Definio das Redes Treinamento das Redes

Network name: network35 Epochs:


Epochs 10000
Tipo:
Tipo feed-forward backprop Goal (MSE):
(MSE) 0.5e-3
Input Ranges:
Ranges Get from input Learning Rate (lr
(lr)): 0.1
Training Function:
Function TRAINGDM Momentum:
Momentum 0.0
Number of layers:
layers 2
Layer 1:
1 35 neurons TANSIG
Layer 2:
2 10 neurons PURELIN

Treinamento das Redes Treinamento das Redes

Epochs:
Epochs 10000 Epochs:
Epochs 10000
Goal (MSE):
(MSE) 0.5e-3 Goal (MSE):
(MSE) 0.5e-3
Learning Rate (lr
(lr)): 0.4 Learning Rate (lr
(lr)): 0.9
Momentum:
Momentum 0.0 Momentum:
Momentum 0.0

23
Treinamento das Redes Treinamento das Redes

Epochs:
Epochs 10000 Epochs:
Epochs 10000
Goal (MSE):
(MSE) 0.5e-3 Goal (MSE):
(MSE) 0.5e-3
Learning Rate (lr
(lr)): 0.1 Learning Rate (lr
(lr)): 0.9
Momentum:
Momentum 0.4 Momentum:
Momentum 0.4

Teste das Redes

1 bit errado 2 bits errados 3 bits errados

24

Você também pode gostar