Redes Neurais
-
Upload
edson-amado -
Category
Documents
-
view
227 -
download
0
description
Transcript of Redes Neurais
UNIVERSIDADE FEDERAL DO PARANÁ PROGRAMA DE PÓS-GRADUAÇÃO EM METODOS NUMERICOS EM
ENGENHARIA - PPGMNE DISCIPLINA: INTRODUÇÃO À REDES NEURAIS ARTIFICIAIS
DOCENTE: RICARDO ALMEIDA MESTRANDO: EDSON AMADO DA SILVA JUNIOR
RELATÓRIO Nº 1 DA DISCIPLINA INTRODUÇÃO À REDES NEURAIS
ARTIFICIAS
Curitiba 2015
RESUMO
Redes Neurais Artificiais (RNA) veem se mostrando uma ótima ferramenta para
solucionar problemas nas mais diversas áreas da engenharia e ciências aplicadas,
pois consegue solucionar gargalos onde métodos tradicionais são limitados e
ineficientes. Neste trabalho é apresentado a implementação de uma Rede Neural
Artificial Perceptron supervisionado. Está (RNA) é utilizada na classificação de óleos
em duas classes distintas utilizando três variáveis de entrada como parâmetros.
Palavras Chaves: Redes Neurais, Perceptron, Taxa de Aprendizagem, classificação.
ABSTRACT
Artificial Neural Networks (ANN) proves to be an excellent tool for solving problems in
several areas of engineering and applied sciences, because it can solve bottlenecks
where traditional methods are limited and inefficient. This work presents the
implementation of an Artificial Neural Network Perceptron supervised. using the delta
rule with multiple inputs and multiple outputs. This (RNA) is used in the classification
of oils into two distinct classes using three input variables as parameters.
KEY WORDS: NEURAL NETWORKING, PERCEPTRON, BIAS, CLASSIFICATION,
LEARNING RATE.
LISTA DE TABELAS
Tabela 1: Valores do treinamento para dados não normalizados ............................... 3
Tabela 2:Valores do treinamento para dados normalizados ....................................... 3
Tabela 3: Valores do treinamento com taxas de aprendizagem diferentes ............................. 4
Tabela 4: Classificação da Rede ...................................................................................... 5
Tabela 5: Classificação dos dados de treinamento .............................................................. 5
SUMÁRIO
1. INTRODUÇÃO ................................................................................................................................... 1
2. DESENVOLVIMENTO ......................................................................................................................... 1
2.1 IMPLEMENTAÇÂO DO ALGORITMO ........................................................................................ 1
2.2 TREINAMENTO DA REDE ......................................................................................................... 3
2.3 CLASSIFICAÇÃO ........................................................................................................................ 4
3. CONCLUSÃO ..................................................................................................................................... 6
REFERÊNCIAS ............................................................................................................................................ 7
APÊNDICE ................................................................................................................................................. 8
APÊNDICE 1: PROGRAMA PRINCIPAL DE TREINAMENTO ................................................................... 8
APÊNDICE 2: PROGRAMA DE CLASSIFICAÇÃO................................................................................... 10
1
1. INTRODUÇÃO
As redes Neurais Artificiais (RNA) é uma técnica que imita o comportamento do
cérebro humano. É uma estrutura maciçamente paralela com a habilidade de
generalização, ou seja, pode produzir saídas adequadas para entradas que não
estavam presentes durante o treinamento (Ludwig Jr., e Costa 2007).
Por esse motivo ela é muito utilizada em problemas onde se deseja classificar
determinados padrões. Para utilizar desta característica das (RNA’s) será
implementado neste trabalho o primeiro exercício da disciplina Introdução à Redes
Neurais Artificiais do programa de pós graduação em Métodos Numéricos em
Engenharia.
Este exercício consiste em programar uma (RNA) tipo Perceptron com 1 neurônios
para a classificação de Óleos em duas classes distintas a partir da analise de três
parâmetros de entrada.
Após a analisar estes dados e implementar a (RNA), ela deverá atuar como uma
caixa preta, que irá receber um conjunto de dados de entrada e processará um
conjunto de dados de saída que neste caso é a classificação do óleo.
2. DESENVOLVIMENTO
2.1 IMPLEMENTAÇÂO DO ALGORITMO
Para realizar o exercício 1 foi implementado pelo autor do presente trabalho o
algoritmo de treinamento da Rede Neural Artificial Perceptron Supervisionada,
seguindo como base o esquemático do livro texto, utilizado em sala, como
apresentado no Algoritmo 1. Porém o algoritmo foi adaptado para o problema
proposto, que consiste em uma ADALINE com varias entradas e varias saídas,
diferentemente do algoritmo 1 que é para uma ADALINE com varias entradas e uma
(1) saída.
2
ALGORITMO 1: ALGORITMO DE TREINAMENTO
A implementação foi realizada utilizando o software de processamento numérico
MatLab 2011b, seguindo as restrições do trabalho de não se utilizar nenhuma
biblioteca e/ou ToolBox de Redes Neurais Artificiais. As linhas de códigos utilizadas
para representar computacionalmente a Rede Neural Artificial em questão esta
disponível nos Apêndices.
Para os valores iniciais dos pesos e do bias, foram gerados valores aleatórios entre -
0 e 1. O valor utilizado para a taxa de treinamento foi inicialmente de 0.1, levando
em consideração que o valor utilizado influencia diretamente a eficiência e a
convergência do algoritmo. Sendo que um valor muito pequeno pode fazer com que
o treinamento da rede se torne lento.
3
2.2 TREINAMENTO DA REDE
A rede Neural implementada computacionalmente foi treinada varias vezes, para
que se pudesse realizar uma comparação entre os valores finais dos pesos e bias e
verificar o numero de épocas que a rede necessitou para convergir. A tabela 1 exibe
os valores de pesos e bias iniciais e finais além do numero de épocas necessário
para que a rede convergisse. Vale ressaltar que os valores da tabela 1 são para os
dados de entrada sem a normalização.
Tabela 1: Valores do treinamento para dados não normalizados
Treinamento Bias Inicial
1 5,752E-01 5,978E-02 2,348E-01 3,532E-01
2 8,212E-01 1,540E-02 4,302E-02 1,690E-01
3 6,491E-01 7,317E-01 6,477E-01 4,509E-01
4 5,470E-01 2,963E-01 7,447E-01 1,890E-01
5 6,868E-01 1,835E-01 3,685E-01 6,256E-01
Treinamento Bias Final Epocas
1 1,66E+01 2,55E+01 -7,55E+00 315.532 360
2 1,57E+01 2,56E+01 -7,33E+00 3,20E+01 361
3 1,60E+01 2,50E+01 -7,42E+00 3,11E+01 344
4 1,57E+01 2,56E+01 -7,33E+00 3,20E+01 364
5 1,63E+01 2,56E+01 -7,58E+00 3,18E+01 368
Pesos Iniciais
Pesos Finais
Utilizando os mesmos parâmetros estabelecidos para rede, porém com os dados de
entrada normalizados, foram realizados outros 5 treinamentos, onde os valores
encontrados para pesos, bias e épocas são exibidos pela tabela 2.
Tabela 2:Valores do treinamento para dados normalizados
Treinamento Bias Inicial
1 7,80E-01 8,11E-02 9,29E-01 7,76E-01
2 6,22E-01 5,87E-01 2,08E-01 3,01E-01
3 4,71E-01 2,30E-01 8,44E-01 1,95E-01
4 2,26E-01 1,71E-01 2,28E-01 4,36E-01
5 3,11E-01 9,23E-01 4,30E-01 1,85E-01
Treinamento Bias Final Epocas
1 1,72E+00 1,10E+00 -2,14E+00 1,76E-01 54
2 3,10E+00 1,98E+00 -3,88E+00 3,01E-01 185
3 2,10E+00 1,35E+00 -2,65E+00 1,95E-01 93
4 1,48E+00 9,37E-01 -1,83E+00 1,36E-01 45
5 2,15E+00 1,33E+00 -2,61E+00 1,85E-01 89
Pesos Iniciais
Pesos Finais
Os 5 treinamentos realizados para os dados normalizados e para os dados não
normalizados foram executados com o valor fixo da taxa de treinamento em 0.1, a
tabela 3 mostra os valores encontrados com valores diferentes da taxa de
treinamento.
4
Tabela 3: Valores do treinamento com taxas de aprendizagem diferentes
Treinamento Bias Inicial Taxa
1 9,05E-01 6,10E-01 6,18E-01 8,59E-01 0.0001
2 8,05E-01 5,77E-01 1,83E-01 2,40E-01 0.001
3 8,87E-01 2,87E-02 4,90E-01 1,68E-01 0.01
4 6,96E-01 7,00E-01 6,39E-01 3,36E-02 0.1
5 6,88E-02 3,20E-01 5,31E-01 6,54E-01 1
Treinamento Bias Final Epocas
1 3,53E-01 2,54E-01 -4,30E-01 2,54E-02 152
2 4,07E-01 2,96E-01 -4,98E-01 2,99E-02 99
3 2,29E-01 1,42E-01 -2,88E-01 1,79E-02 12
4 9,05E-01 5,73E-01 -1,08E+00 3,36E-02 11
5 1,36E+01 8,90E+00 -1,61E+01 6,54E-01 27
Pesos Iniciais
Pesos Finais
2.3 CLASSIFICAÇÃO
O programa de operação da rede foi implementado seguindo como padrão o
algoritmo do livro texto, sendo que o mesmo foi adaptado para o problema tratado
que consiste de uma rede de varias entradas e varias saídas. O algoritmo 2
exemplifica o código implementado.
ALGORITMO 2: Classificação
Para realizar a classificação o código faz a leitura dos pesos encontrados no
treinamento. Em sequencia recebe os dados de entrada dos óleos a serem
classificados e realiza o calculo de (u). Por fim aplica-se este resultado à função de
limiar bipolar, sendo que se a saída calculada do neurônio resultar em um valor
inferior a zero, o valor final da saída será -1 sendo associado a este valor os óleos
da classe 2 e se a saída calculada resultar em um valor maior ou igual a zero o valor
da saída do neurônio será 1, associando a este valor os óleos da classe 1. A tabela
5
4 exibe a classificação de todos os treinamentos, pode-se observar que para todos
os treinamentos, normalizados, não normalizados e com taxas de aprendizagem a
rede classificou os dados da mesma forma.
Tabela 4: Classificação da Rede
Amostra Classe (1) Classe (2)
1 x
2 x
3 x
4 x
5 x
6 x
7 x
8 x
9 x
10 x
Classificação da Rede
Para realmente testar se a rede estava realizando a classificação dos dados, foi
realizado a classificação para os dados de entrada utilizados no processo de
treinamento da rede. A classificação é mostrada pela tabela 5.
Tabela 5: Classificação dos dados de treinamento
Amostra 1 2 3 4 5 6 7 8 9 10
Real -1 -1 -1 1 1 -1 1 -1 1 1
Perceptron -1 -1 -1 1 1 -1 1 -1 1 1
Comparação ok ok ok ok ok ok ok ok ok ok
Amostra 11 12 13 14 15 16 17 18 19 20
Real -1 1 -1 -1 -1 -1 1 -1 1 1
Perceptron -1 1 -1 -1 -1 -1 1 1 1 1
Comparação ok ok ok ok ok ok ok Não 1 1
Amostra 21 22 23 24 25 26 27 28 29 30
Real -1 1 1 -1 1 -1 -1 1 -1 -1
Perceptron -1 1 1 1 1 -1 -1 1 -1 1
Comparação ok ok ok Não ok ok ok ok ok Não
Observa-se pela tabela 5 que a rede classificou corretamente 27 dos 30 dados de
entrada, totalizando em um rendimento de 90% nesta classificação.
6
3. CONCLUSÃO
Durante a execução do presente trabalho, foram executados inúmeros treinamentos
da rede neural artificial ADALINE, realizando analise de sensibilidade dos
parâmetros, como: Taxa de aprendizado, valores aleatórios iniciais dos pesos e bias.
Notou-se que o valor definido para taxa de aprendizagem afeta diretamente o tempo
de treinamento da rede e que um valor não adequado para esta taxa pode levar a
um treinamento prematuro da rede.
Este trabalho possibilitou a percepção que quantidade de épocas necessárias para a
convergência da rede é diretamente proporcional aos valores estabelecidos para os
pesos, taxa de aprendizagem e bias.
Com ocorreu uma convergência da rede pode-se afirmar que a mesma é
linearmente separável, o que não ocorreria se a rede divergisse onde seria
necessário estipular um numero máximo de épocas como critério de paragem.
.
7
REFERÊNCIAS
Fausett L._Fundamentals of Neural Networks Architectures, Algorithms, and Applications 1994. HAYKIN, S. Neural Networks a Comprehensive Foundation. Macmillam College Publishing Company, New York, 1994, LUDWIG JR., O. e COSTA, EDUARD MONTGOMERY M. REDES NEURAIS: FUNDAMENTOS E APLICAÇÕES COM PROGRAMAS EM C. RIO DE JANEIRO: EDITORA CIÊNCIA MODERNA LTDA. 2007 UNIVERSIDADE FEDERAL DO PARANÁ. Sistemas de Bibliotecas. REFERÊNCIAS. Curitiba: Editora UFPR, 2007. (Normas para apresentação de documentos científicos, 4) UNIVERSIDADE FEDERAL DO PARANÁ. Sistemas de Bibliotecas. RELATÓRIOS. Curitiba: Editora UFPR, 2007. (Normas para apresentação de documentos científicos, 5) UNIVERSIDADE FEDERAL DO PARANÁ. Sistemas de Bibliotecas. Teses, dissertações, monografias e outros trabalhos acadêmicos. Curitiba: Editora UFPR, 2007. (Normas para apresentação de documentos científicos, 2)
8
APÊNDICE
APÊNDICE 1: PROGRAMA PRINCIPAL DE TREINAMENTO
%% SCRIPT Inicialização das variaveis %carrega os padroes de entrada na variavel dados clear all clc n_neuronios=1; %faz a leitura dos dados de entrada x=load('dtreino.txt'); %o vetor d recebe os valores target d=x(:,4); %retira os valores target da matriz x x=x(:,1:3); %normalização dos dados xm=mean(x); desv=std(x); tam=size(x); for j=1:tam(2)%coluna for i=1:tam(1)%linha
x(i,j)= (x(i,j)-xm(j))/(2*desv(j));
end end
n_x=3; alpha=.01; limiar=0; epocas=0; %inicializa pesos for i=1:n_neuronios for j=1:n_x pesos(i,j)=rand (1); end end %salva os valores em um txt fid = fopen('trab 1.txt','wt'); fprintf(fid,'------------------------------Pesos iniciais------------------
--------\n\n'); fprintf(fid,' %d',pesos); fprintf(fid,' \n');
n_dados=size(x,1); %inicialização dos bias for i=1:n_neuronios b(i)=rand (1); end fprintf(fid,'------------------------------Bias iniciail-------------------
-------\n\n'); fprintf(fid,' %d',b); fprintf(fid,' \n'); aa=0; pesoant=pesos; %inicio do processo de treinamento while(epocas<100000) cont=0; for i=1:n_dados
9
soma = x(i,:)* pesos';
y_in= b+soma;
if y_in > limiar y=1; elseif y_in ==limiar y=0; elseif y_in<limiar y=-1; end
y; if y == d(i)
disp('lh') else cont=cont+1; disp('h') for j=1:n_x pesos(1,j)=pesos(1,j)+alpha*(d(i)-y)*x(i,j); b=b+alpha*d(i); end epocas;
end
end pesos; epocas=epocas+1 if cont == 0
break;
end
pesoant=pesos;
end fprintf(fid,'------------------------------Pesos Finais--------------------
------\n\n'); fprintf(fid,' %d ',pesos); fprintf(fid,' \n'); fprintf(fid,'------------------------------Epocas--------------------------
\n\n');
fprintf(fid,' %d ',epocas); fprintf(fid,' \n'); fprintf(fid,'------------------------------Bias final----------------------
----\n\n');
fprintf(fid,' %d ',b); fprintf(fid,' \n'); fclose(fid);
10
APÊNDICE 2: PROGRAMA DE CLASSIFICAÇÃO
%faz a leitura dos dados a serem classificados xo=load('dopera.txt'); %inicio da classificação for i=1:size(x,1) u= x(i,:)* pesos'; if u > limiar y(i)=1 disp('classe1') elseif u==limiar y(i)=1 disp('classe1') elseif u<limiar y(i)=-1 disp('classe 2') end
u=0; end fid = fopen('trab 1f.txt','wt'); fprintf(fid,'------------------------------classificação-------------------
-------\n\n'); fprintf(fid,' %d',y); fprintf(fid,'\n------------------------------classificação-----------------
---------\n\n'); fprintf(fid,' %d',y);fprintf(fid,'------------------------------real-------
-------------------\n\n'); fprintf(fid,' %d',d); fclose(fid)