Análise Comparativa de Modelos de RNA’S Aplicadas ao Reconhecimento de Padrões

Share Embed


Descripción

UNIVERSIDADE FUMEC FACULDADE DE CIÊNCIAS EMPRESARIAIS - FACE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

DOUGLAS ERIC FONSECA RODRIGUES

ANÁLISE COMPARATIVA DE MODELOS DE RNA’S APLICADAS AO RECONHECIMENTO DE PADRÕES

BELO HORIZONTE 2015

DOUGLAS ERIC FONSECA RODRIGUES

ANÁLISE COMPARATIVA DE MODELOS DE RNA’S APLICADAS AO RECONHECIMENTO DE PADRÕES

Trabalho de conclusão do curso apresentado à Universidade Fumec como requisito parcial para a obtenção do título de Bacharel em Ciência da Computação. Orientador Metodológico: Prof. Msc. William Lopes Camelo Orientador Temático: Prof. Dr. Alair Dias Júnior

BELO HORIZONTE 2015

DOUGLAS ERIC FONSECA RODRIGUES

Trabalho de Conclusão de Curso defendido e aprovado/reprovado, em: ____/____/2015, pela banca examinadora constituída por:

Prof. Msc William Lopes Camelo - Orientador Metodológico

Prof. Dr. Alair Dias Júnior - Orientador Temático

Prof. Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

BELO HORIZONTE 2015

.

Ao meu pai, que não mediu esforços.

RESUMO Os primeiros estudos a respeito de redes neurais artificiais são datados na década de 40 do século passado. Muito se evoluiu na área desde então e modernas abordagens surgiram. Mas até hoje é um assunto que vem sido estudado com grande interesse entre pesquisadores no meio acadêmico. Redes neurais artificiais são modelos computacionais baseados no sistema nervoso central capazes de aprender e assim serem utilizados para solução de diversos problemas tais como reconhecimento e classificação de padrões. Utilizando dados previamente selecionados e formatados, as redes neurais são capazes de aprender utilizando diversas estratégias de treinamento e assim aplicar seu aprendizado à dados ainda desconhecidos. O trabalho apresenta uma introdução aos conceitos básicos de redes neurais. Apresenta também a aplicação de redes neurais em problemas de classificação e reconhecimento de padrões, assim como modelos capazes de realizar tal tarefa. O trabalho também apresenta ao final uma análise comparativa de modelos de redes neurais artificiais e seus algoritmos de aprendizagem a partir de uma aplicação prática em classificação e reconhecimento de padrões. A aplicação prática foi implementada pelo próprio autor do trabalho em cima de um banco de dados fornecido pela UCI Repository of machine learning databases. Para a aplicação prática, foi desenvolvido pelo próprio autor do trabalho uma Application Programming Interface, ou simplesmente API, na linguagem Python denominada Synapyse. Palavras-chaves: Redes Neurais Artificiais; Algoritmos de Aprendizagem; Reconhecimento e Classificação de Padrões; Algoritmos.

ABSTRACT The first studies on artificial neural networks are dated in the 40s of the last century. Lot has changed in this area since then and modern approaches emerged. But today is a subject that has been studied with great interest among researchers in academia. Artificial neural networks are computer models based on the central nervous system able to learn and thus be used to solve various problems such as pattern recognition and classification. Using previously selected and formatted data, neural networks are able to learn using different training strategies and thus apply their learning to the still unknown data. This paper presents an introduction to the basics of neural networks. It also presents the application of neural networks in classification problems and pattern recognition and also models capable of performing such a task. Also, this work presents in the end a comparative analysis of models of artificial neural networks and their learning algorithms from a practical application in pattern recognition and classification. The practical application was implemented by the author of this work on a database provided by the UCI Repository of machine learning databases. For practical application, was developed by the author of this work one Application Programming Interface, or simply API, in language Python named Synapyse. Keywords: Artificial Neural Networks; Learning algorithms; Pattern recognition and classification; Algorithms.

LISTA DE FIGURAS

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Neurônio Biológico . . . . . . . . . . . . . . . . . . . . . . . . . . Neurônio MCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funções de Ativação . . . . . . . . . . . . . . . . . . . . . . . . . Processamento de Informações mais Comum em Redes Neurais Arquiteturas mais Comuns de Redes Neurais . . . . . . . . . . . Aprendizado Supervisionado . . . . . . . . . . . . . . . . . . . . Aprendizado por Reforço . . . . . . . . . . . . . . . . . . . . . . Aprendizado Não-Supervisionado . . . . . . . . . . . . . . . . . Arquitetura de uma rede neural perceptron com uma única saída Arquitetura de uma rede neural perceptron com uma única saída Posição relativa dos vetores w e x para a situação d = 1 e y = 0 Rede neural perceptron típica, com uma camada intermediária . Fluxo de processamento do algoritmo de backpropagation . . . . Máquina de comitê baseada em média de ensemble . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

17 18 20 21 22 24 25 26 30 31 32 33 35 38

LISTA DE TABELAS

1 2 3 4 5 6

Amostra de dados obtidos na UCI . . . . . . . . . . Amostra de dados obtidos na UCI normalizados . . SLP treinada com diversas taxas de aprendizado (η) MLP treinada com diversas configurações . . . . . . NNE treinada com diversas taxas de aprendizado (η) Melhores resultados obtidos em cada RNA . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

40 41 42 43 44 44

LISTA DE SIGLAS

API ENN MLP RNA SLP UCI

Application Programming Interface Ensemble - Neural Network Multi-layer Perceptron Rede Neural Artificial Single-layer Perceptron University of California, Irvine

LISTA DE SÍMBOLOS

x w y P Θ k γ net T exp S e η α f(.) h minvalue maxvalue mintarget maxtarget

valor de entrada de uma conexão de um neurônio artificial peso sináptico de uma conexão de um neurônio artificial saída de um neurônio artificial somatório limiar modificador da função de ativação linear resultado máximo desejado da função de ativação resultado do somador do neurônio artificial suavidade da curva da função de ativação sigmóidal exponencial quantidade de neurônios em uma rede perceptron taxa de erro taxa de aprendizagem momentum função de ativação saída de um neurônio artificial de uma camada oculta de redes MLP menor valor do atributo na base de dados maior valor do atributo na base de dados menor valor definido para normalização maior valor definido para normalização

SUMÁRIO

1 1.1 1.2 1.3 1.4 1.5

INTRODUÇÃO . . . . . . . . . Contextualização do problema Objetivo Geral . . . . . . . . . Objetivos Específicos . . . . . Justificativa . . . . . . . . . . . Hipótese . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

13 13 14 14 14 15

2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.2 2.2.1 2.2.2 2.2.2.1 2.2.2.2 2.2.3 2.2.3.1 2.2.3.2 2.2.4 2.3

16 16 16 16 18 19 21 23 26 28 28 30 30 31 33 33 34 36

2.3.1 2.3.2 2.3.3

REFERENCIAL TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . Introdução à Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neurônio Biológico e a Comunicação no Cérebro . . . . . . . . . . . Neurônio Artificial MCP . . . . . . . . . . . . . . . . . . . . . . . . . . Funções de ativação . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelos de Redes Neurais . . . . . . . . . . . . . . . . . . . . . . . . Algoritmos de Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Redes Neurais Artificiais aplicadas ao Reconhecimento de Padrões . Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perceptron de Única Camada . . . . . . . . . . . . . . . . . . . . . . Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Processo de Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . Redes Perceptron de Múltiplas Camadas . . . . . . . . . . . . . . . . Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Máquinas de Comitê . . . . . . . . . . . . . . . . . . . . . . . . . . . . Análise de Modelos de RNA’s Aplicados ao Reconhecimento de Padrões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Apresentação do Problema . . . . . . . . . . . . . . . . . . . . . . . . Apresentação dos Resultados . . . . . . . . . . . . . . . . . . . . . . Conclusão dos Resultados . . . . . . . . . . . . . . . . . . . . . . . .

3 3.1 3.2 3.2.1 3.2.2

METODOLOGIA . . . . . . . . . . . Definição de Método e Metodologia Caracterização do Estudo . . . . . . Segundo os Objetivos . . . . . . . . Segundo as Fontes de Dados . . .

45 45 45 45 45

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . . .

. . . . .

. . . . .

39 39 41 44

3.2.3 3.2.4 3.2.5 3.2.6

Segundo a Forma de Abordagem . . . . . . . Segundo o Procedimento de Coleta de Dados Segundo a Amostra de Coleta de Dados . . . Descrição do Método de Trabalho . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

46 46 46 47

4

CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

5

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

13 1

INTRODUÇÃO

1.1

Contextualização do problema

Reconhecimento de padrões é uma área na ciência focada em classificar e reconhecer padrões e regularidades. Diversos algoritmos e abordagens existem para classificar padrões. O trabalho fará um estudo da aplicabilidade de uma classe de algoritmos ao reconhecimento de padrões denominada redes neurais artificiais, analisando uma amostra reduzida de algoritmos procurando analisar suas eficácias. Segundo Hagan (2014), o cérebro humano possui cerca de 1011 neurônios, cada um possuindo aproximadamente 104 conexões com outros neurônios. Inspirados no modelo do cérebro humano, Warren McCulloch e Walter Pitts publicaram em 1943 no trabalho A Logical Calculus of the Ideas Immament in Nervous Activity os chamados neurônios MCP (devido a iniciais dos autores). (MCCULLOCH; PITTS, 1943, pp. 115-133 apud BRAGA; CARVALHO; LUDERMIR, 2000, p. 3) Assim surgiram as redes neurais, modelos computacionais baseados no sistema nervoso central capazes de aprender e solucionar diversos problemas tais como reconhecimento e classificação de padrões. Nessas aplicações [classificação de padrões], a rede aprende a classificar um padrão desconhecido entre várias classes ou categorias. Assim, ao deparar com um padrão desconhecido a rede deve classificá-lo em uma das classes existentes. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 199)

Dentre diversas aplicações de redes neurais artificiais aplicadas em classificação e reconhecimento de padrões estão: a) reconhecimento facial; b) reconhecimento de voz; c) reconhecimento de assinaturas; d) classificação de lixo eletrônico (spam); e) olfato e paladar artificial; f) classificação de pacientes com doenças de risco. A pergunta que direciona o problema do trabalho é: qual modelo de rede neural artificial apresenta melhores resultados em reconhecimento de padrões?

14 1.2

Objetivo Geral

Explorar a utilização de diferentes redes neurais artificiais e algoritmos de treinamento em reconhecimento de padrões. 1.3

Objetivos Específicos O objetivo geral do trabalho foi detalhado em objetivos específicos, que são:

