Você está na página 1de 5

REDES NEURAIS IMPLEMENTADAS NO MATLAB

RAPHAEL ANDRADE, C. L.

ENGK37, DEE, Universidade Federal da Bahia


Endereço para Correspondência
E-mails: mazarpoandrade@gmail.com

Resumo⎯ Neste relatório serão mostradas e explicadas três práticas da disciplina ENGK37 acerca de redes neurais
implementadas nas topologias perceptron, adaline e mcp com backpropagation. Todas as implementações e simulações forma
realizadas no Matlab 2015b.

Palavras-chave⎯ Adaline, Perceptron, MCP, Backpropagation, Matalab, toolbox.

1 Introdução
2.3 Tabela 2
Redes neuronais artificiais são modelos
computacionais inspirados pelo sistema nervoso
central de um animal (em particular o cérebro) que
são capazes de realizar o aprendizado de máquina
bem como o reconhecimento de padrões. Redes
neurais artificias geralmente são apresentadas como
sistemas de "neurônios interconectados, que podem
computar valores de entradas", simulando o
comportamento de redes neurais biológicas.
Algumas topologias de neurônio como
Perceptron e Adaline puderam ser explanados em
sala de aula a respeito de seu funcionamento. A
implementação feita no Matlab foi possibilitada 2.4 Explique porque o número de iterações de
pelos algoritmos de iteração, também discutidos em treinamento, em relação a esta aplicação, varia cada
sala. Redes mais complexas envolvendo mais de um vez que executamos o treinamento do Perceptron.
neurônio (PMC) foram explanadas através do
método Backpropagation. A partir de tal Cada vez que iniciamos o algoritmo elaborado, se
conhecimento foram feitas três práticas que serão utiliza um vetor de pesos iniciais diferentes para a
abordadas nos tópicos a seguir com base nos roteiros entrada, levando a um número diferente de
fornecidos. iterações(épocas) para se convergir.

2.5 Discorra sobre o valor adotado para a taxa de


aprendizagem.
2 Perceptron
No algoritmo elaborado por mim utilizei uma
expressão para calcular a taxa de aprendizagem
2.2 Tabela 1 baseada no número de amostras para aprendizagem e
no número de entradas para que houvesse uma
ponderação do mesmo. O valor calculado por esta
expressão ficou na ordem da segunda casa decimal
para os cinco treinamentos realizados.

2.6 Para a aplicação em questão, discorra se é


possível afirmar que as duas classes são linearmente
separáveis.
É possível sim visto que foi possível separar na
totalidade os dados em duas classes com resultados
de teste iguais em todas as cinco simulações.
2.7 Analise os resultados e indique uma métrica para
classificar os treinamentos.
Os resultados dos treinamentos foram semelhantes
em termos do número de épocas necessárias para a
conversão. É possível ver que no segundo e quarto
treinamentos obteve-se um valor um pouco maior
que os demais devido a um dos pesos ter tido uma
ordem de grandeza diferente da dos outros dois.

Figura 3. Dados do tipo 0 mostrados por pequenas estrelas (azuis são do


2.8 Como esta prática envolveu três entradas pude teste e verdes são do treino).
através de uma plotagem 3D verificar o plano
gerado pela rede neural e os dados por ele
separados. 3 Adaline

3.2 Tabela 1

3.3 Gráficos de Epoca x Eqm


Figura 1. Plano separando os dados dos dois tipos

T1
Epoca x Eqm
3

2.5

2
EQM

1.5

0.5
0 20 40 60 80 100 120 140 160
EPOCA

Figura 2. Dados do tipo 1 mostrados por pequenos círculos (vermelhos são


do teste e amarelos são do treino)
T2
4 PMC - Backpropagation
Epoca x Eqm
3

4.2 Tabela 2
2.5

2
EQM

1.5

0.5
0 50
EPOCA
100 150 4.3 Gráficos de Epoca x Eqm

T3 T1
Epoca x Eqm
2

Best Validation Performance is 0.0016071 at epoch 265


10 -1
Train
Validation
Test
Best

1.5
Mean Squared Error (mse)
EQM

-2
10
1

0.5
0 50 100 150
EPOCA
-3
10
0 50 100 150 200 250
Pode-se considerar os conjuntos como separáveis 268 Epochs

pois a resposta das redes neurais nos cinco testes foi


a mesma apresentando consistência frente aos
parâmetros de limite adotados. T2

3.4 Tabela 2 Best Validation Performance is 0.0015471 at epoch 142


10 0
Train
Validation
Test
Best

10 -1
Mean Squared Error (mse)

10 -2

-3
10

-4
10
0 20 40 60 80 100 120 140
142 Epochs

Há uma variação de ambos pois as condições


iniciais são alteradas de treino para treino levando a
diferentes números de iterações para que o valor do
erro quadrático médio fique abaixo do especificado.
4.4 Tabela 2 6 Anexos

6.1 Código do Perceptron

close all;clear all;clc


