Você está na página 1de 2

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

DEPARTAMENTO DE INFORMÁTICA APLICADA


DISCIPLINAS : INF01017 REDES NEURAIS E SISTEMAS FUZZY
PROFESSOR: PAULO MARTINS ENGEL

Roteiro para aula prática com o NN Toolbox do MATLAB


OBJETIVO
Esta aula visa familiarizar o aluno com a ferramenta MATLAB, em especial com o Toolbox de redes
neurais. Como objetivos específicos, o aluno deverá simular o processo de aprendizagem de uma BPN
para tarefas de classificação, treinando uma rede com funções booleanas, e de aproximação de funções,
treinando a rede com funções não lineares. No arquivo dados.zip (link na página da disciplina) estão
disponíveis scripts do MATLAB para serem usados nas tarefas propostas.

TAREFAS

1. Funções básicas
tansig(x), logsig(x), hardlim(x), hardlims(x), plot(x,y)

Gerar os gráficos das funções de ativação tangente hiperbólica e logística. Não é necessário relatar os
resultados desta tarefa.

x=-3:0.1:3;
y1=tansig(x);
y2=logsig(x);
y3=hardlim(x);
y4=hardlims(x);
plot(x,y1,'b',x,y2,'r',x,y3,'g',x,y4,'m');
grid on;

2. Criar e treinar perceptrons


newp, sim, adapt, plotpv, plotpc

Criar um perceptron elementar e treiná-lo com a função booleana OU (perceptron.m)

%perceptron elementar treinado para duas classes


net = newp([-2 2; -2 2],1); %cria a estrutura da RNA com um perceptron
%[min;max],número de neurônios

P = [0 0; 0 1; 1 0; 1 1]'; %entradas
T = [0 1 1 1]; %saidas

figure; %cria nova figura


plotpv(P,T); %plota as entradas/saídas
linehandle=plotpc(net.IW{1},net.b{1}); %plota a linha que separa as classes
hold on
for cont=1:6,
net = adapt(net,P,T); % treinamento incremental
linehandle=plotpc(net.IW{1},net.b{1}, linehandle);
drawnow;
pause;
Y = sim(net,P) %propagação
end;
hold off
% os pesos estão dentro de "net"
% para visualizá-los digite no prompt do matlab:
% net.IW{1}
% net.b{1}

Relatar os pesos e bias do perceptron treinado e a figura obtida.


3. Gerar e treinar uma rede Backpropagation (BP)
newff, sim, train

3.1 Gerar e treinar uma rede BP para solucionar o problema do XOR (xor.m)
%xor
clear; close all; clc;
P = [-1 -1 1 1; -1 1 -1 1]
T = [-1 1 1 -1]
net = newff([-1 1; -1 1], [2 1], {'tansig', 'tansig'},'traingd');
net.trainParam.epochs = 1000;
a = sim(net, P)
net = train(net, P, T);
a = sim(net, P)

Encontre a melhor configuração de parâmetros que minimiza o eqm. Para tanto, modifique o número
de épocas, o algoritmo de treinamento, etc.
Relatar os parâmetros da melhor configuração encontrada, juntamente com o desempenho alcançado.

3.2 Gerar e treinar uma rede BP para aproximar uma função seno ruidosa (seno.m).

%aproximação do seno
clear all;
clc; close all;
x = -pi:pi/16:pi;
y = sin(x);
t = sin(x) + 0.1*randn(size(x)); %seno com 10% de ruído
plot(x,y);
hold on;
plot(x,t,'*b') ;
net = newff([-pi pi], [1 1], {'tansig', 'purelin'},'traingd');
net.trainParam.epochs = 100;
a = sim(net, x);
plot(x,a, 'dg');
net = train(net, x, y);
a = sim(net, x);
plot(x, a, 'or');

Encontre a melhor configuração de parâmetros que minimiza o eqm. Para tanto, modifique o número
de neurônios da camada oculta, o algoritmo de treinamento, etc.
Relatar os parâmetros da melhor configuração encontrada, juntamente com o desempenho alcançado e
as figuras obtidas.

4. Aprendizado de uma função de transferência.

A partir do arquivo superficie.txt, treine uma rede BP para aproximar estes dados.
Utilize os arquivos disponíveis na página da disciplina (nntool_superficie.m).
Encontre a melhor configuração de parâmetros que minimiza o eqm. Para tanto, modifique o número
de neurônios da camada oculta, o algoritmo de treinamento, etc.
Relatar os parâmetros da melhor configuração encontrada, juntamente com o desempenho alcançado
e as figuras obtidas.

Faça um relatório (.pdf) contendo:


Os parâmetros das melhores configurações das redes treinadas em todos os exercícios.
As figuras geradas das melhores configurações em todos os exercícios.
Enviar para cassiofoliveira@gmail.com, com cópia para engel@inf.ufrgs.br.

Você também pode gostar