Você está na página 1de 10

Desenvolvimento de Redes Neurais Artificiais usando Adaline de camada única para reconhecimento de padrões alfanuméricos

Bruno Queiroz Pinto 1 , Keiji Yamanaka 2 bruno.queiroz@iftm.edu.br, keiji@ufu.br

  • 1 Instituto Federal do Triângulo Mineiro 2 Universidade Federal de Uberlândia

Resumo A identificação de padrões é utilizada para resolver problemas diversos, deste o reconhecimento da face de uma pessoa até a digitalização de textos manuscritos. Redes neurais artificiais (RNA) é um método utilizado para solucionar tais problemas. Tal método simula o funcionamento do cérebro humano, baseando-se em suas estruturas para criar modelos computacionais capazes de aprender através da repetição de sua execução, adequando repetidamente o seu estado e comportamento. Este trabalho propõe uma aplicação para o reconhecimento de caracteres alfanuméricos, a sua implementação é baseada na utilização da técnica de redes neurais Adaline usando como método de treinamento supervisionado a regra Delta.

Palavras-Chave Redes Neurais Artificiais, Adaline, Regra Delta, reconhecimento de padrões.

Abstract - Recognition of patterns is used to solve various problems, for example: face identification, object recognition and character recognition. Artificial neural networks are a method for solutions of such problems. This method simulates the human brain, based on their structures to create computer models capable of learning by repetition of its execution, repeatedly adjusting their status and behavior. This paper proposes an application of neural networks, capable of identifying alphanumeric characters, this project uses the technique Adaline (Adaptive Linear Neuron or

later Adaptive Linear Element) with the Delta rule as a method of supervised training.

Keywords Artificial Neural Networks, Adaline, Delta Rule, Recognition of Patterns.

1. Introdução

O cérebro humano apresenta uma grande capacidade de reconhecer padrões, permitindo ao ser humano resolver problemas complexos naturalmente. Deste o nascimento, o cérebro humano está em constante evolução, armazenando uma quantidade exorbitante de informações. Tais informações são comparadas e combinadas para a identificação de padrões. Tal característica permite ao ser humano ser fortemente adaptativo, capacitando-o a resolver problemas novos de um modo bem eficiente. É muito comum que uma pessoa associe eventos, coisas, outras pessoas e objetos diversos quando se defronta com uma nova situação. Neste momento, o seu cérebro estabelece diversos padrões, sobre aquela situação, vinculando com acontecimentos já vivenciados. Seres humanos realizam estes processos com muita facilidade. Entretanto, programar computadores para realizar tais atividades não é uma tarefa trivial. Apesar de

todo avanço na área da computação, ainda não existe nenhuma tecnologia de inteligência artificial capaz de igualar a capacidade de reconhecimento do cérebro humano [2,4]. A identificação automática de padrões (objetos, voz, assinaturas, imagens, números, etc) sempre foi considerada uma tarefa difícil para ser solucionada computacionalmente. Entretanto, diversos avanços na área da computação permitiram facilitar este trabalho. Tecnologias baseadas em abordagem estatística, abordagem sintática, abordagem neuronal e abordagem difusa são capazes de resolver este problema [3, 7]. A abordagem neuronal, mais conhecida como Redes Neurais Artificiais, tem sido muito utilizada, sendo um dos métodos de Inteligência Artificial que mais evoluíram recentemente. Neste trabalho, a rede neural desenvolvida será baseada na técnica Adaline de camada única com a treinamento supervisionado baseado na regra Delta. Esta aplicação terá como finalidade o reconhecimento de caracteres alfanuméricos baseado na entrada vetorizada do mesmo.

2. Rede Neural Artificial

É uma tecnologia multidisciplinar, fundamentada em áreas diversas, tais como:

neurociência, matemática, estatística, física, ciência da computação e engenharia. Suas aplicações são encontradas em diversas áreas:

reconhecimento de padrões, percepção do ambiente, análise de séries temporais, processamento de sinais e controle, entre outras

[4].

O desenvolvimento desta área se baseia no reconhecimento que o cérebro humano processa informações de uma forma totalmente diferente de um computador convencional. O

seu funcionamento permite processar informações de um modo muito mais eficiente e ágil, tal tarefa é realizada pelos neurônios que são os elementos principais de sua estrutura. Uma rede neural artificial é uma maquina projetada a partir da modelagem matemática do funcionamento do cérebro na solução de um problema especifico. A rede é normalmente implementada utilizando-se componentes eletrônicos ou é simulada por programação em um computador digital [1, 4]. A rede neural artificial é uma estrutura distribuída paralelamente na forma de um grafo direcionado, no qual os nós são unidades básicas de processamento, similares aos neurônios de um cérebro humano. As arestas são as conexões que ligam e transmitem informações entre esses nós [4, 7]. Tais neurônios artificiais podem ser representados pelo modelo não linear apresentado na figura 1, os seus componentes são os seguintes:

Bias

B Função k X1 W Ativaçã 1 o F(. Sinais Y V k X2 W k
B
Função
k
X1
W
Ativaçã
1
o F(.
Sinais
Y
V
k
X2
W
k
)
de
2
:
Junçã
Entrada
o
:
aditiv
X
a
W
m
km

Fig. 1: Modelo não linear de um neurônio Artificial (fonte = [4])

Os dendritos são representados por entradas (x n ), que fornece os valores iniciais ou recebem os estímulos transmitidos de outros neurônios;

O elemento principal do neurônio é o somador, que tem a função de somar todos os sinais de entrada, produzindo o resultado (v k ).

  • m foi

desenvolvida

pelo

professor

Bernard

v k =

j=1

w kj x j +b k

Widrow e por Ted Hoff na universidade de Stanford em 1960. Ela introduziu a

A

função

de

ativação

(f(.))

é

responsável em restringir a amplitude

de saída de um neurônio. A saída (y k )

similar ao axônio, que possui

como

característica fornecer

a

resposta

ao

sistema ou transmitir os estímulos para

outros neurônios.

 

Neste

modelo

é

possível

identificar

possibilidade de ajustar os pesos de acordo com o resultado produzido pelo neurônio.

Anteriormente

as

técnicas,

como

Perceptron,

ajustavam

os

pesos

sem

considerar

o

valor

produzido pela saída do neurônio, esta saída

apenas

indicava a necessidade ou não

deste

ajuste.

A

simplicidade deste modelo

acabou

restringindo-o

a

comunidade

acadêmica,

outro elemento, o Bias B k , que tem o efeito de ajustar a entrada líquida da função de ativação. As principais funções de ativações propostas são: Função limiar, função limiar por partes e função sigmóide [4]. Este modelo de neurônio é conhecido como McCulloch-Pitts. Quando a função selecionada é a função limiar é produzido saídas com valores 1 ou 0, dependendo do resultado da função de ativação:

 
 

1

se v

0

() =

f v

 

0

se v <

0

 

A

técnica

Perceptron

introduziu o

conceito de aprendizado supervisionado, onde o treinamento da rede é feito diversas vezes, permitindo que a rede aprender a identificar o padrão. Para isto utiliza-se uma taxa de aprendizagem (h) para ajustar os pesos existentes nas conexões dos neurônios. O valor de h deve estar entre 0 e 1 e define a capacidade de abstração da rede [3].

3. Adaline

Adaline (Adaptive Linear Neuron) é uma rede neural de camada única. Esta técnica

entretanto se mostrou fundamental, pois definiu um dos princípios de treinamentos mais poderosos, conhecido como Regra Delta, que posteriormente foi utilizada para elaboração de redes neurais mais avançadas [5, 7]. A grande inovação desta técnica foi à

adoção da regra delta para realizar o

treinamento

supervisionado.

Ela

permite

a

generalização

do modelo perceptron

para

entradas e saídas continuas. O seu principal é ajustar os pesos de modo a minimizar a

diferença entre a saída desejada e a saída obtida pela rede, considerando todos os padrões de

entrada.

Esta

diferença

entre

as

saídas

é

nomeada como Erro Quadratico, representada

pela regra:

p

=

1

2

(

t

p

y

p

)

2

.

Onde:

E p :

Erro

Quadrático

para

o

padrão de entrada P. t p : Saída esperada. y p : Saída gerada pela rede

neural. A regra delta propõe ajustar os pesos W ki (P) proporcional ao negativo da Derivada do erro em relação a cada padrão de entrada P para o neurônio K. De acordo com a regra delta, o

ajuste

Δw i (P)

é

definido

por,

w

ki

(P)

=

h*

k

(P)*

x

i

(P)

, onde:

w(P):

-

valor

de

ajuste

a

ser

acrescido

ao

peso

w ki

baseado

nas

entradas do padrão P; h - taxa de aprendizado;

k

(P )

-

valor

do

erro

identificado

para o neurônio K baseado nas entradas do padrão P, dado pela formula:

t

P

k

y

P

k

,

onde

t

e

y

são,

respectivamente, a saída esperada e a saída encontrada do neurônio P;

x i (n) - valor do estímulo i presente no padrão P.

tecnologia de redes neurais artificiais Adaline

que tem por objetivo reconhecer padrões alfanuméricos (números, caracteres alfabéticos maiúsculos e minúsculos).

o desenvolvimento NetBeans 6.9 para o desenvolvimento da solução em Java. Nesta nova versão foram desenvolvidos dois módulos:

Foi

utilizado

ambiente

de

ModRN:

projetadas

neural;

ModGUI:

que

contém

as

classes

para

programar

a

rede

contém

as

interfaces

gráficas necessárias para propiciar a interação com o usuário do sistema.

Este módulo utiliza-se do módulo ModRN para resolver os problemas.

Esta técnica continua o treinamento até a rede ter uma taxa de erro adequada ou uma quantidade de ciclos de aprendizado definido. Esta taxa de erros é conhecida como Erro quadrático total que é dado pela formula:

4.1 Módulo ModRN

Este módulo foi proposto com o intuito de facilitar o reaproveitamento de código, em futuros desenvolvimentos. A figura 3 apresenta a sua estrutura, que é composto por 8 classes,

E

total

=

P

E

P

, onde :

E

P

=

1

2

(

t

P
P

y

P

)

  • 2 neste trabalho são utilizado:

.

4. Desenvolvimento da Aplicação

O desenvolvimento desta aplicação utiliza de técnicas de desenvolvimento interativo, no qual a cada nova versão da aplicação novas funcionalidades são inseridas. Esta nova versão entende as funcionalidades desenvolvidas anteriormente, que implementavam uma solução do problema de reconhecimento de padrões numéricos, utilizando a técnica Perceptron[6]. Esta nova versão foi feita utilizando a linguagem de programação Java e utilizou a

Entrada: responsável em representar as diversas entradas de um neurônio.

Sinapse: que representa as conexões entre uma entrada e um neurônio, bem como o peso da mesma. Contém os algoritmos responsáveis em atualizar os pesos.

Regra

Delta:

Implementa

a

função

delta.

Neuronio: Esta classe se relaciona com n objetos da classe Sinapse e com um objeto da classe FunçãoLimiar. Através desta relação, ela gerencia o

processo de Ativação e Treinamento de um neurônio da rede.

RedeNeural: É

a classe

principal,

contém

toda

lista

a

de

neurônios

existentes,

bem como

o conjunto

de

entradas e

Este

módulo

propicia

a

interface

gráfica necessária para a utilização da aplicação.

saídas

Fig. 4.: Interface Principal da aplicação.

fornecidas. Implementa os algoritmos responsáveis em gerir todo o treinamento e execução da rede. Estes algoritmos utilizam de objetos da classe Neuronio para realizar tal função.

RedeNeuralAdaline:

Esta

classe

especializa a classe RedeNeural, capacitando à resolver problemas utilizando a regra delta com estratégia de aprendizado.

processo de Ativação e Treinamento de um neurônio da rede. ∑ RedeNeural : É a classe

Figura 3: Diagrama de Classes do ModRN.

4.3 Módulo ModGUI

Ele é composto por uma classe principal que

propicia

um

ambiente

de

desktop.

Neste

ambiente é

possível

executar

duas

funcionalidades:

 

Atividade

3:

reconhecimento

de

padrões numéricos utilizando a técnica Perceptron.

Atividade

4:

reconhecimento

de

padrões alfanuméricos, nesta funcionalidade foi disponibilizado a oportunidade de selecionar a técnica de resolução de problema: Perceptron ou Adaline.

O

objetivo

deste

trabalho

foi

desenvolver a identificação de caracteres alfanuméricos utilizando a técnica Adaline, foi definido dois padrões de entradas diferentes. O primeiro propicia a identificação de caracteres alfanuméricos com vetorização máxima de 10x10. E a versão mais completa propicia uma vetorização máxima de 35x35, gerando uma matriz contendo 1225 elementos.

A

versão

permite

uma

melhor

interatividade, capacitando ao usuário à manipulação dos números fornecidos pelo simples movimento do mouse.

A figura

4 apresenta

a interface

da

aplicação, é possível destacar os seguintes

elementos nesta interface:

Painel de Entrada: Permite ao usuário selecionar em uma lista os caracteres alfanuméricos com formato padrão. Quando um número é selecionado a sua representação em um vetor é apresentada no quadro ao lado.

Resultado da Execução: permite ao usuário visualizar o resultado da execução da rede e também outras informações de configuração que acontecem durante o treinamento.

Formato

da

vetorização:

Neste

painel, o usuário

pode selecionar o

formato desejado para a sua vetorização. Caso seja selecionado o formato 10x10, será gerado uma

matriz

de

10

linhas

e

10

colunas,

totalizando 100 entradas para a rede.

Já o formato 35x35, gera uma entrada de 1225 elementos, permitindo a

representação

de números

parecidos

com aqueles redigidos manualmente.

Número: O painel no qual o número que está sendo tratado é representado, ele é configurado dinamicamente segundo a configuração fornecida. O usuário pode interagir no mesmo através do movimento do mouse. Assim o usuário tem uma opção eficiente para criar novos padrões dos números para testar a rede.

Aba Gráficos: Apresenta gráficos que representam o comportamento da rede durante o seu treinamento. Mostram O erro total identificado ou os erros de cada neurônio existente.

Aba Config: Neste painel o usuário poderá entrar com informações sobre a taxa de aprendizado, sobre a

quantidade ciclos e taxa máxima de rede. Também é disponibilizada uma

funcionalidade reinicialização dados.

dos

Os

dados

de

entrada

padrões

se

encontram em arquivos de texto e são

carregados quando preciso.

São

disponibilizado

6

botões

ao

usuário, dentre eles é possível destacar os

botões (treinar, aprender e executar).

O

botão

treinar

é

responsável

em

fazer o treinamento inicial da rede, utilizando dados armazenados em uma classe como entrada e executando enquanto a rede não aprender ou até alcançar a quantidade de tentativas definidas pelo usuário. O treinamento seleciona uma entrada diferente dependendo da configuração selecionada (4x5, 10x10 ou

35x35).

Já o botão aprender é responsável em capturar no painel do número a matriz correspondente ao número fornecido pelo usuário, com este novo padrão, a entrada é atualizada e a rede novamente treinada. Quando esta função é ativada, a aplicação pergunta ao usuário o número correspondente (0 a 9). Por fim, o botão executar permite testar a rede, verificando se a mesma é capaz de identificar o número presente no painel Número.

5.3

Verificações

dos

padrões

Numéricos.

 

Nos dois primeiros experimentos serão mostrados os seguintes pontos:

Após este treinamento, foi realizado testes, que geraram os seguintes resultados:

O padrão 2, A e z foram reconhecidos e geraram os seguintes resultados na

5.3 Verificações dos padrões Numéricos. Nos dois primeiros experimentos serão mostrados os seguintes pontos: Após este

Fig. 5: Quantidade de Erros por ciclo.

erros identificados durante o

treinamento da rede;

 

quantidade

de

ciclos

necessários para o treinamento.

o resultado do reconhecimento

da rede;

Nos dois experimentos serão utilizados configuração 10x10, que permite vetorizar o número em 10 linhas por 10 colunas. Em todos os experimentos foram modificados os padrões de entrada.

Experimento 01:

 
 

Neste

experimento

 

a

taxa

de

aprendizagem

foi

de

0.01,

a

taxa

de

erros

máximo foi

de

1

e a quantidade máxima de

ciclos

foi

de

1000.

O treinamento gastou 78

ciclos

para

conseguir

ensinar

a

rede,

consumindo 0.73 segundos. A última taxa de

erros

identificada

foi

de

0.9820.

O

gráfico

apresentado na figura 5 demonstra a evolução

da

rede

quando

a

quantidade

de

erros

apresentada.

 

execução da rede:

 

o

2 : 1.001697300186168

 

o

A : 0.9982935438124816

o

z : 1.0012707027417116

O padrão

A

com

mudança

de

19

entradas, apresentados

na

figura

6,

também reconheceu o caractere A e

apresentou resultado da rede igual a

0.047998781599246546.

Ou

seja,

a

rede conseguiu generalizar bastante a

resposta.

5.3 Verificações dos padrões Numéricos. Nos dois primeiros experimentos serão mostrados os seguintes pontos: Após este

Fig. 6: Caractere A modificado para teste.

Ao

para aproximar do número F, gerando

as

a

modificar

entradas

imagem apresentada na figura 7, a rede

ainda reconheceu como padrão o caractere A;

Fig. 7: Caractere A modificado, aproximando-se do caractere F.

Estas modificações geraram as saídas:

 

o

A : 0.07501626406083356

 

o

F : 0.044344784303051915

Observa-se

uma

aproximação

dos

resultados dos dois caracteres. Alterando mais duas entradas, como mostrado na figura 8, a rede identifica

o caractere F, através dos resultados:

o

F : 0.2336049572164998

o

A : -0.03458435293062081

Fig. 7: Caractere A modificado, aproximando-se do caractere F . ∑ Estas modificações geraram as saídas:

Fig. 8: Caractere A modificado, no qual a rede identificou o caractere F.

Experimento 02:

Neste experimento será fornecida uma nova entrada que corresponde ao padrão de entrada m, apresentado pela figura 9.

Fig. 7: Caractere A modificado, aproximando-se do caractere F . ∑ Estas modificações geraram as saídas:

Fig. 9: Nova entrada para o caractere m. A rede não consegue identificar o novo padrão para o caractere m. Então a rede é

novamente treinada inserindo este novo padrão. Este novo treinamento produz os dados: 80

ciclos, 0.92 segundos e último erro igual à

0.9718051125482026.

O padrão apresentado pela figura 9 foi

novamente apresentado e a rede identificou, retornando o resultado 0.9996902827201839. Foram alterado 9 entradas, gerando a imagem apresentada na figura 10. A rede

identificou o caractere m, com resultado igual a

0.07272775352050626.

Fig. 7: Caractere A modificado, aproximando-se do caractere F . ∑ Estas modificações geraram as saídas:

Fig. 10: Caractere m modificado. Experimento 3:

Neste

experimento,

foi

fornecido

6

novos padrões para analise e treinamento, os dois primeiros necessitaram de novos treinamentos, entretanto os últimos foram reconhecidos pela rede, esta capacidade foi possível pela inserção dos dois novos padrões para a letra. Resultado da execução de cada novo padrão:

Primeira Entrada:

 

Treinamento

m:

80

ciclos

com

erro

de

0.9715086163712909

 

Segunda Entrada:

 

Treinamento

m:

82

ciclos

com

erro

de

0.9928586677416005

 

Terceira Entrada:

 

Identificou

 

Resultado = 0.09433473184579745

Quarta Entrada:

avançadas,

como

Kononen,

e

também

Identificou

paralelizar o processamento para cada neurônio

Resultado = 0.23633046177014916

e também otimizar a entrada dos dados,

Quinta Entrada:

movendo-a para um local padrão.

Identificou

Resultado = 0.3630745227473232

Sexta Entrada:

 

Identificou

Resultado = 0.08310224556675395

5. Considerações finais

O aplicativo desenvolvido facilitou a identificação de um padrão de caracteres alfanuméricos, algo que é difícil na computação tradicional. A rede neural Adaline desenvolvida apresentou uma grande capacidade de abstração, permitindo identificar caracteres com padrões de entrada parecidos. Nos casos no qual a rede não identificou uma entrada, foi realizado um novo treinamento para capacitar a rede. Após este novo ciclo de treinamento a aplicação conseguiu identificar os números fornecidos. Nos experimentos apresentados, considerando caracteres alfanuméricos vetorizados em grades de 10x10, há um grande conjunto de entradas possíveis para cada caractere, quando mais entradas forem inseridas para o treinamento, mais eficiente a rede será, entretanto o treinamento será computacionalmente mais custoso.

Nesta aplicação foi desenvolvido o procedimento de re-treinamento da rede, permitindo ao usuário, treinar a rede quando perceber que ela identificou um número errado ou não identificou o mesmo. Entretanto, mesmo sem a aplicação deste re-treinamento, a rede apresentou boa capacidade para identificar padrões. Como trabalho futuro é proposto adequação da rede para técnicas mais

6. Referências

[1]

CASTRO,

A.

A.

M;

Prado

P.

P.

L.;

Algoritmos para reconhecimento de padrões,

Revista

de

Ciência

Exatas,

5ed,

volume:

8

p.p:129-145; 2002

 

[2] CORREA, Wilson R., PORTUGAL, Marcelo S. Previsão de Séries de Tempo na presença de mudança estrutural: redes neurais artificiais e modelos estruturais. In XVIII International Symposium on Forecasting. Edinburgh – Escócia, 1997.

[3] FAUSETT, Laurence. Fundamentals of Neural Network – Architecturals, algorithms

anda Applications. Prentice-Hall, Englewood Cliffs, New Jersey, 461 p, 1994.

[4] HAYKIN, Simon. Redes neurais: princípios e prática. Tradução de Paulo Martins Engel. 2ª ed. Porto Alegre: Bookman, 2001.

[5] KOVACS, Z. Redes Neurais Artificiais:

Fundamentos e aplicações. 4 ª ed. São Paulo:

Livraria da Física, 2002.

[6] PINTO, Bruno. Q.; YAMANAKA, Keiji. Desenvolvimento de Redes Neurais Artificiais usando Perceptron de camada única para reconhecimento de padrões numéricos.

Apresentado na disciplina de Redes Neurais,

Departamento

de

Engenharia

Elétrica,

UFU,

Uberlândia, 2011.

 

[7] RAITTZ, Roberto Tadeu. Free associative neurons – fan uma abordagem para

reconhecimento

de

padrões.

Dissertação

de

Mestrado, Universidade Federal

de

Santa

Catarina, Departamento Produção, 1997.

de

Engenharia

de