a) Realizar uma revisão da literatura sobre o histórico das redes neurais e seus conceitos básicos. b) Identificar diferentes modelos redes neurais artificiais e seus diferentes algoritmos de aprendizado, assim como investigar a aplicabilidade em classificação e reconhecimento de padrões. c) Implementar algoritmos de redes neurais para serem analisados e comparados. d) Produzir uma análise comparativa de diferentes modelos de redes neurais artificiais e diferentes algoritmos de treinamento em cima de um problema proposto de reconhecimento de padrões. 1.4

Justificativa

Redes neurais artificiais foram e têm sido um avanço significativo para sistemas de informação pois tem permitido o desenvolvimento de sistemas que executam tarefas difíceis de serem implementadas com algoritmos comuns. Com a utilização de redes neurais, é possível implementar, por exemplo, sistemas que reconhecem e classificam padrões, que realizam aproximação de funções, que emulam atividades humanas e que são capazes de fazer predição de séries temporais. A pesquisa é focada na aplicabilidade de redes neurais artificiais para o reconhecimento e classificações de padrões. Redes neurais artificiais capazes de realizar o reconhecimento e classificação de padrões são importantes pois permite o desenvolvimento de soluções capazes de, por exemplo, realizar reconhecimento de voz e reconhecimento facial. A pesquisa é relevante pois proporciona um estudo sobre redes neurais artificiais e suas aplicações através de uma análise comparativa de alguns modelos solucionando problemas de classificação de padrões. A análise permite uma compreensão melhor dos modelos sendo possível decidir quais são os modelos mais eficazes para solucionar problemas de classificação de padrões.

15 1.5

Hipótese

Além de descrever redes neurais artificiais e sua aplicabilidade na classificação e reconhecimento de padrões, o trabalho pretende verificar a hipótese: máquinas de comitê apresentam a melhor solução para classificação de padrões pois combina diversas redes neurais, denominadas especialistas, para chegar a uma solução ótima.

16 2

REFERENCIAL TEÓRICO

2.1 2.1.1

Introdução à Redes Neurais Artificiais Definição Redes neurais são modelos computacionais baseados no sistema nervoso

central. Segundo Haykin (2001), redes neurais artificiais são processadores paralelamente distribuídos, compostos de unidades simples de processamento, que naturalmente armazenam conhecimento experimental e o torna disponível para uso. Ou seja, são algoritmos capazes de aprender. As unidades simples de processamento são inspiradas no neurônio, células do sistema nervoso cuja função é de conduzir impulsos nervosos. Assim como no cérebro humano, os neurônios artificiais são interconectados e são capazes de computar valores a partir de suas conexões de entrada. O conhecimento obtido pela rede neural é realizada através de algoritmos de aprendizagem, cuja função é alterar os pesos das conexões dos neurônios (pesos sinápticos) e assim alcançar um objetivo desejado. (HAYKIN, 2001, p. 28) As aplicações de redes neurais artificiais são diversas, como: a) reconhecimento de padrões; b) aproximação de funções; c) emulação de atividades humanas; d) predição de séries temporais; e) otimização; f) processamento de imagens e sinais. 2.1.2

Neurônio Biológico e a Comunicação no Cérebro

Redes neurais artificiais são inspiradas e baseadas em redes neurais biológicas. Porém são apenas abstrações e não apresentam a complexidade de uma rede biológica. Contudo, a compreensão básica do funcionamento do sistema nervoso biológico é fundamental para o entendimento de onde se originou os modelos neurais artificiais. O cérebro humano é composto por um grande número de células denominados neurônios. Os neurônios são responsáveis por condução dos impulsos nervosos no sistema nervoso. De forma simples, o neurônio é composto por três partes:

17 a) os dendritos; b) o corpo da célula ou soma; c) o axônio. O corpo de célula, segundo Stanfield (2014), é o local onde está localizado o núcleo da célula, o retículo endoplasmático, aparelho de Golgi e a maior parte dos ribossomos livres. A partir do corpo da célula, os dendritos se ramificam e são responsáveis por receptar informações de outros neurônios em junções conhecidas por sinapses. (STANFIELD, 2014, p. 195) Uma outra ramificação advinda do corpo da célula é o axônio. Segundo Stanfield (2014), o axônio tem uma função oposta aos dendritos, ou seja, sua função é de enviar informações. Normalmente um neurônio possui apenas um axônio, mas pode se ramificar enviando informações para mais de um destino. A figura 1 ilusta um neurônio biológico.

Figura 1: Neurônio Biológico Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. A organização dos neurônios forma a rede neural presente no cérebro humano. Segundo Hagan (2014), uma parte da estrutura da rede neural é definida durante o nascimento, enquanto outras são construidas por meio de aprendizado. É importante notar que, "embora neurônios maduros retenham seus núcleos, eles perdem a capacidade de sofrer divisão celular" (STANFIELD, 2014, p. 195), ou seja, adultos possuem neurônios que serão por toda a vida. De acordo com Braga, Carvalho e Ludermir (2000), a comunicação no cérebro é realizada por sinais químicos através das sinapses ou por sinal elétricos dentro do neurônio.

18 Isso só é possível devido a membrana entre os nodos possuir "proteínas com funções específicas de, por exemplo, mover íons, apressar reações químicas, etc." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 6) Segundo Sadava (2009), para determinar se o neurônio irá disparar um sinal de saída, a soma dos potenciais das sinapses deve ultrapassar o limiar da célula. "Essa capacidade de somação do neurônios é o principal mecanismo pelo qual o sistema nervoso integra a informação." (SADAVA, 2009, p. 1093) A soma é realizada no corpo da célula. Depois de gerar um impulso, o neurônio entra em um período de refração (período em que o axônio não pode ser novamente estimulado), durante o qual retorna ao seu potencial de repouso enquanto se prepara para a geração de um novo impulso. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 7)

2.1.3

Neurônio Artificial MCP

Um neurônio artificial nada mais é do que uma representação simples do neurônio biológico. O modelo é denominado MCP devido às iniciais dos seus criadores McCulloch e Pitts. A figura 2 ilustra o modelo neurônio artificial.

Figura 2: Neurônio MCP Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. De acordo com Braga, Carvalho e Ludermir (2000), seu modelo matemático é descrito com n entradas (x1 , x2 , ..., xn ) que se conectam à outros neurônios e possui apenas uma saída (y). Para produzir o comportamento das sinapses, a entradas possuem pesos associados (w1 , w2 , ..., wn ).

19 "Especificamente, um sinal xj na entrada da sinapse j conectada ao neurônio k é multiplicado pelo peso sináptico wkj " (HAYKIN, 2001, p. 36). A soma é realizada por um elemento do modelo neural denominado Somador. A saída y de um neurônio é dada pela aplicação do resultado da somatória realizada pelo somador á uma função de ativação. Segundo Braga, Carvalho e Ludermir (2000), no modelo original MCP, a função de ativação é dada pela uma função limiar: net ≥ Θ onde net representa o resultado do somador, definida pela função net =

n X

xi wi

i=1

Em outras palavras, se a soma ponderada das entradas com seus respectivos pesos for maior ou igual ao limiar Θ, a saída neurônio será ativada (cuja representação binária é 1). Caso contrário a saída não será ativada (cuja representação binária é 0). O modelo possui algumas limitações. Redes com neurônios MCP com apenas só uma camada só conseguem classificar padrões linearmente separáveis. Além do mais, não foi proposto junto com o modelo MCP um processo de aprendizado. Como será mais detalhado nos próximos capítulos, o processo de aprendizado envolve em ajustar os pesos das conexões entre os neurônios, e isso só se tornou tema de estudo alguns anos depois, por Donald Hebb. 2.1.4

Funções de ativação

Após a elaboração do modelo de neurônio artificial, diversos outros modelos surgiram que não emitem apenas saídas binárias (0 ou 1). (BRAGA; CARVALHO; LUDERMIR, 2000, p. 10) A figura 3 ilustra as seguintes funções ativação respectivamente: a) função linear; b) função linear por partes; c) função de passo; d) função sigmoidal. De acordo com Braga, Carvalho e Ludermir (2000), a função linear é definida pela equação y = k × net, onde y representa a saída do neurônio e net a soma

20

Figura 3: Funções de Ativação Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. ponderada das entradas. k é um número real que determina a saída linear para os valores de entrada. A figura 3 (a) ilustra uma função de ativação linear. Segundo Braga, Carvalho e Ludermir (2000), a função linear pode possuir sua saída restringida para produzir valores constantes dentro de uma faixa [–γ, +γ]. A função linear por partes é definida pela função:    +γ   y= x    –γ

⇐⇒ net ≥ +γ ⇐⇒ –γ < net < +γ ⇐⇒ net ≤ –γ

onde y representa a saída do neurônio e net a entrada. A figura 3 (b) ilustra uma função de ativação linear por partes. A função de passo é semelhante a função limiar, pois produz apenas duas saídas diferentes. Braga, Carvalho e Ludermir (2000) definem a função passo através da equação:

y=

 +γ

⇐⇒ net > 0

–γ

⇐⇒ net ≤ 0

onde y representa a saída do neurônio e x a entrada. O valores desejados para saída da função é representado por γ. A figura 3 (c) ilustra uma função de ativação passo. Segundo Haykin (2001), a função sigmoidal possui o grafico em forma de S, e é hoje a forma mais comum de função de ativação.

21 Diversas funções sigmoidais podem ser definidas, mas a mais comum segundo Braga, Carvalho e Ludermir (2000) é: y=

1 1 + exp(–net/T)

onde y representa a saída do neurônio e net a entrada. T determina a suavidade da curva. A figura 3 (d) ilustra uma função de ativação sigmoidal. 2.1.5

Modelos de Redes Neurais

De modo geral, redes neurais são coleções de unidades simples de processamento, chamados neurônios, interconectados e organizados em camadas. Skapura (1995) descreve o processamento de informações mais comum em redes neurais da seguinte forma: um padrão externo é apresentado a rede neural em um estado quiescente estimulando seus neurônios de entrada. A entrada de dados é processada pelos neurônios de entrada e cada um gera um sinal de saída, que é enviada a outros neurônios de processamento. O processo então é repetido em todos os conjuntos de neurônios, até que o sinal de saída seja gerado pelo último conjunto de elementos. A figura 4 ilustra tal processamento descrito por Skapura (1995). O agrupamento de neurônios em redes neurais é conhecido como camadas.

Figura 4: Processamento de Informações mais Comum em Redes Neurais Fonte: SKAPURA, David M.Building Neural Networks. 1. ed. Bellingham: Addison-Wesley Professional, 1995.

22

