redes neurais

Upload: edson-amado

Post on 08-Jan-2016

13 views

Category:

Documents


0 download

DESCRIPTION

Relatório da implementação de uma rede neural adaline para a classificação de vinhos em duas classes distintas.

TRANSCRIPT

  • 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