file = 'amostras.xlsx';
Amostras = xlsread(file);
y = size(Amostras);
n1 = y(1);
n2 = y(2);
target = Amostras (:,n2);
Amostras(:,n2)= -1;
w = rand (1,n2-1);
w(n2) = 1;
Figura 4. Tabela com informações dos cinco treinos. w
n = (n1*n2)+(n1*n2);
n = 1/n
epoca = 0;
erro =1;
while true;
for i = 1:n1,
4.5 Analise dos treinos
u = Amostras(i,:)*w';
if (u >= 0);
Baseado nos cinco treinos realizados no item y = 1;
else
anterior a configuração final de treinamento mais y = -1;
adequada seria a do quinto treino no qual obteve-se end
if (y~=target(i,1));
um erro relativo médio de 2.87% e uma variância de w = w + n*(target(i,1)-y)*Amostras(i,1:n2);
epoca = epoca +1;
apenas 0.03% levando a um resultado mais preciso. erro=1;
break;
else
erro=0;
epoca = epoca +1;
5 Conclusão end

end

Após a conclusão dos três trabalhos foi possível if (erro == 0) && (i == n1);
break;
ilustrar como a eficiência de um sistema de rede end
end
neural está ligado aos parâmetros de projeto e aos epoca = epoca/n1;
disp('O PESO W VALE:');
algoritmos aplicados. O Perceptron apresentou um disp(w);
número de épocas bem superior ao número de épocas disp ('QUANTIDADE DE EPOCAS NECESSARIAS:');
disp(epoca);
do Adaline que é resultado da implementação
baseada no erro quadrático médio. O MCP da file = 'dados.xlsx';
dados = xlsread(file);
terceira prática foi projetado por meio da toolbox do y = size(dados);
Matlab utilizando o comando “>>nntool”. Foram y1 = y(1,1);
y2 = y(1,2);
inseridos os parâmetros do roteiro resetando os pesos i = 1;
dados(:,n2)= -1;
a cada treino. O Perceptron Multicamadas com Back for i=1:y1,
Propagation se mostrou bem eficiente levando a um u = dados(i,:)*w';
if (u >= 0);
número de épocas similar ao Adaline de neurônio y(i) = 1;
else
único. y(i) = -1;
end
end
disp('y = ');
Agradecimentos disp(y);

[x1,x2] = meshgrid(-3:0.1:3,-1:0.1:2);
x3 = -w(1)*x1/w(3) + -w(2)*x2/w(3) + w(4)/w(3);
Agradeço ao Professor Bernardo Ordonez pelos surf(x1,x2,x3);

conhecimentos adquiridos em aula. hold on

for i = 1:n1;
if target(i,1) == 1
Referências Bibliográficas else
plot3(Amostras(i,1),Amostras(i,2), Amostras(i,3),'g*');

plot3(Amostras(i,1),Amostras(i,2), Amostras(i,3),'yo');
end
Anotacões de aula da matéria ENGK37. end

for i = 1:y1;
if y(i) == 1
plot3(dados(i,1),dados(i,2), dados(i,3),'b*');
else
plot3(dados(i,1),dados(i,2), dados(i,3),'ro');
end
end
6.3 Interface da toolbox do Matlab para rede neural
6.2 Código do Adaline multicamadas

close all;clear all; clc


file = 'amostras2.xlsx';
Amostras = xlsread(file);
y = size(Amostras);
n1 = y(1);
n2 = y(2);
target = Amostras(:,n2);
Amostras(:,n2) = -1;
w = rand(1,n2-1);
w(n2) = 1;
w Figura 5. Estrutura da rede.
n = (n1*n2)+(n1*n2);
n = 1/n
e = 10^(-3);
epoca = 0;
flag = 1;
eqm = 0;
a = 1;

while abs(flag) > e;


eqmant = eqm;
epoca = epoca +1;
flag = 0;
for i = 1:n1;
u = Amostras(i,:)*w';
w = w+(n*((target(i,1)-u)*Amostras(i,:)));
end
for i = 1:n1;
u = Amostras(i,:)*w';
eqm = eqm + ((target(i,1)-u)^2);
end
eqm = eqm/n1;
eqm_vector(a) = eqm;
epoca_vector(a) = a;
eqmatual = eqm;
flag = eqmatual - eqmant; Figura 6. Configuração de parâmetros
a = a+1;

end

plot(epoca_vector, eqm_vector);
xlabel('EPOCA');
ylabel('EQM');
title('Epoca x Eqm');
disp('O peso W vale:');
disp(w);
disp('Quantidade de epocas necessarias:');
disp(epoca);

file = 'dados2.xlsx';
dados = xlsread(file);

y = size(dados);
y1 = y(1,1);
y2 = y(1,2);
dados(:,y2+1) = -1;
i = 1;
for i = 1:y1;
u = dados(i, :)*w';
if(u>=0)
y(i) = 1;
else
y(i) = -1;
end
end

disp('y = ');
disp(y);

Figura 7. Resultado de um dos treinos.

Você também pode gostar