Figura 5: Arquiteturas mais Comuns de Redes Neurais Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. Ainda existem outras arquiteturas de redes neurais que apresentam outras formas de processamento de informações. A figura 5 ilustra diversas arquiteturas de redes neurais. A forma de processamento descrita por Skapura (1995) pode ser visualizada na figura 5 (a, b, c). As três redes apresentadas na figura 5 (a, b, c) possuem uma estrutura de forma que "a saída de um neurônio na i-nésima camada da rede não pode ser usada como entrada de nodos em camadas de índice menor ou igual a i." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 12) O nome dado para tal processamento é feedforward. Um outro modelo de processamento, conhecido por feedback, pode ser visualizado na figura 5 (d, e) onde a saída de um neurônio pode ser utilizada como entrada em neurônios da mesma camada ou de camadas anteriores. Braga, Carvalho e Ludermir (2000) ainda classificam as redes neurais quanto ao número de camadas. Como pode ser visto na figura 5 (a, e), existem redes neurais que possuem uma só camada, ou seja, só há um nó entre as entradas e as saídas da rede neural. Entretando, existem redes que possuem múltiplas camadas, onde existem um ou mais neurônios entre a entrada e a saída da rede, como ilustrado na figura 5 (b, c, d). Quanto a sua conectividade, a rede neural pode ser classificada como completamente conectada 5 (a, e) ou como parcialmente (ou fracamente) conectada 5 (b, c, d). (BRAGA; CARVALHO; LUDERMIR, 2000, p. 13)

23 2.1.6

Algoritmos de Aprendizado

Redes neurais artificiais, como já foi definido, são baseadas no sistema nervoso biológico. Assim como os seres humanos, as redes neurais artificiais devem possuir modos de aprender sobre ambientes externos e serem treinadas para serem capazes de executar alguma função. Por algoritmo de aprendizado é entendido como o procedimento de modificar os pesos w da rede neural. Segundo Hagan et al. (2014), o propósito dos algoritmos de aprendizado é treinar a rede neural para executar alguma tarefa. Os diversos algoritmos existentes se enquadram em três categorias distintas: a) aprendizado supervisionado; b) aprendizado por reforço; c) aprendizado não-supervisionado. Algoritmos de aprendizado supervisionados consistem em utilizar uma espécie de professor externo que compara a saída da rede neural obtida a partir de uma certa entrada com um resultado já esperado. De acordo com Haykin (2001), o professor externo conhece o ambiente e apresenta o conhecimento como exemplos para a rede neural, que não desconhece o dados. Ao apresentar os dados do ambiente para a rede neural, o professor é capaz de fornecer também a saída esperada por deter os conhecimentos do ambiente. Então os parâmetros da redes são adequados influenciados pela combinação da saída ideal fornecida pelo professor com a saída real obtida pela rede neural. O processo é executado iterativamente até que o sinal de erro (diferença da saída obtida pela saída ideal) seja pequeno e a rede neural é capaz de emular o professor externo. Em outras palavras, o processo de treinamento termina quando a rede neural detém o conhecimento do seu professor. A figura 6 ilustra o fluxo de aprendizado supervisionado. A maior desvantagem do modelo de aprendizado com professor é que na ausência dele a rede não é capaz de aprender novas estratégias, pois o conjunto de dados utilizado durante o treinamento pode não cobrir todas as situações possíveis. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 16) Existem duas implementações básicas de algoritmos de aprendizado supervisionado: on-line e off-line. Nos treinamentos off-line, o conjunto de dados utilizado no treinamento é fixo e deve permanecer uma vez concluído o treinamento. Caso novos dados sejam adicionados, um novo treinamento deve ser realizado. Nos treinamentos on-line, o conjunto de dados é continuamente alterado e a rede deve possuir um contínuo processo de aprendizado. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 17)

24

Figura 6: Aprendizado Supervisionado Fonte: HAYKIN, Simon. Redes Neurais: Princípios e Práticas. 2. ed. Porto Alegre: Bookman, 2001. Possuindo um comportamento semelhante ao aprendizado supervisionado, os algoritmos de aprendizagem por reforço utilizam "um crítico externo procura maximizar o reforço das ações boas executadas pela rede." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 15) A figura 7 ilustra o processo de aprendizado por reforço. Segundo Barto et al. (1983 apud HAYKIN, 2001), o processo de aprendizado por reforço é desenvolvido em torno de um crítico que obtém um sinal de reforço de melhor qualidade (conhecido como sinal de reforço heurístico) convertendo um sinal de reforço primário do ambiente, sendo ambos sinal de grandeza escalares. O sistema é projetado para aprender por reforço atrasado, o que significa que o sistema observa uma sequencia temporal de estímulos (i.e., vetores de estado) também recebido pelo ambiente, que enventualmente resultam na geração do sinal de reforço heurístico. O objetivo da aprendizagem [por reforço] é minimizar uma função de custo para avançar, definida como a expectativa do custo cumulativo de ações tomadas ao longo de uma sequencia de passos, em vez simplesmente do custo imediato. Pode acontecer que certas ações tomadas anteriormente naquela sequência de passos de tempo sejam de fato os melhores determinantes do comportamento global do sistema. A função da máquina de aprendizagem, que constitui o segundo componente do sistema, é descobrir estas ações e realimentá-las para o ambiente. (HAYKIN, 2001, p. 89)

Braga, Carvalho e Ludermir (2000) descrevem dois paradigmas que a apren-

25 dizagem de reforço pode ter: aprendizagem associativa, onde o ambiente fornece não apenas o reforço mas também outras informações e um mapeamento no formato estímulo-ação; aprednziagem não-associativa onde o ambiente fornece apenas o sinal de reforço.

Figura 7: Aprendizado por Reforço Fonte: HAYKIN, Simon. Redes Neurais: Princípios e Práticas. 2. ed. Porto Alegre: Bookman, 2001. Também conhecido como aprendizado auto-organizado, o aprendizado nãosupervisionado não faz uso de um professor externo ou um crítico para supervisionar o treinamento. Apesar da semelhança entre o aprendizado dos seres humanos, muitos dos sistemas biológicos ocorrem através de aprendizado não supervisionado, como exemplo os estágios iniciais dos sistemas de visão e audição. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 19)

A rede neural é treinada em resposta ao dados de entrada apenas. A primeira vista o aprendizado não-supervisionado é um modelo de aprendizado inviável, pois a rede neural não conhece o resultado esperado, ou seja, não conhece seu objetivo. Mas a maioria dos algoritmos de aprendizado supervisionado realizam algum tipo de operação clusterizada, aprendendo a categorizar os dados de entrada em um número finito de classes. (Hagan et al., 2014, p. 82) Segundo Haykin (2001), "são dadas condições para realizar uma medida independente da tarefa da qualidade da representação que a rede deve aprender, e os parâmetros livres da rede são otimizados em relação a esta medida." (HAYKIN, 2001, p. 90) Dadas tais condições, a rede é capaz de aprender por meio das redundâncias e regularidades existentes nos dados de entrada. A figura 8 ilustra o processo de

26 aprendizado não-supervisionado. A estrutura do processo de aprendizado não-supervisionado pode apresentar diversas formas. Em uma delas ela pode ser composta de "uma camada de entrada, uma camada de saída, conexões feedforward da entrada para a saída e conexões laterais entre os neurônios da camada de saída." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 19) Há também uma outra estrutura consistida em "uma rede feedforward com múltiplas-camadas, em que a livre organização procede na base de camada por camada." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 19)

Figura 8: Aprendizado Não-Supervisionado Fonte: HAYKIN, Simon. Redes Neurais: Princípios e Práticas. 2. ed. Porto Alegre: Bookman, 2001.

2.1.7

Histórico

O primeiro modelo de um neurônio artificial foi proposto em 1943 por Warren McCulloch e Walter Pitts, mas o aprendizado de redes neurais artificiais só se tornou um objeto de estudo algum tempo depois. O modelo proposto por Warren McCulloch e Walter Pitts ficou conhecido por Neurônio MCP. (MCCULLOCH e PITTS, 1943, pp. 115-133 apud BRAGA; CARVALHO; LUDERMIR, 2000) Wiener em 1949 publicou o livro Cybernetics, onde descreveu alguns importantes conceitos sobre "controle, comunicação e processamento estatístico de sinais" (WIENER, 1949 apud HAYKIN, 2001, p. 63). Em seu livro, Wiener demonstrou compreender o "significado físico da mecânica estatística no contexto desse assunto." (WIENER, 1949 apud HAYKIN, 2001, p. 63) Porém somente 30 anos depois foi consolidada a relação entre sistemas de aprendizagem e mecânica estatística com Hopfield. O primeiro trabalho de aprendizado conhecido foi realizado por Donald Hebb. (HEBB, 1949 apud BRAGA; CARVALHO; LUDERMIR, 2000, p. 3) Foi mostrado no trabalho de Donal Hebb que o aprendizado de redes neurais pode ser obtido com a alteração dos pesos de entrada dos neurônios.

27 Hebb propôs que a conectividade do cérebro é continuamente modificada conforme um organismo vai aprendendo tarefas funcionais diferentes e que agrupamentos neurais são criados por tais modificações. Hebb [...] apresentou o seu agora famoso postulado de aprendizagem, que afirma que a eficiência de uma sinapse variável entre dois neurônios é aumentada pela ativação repetida de um neurônio causada pelo outro neurônio, através daquela sinapse. (HAYKIN, 2001, p. 63)

Segundo Haykin (2001), o livro publicado por Hebb tem sido uma fonte inspiradora para a criação de modelos computacionais de sistemas adaptativos de aprendizagem. Em 1956 os pesquisadores Rochester, Holland e Haibt realizaram a primeira tentativa de testar uma teoria neural bem-formulada com base na hipótese de Hebb. No ano de 1958, Frank Rosenblatt propôs a adição de sinapses ajustáveis às redes neurais com neurônios MCP e assim elas poderiam ser treinadas para classificar certos tipos de padrões. Assim surgia o modelo perceptron. Rosenblatt não só propôs um modelo de redes neurais como também propôs um algoritmo de aprendizado. Porém, o de Rosenblatt modelo se limita para classificar padrões linearmente separados. (ROSENBLATT, 1958 apud BRAGA; CARVALHO; LUDERMIR, 2000, p. 3) O modelo de Rosenblatt será estudado e mais detalhado nos próximos capítulos. Em 1969, 11 anos depois, Minsky e Papert alarmaram sobre as limitações do modelo perceptron. Problemas como detecção de paridade, conectividade e simetria não são possíveis de serem resolvidos pelo modelo perceptron pois não são problemas linearmente separáveis. Tais problemas, denominados "problemas difíceis de aprender"não podiam ser ignorados. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 3) Segundo Haykin (2001), houve uma perda de interesse em redes neurais na década de 70. O alarme de Minsky e Papert sobre as limitações do perceptron, desencorajou tanto pesquisadores quanto investidores em atuarem em pesquisas na área de redes neurais artificiais. Além do mais, a tecnologia naquela época era muito limitada. Gabor, por exemplo, propôs a ideia de um filtro adaptativo não-linear em 1954 (GABOR, 1954, pp. 19-31 apud HAYKIN, 2001, p. 65), e levou seis anos para construir tal máquina com a ajuda de colaboradores. (GABOR, 1960, pp. 422-435 apud HAYKIN, 2001, p. 65) O ano de 1982 ficou marcado com a publicação chamando atenção para as propriedades associativas das redes neurais escrito por Hopfield. Segundo Braga, Carvalho e Ludermir (2000), as pesquisas na área adormeceramse na década de 70, e o artigo publicado por Hopfield foi responsável pela retomada do interesse em pesquisas na área.

