Você está na página 1de 2

Trabalhando com o Toolbox de Redes Neurais Artificiais do Matlab

1. Aprendendo a criar e treinar uma rede neural Perceptron de múltiplas camadas (MLP)

A tabela 1 apresenta as funções necessárias para criar, treinar e simular uma rede neural MLP através do matlab.

Tabela 1 - Funções matlab - toolbox redes neurais - MLP


Matlab Função Objetivo
newff Criar uma rede MLP
sim Simular uma rede MLP
train Treinar uma rede MLP
traingd Realizar treinamento com Backpropagation padrão
trainlm Realizar treinamento com Levenberg- Maquardt
logsig Implementa a função de ativação sigmoide
tansig Implementa a função tangente hiperbólica
purelin Implementa a função linear

Exemplo 1: Neste exemplo iremos aprender com criar uma rede MLP para um problema simples de aproximação de
função, onde teremos uma entrada e uma saída para a rede neural e 9 padrões de treino. A tabela 2 apresenta os padrões
de entrada (x) e saída (y) desejada para a rede aprender a função y=f{x).

Tabela 2 - padrões para treino da MLP


Entrada x Saída y desejada
o o
1 0.84
2 0.91
3 0.14
4 -0.77
5 -0.96
6 -0.28
7 0.66
8 0.99
Na janela principal do matlab digite os seguintes comandos:
>>p =[O J 2 3 4 5 6 7 8] # aqui estamos criando o vetor p de entradas desejadas para a MLP. O vetor de entradas
deve conter o número de linhas igual ao número de entradas da rede (para o exemplo temos 1 entrada) e número de
colunas igual ao número de padrões para treinamento (para o exemplo temos 9 padrões)
» t =[O 0.84 0.91 0.14-0. 77-0.96-0.28 0.66 0.99] # aqui estamos criando o vetor de saídas desejadas para a MLP.
O vetor de saída deve conter o número de linhas igual ao número de saídas da rede (para o exemplo temos 1 saída) e
número de colunas igual ao número de padrões para treinamento (para o exemplo temos 9 padrões)

>>plot(p,t, 'o1 # aqui estamos mandando plotar a entrada p versus a saída t apenas para visualização da função que a
rede terá que aprender.
>> net = new/f(p,t,5) # aqui estamos criando uma rede MLP com o nome net. Passamos para a função newjfo vetor
de entrada p e o vetor de saída t. Passamos também o número de neurônios que desejamos na camada escondida, sendo
que para O exemplo escolhemos 5 neurônios. Aqui usaremos os parâmetros default para a topologia da rede, que neste
caso usa a função tansig em todos neurônios da camada escondida e a função purelin no neurônio da camada de saída.
algoritmo de treinamento será também o default e no caso será usada a função trainlm. No exemplo 2 veremos como
0
modificar estes parâmetros default.
Ao criannos a topologia da MLP ao qual denominamos de net, todos os pesos da rede recebem valores iniciais criados
de fonna aleatória dentro da faixa de • 1 a 1 (chamado processo de inicialização dos pesos da rede)

» a=sim(net,p) li aqui simularemos a rede net para os valores de entrada do vetor p e valores iniciais de pesos. Aqui
nossa rede ainda não foi treinada.

» plot(a, 'g*~ # plotando saída da rede

» hold # segurar na tela gráfico plotado anterionnente

» plot(t, 'o') ti plotar gráfico com saída desejada da rede junto com a saída da rede que plotarnos anterionnente.

» net=train(net, p,t) # aqui vamos iniciar o treinamento da nossa rede nel criada. Passamos para a função train a
nossa rede net e os vetores de entrada p e saída I desejados.
>> a=sim(net,p) # após treino realizado, vamos simular agora a saída da nossa rede para o vetor de entrada p. Agora
a simulação é realizada com a MLP com os novos valores de pesos que foram ajustados durante processo de treino.

>> plot(a, 'm+~ # plotar gráfico de saída da rede neural junto com o gráfico que já tínhamos anterionnente.

> > net./W{I,I} # Visualizar pesos entre camada de entrada e escondida


>> net.b{J,l} #Visualizar bias da camada escondida
» net.b/2,1} # Visualizar pesos entre camada escondida e de saída
>> netLW{l,I} #Visualizar bias camada de saída
Exemplo 2 (exercício): Para os mesmos dados do exemplo I treinar uma rede neural com 14 neurônios na camada
escondida, função sigmóide (logsig) para estes neurônios e linear para o neurônio de saída. Verifique qual os pesos da
camada intennediária após treinamento
Obs : net = newff(p,t,5,{'tansig',' purelin'},'trainlm') • default

Exemplo 3: Neste exemplo iremos aprender com criar uma rede MLP para um problema simples de aproximação de
função, onde teremos duas entradas e uma saída para a rede neural e 9 padrões de treino. Neste caso aprenderemos
como dividir a base de dados para treino, validação e teste. No exemplo I isto foi feito de fonna aleatória pela própria
função newff.
»p = /O J 2 3 4 5 6 7 8; O l 2 3 4 5 6 7 8/; #Criando vetor de entradas com 2 entradas e 9 padrões de treino

» t = /O 0.84 0.91 0.14 -0. 77-0.96 -0.28 0.66 0.99/; #Criando vetor de saída com 1 saída e 9 padrões de treino

»net = newff(p,t,8) #Criando rede MLP com 8 neurônios na camada escondida e outros parâmetros assumindo valor
default
>>net.divideFcn='divideind'; #Infonnando a rede net criada que iremos infonnar os índices do vetor de entrada e
saída que deverão ser usados para criação do vetor de treino, validação e teste.
>>net.divideParam.trainlnd=l:2:9; #índices para criar o vetor de treino a partir do vetor p e 1 ( I :2:9 - começa com o
índice I e vai de dois em dois até chegar no índice 9)
»net.divideParam. vallnd=2:2:9; #índices para criar o vetor de validação a partir do vetor p e 1

>>net.divideParam.test!nd=2:2:9; #índices para criar o vetor de teste a partir do vetor p e 1

>>net = train(net,p,t); #treinar rede net

> >a = sim(net,p); #Simular rede net

Você também pode gostar