Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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.
LISTAS DE ILUSTRAES
LISTA DE TABELAS
SUMRIO
1.
INTRODUO ................................................................................................................................... 1
2.
DESENVOLVIMENTO......................................................................................................................... 2
3.
4.
2.1
2.2
2.3
CLASSIFICAO........................................................................................................................ 4
RESULTADOS .................................................................................................................................... 5
3.1
TREINAMENTO 1 .................................................................................................................... 5
3.2
TREINAMENTO 2 .................................................................................................................... 6
3.3
TREINAMENTO 3 ..................................................................................................................... 8
3.4
TREINAMENTO 4 ..................................................................................................................... 9
3.5
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. INTRODUO
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. DESENVOLVIMENTO
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)
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
3. RESULTADOS
Neurnio 1
0.3866
0.0089
0.3723
-0.4550
-0.0670
-0.2318
0.5112
-0.0115
-0.0196
-0.1543
-0.1674
0.2649
0.6181
W1,j
W2,j
W3,j
W4,j
W5,j
W6,j
W7,j
W8,j
W9,j
W10,j
W11,j
W12,j
W13,j
Neurnio 2
-0.4331
-0.0555
-0.5624
-0.3402
0.0825
0.3083
0.1123
0.1018
0.0996
-0.1328
0.4377
0.2988
-0.5567
Neurnio 3
0.0466
0.0466
0.1901
0.1147
-0.0155
-0.0765
-0.6236
-0.0903
-0.0799
0.2871
-0.2703
-0.5636
-0.0614
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
5
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
W1,j
W2,j
W3,j
W4,j
W5,j
W6,j
W7,j
W8,j
W9,j
W10,j
Neurnio 1
0.3866
0.0089
0.3723
-0.4550
-0.0670
-0.2318
0.5112
-0.0115
-0.0196
-0.1543
Neurnio 2
-0.4331
-0.0555
-0.5624
-0.3402
0.0825
0.3083
0.1123
0.1018
0.0996
-0.1328
Neurnio 3
0.0466
0.0466
0.1901
0.1147
-0.0155
-0.0765
-0.6236
-0.0903
-0.0799
0.2871
6
W11,j
W12,j
W13,j
-0.1674
0.2649
0.6181
0.4377
0.2988
-0.5567
-0.2703
-0.5636
-0.0614
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.
3.3 TREINAMENTO 3
Os valores dos pesos obtidos no treinamento 3 so mostrados na tabela 3. Podese observar que os valores dos pesos so diferentes dos valores dos pesos
apresentados nos treinamentos 1 e 2.
W1,j
W2,j
W3,j
W4,j
W5,j
W6,j
W7,j
W8,j
W9,j
W10,j
W11,j
W12,j
W13,j
Neurnio 1
0.5255
0.0394
0.4171
-0.5255
-0.0193
-0.1951
0.5572
-0.0193
-0.0796
-0.1645
-0.1050
0.3380
0.7155
Neurnio 2
-0.6252
-0.1951
-0.5687
0.3790
0.0376
0.1414
0.2546
0.1538
0.0744
-0.3127
0.4061
0.1368
-0.7011
Neurnio 3
0.1032
0.1550
0.1488
0.1495
-0.0180
0.0402
-0.7849
-0.1316
0.0041
0.4702
-0.3065
-0.4877
-0.0116
B1
-0.3801
B2
-0.1956
B3
-0.4242
3.4 TREINAMENTO 4
W1,j
W2,j
W3,j
W4,j
W5,j
W6,j
W7,j
W8,j
W9,j
W10,j
W11,j
Neurnio 1
0.5235
0.0398
0.4168
-0.5261
-0.0188
-0.2003
0.5634
-0.0184
-0.0808
-0.1631
-0.1061
Neurnio 2
-0.6264
-0.1939
-0.5727
0.3822
0.0392
0.1502
0.2442
0.1544
0.0721
-0.3096
0.4088
Neurnio 3
0.1032
0.1546
0.1538
0.1456
-0.0197
0.0445
-0.7962
-0.1345
0.0072
0.4716
-0.3041
9
W12,j
W13,j
0.3391
0.7167
0.1421
-0.7005
-0.4850
-0.0149
B1
-0.3801
B2
-0.1956
B3
-0.4242
10
Amostra
Real
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
EFICINCIA
ERRO
POCAS
Classificao
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
91,89%
1.9236e-006
56
Classificao
2
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
91,89%
1.8870e-006
51
Classificao
3
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
91,89%
1.4347e-006
154
Classificao
4
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
91,89%
1.9121e-006
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
11
12
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.
13
REFERNCIAS
14
APNDICE
APNDICE 1: PROGRAMA PRINCIPAL DE TREINAMENTO
15
%step 1
erroatual=erroCalc(x, saidas, pesos,n_neuronios);%funo que calcula o erro
errofinal=0;
erro =errofinal-erroatual;
while(abs(erro) > tol & epoca<10000)
erroatual=erroCalc(x, saidas, pesos,n_neuronios);
%step 2: para cada par entradas : saidas step3 a step5
for i=1:n_dados
%calcula o somatorio
soma = x(i,:)* pesos';
for neu=1:n_neuronios
y_in(neu)= b(neu) +soma(neu);
end
%atualizar bias e pesos
for neu=1:n_neuronios
b(neu)= b(neu) +alpha*(saidas(i,neu)-y_in(neu));
for j=1:n_x
pesos(neu,j)=pesos(neu,j)+alpha*(saidas(i,neu)-y_in(neu))*x(i,j);
end
end
end
epoca=epoca+1;
errofinal=erroCalc(x, saidas, pesos,n_neuronios);
erro =errofinal-erroatual;
graf(epoca)=abs(erro);
end
pesos
b
epoca
erro
epoca=1:epoca;
semilogy(epoca,graf,'.')
axis([0, 200, 1.0e-007, 1.0e002])
xlabel('Numero de pocas')
ylabel('ERRO')
title('Erro x pocas')
16
17
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
18