28 O grande feito de Hopfield foi, sem dúvida, mostrar a relação entre redes recorrentes auto-associativas e sistemas físicos, o que também abriu espaço para a utilização de teorias correntes da Física para estudar tais modelos. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 4)

Houve um aumento considerável do interesse da comunidade internacional pelo desenvolvimento de estudos em redes neurais na década de 80. Segundo Braga, Carvalho e Ludermir (2000) houveram dois outros fatores que influenciaram no crescimento do interesse da comunidade científica: a) o avanço tecnológico, principalmente na microeletrônica, que hoje permite a modelagem física de nodos e suas interconexões; b) a escola simbolista não ter conseguido avançar na resolução de diversos problemas simples. 2.2 2.2.1

Redes Neurais Artificiais aplicadas ao Reconhecimento de Padrões Introdução

Dentre as diversas aplicações de redes neurais artificiais está a aplicação em classificação ou reconhecimento de padrões. Os seres humanos são capazes de reconhecer outras pessoas apenas visualizando fotografias, ou ouvindo sua voz. São capazes também de ler manuscritos independente da caligrafia do autor. Ou também são capazes de identificar um alimento podre apenas pelo seu cheiro. Inspirados na capacidade natural do ser humano de reconhecer e classificar tudo ao seu redor, diversos algoritmos surgiram para reproduzir tal comportamento. De acordo com Theodoridis e Koutroumbas (2008), reconhecimento de padrões é uma disciplina científica cujo objetivo é classificar objetos em um certo número de categorias. Tais objetos são denominados padrões. Redes neurais são capazes de aprender a classificar objetos em um certo número de categoria. Ou seja, são capazes de classificar um padrão ainda não conhecido a partir de um aprendizado. Braga, Carvalho e Ludermir (2000) propõem que a rede deve passar por uma fase de teste para que seus resultados sejam avaliados perante padrões desconhecidos. Durante os testes, deve ser observado a taxa de acerto da classificação de padrões não utilizados durante o processo de aprendizado. Apresentado um padrão a rede neural durante a fase de teste que não foi utilizado durante o processo de aprendizado, pode-se obter os seguintes resultados:

29 a) classificação correta: a classificação do padrão não conhecido pela rede foi realizada de forma correta; b) classificação incorreta: a classificação do padrão não conhecido pela rede foi realizada de forma incorreta; c) classificação rejeitada: a classificação do padrão não conhecido pela rede resultou uma categoria não existente ou comum a mais de uma categoria existente. Braga, Carvalho e Ludermir (2000) ainda fazem duas definições importantes para determinar tais classificações: a) Denominamos dif a "diferença entre a classe mais semelhante e a segunda classe mais semelhante ao padrão apresentado." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 200) b) Denominamos sim o "valor de similaridade entre o padrão apresentado e os padrões de uma classe para que o padrão apresentado seja associado a esta." (BRAGA; CARVALHO; LUDERMIR, 2000, p. 200) Tais valores variam de acordo com a aplicação. Por exemplo, aplicações críticas cujo o custo de uma classificação incorreta é muito elevado, sendo assim preferível a rejeição, possuem os valores de sim e/ou dif elevados. Quando se é desejado um menor número de rejeição, os valores de sim e/ou dif são baixos. Segundo Braga, Carvalho e Ludermir (2000), devem ser utilizados durante o treinamento da rede conjuntos de padrões representativos para cada classe considerada. Além disso, o número de padrões de treinamento para cada classificação idealmente deve ser o mesmo. Existem diversos modelos de redes neurais capazes de executar classificação e reconhecimento de padrões. Será apresentado alguns modelos encontrados na bibliografia sobre redes neurais artificiais e sobre reconhecimento de padrões. Serão apresentados os seguintes modelos: a) perceptron de única camada; b) redes perceptron de múltipla camadas; c) máquinas de comitê.

30 2.2.2 Perceptron de Única Camada 2.2.2.1

Arquitetura

Na década de 1950, Frank Rosenblatt e vários outros pesquisadores desenvolveram uma classe de redes neurais denominadas perceptron, composta por neurônios baseados no modelo proposto por McCulloch e Pitts em 1943. A contribuição chave de Rosenblatt foi a introdução de um algoritmo de aprendizado que era capaz de realizar classificação de padrões. (HAGAN et al, 2014, p. 81) Contudo, redes neurais perceptron de única camada se limitam a classificar padrões linearmente separáveis. Como pode ser visto na figura 9, existem basicamente dois tipos de problemas de classificação: classificações linearmente separáveis e classificações não-linearmente separáveis.

Figura 9: Classificações linearmente separáveis (a) e não-linearmente separáveis (b). Fonte: KOVÁCS, Zsolt L.. Redes Neurais Artificiais: Fundamentos e Aplicações. 4 ed. São Paulo: Livraria da Física, 2006. A arquitetura proposta por Rosenblatt consistia em unidades de entradas (denominadas retinas), por unidades de associação formando um nível intermediário e por unidades de resposta compondo um nível de saída. Mesmo composto por três nívels, a arquitetura proposta por Rosenblatt é considerada como perceptron de única camada pois apenas o nível de saída possui características adaptativas. A retina é composta por unidades sensoras e as unidades de associação são compostas por neurônios MCP com pesos fixados definidos antes do processo de treinamento. A figura 10 ilusta o modelo perceptron proposto por Rosenblatt. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 35) Uma rede neural perceptron de única camada pode possuir um ou mais neurônios, dependendo de sua aplicabilidade. Rede neurais perceptron de única camada são capazes de classificar dados de entrada em duas categorias, já que a saída do neurônio pode ser 0 ou 1. Uma rede neural perceptron de única camada implementada com múltiplos neurônios é capaz

31

Figura 10: Arquitetura de uma rede neural perceptron com uma única saída Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. de classificar 2S classes, onde S representa o número de neurônios presentes na rede neural. (HAGAN et al, 2014, p. 87) 2.2.2.2

Processo de Aprendizado

Como já foi definido anteriormente, o processo de aprendizado consiste em atualizar os pesos das conexões dos neurônios até a obtenção de uma saída próxima de solução desejada. Geralmente durante o processo de aprendizado, a atualização dos pesos sinápticos w é dada através do valor do incremento Δw aplicado nos pesos w(t + 1) = w(t) + Δ(w), de tal forma que o peso w(t + 1) esteja mais próximo da solução desejada do que o peso w(t). (BRAGA; CARVALHO; LUDERMIR, 2000, p. 36) Segundo Braga, Carvalho e Ludermir (2000), considerando um nodo qualquer da camada de resposta de um perceptron e suas entradas x0 e pesos w 0 . A condição 0 0 0 0 para que o nodo dispare é dado por x × w = Θ ou x × w – Θ = 0, onde Θ representa o limiar do neurônio. Então uma nova condição crítica pode ser definida por wx = 0 se o valor de –Θ for conectado como peso à uma entrada de valor fixo xi = 1, tornando os vetores w = {–Θ, w1 , w2 , ..., wn }T x = {1, x1 , x2 , ..., xn }T . (BRAGA; CARVALHO; LUDERMIR, 2000, pp. 36-37) O limiar então é também ajustado durante o processo de aprendizado juntamente com os pesos das conexões. O limiar é muitas vezes denominado pela literatura e pesquisadores como bias. Considerando agora um dado de treinamento {x, d} onde x é um conjunto de

32 dados de entrada e d a saída esperada de um neurônio no qual foi apresentado o conjunto de dados de entrada x. Considerando y a saída real obtida com a apresentação do conjunto de dados de entrada x, um erro e pode ser calculado com a seguinte fórmula: e = d – y. Redes perceptrons possui valores de entradas e saídas igual a 0 ou 1, logo e 6= 0 se d = 1 e y = 0 ou d = 0 e y = 1. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 37) Para ambas situações, pode-se chegar a expressão que corresponde para a atualização de pesos: w(t + 1) = w(t) + ηex(t) Para a primeira situação (d = 1 e y = 0), tem-se e = 1 e w × x < 0, já que y = 0, o que implica que ||w|| × ||x|| cos(w, x) < 0. Consequentemente, tem-se que cos(w, x) < 0◦ e α(w, x) > 90◦ , onde α é o angulo entre os vetores w e x [ver figura 11 que ilustra a situação dos vetores w e x]. [...] Para esta condição, pode-se observar que também na figura [11] que uma modificação plausível no vetor w em busca da solução seria somá-lo a um vetor que estivesse na direção de x como o vetor ηx indicado. Assim Δw = ηx e w(t + 1) = w(t) + ηx(t). Porém, como e = 1 a equação de atualização de w pode ser escrita de forma mais conveniente: w(t + 1) = w(t) + ηex(t) [onde η é uma constante denominada taxa de aprendizado, que define a rapidez com que o vetor de peso será ajustado]. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 37)

Figura 11: Posição relativa dos vetores w e x para a situação d = 1 e y = 0 Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. Para a segunda situação (d = 0 e y = 1), o racício é o mesmo. O erro e = –1, ||w|| × ||x||cos(w, x) > 0 e α(w, x) < 90◦ . Para se obter y = d = 0, o vetor de pesos w deve ser ajustado para que o angulo α(w, x) seja maior que 90◦ . Portanto, uma regra possível para o ajuste é w(t + 1) = w(t) – ηx(t), e como e = –1, a regra pode ser

33 definida da mesma forma que na primeira situação w(t + 1) = w(t) + ηex(t). (BRAGA; CARVALHO; LUDERMIR, 2000, p. 37) Como apresentando anteriormente no trabalho, o processo de aprendizado é do tipo supervisionado, já que um professor externo conhece a resposta desejada da rede neural para cada dado do conjunto de treinamento, e comparando a resposta obtida da rede com a resposta que era esperada, os pesos da rede são ajustados. 2.2.3 2.2.3.1

Redes Perceptron de Múltiplas Camadas Arquitetura

Redes perceptron de única camada, como já foram abordadas no trabalho, classificam apenas padrões linearmente separáveis. Para a classificação de padrões não-linearmente separáveis, é feito a utilização de redes neurais perceptron com uma ou mais camadas ocultas entre a entrada e saída da rede neural. Segundo Braga, Carvalho e Ludermir (2000), o modelo de redes com múltiplas camadas possuem uma capacidade computacional superior aos perceptrons de única camada. Em teoria, uma rede com duas camadas intermediárias é capaz de executar qualquer função, linear ou não. A figura 12 ilusta uma rede neural perceptron de múltiplas camadas.

