Redes Neurais
Ambiente MATLAB
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
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
Quadrado Mgico
Definindo uma Matriz Explicitamente
Elementos de uma linha so separados por espaos ou vrgulas. vrgulas O final de cada linha indicado por um ponto-e-vrgula. ponto- vrgula A lista de elementos delimitada por colchetes [ ].
Definindo uma Matriz Explicitamente
No caso do quadrado mgico:
>>
A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Redes Neurais no MATLAB
Duas formas de utilizao:
Linhas de comando e m-files Interface grfica (NNTool)
Redes Neurais no MATLAB
Duas formas de utilizao:
Linhas de comando e m-files m Interface grfica (NNTool)
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento Treinar a rede Testar a rede
O Problema do OU Exclusivo
1
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento Treinar a rede Testar a rede
x2
0
x1
X1 0 0 1 1
X2 0 1 0 1
valor 0 1 1 0
Definindo os Padres
X1 0 0 1 1 X2 0 1 0 1 valor 0 1 1 0
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento 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
Redes Feed-forward: Funo newff
Funes de Ativao
purelin logsig tansig satlin(s) Linear Sigmide Tangente hiperblica Linear com saturao
net = newff(
[min(P')' max(P')'], [N_hidden 1], {'tansig' 'logsig'}, 'traingd');
(limites dos padres de entrada) (nmero de neurnios de cada camada) (funo de ativao de cada camada) (algoritmo de treinamento)
Algoritmos de Treinamento
traingd traingdm traingda traingdx trainlm trainrp Gradient descent backpropagation Gradient descent backpropagation com momentum Gradient descent backpropagation com taxa adaptativa Gradient descent backpropagation com momentum e taxa adaptativa Levenberg-Marquardt backpropagation (default) Resilient backpropagation (Rprop)
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento Treinar a rede Testar a rede
Definindo parmetros de treinamento
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento Treinar a rede Testar a rede
net.trainParam.epochs = 100; net.trainParam.goal = 1e-8; net.trainParam.lr = 0.01; net.trainParam.show = 25; net.trainParam.mc = 0.9;
Nmero de epochs Erro final desejado Taxa de aprendizado Atualizao da tela (epochs) Taxa de momentum
Taxa de incremento da l.r. net.trainParam.lr_inc = 1.05; Taxa de decremento da l.r. net.trainParam.lr_dec = 0.7; net.trainParam.max_perf_inc = 1.04; Incremento mximo do erro
Treinando a Rede Neural
Passos para a Criao de uma RN
Definir os padres Inicializar a rede Definir os parmetros de treinamento Treinar a rede Testar a rede
net = train(net, P, T);
Testando a Rede Neural
M-file desenvolvida para o XOR
TESTE 1: Rede neural com apenas uma camada 1: de processadores (Percetron bsico);
C = sim(net, P);
xor1.m
M-file desenvolvida para o XOR
TESTE 2: Rede neural com uma camada escondida de 2: processadores (Multi-Layer Perceptron);
Validao Cruzada
Dividir os padres disponveis em trs conjuntos:
treinamento (70%): matrizes Ptrain, Ttrain validao (20%): matrizes Pvalid, Tvalid teste (10%): matrizes Ptest, Ttest
xor1.m xor2.m
Validao Cruzada
% Inicializa a rede neural net = newff([min(P')' max(P')'],[10 1],{'tansig' 'logsig'},'traingd'); net.trainParam.goal = 1e-8; % Treina a rede iterativamente, de 5 em 5 epochs, % at o total de 100 epochs, calculando os erros Nepoch = 5; NN = 20; mape_min = 1e38; for i = 1:NN, net.trainParam.epochs = Nepoch; net = train(net, Ptrain, Ttrain); Ctrain = sim(net, Ptrain); Cvalid = sim(net, Pvalid); % 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))
Validao Cruzada
% encontra o nmero de epochs timo if (mape_valid(i) < mape_min) mape_min = mape_valid(i); net_opt = net; Noptim = Nepoch * i; end end % Melhor rede: net = net_opt; % Testa a rede com os 3 conjuntos de padres Ctrain = sim(net, Ptrain); Cvalid = sim(net, Pvalid); Ctest = sim(net, Ptest);
Redes Neurais no MATLAB
Duas formas de utilizao:
Linhas de comando, e m-files Interface grfica (NNTool) NNTool)
Interface Grfica NNTool
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
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 os Padres
Definindo os Padres
Definindo os Padres
Definindo os Padres
10
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
Criando a Rede Neural
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
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
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 0 0 1 1
X2 0 1 0 1
valor 0 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
0 1 0 0
Definio dos Padres de Entrada
0 1 1 0
0 1 0 0 1
1 1 1 1 1
0 0 0 0 1
0 0 0 0 0
1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0
0 1 0 0 1
1 0 0 1 1
1 0 1 0 1
0 1 0 0 1
1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1
Definio dos Padres de Entrada
Cada dgito (padro): 20 bits Nmero de padres: 10 dgitos Representao: Matriz 20 x 10
Cada coluna representa um dgito Cada linha representa um bit Cada bit est associado com um neurnio de entrada
Definio dos Padres de Entrada
0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0
20
Definio dos Padres de Sada
1 0 0 0 0 0 0 0 0 0
Definio dos Padres de Sada
1 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 1 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 1 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 1
Converso dos Arquivos
>> >> >> >> load save load save digitos.txt digitos saidas.txt saidas
Importao dos Dados p/ NNTool
21
Importao dos Dados p/ NNTool
Importao dos Dados p/ NNTool
Definio das Redes
Network name: network15 Tipo: feed-forward backprop Tipo Input Ranges: Get from input Ranges Training Function: TRAINGDM Function Number of layers: 2 layers
Layer 1: 15 neurons 1 Layer 2: 10 neurons 2 TANSIG PURELIN
Definio das Redes
Network name: network25 Tipo: feed-forward backprop Tipo Input Ranges: Get from input Ranges Training Function: TRAINGDM Function Number of layers: 2 layers
Layer 1: 25 neurons 1 Layer 2: 10 neurons 2 TANSIG PURELIN
22
Definio das Redes
Network name: network35 Tipo: feed-forward backprop Tipo Input Ranges: Get from input Ranges Training Function: TRAINGDM Function Number of layers: 2 layers
Layer 1: 35 neurons 1 Layer 2: 10 neurons 2 TANSIG PURELIN
Treinamento das Redes
Epochs: Epochs Goal (MSE): (MSE) Learning Rate (lr): (lr) Momentum: Momentum 10000 0.5e-3 0.1 0.0
Treinamento das Redes
Epochs: Epochs Goal (MSE): (MSE) Learning Rate (lr): (lr) Momentum: Momentum 10000 0.5e-3 0.4 0.0
Treinamento das Redes
Epochs: Epochs Goal (MSE): (MSE) Learning Rate (lr): (lr) Momentum: Momentum 10000 0.5e-3 0.9 0.0
23
Treinamento das Redes
Epochs: Epochs Goal (MSE): (MSE) Learning Rate (lr): (lr) Momentum: Momentum 10000 0.5e-3 0.1 0.4
Treinamento das Redes
Epochs: Epochs Goal (MSE): (MSE) Learning Rate (lr): (lr) Momentum: Momentum 10000 0.5e-3 0.9 0.4
Teste das Redes
1 bit errado
2 bits errados
3 bits errados
24