Download - Redes Neurais
-
UNIVERSIDADE FEDERAL DO PARAN
PROGRAMA DE PS-GRADUAO EM METODOS NUMERICOS EM
ENGENHARIA - PPGMNE
DISCIPLINA: INTRODUO REDES NEURAIS ARTIFICIAIS
DOCENTE: RICARDO ALMEIDA
MESTRANDO: EDSON AMADO DA SILVA JUNIOR
RELATRIO N 2 DA DISCIPLINA INTRODUO 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 cincias aplicadas,
pois consegue solucionar gargalos onde mtodos tradicionais so limitados e
ineficientes. Neste trabalho apresentado a implementao de uma Rede Neural
Artificial ADALINE utilizando a regra delta com mltiplas entradas e mltiplas sadas.
Est (RNA) utilizada na classificao de vinhos em 3 classes distintas, utilizando
como referncia 13 caractersticas da bebida.
Palavras Chaves: Redes Neurais, ADALINE, BIAS, classificao.
-
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 ADALINE using the delta rule with
multiple inputs and multiple outputs. This (RNA) is used in the classification of wines
in three different classes, using as reference 13 drink features.
KEY WORDS: NEURAL NETWORKING, ADALINE, BIAS, CLASSIFICATION.
-
LISTAS DE ILUSTRAES
Figura 1: Grfico Erro x pocas no Treinamento 1 ..................................................... 6
Figura 2:Grfico Erro x pocas no Treinamento 2 ...................................................... 7
Figura 3: Grfico Erro X pocas no Treinamento 3 ..................................................... 9
Figura 4: Grfico Erro x pocas ................................................................................ 10
LISTA DE TABELAS
Tabela 1: Pesos da entrada i em relao ao neurnio j para o treinamento 1. ........... 5
Tabela 2: Bias encontrado para cada Neurnio no treinamento 1 .............................. 5
Tabela 3: Pesos da entrada i em relao ao neurnio j para o treinamento 2 ........... 6
Tabela 4: Bias encontrado para cada neurnio no treinamento 2 ............................... 7
Tabela 5: : Pesos da entrada i em relao ao neurnio j para o treinamento 3 .......... 8
Tabela 6: Valores do Bias no treinamento 3................................................................ 8
Tabela 7: Pesos da entrada i em relao ao neurnio j para o treinamento 4 ............ 9
Tabela 8: Valores do bias no treinamento 4 ............................................................. 10
Tabela 9: Comparao entre amostras reais e as obtidas ........................................ 11
-
SUMRIO
1. INTRODUO ................................................................................................................................... 1
2. DESENVOLVIMENTO ......................................................................................................................... 2
2.1 IMPLEMENTAO DO ALGORITMO ........................................................................................ 2
2.2 TREINAMENTO DA REDE ......................................................................................................... 3
2.3 CLASSIFICAO ........................................................................................................................ 4
3. RESULTADOS .................................................................................................................................... 5
3.1 TREINAMENTO 1 .................................................................................................................... 5
3.2 TREINAMENTO 2 .................................................................................................................... 6
3.3 TREINAMENTO 3 ..................................................................................................................... 8
3.4 TREINAMENTO 4 ..................................................................................................................... 9
3.5 ANLISE DA CLASSIFICAO ................................................................................................. 10
4. CONCLUSO ................................................................................................................................... 13
REFERNCIAS .......................................................................................................................................... 14
APNDICE ............................................................................................................................................... 15
APNDICE 1: PROGRAMA PRINCIPAL DE TREINAMENTO ................................................................. 15
APNDICE 2: FUNO calcERRO ....................................................................................................... 17
APNDICE 3: PROGRAMA DE CLASSIFICAO................................................................................... 18
-
1
1. INTRODUO
As redes Neurais Artificiais (RNA) uma tcnica que imita o comportamento do
crebro humano. uma estrutura maciamente paralela com a habilidade de
generalizao, ou seja, pode produzir sadas adequadas para entradas que no
estavam presentes durante o treinamento (Ludwig Jr., e Costa 2007).
Por esse motivo ela muito utilizada em problemas onde se deseja classificar
determinados padres. Para utilizar desta caracterstica das (RNAs) ser
implementado neste trabalho o segundo exerccio da disciplina Introduo Redes
Neurais Artificiais do programa de ps graduao em Mtodos Numricos em
Engenharia.
O segundo exerccio consiste em programar uma (RNA) tipo ADALINE com 3
neurnios para a classificao de vinhos em trs classes distintas, classes 1, 2 e 3.
Para realizar esta classificao sero analisados 13 atributos dos vinhos sendo:
1) Alcohol
2) Malic acid
3) Ash
4) Alcalinity of ash
5) Magnesium
6) Total phenols
7) Flavanoids
8) Nonflavanoid phenols
9) Proanthocyanys
10) Color intensity
11) Hue
12) OD280/OD315 of diluted
13) Proline
Aps 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 sada que neste caso a classificao do vinho.
-
2
2. DESENVOLVIMENTO
2.1 IMPLEMENTAO DO ALGORITMO
Para realizar o exerccio 2 foi implementado pelo autor do presente trabalho o
algoritmo de treinamento da Rede Neural Artificial ADALINE, seguindo como base o
esquemtico do livro texto, utilizado em sala, como apresentado no Algoritmo 1.
Porm o algoritmo foi adaptado para o problema proposto, que consiste em uma
ADALINE com varias entradas e varias sadas, diferentemente do algoritmo 1 que
para uma ADALINE com varias entradas e uma (1) sada.
ALGORITMO 1: ALGORITMO DE TREINAMENTO
A implementao foi realizada utilizando o software de processamento numrico
MatLab 2011b, seguindo as restries do trabalho de no se utilizar nenhuma
biblioteca e/ou ToolBox de Redes Neurais Artificiais. As linhas de cdigos utilizadas
-
3
para representar computacionalmente a Rede Neural Artificial em questo esta
disponvel nos Apndices.
Para os valores iniciais dos pesos e do bias, foram gerados valores aleatrios entre -
0.5 e +0.5. O valor utilizado para a taxa de treinamento foi de 0.05 e 0.05, levando
em considerao que o valor utilizado influencia diretamente a eficincia e a
convergncia do algoritmo. Sendo que um valor muito pequeno pode fazer com que
o treinamento da rede se torne lento.
2.2 TREINAMENTO DA REDE
O treinamento da rede foi executado utilizando a regra delta, que discutida no livro
texto e foi explicado em sala pelo professor. Para treinar a rede se fez necessrio
definir os valores desejados das sadas para os dados apresentados. Foram
utilizados para o treinamento dados de 141 classificaes do vinho, sendo que 45
classificaes so para a classe 1, 56 classificaes para a classe 2 e 40
classificaes para a classe 3. Desta forma para representar a classe 1, foram
estipuladas as sadas: y = [1 -1 -1], para representar a classe 2 da bebida foram
utilizadas as sadas y = [-1 1 -1] e para representar a classe 3 temos os seguintes
valores de sadas: y =[-1 -1 1].
O algoritmo de treinamento faz a leitura do arquivo wine_data_train.txt contendo os
treze atributos do vinho e a classe em que o vinho pertence. Ao ler os dados
atribudo valores aleatrios aos pesos e aos bias. Os dados so adicionados ao
algoritmo de treinamento onde os dados de entradas passam por um processo de
normalizao, dando assim maior estabilidade a Rede Neural.
O critrio de parada para o algoritmo o numero de pocas que ocorrer na
execuo do cdigo e o valor absoluto do erro. Se a execuo ultrapassar 10000
pocas ou o erro for menor do que a preciso estabelecida de 10-6, o algoritmo ser
interrompido e retornar os valores obtidos para os pesos. O calculo do erro foi
executado de acordo com a equao 1.
(1)
-
4
Sendo tj a sada desejada e y_inj a sada calculada.
2.3 CLASSIFICAO
O programa de classificao foi implementado seguindo como padro 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 sadas. O algoritmo 2 exemplifica o cdigo
implementado.
ALGORITMO 2: Classificao
Para realizar a classificao o cdigo faz a leitura dos pesos encontrados no
treinamento. Em sequencia recebe os atributos do vinho a ser classificado e realiza
o calculo da sada. Por fim aplica-se a funo de limiar bipolar, sendo que se a sada
calculada do neurnio (i) resultar em um valor inferior a zero, o valor final da sada
ser -1 e se a sada calculada resultar em um valor maior ou igual a zero o valor da
sada do neurnio (i) ser 1, classificando o vinho de acordo com as classes j
definidas na seo 2.2.
-
5
3. RESULTADOS
Foram realizados varios treinamentos para a rede neural implementada, neste
trabalho ser mostrado por meio de tabela os valores obitidos para os pesos, biais e
as classificao para 4 treinamentos executados, sendo dois treinamentos com a
taxa de aprendizagem de 0.05, dois com a taxa de aprendizagem de 0.005 Por fim
ser analisado os 4 treinamentos.
3.1 TREINAMENTO 1
O Treinamento 1 foi realizado com uma taxa de aprendizagem de 0.05 e uma
preciso de 10-6. A tabela 1 apresenta os valores dos pesos encontrados no 1
treinamento.
Tabela 1: Pesos da entrada i em relao ao neurnio j para o treinamento 1.
Neurnio 1 Neurnio 2 Neurnio 3
W1,j 0.3866 -0.4331 0.0466 W2,j 0.0089 -0.0555 0.0466 W3,j 0.3723 -0.5624 0.1901 W4,j -0.4550 -0.3402 0.1147 W5,j -0.0670 0.0825 -0.0155 W6,j -0.2318 0.3083 -0.0765 W7,j 0.5112 0.1123 -0.6236 W8,j -0.0115 0.1018 -0.0903 W9,j -0.0196 0.0996 -0.0799 W10,j -0.1543 -0.1328 0.2871 W11,j -0.1674 0.4377 -0.2703 W12,j 0.2649 0.2988 -0.5636 W13,j 0.6181 -0.5567 -0.0614
A tabela 2 apresenta o valor encontrado no treinamento 1 para o bias.
Tabela 2: Bias encontrado para cada Neurnio no treinamento 1
B1 B2 B3 -0.5897 -0.0490 -0.3614
Estes valores de pesos e bias foram encontrados com 56 pocas e o algoritmo foi
interrompido com um erro aproximado de 1.9236e-006. A figura 1 exibe o grfico
com a evoluo do erro em funo do numero de pocas. Pode-se observar que o
-
6
valor do erro comea com valores bem elevados e que vai reduzindo conforme o
aumento do numero de pocas.
Figura 1: Grfico Erro x pocas no Treinamento 1
3.2 TREINAMENTO 2
Os valores dos pesos obtidos no treinamento 2 mostrado na tabela 3. Pode-se
observar que os valores dos pesos so iguais aos valores dos pesos encontrados no
treinamento 1. Isso ocorre porque o erro minimizado encontrando os valores dos
pesos que proporcionam o menor erro possvel.
Tabela 3: Pesos da entrada i em relao ao neurnio j para o treinamento 2
Neurnio 1 Neurnio 2 Neurnio 3
W1,j 0.3866 -0.4331 0.0466 W2,j 0.0089 -0.0555 0.0466 W3,j 0.3723 -0.5624 0.1901 W4,j -0.4550 -0.3402 0.1147 W5,j -0.0670 0.0825 -0.0155 W6,j -0.2318 0.3083 -0.0765 W7,j 0.5112 0.1123 -0.6236 W8,j -0.0115 0.1018 -0.0903 W9,j -0.0196 0.0996 -0.0799 W10,j -0.1543 -0.1328 0.2871
-
7
W11,j -0.1674 0.4377 -0.2703 W12,j 0.2649 0.2988 -0.5636 W13,j 0.6181 -0.5567 -0.0614
O bias encontrado no segundo treinamento exibido na tabela 4. Nota-se que
possui valores semelhantes aos valores encontrados no treinamento 2.
Tabela 4: Bias encontrado para cada neurnio no treinamento 2
B1 B2 B3 -0.5897 -0.0490 -0.3614
Estes valores de pesos e bias foram encontrados com 51 pocas e o algoritmo foi
encerrado com um erro aproximado de 1.8870e-006. A figura 2 mostra o grfico com
a evoluo do erro em funo do numero de pocas. Pode-se observar que o valor
do erro comea com valores bem elevados e que vai reduzindo conforme o aumento
do numero de pocas.
Figura 2:Grfico Erro x pocas no Treinamento 2
-
8
3.3 TREINAMENTO 3
Os valores dos pesos obtidos no treinamento 3 so mostrados na tabela 3. Pode-
se observar que os valores dos pesos so diferentes dos valores dos pesos
apresentados nos treinamentos 1 e 2.
Tabela 5: : Pesos da entrada i em relao ao neurnio j para o treinamento 3
Neurnio 1 Neurnio 2 Neurnio 3
W1,j 0.5255 -0.6252 0.1032 W2,j 0.0394 -0.1951 0.1550 W3,j 0.4171 -0.5687 0.1488 W4,j -0.5255 0.3790 0.1495 W5,j -0.0193 0.0376 -0.0180 W6,j -0.1951 0.1414 0.0402 W7,j 0.5572 0.2546 -0.7849 W8,j -0.0193 0.1538 -0.1316 W9,j -0.0796 0.0744 0.0041 W10,j -0.1645 -0.3127 0.4702 W11,j -0.1050 0.4061 -0.3065 W12,j 0.3380 0.1368 -0.4877 W13,j 0.7155 -0.7011 -0.0116
Os resultados obtidos para o bias no terceiro treinamento esto expostos na tabela
6. Pode-se observar que os resultados so diferentemente de treinamento 2, j
apresentam valores distintos.
Tabela 6: Valores do Bias no treinamento 3
B1 B2 B3
-0.3801 -0.1956 -0.4242
O programa convergiu com o erro de 1.4347e-006 no terceiro treinamento,
precisando de 154 pocas para chegar a este valor de erro. Como j mencionado
anteriormente neste trabalho, um baixo valor da taxa de aprendizagem pode
ocasionar um treinamento mais lento da rede. A taxa de aprendizagem valendo
0.005 fez com que houvesse mais pocas em relao aos treinamentos anteriores.
A figura 3 exibe a evoluo do erro em funo do numero de pocas.
-
9
Figura 3: Grfico Erro X pocas no Treinamento 3
3.4 TREINAMENTO 4
Os resultados obtidos para os pesos no treinamento 4 utilizando uma taxa de
aprendizado de 0.005 so apresentados na tabela 7. Observa-se que os valores dos
pesos variaram em relao aos valores dos pesos do treinamento 3. Mesmo
utilizando os mesmos parmetros e critrios de parada os resultados obtidos nos
treinamentos 3 e 4 foram distintos, menos nos valores do bias, que como mostra a
tabela 8, foram iguais. Neste treinamento foram necessrias 225 pocas para que o
algoritmo convergisse com um erro de 1.9121e-006.
Tabela 7: Pesos da entrada i em relao ao neurnio j para o treinamento 4
Neurnio 1 Neurnio 2 Neurnio 3
W1,j 0.5235 -0.6264 0.1032 W2,j 0.0398 -0.1939 0.1546 W3,j 0.4168 -0.5727 0.1538 W4,j -0.5261 0.3822 0.1456 W5,j -0.0188 0.0392 -0.0197 W6,j -0.2003 0.1502 0.0445 W7,j 0.5634 0.2442 -0.7962 W8,j -0.0184 0.1544 -0.1345 W9,j -0.0808 0.0721 0.0072 W10,j -0.1631 -0.3096 0.4716 W11,j -0.1061 0.4088 -0.3041
-
10
W12,j 0.3391 0.1421 -0.4850 W13,j 0.7167 -0.7005 -0.0149
Tabela 8: Valores do bias no treinamento 4
B1 B2 B3
-0.3801 -0.1956 -0.4242
O grfico do erro x nmero de pocas pode ser analisado na figura 4.
Figura 4: Grfico Erro x pocas
3.5 ANLISE DA CLASSIFICAO
Para realizar a classificao dos vinhos foi utilizado dados de 37 amostras j
classificadas, assim pde-se analisar a eficincia da rede verificando o numero de
amostras que a rede Neural ADALINE consegue classificar corretamente. Das 37
amostras disponveis, 14 amostras so da classe 1, outras 15 amostras so da
classe 2 e por fim 8 amostras representando a classe 3. A tabela 8 exibe a
comparao da classificao realizada com os dados dos 4 treinamentos realizados.
-
11
Tabela 9: Comparao entre amostras reais e as obtidas
Amostra Real
Classificao 1
Classificao 2
Classificao 3
Classificao 4
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
EFICINCIA 91,89% 91,89% 91,89% 91,89% ERRO 1.9236e-006 1.8870e-006 1.4347e-006 1.9121e-006 POCAS 56 51 154 225
Analisando a tabela 9, nota-se que a rede neural artificial ADALINE apresentou uma
alta acurcia, pois a mesma conseguiu manter um bom padro de classificao. A
eficincia da ADALINE tambm esta muito boa na faixa de 91,89%, que para esta
aplicao esta de acordo com as expectativas. Pode-se perceber que a variao na
-
12
taxa de aprendizagem influenciou na velocidade em que a rede neural realizava seu
treinamento, fazendo com que o numero de pocas se elevasse. Porm a mudana
da taxa de aprendizagem no modificou significativamente a eficincia da rede
neural.
-
13
4. CONCLUSO
Durante a execuo do presente trabalho, foram executados inmeros treinamentos
da rede neural artificial ADALINE, realizando analise de sensibilidade dos
parmetros, como: Taxa de aprendizado, preciso e valores aleatrios iniciais dos
pesos e bias. Percebeu-se que a eficincia da rede no aumentou mais do que o
valor de 91,89% como apresentado na tabela 9. Mas nota-se que variando
consideravelmente para mais o valor da taxa de aprendizado a rede perde sua
eficincia, vindo a classificar prematuramente e erroneamente as amostras.
A rede ADALINE que tambm muito difundida no uso para aproximao de
funes se mostrou eficaz para aplicaes em problemas de classificao.
Um bom trabalho futuro ser a implementao da rede ADALINE utilizando o mtodo
da taxa de aprendizagem varivel.
.
-
14
REFERNCIAS
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 APLICAES COM PROGRAMAS EM C. RIO DE JANEIRO: EDITORA CINCIA MODERNA LTDA. 2007 UNIVERSIDADE FEDERAL DO PARAN. Sistemas de Bibliotecas. REFERNCIAS. Curitiba: Editora UFPR, 2007. (Normas para apresentao de documentos cientficos, 4) UNIVERSIDADE FEDERAL DO PARAN. Sistemas de Bibliotecas. RELATRIOS. Curitiba: Editora UFPR, 2007. (Normas para apresentao de documentos cientficos, 5) UNIVERSIDADE FEDERAL DO PARAN. Sistemas de Bibliotecas. Teses, dissertaes, monografias e outros trabalhos acadmicos. Curitiba: Editora UFPR, 2007. (Normas para apresentao de documentos cientficos, 2)
-
15
APNDICE
APNDICE 1: PROGRAMA PRINCIPAL DE TREINAMENTO
%% SCRIPT Inicializao das variaveis %carrega os padroes de entrada na variavel dados clear all clc x=load('wine_data_train.txt'); %coloca o valor de entrada 1 para o bias x=x(:,2:size(x,2)); x; %normalizao 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 tol=0.000002; n_neuronios=3; n_x=13; saidas=ones(size(x,1),n_neuronios); for i=1:45 saidas([i],:)=[1 -1 -1]; end for i=46:101 saidas([i],:)=[-1 1 -1]; end for i=102:141 saidas([i],:)=[-1 -1 1]; end
n_dados=size(x,1); %% Algoritmo de treinamento
%step 0 %inicializao dos pesos for i=1:n_neuronios for j=1:n_x pesos(i,j)=-0.5+(0.5-(-0.5))*rand (1); end end
%inicializao dos bias for i=1:n_neuronios b(i)=-0.5+(0.5-(-0.5))*rand (1); end b %inicializao da taxa de aprendizado alpha=0.005 epoca=0;
-
16
%step 1 erroatual=erroCalc(x, saidas, pesos,n_neuronios);%funo que calcula o erro errofinal=0; erro =errofinal-erroatual;
while(abs(erro) > tol & epoca
-
17
APNDICE 2: FUNO calcERRO
function erro=erroCalc(x, saidas, pesos,n_neuronios)
quantidadePadroes = size(x,1);
erro = 0;
for ( k = 1: quantidadePadroes)
y_en = x(k,:)* pesos';
for num=1:n_neuronios erro = erro + (saidas(k,num) - y_en(num))^2; end
end end
-
18
APNDICE 3: PROGRAMA DE CLASSIFICAO
clc
testes=load('wine_data_class.txt'); testes=testes(:,2:size(testes,2)); classeA=[1 -1 -1]; classeB=[-1 1 -1]; classeC=[-1 -1 1]; %normalizao dos dados xm=mean(testes); desv=std(testes); tam=size(testes); for j=1:tam(2)%coluna for i=1:tam(1)%linha
testes(i,j)= (testes(i,j)-xm(j))/(2*desv(j));
end end
for k = 1:size(testes,1)
for num=1:n_neuronios somateste = testes(k,:)* pesos';
y(num)=b(num)+somateste(num);
end
for(num=1:n_neuronios)
if y(num)>0 || y(num)==0 y(num)=1; else y(num)=-1; end end if y==classeA disp('1')
elseif y==classeB
disp('2')
else disp('3')
end
end