Figura 12: Rede neural perceptron típica, com uma camada intermediária Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000.

Conforme já observado, um dos principais aspectos relacionados ao processo de rede MLP [multi-layer perceptrons, ou perceptrons de múltiplas camadas] diz respeito à função de ativação utilizada. Diversas

34 funções de ativação têm sido propostas para redes de multicamadas. Estas funções são não-lineares e diferenciáveis. [...] As funções precisam ser diferenciáveis para que o gradiente possa ser calculado, direcionando o ajuste de pesos. [...] A função mais utilizada é a sigmoidal logística. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 51)

Existem diversos algoritmos de treinamento para redes perceptron de múltiplas camadas, e podem ser classificados em duas categorias: a) Algoritmos estáticos: não fazem alteração na estrutura da rede neural, ajustando apenas os pesos sinápticos. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 59) b) Algoritmos dinâmicos: podem reduzir ou aumentar o tamanho da rede neural, alterando o número de camadas, nodos nas camadas ocultas e número de conexões). (BRAGA; CARVALHO; LUDERMIR, 2000, p. 59) 2.2.3.2 Backpropagation O processo mais comum de aprendizado das redes perceptron de múltiplas camadas é supervisionado, assim como o processo de aprendizado das redes perceptron de única camada, e denominado backpropagation. Segundo Braga, Carvalho e Ludermir (2000), a maior parte dos algoritmos de treinamento de redes neurais perceptron de múltiplas camadas utiliza variações do algoritmo de backpropagation. De forma geral, o processo backpropagation é composto de duas fases: a) Fase de propagação do sinal funcional (feedfoward): os conjuntos de dados são apresentados a camada de entrada. O sinal é propagando em todas as camadas da rede até que um sinal seja gerado pela camada de saída da rede. Durante a fase feedfoward, os pesos ainda não são alterados. (SILVA, 1998, p. 17) b) Fase de retro-propagação de erro (backpropagation): um sinal de erro é calculado subtraindo a saída obtida da rede neural pela saída esperada. Este sinal de erro então é propagado dos neurônios de saída até aos neurônios de entrada. Os pesos são alterados de forma que a diferença entre as respostas obtidas pela rede e as respostas desejadas são reduziadas. (SILVA, 1998, p. 17) A figura 13 ilustra o fluxo de processamento do algoritmo de backpropagation. O algoritmo de treinamento backpropagation é inspirado na regra delta, proposta por Widrow e Hoff (WIDROW; HOFF, 1960 apud BRAGA; CARVALHO; LUDERMIR, 2000, p. 61).

35

Figura 13: Fluxo de processamento do algoritmo de backpropagation Fonte: BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicações. 1. ed. Rio de Janeiro: Ltc, 2000. O algoritmo backpropagation sugere um modo de determinar o erro dos neurônios das camadas ocultas, permitindo o ajuste dos pesos sinápticos. A adequação dos pesos é realizada fazendo uso do método gradiente. (BRAGA; CARVALHO; LUDERMIR, 2000, p. 61) O processamento do algoritmo começa com a propagação do sinal de entrada na rede neural (fase feedfoward). A resposta de cada um dos m neurônios da camada oculta h1...m é calculada da seguinte forma:   jm X xi wim  hm = f n  i=1

onde f n (.) é a função de ativação do neurônio, x as entradas do neurônio, w os pesos sinápticos das conexões, j o número de entradas do neurônio. (CROCHAT, 2009 apud AQUINO, 2011, p. 24) A resposta de cada um dos n neurônios da camada de saída y1...N é calculada da seguinte forma:   jn X yn = f n  hi win  i=1

onde nh equivale a quantidade de neurônios da ultima camada oculta (conectados aos neurônios de saída). (CROCHAT, 2009 apud AQUINO, 2011, p. 24) Concluída a fase feedfoward, pode ser calculado o sinal de erro e assim iniciar a fase de retro-propagação do erro (backpropagation). O erro e segundo Braga, Carvalho e Ludermir (2000) é calculado da seguinte

36 forma: 0

y

en = (dn – yn )f n (netn ) 0

onde d são as respostas esperadas pela rede, y as respostas obtidas pela rede, f (.) a derivada da função de ativação do neurônio e net a soma ponderada das entradas do neurônio com os respectivos pesos sinápticos, dados pela fórmula

net =

j X

xi wi

i=1

O erro e segundo Braga, Carvalho e Ludermir (2000) nas camadas ocultas da rede neural é calculada pela soma ponderada entre os erros das camadas seguintes e os respectivos pesos sinápticos das conexões entre os neurônios: j

ehm

0

= f (netm ) ×

y X

ei wmi

i=1

Sendo possível definir o erro e em cada neurônio, a atualização dos pesos sinápticos pode ser realizado da mesma forma que foi apresentado para perceptrons de única camada: w(t + 1) = w(t) + ηex(t) Os mais importantes problemas que podem ocorrer durante o treinamento por backpropagation são referentes à determinação dos parâmetros iniciais do algoritmo. O principal problema é a lentidão que o algoritmo apresenta em superfícies complexas. Uma solução de minimizar o problema de lentidão em superfícies complexas é levar em consideração efeitos de segunda ordem para o gradiente descendente incluindo a taxa momentum. Além de acelerar o processo de treinamente, a taxa momentum evita que o algoritmo convirja para mínimos locais, que são ponto na superfície de erro que apresentam uma solução incorreta, mas estável. Portanto, a inclusão do termo a fórmula anterior fica da seguinte forma: (LORENZI, 2009, p. 66) w(t + 1) = w(t) + ηex(t) + α(w(t) – w(t – 1)) 2.2.4

Máquinas de Comitê

Máquina de comitê são redes neurais artificiais que adotam a estratégia dividir para conquistar. Tal estratégia visa dividir um problema em pequenas partes, solucioná-las e combiná-las para chegar a solução final. Segundo Haykin (2001), a estratégia aplicada ao aprendizado supervisionado é feita dividindo a tarefa de aprendizado entre vários especialistas, que por sua vez

37 divide o espaço de entrada em um conjunto de subespaço. A máquina de comitê combina os especialistas e funde suas respostas para chegar á uma resposta global. Bishop (1995) afirma que é uma prática comum em aplicações de redes neurais o treinamento de diferentes redes e selecionar a melhor, com base, por exemplo, na performance de um conjunto de validação independente, e descartar as demais. Porém, todo o esforço envolvido no treinamento das redes neurais que foram descartadas é desperdiçado. Além do mais, o desempenho da generalização dos dados de validação possui um componente aleatório por causa de ruídos nos dados, então a rede que obteve as melhores respostas sobre os dados de validação pode não ser a rede neural selecionada. De acordo com Haykin (2001) as máquinas de comitê possuem duas classificações em duas categorias: a) Estruturas estáticas: máquinas de comitê classificadas como estruturas estáticas combinam as saídas de vários previsores (especialistas) não envolvendo o sinal de entrada. (HAYKIN, 2001, pp. 385-386) b) Estruturas dinâmicas: diferente máquinas de comitê classificadas como estruturas estáticas, as máquinas ditas estruturas dinâmicas envolvem o sinal de entrada com o mecanismo que combina os sinais de saídas dos especialistas. (HAYKIN, 2001, p. 386) Média de ensemble é um estrutura estática de máquinas de comitê que combina a saída de diversos especialistas de forma linear, mas não será utilizado pela análise comparativa proposta pelo trabalho. Ilustrado na figura 14 o método de média de ensemble consiste em um número de especialistas treinados de diferentes formas, com dados de entrada compartilhados e respostas combinadas para obtenção de uma resposta global y. (HAYKIN, 2001 apud FILHO, 2005, p. 39) Haykin (2001) descreve as seguintes motivações para o uso do modelo de máquina de comitê baseada em média de ensemble: a) Se o modelo fosse substituído por uma rede neural comum, haveria um grande número de parâmetros ajustáveis com um tempo de treinamento maior que um conjunto de redes neurais treinadas em paralelo. (HAYKIN, 2001, p. 387) b) Cresce o risco de ajuste em excesso dos dados quando a quantidade de parâmetros ajustáveis é grande comparada à quantidade de dados de treinamento. (HAYKIN, 2001, p. 387) Há ainda um outro método que pertence a categoria das estruturas estáticas das máquinas de comitê: o reforço (ou boosting). O algoritmo de boosting será utilizado na análise proposta pelo trabalho na última parte do referencial teórico.

38

Figura 14: Máquina de comitê baseada em média de ensemble FILHO, Sérgio Roberto de Lima e Silva. Autenticação Contínua pela Dinâmica da Digitação Usando Máquinas de Comitê. 2005. 106 f. Dissertação (Mestrado) - Curso de Mestre em Ciência da Computação, Universidade Federal de Santa Catarina, Florianópolis, 2005. Disponível em: . Acesso em: 28 abr. 2015. O objetivo do método boosting é melhorar a performance de qualquer processo de aprendizado treinando os especialistas com conjunto de dados com distribuições distintas. (FILHO, 2005, 40) Haykin (2001) descreve três maneiras distintas que o reforço pode ser implementado: a) Reforço por filtragem: supõe que há uma disponibilidade enorme de amostras (infinitos, em teoria), com amostras sendo mantidas ou descartadas durante o treinamento. A implementação do reforço consiste em filtrar a amostra de treinamento por diferentes versões de um algoritmo de fraca aprendizagem. Reforço por filtragem requer menos memória do que as outras maneiras de implementação do reforço. (HAYKIN, 2001, p. 391) b) Reforço por subamostragem: trabalha com um conjunto de dados de treinamento fixo. A amostra é apresentada novamente durante o treinamento, de acordo com uma dada distribuição probabilística. Em relação ao conjunto de dados de treinamento fixo o erro é calculado. (HAYKIN, 2001, p. 391) c) Reforço por ponderação: trabalha com um conjunto de dados de treinamento fixo, mas supõe que o algoritmo de aprendizado fraco pode receber dados ponderados. Em relação aos dados ponderados o erro é calculado. (HAYKIN, 2001, p. 391) Ainda existem dois tipos de estruturas classificadas como dinâmicas, que também não serão analisadas pelo trabalho: a) Mistura de especialistas, na qual respostas individuais dos especialistas são combinadas não linearmente por meio de uma única rede de passagem.

39 b) Mistura hierárquica de especialistas, na qual as respostas individuais dos especialistas são combinadas não linearmente por meio de várias redes de passagem arranjadas em uma forma hierárquica. Na mistura de especialistas, o principio de dividir e conquistar é aplicado apenas uma vez, enquanto na mistura hierárquica de especialistas é aplicado várias vezes, resultando em um número correspondente de níveis de hierarquia. (HAYKIN, 2001, p. 386)

