5b - Redes Neurais no Matlab - dsc.ufcg.edu.brhmg/disciplinas/graduacao/rn-2017.1/RN-5b... · 7...

42
1 Redes Neurais no MATLAB 6.1 Redes Neurais no MATLAB Duas formas de utilização: Linhas de comando, e m-files Interface gráfica (NNTool)

Transcript of 5b - Redes Neurais no Matlab - dsc.ufcg.edu.brhmg/disciplinas/graduacao/rn-2017.1/RN-5b... · 7...

1

Redes Neurais no MATLAB 6.1

Redes Neurais no MATLAB

Duas formas de utilização:

Linhas de comando, e m-files

Interface gráfica (NNTool)

2

Redes Neurais no MATLAB

Duas formas de utilização:

Linhas Linhas de de comandocomando, e m-files, e m-files

Interface gráfica (NNTool)

Passos para a Criação de uma RN

Definir os padrõesInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

3

O Problema do OU Exclusivo

x1

x2

→ ‘0’

→ ‘1’

X1 X2 valor0 0 00 1 11 0 11 1 0

Passos para a Criação de uma RN

Definir os padrõesDefinir os padrõesInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

4

Definindo os Padrões

X1 X2 valor0 0 00 1 11 0 11 1 0

Vetor de entrada: ]1010;1100[10101100

=→⎥⎦

⎤⎢⎣

⎡= PP

Vetor de saída: [ ]0110=T

Passos para a Criação de uma RN

Definir os padrõesInicializarInicializar a a rede redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

5

Inicializando a Rede Neural

net = newff( [min(P')' max(P')'],[N_hidden 1],{'tansig' 'logsig'},'traingd');

Redes Feed-forward: Função “newff”

(limites dos padrões de entrada)(número de neurônios de cada camada)(função de ativação de cada camada)(algoritmo de treinamento)

Funções de Ativação

purelin Linearlogsig Sigmóidetansig Tangente hiperbólicasatlin(s) Linear com saturação

6

Algoritmos de Treinamento

traingd Gradient descent backpropagationtraingdm Gradient descent backpropagation com momentumtraingda Gradient descent backpropagation com taxa adaptativatraingdx Gradient descent backpropagation com momentum e

taxa adaptativatrainlm Levenberg-Marquardt backpropagation (default)trainrp Resilient backpropagation (Rprop)

Passos para a Criação de uma RN

Definir os padrõesInicializar a redeDefinir os parâmetrosDefinir os parâmetros de de treinamento treinamentoTreinar a redeTestar a rede

7

Definindo parâmetros de treinamento

net.trainParam.epochs = 100;net.trainParam.goal = 1e-8;net.trainParam.lr = 0.01;net.trainParam.show = 25;

net.trainParam.mc = 0.9;

net.trainParam.lr_inc = 1.05;net.trainParam.lr_dec = 0.7;net.trainParam.max_perf_inc = 1.04;

Número de epochsErro final desejadoTaxa de aprendizadoAtualização da tela (epochs)

Taxa de momentum

Taxa de incremento da l.r.Taxa de decremento da l.r.Incremento máximo do erro

Passos para a Criação de uma RN

Definir os padrõesInicializar a redeDefinir os parâmetros de treinamentoTreinarTreinar a a rede redeTestar a rede

8

Treinando a Rede Neural

net = train(net, P, T);

Passos para a Criação de uma RN

Definir os padrõesInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestarTestar a a rede rede

9

Testando a Rede Neural

C = sim(net, P);

M-file desenvolvida para o XOR

xor1.m

10

Validação Cruzada

Dividir os padrões disponíveis em trêsconjuntos:

treinamento (70%): matrizes Ptrain, Ttrainvalidação (20%): matrizes Pvalid, Tvalidteste (10%): matrizes Ptest, Ttest

Validação Cruzada% Inicializa a rede neuralnet = 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 errosNepoch = 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 padrões de treinamento e validação mape_train(i) = 100*mean(abs((Ttrain-Ctrain)./Ttrain)) mape_valid(i) = 100*mean(abs((Tvalid-Cvalid)./Tvalid))

11

Validação Cruzada

% encontra o número de epochs ótimo if (mape_valid(i) < mape_min) mape_min = mape_valid(i); net_opt = net; Noptim = Nepoch * i; endend

% Melhor rede:net = net_opt;

% Testa a rede com os 3 conjuntos de padrõesCtrain = sim(net, Ptrain);Cvalid = sim(net, Pvalid);Ctest = sim(net, Ptest);

Redes Neurais no MATLAB

Duas formas de utilização:

Linhas de comando, e m-files

Interface Interface gráfica gráfica ((NNToolNNTool))

12

Interface Gráfica NNTool

Passos para a Criação de uma RN

Definir os padrõesCriar a redeInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

13

Passos para a Criação de uma RN

Definir os padrõesDefinir os padrõesCriar a redeInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

Definindo os Padrões

14

Definindo os Padrões

Definindo os Padrões

15

Definindo os Padrões

Passos para a Criação de uma RN

Definir os padrõesCriarCriar a a rede redeInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

16

Criando a Rede Neural

Criando a Rede Neural

17

Visualizando a Rede Neural

Visualizando a Rede Neural

18

Passos para a Criação de uma RN

Definir os padrõesCriar a redeInicializarInicializar a a rede redeDefinir os parâmetros de treinamentoTreinar a redeTestar a rede

Inicializando a Rede Neural

19

Inicializando a Rede Neural

Inicializando a Rede Neural

20

Passos para a Criação de uma RN

Definir os padrõesCriar a redeInicializar a redeDefinir os parâmetrosDefinir os parâmetros de de treinamento treinamentoTreinar a redeTestar a rede

Definindo parâmetros de treinamento

21

Definindo parâmetros de treinamento

Definindo parâmetros de treinamento

22

Passos para a Criação de uma RN

Definir os padrõesCriar a redeInicializar a redeDefinir os parâmetros de treinamentoTreinarTreinar a a rede redeTestar a rede

Treinando a Rede Neural

23

Treinando a Rede Neural

Passos para a Criação de uma RN

Definir os padrõesCriar a redeInicializar a redeDefinir os parâmetros de treinamentoTreinar a redeTestarTestar a a rede rede

24

Testando a Rede Neural

Testando a Rede Neural

25

Testando a Rede Neural

Testando a Rede Neural

26

Testando a Rede Neural

Testando a Rede Neural

27

Exportando os Dados

Exportando os Dados

28

O Problema do OU Exclusivo

x1

x2

→ ‘0’

→ ‘1’

X1 X2 valor0 0 00 1 11 0 11 1 0

Rede Neural com Camada Escondida

29

Rede Neural com Camada Escondida

Rede Neural com Camada Escondida

30

Rede Neural com Camada Escondida

Rede Neural com Camada Escondida

31

Rede Neural com Camada Escondida

Reconhecimento de Dígitos

32

Reconhecimento de Dígitos

Reconhecimento de Dígitos

33

Reconhecimento de Dígitos

Definição dos Padrões de Entrada

0 1 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

0

1

0

0

0

1

0

0

1

1

1

0

34

Definição dos Padrões de Entrada

0 1 1 0

1 0 0 1

0 0 1 0

0 1 0 0

1 1 1 1

0

1

1

0

1

0

0

1

0

0

1

0

0

1

0

0

1

1

1

1

Definição dos Padrões de Entrada

Cada dígito (padrão): 20 bits20 bitsNúmero de padrões: 10 dígitos10 dígitosRepresentação: Matriz 20 x 10Matriz 20 x 10

Cada coluna representa um dígitoCada linha representa um bitCada bit está associado com um neurônio deentrada

35

Definição dos Padrões de Entrada

digitos.txt

Definição dos Padrões de Saída

1

0

0

0

0

0

0

0

0

0

36

Definição dos Padrões de Saída

saidas.txt

Conversão dos Arquivos

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

37

Importação dos Dados p/ NNTool

Importação dos Dados p/ NNTool

38

Importação dos Dados p/ NNTool

Definição das Redes

Network name: Network name: network15TipoTipo: feed-forward backpropInput RangesInput Ranges: Get from inputTraining FunctionTraining Function: TRAINGDMNumber of layersNumber of layers: 2

Layer 1Layer 1: 15 neurons TANSIGLayer 2Layer 2: 10 neurons PURELIN

39

Definição das Redes

Network name: Network name: network25TipoTipo: feed-forward backpropInput RangesInput Ranges: Get from inputTraining FunctionTraining Function: TRAINGDMNumber of layersNumber of layers: 2

Layer 1Layer 1: 25 neurons TANSIGLayer 2Layer 2: 10 neurons PURELIN

Definição das Redes

Network name: Network name: network35TipoTipo: feed-forward backpropInput RangesInput Ranges: Get from inputTraining FunctionTraining Function: TRAINGDMNumber of layersNumber of layers: 2

Layer 1Layer 1: 35 neurons TANSIGLayer 2Layer 2: 10 neurons PURELIN

40

Treinamento das Redes

EpochsEpochs: 10000Goal (MSE)Goal (MSE): 0.5e-3Learning Rate (lr)Learning Rate (lr): 0.1MomentumMomentum: 0.0

Treinamento das Redes

EpochsEpochs: 10000Goal (MSE)Goal (MSE): 0.5e-3Learning Rate (lr)Learning Rate (lr): 0.4MomentumMomentum: 0.0

41

Treinamento das Redes

EpochsEpochs: 10000Goal (MSE)Goal (MSE): 0.5e-3Learning Rate (lr)Learning Rate (lr): 0.9MomentumMomentum: 0.0

Treinamento das Redes

EpochsEpochs: 10000Goal (MSE)Goal (MSE): 0.5e-3Learning Rate (lr)Learning Rate (lr): 0.1MomentumMomentum: 0.4

42

Treinamento das Redes

EpochsEpochs: 10000Goal (MSE)Goal (MSE): 0.5e-3Learning Rate (lr)Learning Rate (lr): 0.9MomentumMomentum: 0.4

Teste das Redes

1 bit errado 2 bits errados 3 bits errados