You are on page 1of 23

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

3.

4.

2.1

IMPLEMENTAO DO ALGORITMO ........................................................................................ 2

2.2

TREINAMENTO DA REDE ......................................................................................................... 3

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

ANLISE DA CLASSIFICAO ................................................................................................. 10

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

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. 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

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)

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.

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
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

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
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

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

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

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

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.

Tabela 5: : Pesos da entrada i em relao ao neurnio j para o treinamento 3

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

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
-0.3801

B2
-0.1956

B3
-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.

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

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

Tabela 8: Valores do bias no treinamento 4

B1
-0.3801

B2
-0.1956

B3
-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.

10

Tabela 9: Comparao entre amostras reais e as obtidas

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

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.

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

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)

14

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;

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

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

17

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

18