2.3 2.3.1

Análise de Modelos de RNA’s Aplicados ao Reconhecimento de Padrões Apresentação do Problema

O intuito do trabalho é analisar diferentes modelos de redes neurais artificiais aplicadas ao reconhecimento e classificação de padrões. A análise será realizada por meio da implementação das redes em cima de uma fonte de dados obtida no UCI Repository of machine learning databases. A base de dados escolhida é denominada Iris Data Set e é destinada para classificação de flores do gênero Íris. A base de dados está creditada á: R.A. Fisher, criador da base de dados, e Michael Marshall, doador da base de dados. Abaixo está documentado os atributos encontrados na base de dados, conforme descrito no UCI Repository of machine learning databases. a) Atributo 01: Comprimento da Sépala em cm; b) Atributo 02: Largura da Sépala em cm; c) Atributo 03: Comprimento da Pétala em cm; d) Atributo 04: Largura da Pétala em cm; e) Atributo 05: Classe: • Iris Setosa: valor Iris-setosa; • Iris Versicolor : valor Iris-versicolor ; • Iris Virginica: valor Iris-virginica. No quadro 1 pode ser observado uma amostra dos dados obtidos na UCI Repository of machine learning databases. Os dados de foram normalizados. Segundo Priddy e Keller (2005), a normalização consiste em alterar os valores de cada atributo para se enquadrarem em um

40 Tabela 1: Amostra de dados obtidos na UCI Atributo 01

Atributo 02

Atributo 03

Atributo 04

5.1 4.9 7.0 6.4 6.3 5.8

3.5 3.0 3.2 3.2 3.3 2.7

1.4 1.4 4.7 4.5 6.0 5.1

0.2 0.2 1.4 1.5 2.5 1.9

Atributo 05 Iris-setosa Iris-setosa Iris-versicolor Iris-versicolor Iris-virginica Iris-virginica

Fonte: tabela elaborada pelo próprio autor em maio/2015 intervalo correspondido por 0 e 1 ou em –1 e 1. De acordo com Priddy e Keller (2005), a formula correspondente à normalização é: 

 (xi – minvalue ) xi = (maxtarget – mintarget ) × + mintarget (maxvalue – minvalue ) 0

0

onde xi corresponde ao valor do atributo normalizado, xi o valor original do atributo, minvalue e maxvalue os valores do menor e maior atributo na base de dados, mintarget e maxtarget os valores mínimo e máximo definido para a normalização. A base de dados foi normalizada entre –1 e 1. Além disso, o atributo 05 foi decomposto em 2 atributos binários para representar cada categoria possível de classificação: a) Pertence a classe Iris Setosa: • Atributo 05: valor 1; • Atributo 06: valor –1; b) Pertence a classe Iris Versicolor : • Atributo 05: valor –1; • Atributo 06: valor 1; c) Pertence a classe Iris Virginica: • Atributo 05: valor –1; • Atributo 06: valor –1; O quadro 2 contém os dados do quadro 1 após o processo de normalização de decomposição do atributo 05. O valores foram arredondados para apresentação no trabalho. Ao todo 150 dados foram utilizados, sendo 135 utilizados para o treinamento das redes neurais e 15 utilizados para testes.

41 Tabela 2: Amostra de dados obtidos na UCI normalizados Atributo 01

Atributo 02

Atributo 03

Atributo 04

Atributo 05

Atributo 06

–0.55 –0.66 0.49 0.16 0.11 –0.16

0.24 –0.16 0.00 0.00 0.08 –0.41

–0.86 –0.86 0.25 0.18 0.69 0.38

–0.91 –0.91 0.08 0.16 0.69 0.38

1 1 –1 –1 –1 –1

–1 –1 1 1 –1 –1

Fonte: tabela elaborada pelo próprio autor em maio/2015 Segundo Braga, Carvalho e Ludermir (2000) e já explicado em capítulos anteriores, os valores dif e sim devem ser determinados para o problema. Como não se trata de uma aplicação crítica onde o custo de uma classificação incorreta é muito alta, o valor sim será 0.9. Dessa forma, se a saída apresentar um valor maior que 0, será considerado o equivalente a classificação 1; caso contrário, se o valor for menor que 0, será considerado o equivalente a classificação –1. Existe uma possibilidade da rede resultar uma saída descartável, pois o modelos de redes neurais com duas saídas são capazes de classificar 4 categorias de dados. A saída descartável é igual a {1, 1} As seguintes redes neurais foram implementadas para a análise comparativa proposta: a) SLP - perceptron de única camada com algoritmo de aprendizado Least Mean Square; b) MLP - rede perceptron de múltipla camadas com algoritmo de aprendizado Backpropagation; c) NNE - máquina de comitê utilizando o método de boosting. Para melhor generalização dos resultados apresentados na análise, foram feitas 100 rodadas para obtenção das redes neurais que apresentam a menor erro quadrádico médio. 2.3.2

Apresentação dos Resultados

A rede neural artificial implementada para a solução por redes perceptron de única camada, que será denominada SLP, foi construída possuindo 4 neurônios na primeira camada para receber os dados de entrada e 2 neurônios na última camada para representar cada classificação possível. O erro quadrático médio esperado para a rede foi fixado em 0 e o número máximo de épocas de aprendizado foi fixado em 10.

42 A determinação da taxa de aprendizado (η) foi feita de forma empírica. A tabela 3 exibe os resultados dos treinamentos para diversas taxas de aprendizado. Tabela 3: SLP treinada com diversas taxas de aprendizado (η) Taxa de Classificações Classificações Classificações Aprendizado Corretas Incorretas Descartadas η (%) (%) (%) 0.01 0.1 0.3 0.5 0.7 0.9

80.00 73.33 73.33 73.33 80.00 73.33

20.00 26.66 26.66 26.66 20.00 13.33

0.00 0.00 0.00 0.00 0.00 13.33

Fonte: tabela elaborada pelo próprio autor em maio/2015 Conforme pode ser contestado com o resultados obtidos com diversas taxas de aprendizado (η), as soluções mais precisas apresentam uma taxa de acerto de 80.00%. A rede apresentou classificações descartáveis com a taxa de aprendizado (η) igual a 0.9. De modo geral, as redes neurais apresentaram no mínimo uma taxa de classificações incorretas de 26%. As configurações mais precisas foram aquelas que possuem a taxa de aprendizado (η) igual a 0.01 e 0.7. A rede neural artificial implementada com múltiplas camadas e com algoritmo de aprendizado Backpropagation, que será denominada MLP, foi testada com diversas número de neurônios na camada oculta e diversas taxas de aprendizado (η). Na tabela 4 estão apresentados os resultados obtidos.

43 Tabela 4: MLP treinada com diversas configurações Neurônios na Taxa de Classificações Classificações Classificações Camada Aprendizado Corretas Incorretas Descartadas Oculta η (%) (%) (%) 1 1 1 1 1 1

0.01 0.1 0.3 0.5 0.7 0.9

40.00 53.33 53.33 53.33 53.33 53.33

60.00 46.66 46.66 46.66 46.66 46.66

0.00 0.00 0.00 0.00 0.00 0.00

3 3 3 3 3 3

0.01 0.1 0.3 0.5 0.7 0.9

53.33 53.33 93.33 93.33 93.33 86.66

46.66 46.66 6.66 6.66 6.66 13.33

0.00 0.00 0.00 0.00 0.00 0.00

5 5 5 5 5 5

0.01 0.1 0.3 0.5 0.7 0.9

53.33 53.33 93.33 93.33 93.33 73.66

46.66 46.66 6.66 6.66 6.66 26.66

0.00 0.00 0.00 0.00 0.00 0.00

7 7 7 7 7 7

0.01 0.1 0.3 0.5 0.7 0.9

53.33 53.33 93.33 93.33 93.33 93.33

46.66 46.66 6.66 6.66 6.66 6.66

0.00 0.00 0.00 0.00 0.00 0.00

Fonte: tabela elaborada pelo próprio autor em maio/2015 Conforme pode ser observado na tabela 4, as melhores configurações de redes neurais apresentaram uma taxa de classificações corretas de 93%. Porém em algumas configurações foram apresentados resultados com taxa abaixo de 53.33%, destacando-se a configuração com 1 neurônio na camada oculta e com taxa de aprendizado (η) igual a 0.01 que solucionou corretamente apenas 40% dos dados. A máquina de comitê implementada utilizando o método de treinamento boosting foi implementada com o ajuntamento de 10 perceptrons de camada única como na rede SLP. A máquina de comitê em questão será denominada NNE. Assim como no experimento SLP, foram realizados execuções com diversas taxas de aprendizado η, resultando nos dados apresentados na tabela 5.

44 Tabela 5: NNE treinada com diversas taxas de aprendizado (η) Taxa de Classificações Classificações Classificações Aprendizado Corretas Incorretas Descartadas η (%) (%) (%) 0.01 0.1 0.3 0.5 0.7 0.9

73.33 80.00 80.00 86.66 86.66 86.66

26.66 20.00 20.00 13.33 13.33 13.33

0.00 0.00 0.00 0.00 0.00 0.00

Fonte: tabela elaborada pelo próprio autor em maio/2015 Conforme pode ser observado na tabela 5 a pior configuração apresentou 73.33% classificações corretas. No mais, os melhores resultados obtidos foram de 86.66% classificações corretas. Nenhuma das configurações apresentaram classificações descartáveis. 2.3.3

Conclusão dos Resultados

Conforme os resultado apresentados, pode-se concluir que a rede MLP apresentou as melhores taxas de classificação, onde 93% dos dados utilizados para teste foram classificados de forma correta. A hipótese do trabalho não foi comprovada, pois era esperado que a máquina de comitê apresentasse o melhor resultado. Contudo, é possível notar que mesmo fazendo o uso de perceptrons de única camada a máquina de comitê apresentou um resultado melhor do que a rede SLP onde havia apenas um perceptron. A tabela 6 consolida os melhores resultados obtidos em cada simulação. Tabela 6: Melhores resultados obtidos em cada RNA Rede Neural SLP MLP NNE

Classificações Classificações Classificações Corretas Incorretas Descartadas (%) (%) (%) 80.00 93.33 86.66

20.00 6.66 13.33

0.00 0.00 0.00

Fonte: tabela elaborada pelo próprio autor em maio/2015

45 3

METODOLOGIA

3.1

Definição de Método e Metodologia

Metodologia descreve os procedimentos realizados durante uma pesquisa. "Consiste em estudar e avaliar os vários métodos disponíveis, identificando suas limitações ou não no que diz respeito às implicações de suas utilizações". (BARROS; LEHFELD, 2007, p. 2) Ou seja, a metodologia descreve a pesquisa, seus métodos, abordagens e procedimentos. Método pode ser definido como os passos que tomamos para chegar a conclusão desejada de uma pesquisa. Segundo Cervo, Bervian e Silva (2007) pesquisas renomadas tiveram suas etapas registradas e mais tarde tiveram sua eficácia confirmada. Os métodos foram aos poucos transformados em verdadeiros processos científicos. É certo que o método não substitui as habilidades do pesquisador nem automatiza seu trabalho. O papel do pesquisador é de suma importância pois nenhum método produz ideias nem propõe novos paradigmas. O método não produz uma pesquisa sem erros, pois seu resultado depende do pesquisador. 3.2 3.2.1

Caracterização do Estudo Segundo os Objetivos

Segundo os objetivos do trabalho, a pesquisa tem caráter descritivo. Segundo Cervo, Bervian e Silva (2007), pesquisas descritivas "[...] observa, registra, analisa e correlaciona fatos e fenômenos (variáveis) sem manipulá-los". O trabalho descreve, analisa e correlaciona diferentes modelos de redes neurais artificiais aplicadas ao reconhecimento de padrões. Conforme a definição, não há manipulação por parte do pesquisador. A coleta de dados para a pesquisa foi feita por meio de observações sistemáticas. Segundo Cervo, Bervian e Silva (2007), observar é obter conhecimento sobre um objeto aplicando atentamente os sentidos físicos. As observações realizadas para o trabalho foram sistemáticas pois foram previamente planejadas e recorreram da utilização de recursos computacionais. 3.2.2

Segundo as Fontes de Dados

Qualquer pesquisa só é possível de ser feita se existirem dados disponíveis para serem utilizados. Os lugares de onde são obtidos os dados são denominados fontes. A origem dos dados do trabalho se da exclusivamente em uma bibliografia.

46 Bibliografia é o conjunto de materiais escritos [...] a respeito de um assunto. Constitui-se numa preciosa fonte de informações, com dados já organizados e analisados como informações e ideia já prontas. Na atualidade, praticamente qualquer necessidade humana, conhecida ou pressentida, tem algo escrito a respeito. Por isso, a pesquisa com base numa bibliografia deve encabeçar qualquer processo de busca científica que se inicie (SANTOS, 2002, p. 27).

3.2.3

Segundo a Forma de Abordagem

Segundo a forma de abordagem a pesquisa é de caráter quantitativa. Segundo Mascarenhas (2012), pesquisas quantitativas são baseadas na quantificação para realizar a coleta de dados para posteriormente tratá-los. Flick (2012) caracteriza pesquisas quantitativas da seguinte forma: a pesquisa é realizada a partir de um conceito que é expressado previamente. Após isso são formuladas hipóteses que são testadas em um processo empírico. Então a última parte do trabalho é um processo empírico no qual apresenta mensurações para encontrar diferenças entre os algoritmos analisados. 3.2.4

Segundo o Procedimento de Coleta de Dados

Os procedimentos de coleta de dados são os meios para se obter informações para a construção da pesquisa. Segundo o procedimento de coleta de dados a pesquisa será bibliográfica. Uma pesquisa bibliográfica "[...] concentra-se na análise de livros, artigos, dicionários e enciclopédias [...]" (MASCARENHAS, 2012, p. 49). Será feita uma revisão da literatura existente para obtenção de conhecimento e para elaboração da pesquisa. Além da consulta de livros e artigos, será utilizado um conjunto de dados disponibilizado e mantido pela UCI Machine Learning Repository, caracterizando assim uma pesquisa com base documental. As fontes de dados em pesquisas documentais não se tratam de estudos de caráter científico, mas registram ou relatam informações sobre o assunto estudado (MASCARENHAS, 2012, p. 50). 3.2.5

Segundo a Amostra de Coleta de Dados

Geralmente as pesquisas são realizadas por amostras, "pois nem sempre é possível obter as informações de todos os indivíduos ou elementos que compõe o universo [...] que se deseja estudar" (BARROS; LEHFELD, 2007, p. 101). De acordo com Barros e Lehfeld (2007), entende-se por universo o conjunto de elementos que possuem as características definidas para o estudo. Uma parte do universo a ser estudado é denominado amostra.

47 O universo da pesquisa são modelos de redes neurais capazes de realizar classificação de padrões. Contudo não é possível obter as informações todos os modelos existentes e capazes de realizar tal tarefa devido ao tempo. Então os modelos apresentados no trabalho foram selecionados devido suas aplicabilidades ao reconhecimento de padrões e com base na literatura disponível sobre o assunto. Os modelos compõe a amostra, e por terem sido selecionados de forma intencional e não por acaso, é uma amostra não probabilística. Segundo Mascarenhas (2012), a amostra não probabilísca permite que o pesquisador selecione os elementos a serem estudados (integrantes da amostra). De todo modo, amostras não probabilísticas tornam difícil a generalização dos resultados da investigação. 3.2.6

Descrição do Método de Trabalho

O trabalho apresenta uma contextualização sobre o assunto nos primeiros capítulos que visa descrever, segundo a bibliografia existente, os conceitos básicos de redes neurais artificiais. Para isso foi realizado um levantamento bibliográfico e uma revisão da literatura existente. Após o levantamento bibliográfico, foi realizado um estudo sobre os diferentes modelos de redes neurais e algoritmos de treinamento que seriam utilizados universo para o estudo. Para isso, foram selecionadas redes neurais artificiais capazes de realizar reconhecimento de padrões. A seguir foram implementados os algoritmos estudados para a realização da análise comparativa proposta pela pesquisa. Após as devidas implementações, foi selecionado um conjunto de dados disponibilizado pela UCI Machine Learning Repository também para a realização da análise. Os algoritmos foram executados e a partir do resultado destes foi realizada a análise comparativa dos modelos de redes neurais artificiais aplicadas ao reconhecimento de padrões.

48 4

CONCLUSÃO

O modelo computacional redes neurais artificiais conseguiu cumprir a tarefa de classificar e reconhecer padrões de uma forma bem eficaz, enquanto tal tarefa é inviável de ser implementada por meio de algoritmos estruturados convencionais. Isso só tem sido possível devido ao interesse do meio científico em criar modelos computacionais inspirados em modelos biológicos. As redes neurais artificiais conhecidas na atualidade não apresentam a complexidade de uma rede biológica, sendo apenas uma abstração do sistema nervoso humano. Entretanto, tal abstração tem demonstrado grande poder computacional, sendo capaz de realizar tarefas como aproximação de funções, predição de séries temporais e até mesmo emulação de atividades humanas. Sua aplicabilidade em reconhecimento e classificação de padrões é muito relevante. Graças a tal aplicabilidade, hoje há um imenso esforço no desenvolvimento de sistemas de reconhecimento, como sistemas de reconhecimento de voz e sistemas capazes de reconhecer faces. Além do mais, é possível o uso de redes neurais artificiais para implementação de sistemas para auxílio de diagnóstico médicos, classificação de lixo eletrônico (spam) e a emulação de sentido humanos (visão, olfato, paladar, audição, etc.). Do que foi exposto pelo trabalho, é concluído que existem diversos modelos de redes neurais artificiais capazes executar classificações de padrões, sendo o modelo mais simples existente é o perceptron de única camada proposto por Rosenblatt em 1958. Entretanto, o uso de uma ou mais camadas de neurônios faz-se necessário para a classificação de padrões que não são linearmente separados. Há também a possibilidade de criar sistemas baseados em múltiplas redes neurais denominados máquinas de comitê, onde as redes treinadas de forma organizada e agrupadas para a obtenção de uma classificação única e apurada. A análise comparativa apresentada pelo trabalho possível o entendimento da diferença entre os algoritmos apresentados, assim como demonstrar de uma forma prática a aplicabilidade de redes neurais artificiais para a classificação e reconhecimento de padrões. A hipótese proposta do trabalho não foi comprovada, mas foi identificado um melhor algoritmo para realização a classificação dos padrões utilizados na análise. Contudo, o trabalho se restringiu a uma amostra reduzida de redes neurais e isso torna difícil a generalização dos resultado. Em à futuras pesquisas, é recomendado o estudos de outros modelos de redes neurais não abordados no trabalho, como redes neurais de função de base radial, redes neurais probabilisticas, free associative neurons, entre outros.

49 5

REFERÊNCIAS

AQUINO, Francisco Wagner Costa. Estratégias para Previsão de Séries Temporais com Clusterização de Dados, Análise Independente e Seleção Automática de Previsores. 2011. 81 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Universidade Estatudal do Ceará, Fortaleza, 2011. Disponível em: . Acesso em: 1 maio 2015. BARROS, Aidil Jesus da Silveira; LEHFELD, Neide Aparecida de Souza. Fundamentos de Metodologia Científica. 3. ed. São Paulo: Pearson Prentice Hall, 2007. BISHOP, Christopher M.. Neural Networks for Pattern Recognition. Oxford: Claredon Press, 1995. BLAKE, C. L.; MERZ, C. J. UCI Repository of machine learning databases, Irvine, CA: University of California, Department of Information and Computer Science, 1998. Disponível em: . Acesso em: 27 mar. 2015. BRAGA, Antônio de Pádua; CARVALHO, André Ponce de Leon F. de; LUDERMIR, Teresa Bernarda. Redes Neurais Artificiais: Teoria e Aplicacoes. 1. ed. Rio de Janeiro: Ltc, 2000. CERVO, Amado L.; BERVIAN, Pedro A.; DA SILVA, Roberto. Metodologia científica. 6 ed. São Paulo: Pearson Prentice Hall, 2007. FLICK, Uwe. Introdução à Metodologia de Pesquisa: Um Guia Para Iniciantes. 1 ed. Santana: Penso Editora Ltda, 2012. FILHO, Sérgio Roberto de Lima e Silva. Autenticação Contínua pela Dinâmica da Digitação Usando Máquinas de Comitê. 2005. 106 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Universidade Federal de Santa Catarina, Florianópolis, 2005. Disponível em: . Acesso em: 28 abr. 2015. HAGAN, Martin T. et al. Neural Network Design. 2. ed. [s.l]: Martin Hagan, 2014. HAYKIN, Simon. Redes Neurais: Princípios e Práticas. 2. ed. Porto Alegre: Bookman, 2001.

50 KOVÁCS, Zsolt L.. Redes Neurais Artificiais: Fundamentos e Aplicações. 4 ed. São Paulo: Livraria da Física, 2006. LORENZI, Alexandre. Aplicação de Redes Neurais Artificiais para Estimativa da Resistencia à Compressão do Concreto a partir da Velocidade de Propagação de Pulso Ultra-Sônico. 2009. 215 f. Tese (Doutorado) - Curso de Engenharia Civil, Universidade Federal do Rio Grande do Sul, Porto Alegre, 2009. Disponível em: . Acesso em: 2 maio 2015. MASCARENHAS, Sidnei A.. Metodologia Científica. 1 ed. São Paulo: Pearson Education do Brasil, 2012. PRIDDY, Kevin L.; KELLER, Paul E. Artificial Neural Networks: An Introduction 1 ed. Bellingham: SPIE Publications, 2005. SADAVA, David et al. Vida: A Ciência da Biologia. 8. ed. Santana: Artmed, 2009. 2 v. SANTOS, Antonio Raimundo dos. Metodologia científica: a construção do conhecimento. 5.ed. Rio de Janeiro: DP&A, 2002. SILVA, Leandro Nunes de Castro. Análise e Síntese de Estratégias de Aprendizado para Redes Neurais Artificiais. 1998. 248 f. Dissertação (Mestrado) - Curso de Engenharia Elétrica, Universidade Estadual de Campinas, Campinas, 1998. Disponível em: . Acesso em: 1 maio 2015. SKAPURA, David M.. Building Neural Networks. 1. ed. Bellingham: AddisonWesley Professional, 1995. STANFIELD, Cindy L.. Fisiologia Humana. 5. ed. São Paulo: Pearson Education do Brasil, 2013. THEODORIDIS, Sergios; KOUTROUMBAS, Konstantinos. Pattern Recognition. 4. ed. [s.l.]: Academic Press, 2008.

51

APÊNDICES

52 Apêndice A - Arquivo de parâmetro utilizados para todas redes neurais 1

from synapyse.base.learning.training_set import TrainingSet

2 3

__author__ = ’Douglas Eric Fonseca Rodrigues’

4 5

# Configuracoes gerais

6

numero_entradas = 4

7

numeros_neuronios_camada_oculta = [1, 3, 5, 7]

8

numero_saidas = 2

9

numero_classificadores = 10

10

numero_maximo_epocas = 10

11

numero_maximo_rodadas = 100

12

taxas_aprendizado = [0.01, 0.1, 0.3, 0.5, 0.7, 0.9]

13

erro_maximo = 0

14 15

possiveis_classificacoes = [[–1, –1], [–1, 1], [1, –1]]

16 17

# Importa os dados para treinamento

18

dados_treinamento = TrainingSet(input_count=numero_entradas, output_count=numero_saidas) \

19 20

.import_from_file(’iris_training.data’)

21 22

# Importa os dados para teste

23

dados_teste = TrainingSet(input_count=numero_entradas,

24

output_count=numero_saidas) \

25

.import_from_file(’iris_testing.data’)

53 Apêndice B - Códigos Fonte para Obtenção de Dados da Tabela 3 1

from copy import deepcopy

2 3

from synapyse.impl.activation_functions.step import Step

4

from synapyse.impl.learning.least_mean_square import LeastMeanSquare

5

from synapyse.impl.perceptron import Perceptron

6

from tcc.iris_common import ∗

7 8 9

__author__ = ’Douglas Eric Fonseca Rodrigues’

10 11

for taxa_aprendizado in taxas_aprendizado:

12 13

melhor_erro_rede = None

14

melhor_classificador = None

15 16

for rodada in range(numero_maximo_rodadas):

17 18

# Cria a rede neural artificial

19

rede_neural = Perceptron(input_count=numero_entradas,

20

output_count=numero_saidas,

21

activation_function=Step(1, –1)) \

22

.randomize_weights()

23 24

# Cria o algoritmo de aprendizado

25

aprendizado = LeastMeanSquare(neural_network=rede_neural,

26

learning_rate=taxa_aprendizado,

27

max_error=erro_maximo,

28

max_iterations=1)

29 30 31

for i in range(numero_maximo_epocas): erro_rede = aprendizado.learn(dados_treinamento).total_network_error

32 33

if melhor_erro_rede is None or erro_rede < melhor_erro_rede:

34

melhor_erro_rede = erro_rede

35

melhor_classificador = deepcopy(rede_neural)

36

if melhor_erro_rede == 0:

37 38 39

break

54

40

# Testa o aprendizado

41

classificacoes_corretas = 0

42

classificacoes_incorretas = 0

43

classificacoes_descartadas = 0

44 45 46

for dado in dados_teste: saida = melhor_classificador \

47

.set_input(dado.input_pattern) \

48

.compute() \

49

.output

50 51

# Verifica a classificacao

52

if saida == dado.ideal_output:

53 54 55 56 57

classificacoes_corretas += 1 elif saida in possiveis_classificacoes: classificacoes_incorretas += 1 else: classificacoes_descartadas += 1

58 59

print(’Taxa de aprendizado:’, taxa_aprendizado)

60

print(’Classificacoes corretas:’, classificacoes_corretas,

61 62

(100 / len(dados_teste)) ∗ classificacoes_corretas) print(’Classificacoes incorretas:’, classificacoes_incorretas,

63

(100 / len(dados_teste)) ∗ classificacoes_incorretas)

64

print(’Classificacoes descartadas:’, classificacoes_descartadas,

65

(100 / len(dados_teste)) ∗ classificacoes_descartadas)

55 Apêndice C - Códigos Fonte para Obtenção de Dados da Tabela 4 1

from copy import deepcopy

2 3

from synapyse.impl.activation_functions.tanh import Tanh

4

from synapyse.impl.learning.back_propagation import BackPropagation

5

from synapyse.impl.multi_layer_perceptron import MultiLayerPerceptron

6

from tcc.iris_common import ∗

7 8 9

__author__ = ’Douglas Eric Fonseca Rodrigues’

10 11 12

for numero_neuronios_camada_oculta in numeros_neuronios_camada_oculta: for taxa_aprendizado in taxas_aprendizado:

13 14

melhor_erro_rede = None

15

melhor_classificador = None

16 17

for rodada in range(numero_maximo_rodadas):

18 19

# Cria a rede neural artificial

20

rede_neural = MultiLayerPerceptron() \

21

.create_layer(neuron_count=numero_entradas) \

22

.create_layer(neuron_count=numero_neuronios_camada_oculta,

23 24 25 26

activation_function=Tanh(1.0)) \ .create_layer(neuron_count=numero_saidas, activation_function=Tanh(1.0)) \ .randomize_weights()

27 28

# Cria o algoritmo de aprendizado

29

aprendizado = BackPropagation(neural_network=rede_neural,

30

learning_rate=taxa_aprendizado,

31

max_error=0.01,

32

max_iterations=1)

33 34

# Inicia o aprendizado

35

for i in range(numero_maximo_epocas):

36

erro_rede = aprendizado.learn(dados_treinamento).total_network_error

37 38 39

if melhor_erro_rede is None or erro_rede < melhor_erro_rede: melhor_erro_rede = erro_rede

56

40

melhor_classificador = deepcopy(rede_neural)

41

if melhor_erro_rede == 0: break

42 43 44

# Testa o aprendizado

45

classificacoes_corretas = 0

46

classificacoes_incorretas = 0

47

classificacoes_descartadas = 0

48 49 50

for dado in dados_teste: saida = melhor_classificador.set_input(dado.input_pattern) \

51

.compute() \

52

.output

53 54

# Ajusta output para verificacao do resultado

55

for i in range(len(saida)):

56

if saida[i] > 0: saida[i] = 1

57 58

elif saida[i] < 0: saida[i] = –1

59 60

else: saida[i] = None

61 62 63

# Verifica a classificacao

64

if saida == dado.ideal_output:

65 66 67 68 69

classificacoes_corretas += 1 elif saida in possiveis_classificacoes: classificacoes_incorretas += 1 else: classificacoes_descartadas += 1

70 71

print(’Taxa de aprendizado:’, taxa_aprendizado)

72

print(’Numero de neuronios na camada oculta:’, numero_neuronios_camada_oculta)

73

print(’Classificacoes corretas:’, classificacoes_corretas,

74 75

(100 / len(dados_teste)) ∗ classificacoes_corretas) print(’Classificacoes incorretas:’, classificacoes_incorretas,

76

(100 / len(dados_teste)) ∗ classificacoes_incorretas)

77

print(’Classificacoes descartadas:’, classificacoes_descartadas,

78

(100 / len(dados_teste)) ∗ classificacoes_descartadas)

57 Apêndice D - Códigos Fonte para Obtenção de Dados da Tabela 5 1

from copy import deepcopy

2

from random import random

3

from synapyse.impl.activation_functions.step import Step

4

from synapyse.impl.learning.least_mean_square import LeastMeanSquare

5

from synapyse.impl.perceptron import Perceptron

6

from tcc.iris_common import ∗

7 8

__author__ = ’Douglas Eric Fonseca Rodrigues’

9 10 11 12 13

def main(): for taxa_aprendizado in [0.01, 0.1, 0.3, 0.5, 0.7, 0.9]: classificadores = []

14 15 16

for i in range(numero_classificadores): classificadores.append(Perceptron(input_count=numero_entradas,

17

output_count=numero_saidas,

18

activation_function=Step(1, –1)) .randomize_weights())

19 20 21

# Treinamento

22

melhor_quantidade_erros = len(dados_treinamento) + 1

23 24

for i in range(numero_maximo_rodadas):

25 26

copia_dados_treinamento = deepcopy(dados_treinamento)

27 28

for j in range(numero_classificadores):

29 30

classificadores[j].randomize_weights()

31 32

# Treina a rede

33

melhor_erro_rede = None

34

melhor_classificador = None

35 36

copia_dados_treinamento.shuffle()

37 38 39

for i in range(numero_maximo_epocas):

58

40

erro_rede = LeastMeanSquare(neural_network=classificadores[j],

41

learning_rate=taxa_aprendizado,

42

max_error=erro_maximo,

43

max_iterations=1).learn( copia_dados_treinamento).total_network_error

44 45 46

if melhor_erro_rede is None or erro_rede < melhor_erro_rede:

47

melhor_erro_rede = erro_rede

48

melhor_classificador = deepcopy(classificadores[j])

49

if melhor_erro_rede == 0:

50

break

51 52 53

classificadores[j] = melhor_classificador

54 55

# Obtem o proximo conjunto de dados

56

proximo_conjunto_dados = TrainingSet(input_count=numero_entradas, output_count=numero_saidas)

57 58 59

for dado in dados_treinamento:

60 61

resposta_obtida = classificadores[j] \

62

.set_input(dado.input_pattern) \

63

.compute() \

64

.output

65 66

if resposta_obtida != dado.ideal_output or random() < 0.2: proximo_conjunto_dados.append(input_pattern=dado.input_pattern,

67

ideal_output=dado.ideal_output)

68 69 70

copia_dados_treinamento = proximo_conjunto_dados

71 72

numero_erros = contar_numero_erros(classificadores, dados_treinamento)

73

if numero_erros < melhor_quantidade_erros:

74

melhor_quantidade_erros = numero_erros

75

melhores_classificadores = deepcopy(classificadores)

76 77 78

if numero_erros len(classificadores) / 2 else –1 for voto in votos]

136 137 138 139

if __name__ == "__main__": main()

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.