Você está na página 1de 15

Redes Neurais Artificiais

Acássio Novais, Fabio Novais, Ramon Araújo, Thales Neves

Departamento de Ciência da Computação – Instituto de Matemática – Universidade


Federal da Bahia (UFBA) – Salvador – BA – Brasil
{acassio, faonovais, ramaraujogomes, thales.nevess}@gmail.com
Abstract. This paper presents the basic notions about the neural networks. The
most used types of neural networks will be approached and their behavior and
characteristics will be shown, besides their respective learning paradigms and
training algorithms. We also make a comparison between RNA’s and other
principal methods of AI, showing the advantages and disadvantages on using
each one of them.
Resumo. Este artigo apresenta as noções básicas sobre redes neurais. Serão
abordados os mais difundidos tipos de redes neurais, apresentando seu
funcionamento e suas características, além dos respectivos paradigmas de
aprendizado e algoritmos de treinamento. Será feita também uma comparação
entre RNA’s e outros dos principais métodos de IA, mostrando as vantagens e
desvantagens de cada um.

1. Introdução
O interesse pelo estudo e desenvolvimento da Inteligência Artificial tem crescido
bastante nos últimos anos. Assim, novos métodos de resolução de problemas visando
dar alguma forma de inteligência às máquinas têm surgido com grande freqüência.
Dentro deste contexto, as Redes Neurais Artificiais são um método de resolução de
problemas que pertence à vertente conexionista da IA, e se baseia no funcionamento do
cérebro humano para simular a inteligência do homem na máquina.
Este artigo busca cobrir os principais temas envolvidos no desenvolvimento de
redes neurais atualmente. Assim, são citadas as características das Redes Neurais que
impulsionam seus estudos e possibilitam a resolução de uma grande gama de problemas
com eficiência.
O artigo está dividido nas seguintes seções: a seção 2 contém os conceitos
iniciais e principais características que envolvem as redes neurais; a seção 3 fala de uma
importante etapa do projeto de redes neurais que é o treinamento e aprendizado da rede;
a seção 4 busca esmiuçar as características importantes das principais redes neurais
estudadas e desenvolvidas atualmente e está divida em subseções sobre o perceptron de
única camada, de múltiplas camadas, as redes de Kohonen e as redes de Hopfield; a
seção 5 faz uma comparação do método de redes neurais com outros métodos da IA; por
fim, a seção 6 apresenta uma conclusão sobre os temas estudados.

2. Principais Conceitos e Características


As Redes Neurais Artificiais fazem parte de uma teoria da área da Inteligência
Artificial, que tem como objetivo simular o comportamento do cérebro humano para a
resolução de problemas. Desta forma, a teoria das RNA’s busca dar a uma máquina
capacidades de pensamento inerentemente humanas através de uma mimetização da
estrutura e das operações do cérebro.
O desenvolvimento da teoria das redes neurais só foi possível graças aos grandes
avanços da área da neurobiologia. Com estes avanços, foi descoberto o neurônio,
considerado a unidade básica da estrutura cerebral, responsável por realizar operações
como reconhecimento de padrões e controle de movimento, por exemplo. Hoje, sabe-se
que é a forma como estes neurônios se encontram conectados e estruturados formando
uma densa rede de neurônios que determina como o ser humano processa determinadas
informações para realizar diversas tarefas.
Seguindo esta linha de raciocínio, as redes neurais artificiais possuem como
principal unidade de processamento o neurônio. Um neurônio é uma unidade de
processamento que recebe entradas através de suas conexões com outros neurônios,
associadas a pesos sinápticos, e produz uma saída que pode ser passada pra outros
neurônios da rede. Um modelo da estrutura básica de um neurônio pode ser visto na
figura 1.

Figura 1. O modelo de um neurônio [De Castro et al]


Neste modelo, é possível perceber que um neurônio recebe as entradas emitidas
por outros neurônios através de sinais representados por xi, que são combinados aos
pesos sinápticos associados a cada um, representados por w. Os pesos sinápticos,
diferentemente do que acontece no cérebro, podem assumir valores positivos ou
negativos. No local indicado como “Somador” ocorre um processamento com estas
entradas e é gerada uma saída. Esta saída passa por uma função de ativação, que limita a
faixa de amplitude de saída de um neurônio em um intervalo finito e define o valor que
realmente será passado para outros neurônios ou apresentado como sinal de saída.
O cálculo realizado pelos neurônios é uma soma ponderada dos sinais de entrada
associados com os pesos sinápticos de cada um. O valor representado na figura como
bias é chamado de polarização externa e tem o efeito de aumentar ou diminuir o valor
encontrado nesta soma, que será passado para a função de ativação.
Como já foi dito, a função de ativação determina qual valor o neurônio vai
realmente apresentar como sinal de saída. Segundo [De Castro et al], existem três tipos
diferentes de função de ativação: a função threshold, a função Piecewise-linear e a
Sigmóide.
A função threshold, também conhecida como função limiar, define um valor
limite e secciona o espaço de saída do neurônio em dois valores: 0 e 1. Assim, para
qualquer valor encontrado pela soma ponderada dos sinais de entrada e dos pesos
sinápticos, faz-se a comparação com o valor do threshold, e o sinal de saída
correspondente é 0, caso o valor seja menor que o threshold e 1, caso o contrário. Os
neurônios que possuem este tipo de função de ativação, portanto, só podem assumir dois
valores e também são conhecidos na literatura como neurônios de McCulloch-Pitts.
Já uma função de ativação do tipo Piecewise-linear, ou linear por partes, possui
um comportamento linear quando o valor retornado pela função soma estiver dentro do
intervalo [-0,5;0,5], mas retorna 1, caso a soma seja maior que 0,5 e 0, caso ela seja
menor que -0,5. Este tipo de comportamento pode ser expresso pela seguinte fórmula:

A função de ativação sigmóide, por sua vez, possui um balanço entre o


comportamento linear e o não linear. Seu gráfico se assemelha a uma curva em “S” e ela
é o tipo de função de ativação mais usada na construção de redes neurais artificiais. Um
exemplo deste tipo de função é a função logística. Nesta equação, existe um parâmetro a
que indica a declividade da curva sigmoidal e a sua variação gera curvas com
declividades diferentes.
Da mesma forma que o cérebro, as redes neurais artificiais são capazes de
aprender com exemplos e utilizar o conhecimento adquirido para melhorar seu
desempenho na realização de tarefas. O processo de aprendizagem, então, torna-se
essencial para a criação de uma rede neural que satisfaça ao propósito destinado. Este
processo consiste em um treinamento da rede onde, através da utilização de exemplos
que indicam de que forma a rede deve responder a determinados estímulos. Este
treinamento é, basicamente, um processo de ajuste dos pesos sinápticos da rede para que
eles determinem a resposta correta quando outros exemplos de problema forem
passados para a rede e existem muitos algoritmos para fazer isto. Assim, conclui-se que
o conhecimento da rede neural está armazenado nos pesos sinápticos dela.
Um outro conceito importante na teoria das redes neurais é o da topologia da
rede. A topologia da rede diz respeito à forma como os neurônios se comunicam e como
os sinais trafegam na rede. Os neurônios das redes neurais podem ser divididos em
camadas. Desta forma, deve haver no mínimo duas camadas: a de entrada, que recebe
estímulos externos do ambiente, e a de saída, que exibe os resultados finais da
computação da rede neural. Entre estas duas camadas podem existir várias outras, com
diferentes números de neurônios, representando a forma como os neurônios estão
estruturados.
Em relação ao tráfego dos pulsos, existem dois tipos de redes neurais: as redes
feedforward, onde não existe realimentação da rede e os sinais são sempre passados
para a camada seguinte e as redes recorrentes, onde existe realimentação nas entradas
dos neurônios. Atualmente, as redes mais utilizadas são as feedforward, em grande parte
graças à popularização do algoritmo de treinamento de backpropagation. [Vieira and
Roisenberg]
Assim, as redes neurais possuem diversas características que motivam seu
estudo e desenvolvimento. Dentre elas está justamente esta capacidade de aprendizado,
que permite que a rede aprenda com exemplos de estímulos do ambiente. Esta
forma de aprendizado da às RNA’s a capacidade de generalização. Esta capacidade
permite que a rede responda a eventos desconhecidos, mas que sejam similares a
eventos já apresentados a ela de uma forma satisfatória. Além disso, as redes neurais
são capazes de se adaptar a mudanças no ambiente e, por isto, são bastante usadas em
problemas onde o ambiente é dinâmico.
Além disso, outra característica importante das redes neurais está no fato de elas
poderem ser utilizadas tanto para fenômenos lineares quanto para fenômenos não
lineares. Isto acontece, pois os neurônios podem ser lineares ou não lineares, sendo
capazes de representar ambos os eventos. Vale ressaltar ainda, que as redes neurais são
eficientes para tratar de problemas onde não se tem muitos conhecimentos sobre a
distribuição estatística dos dados [De Castro et al].
Outra característica extremamente favorável ao estudo das RNA’s é o fato de
elas apresentarem tolerância a falhas. Assim, mesmo havendo falha em alguns dos
neurônios da rede, ela é capaz de se adaptar e continuar respondendo satisfatoriamente
ao problema ao qual foi designada a resolver. Isto mostra mais uma vez a analogia das
redes neurais artificiais com o cérebro humano, onde a morte de um neurônio não
compromete o funcionamento da rede como um todo.

3. Aprendizado das RNA’s


O processo de aprendizado é geralmente um processo interativo e iterativo de adaptação
aplicado aos parâmetros da rede (pesos e thresholds), onde os conhecimentos são
armazenados após cada iteração. Os algoritmos de aprendizado são um conjunto de
regras bem definidas que são utilizadas para solucionar um determinado problema de
aprendizado. Os algoritmos de aprendizado são divididos em 3 categorias: aprendizado
por correção de erros, hebbiano e o competitivo.
Quanto ao tipo de treinamento para aprendizado, as redes podem ter:
aprendizado supervisionado, aprendizado não supervisionado e aprendizado por reforço.
O aprendizado é supervisionado quando se utiliza um agente externo que indica à rede a
resposta desejada para o padrão de entrada. Esse tipo de aprendizado é utilizado nos
algoritmos de correção de erros.
O Aprendizado não Supervisionado não possui um tutor (crítico), a rede é
autônoma, trabalha com os dados que lhes são apresentados e aprende a refletir sobre as
suas propriedades no seu output. Esse tipo de aprendizado pode ser utilizado com um
algoritmo competitivo ou hebbiano.
Já o aprendizado por reforço possui um crítico externo que avalia as respostas
fornecidas e direciona o ajuste dos pesos. O aprendizado é online, feito por um processo
de tentativas e erros, que visa maximizar um dado índice de desempenho, denominado
de sinal de reforço [Oliveira, 2000]. Segundo [Fernandes, 2008]: “o conceito de reforço
é usado em algumas redes neurais para indicar quando as conexões seriam adaptadas.
Aprendizagem por reforço é um mecanismo no qual apenas uma medida de adequação
dos resultados obtidos é fornecida como parâmetro externo.” O reforço é utilizado então
quando dois eventos acontecem juntos e devem ser associados um ao outro.
3.1. Aprendizado por correção de erros
No algoritmo de correção de erros, durante o aprendizado supervisionado, os erros vão
sendo calculados sucessivamente, até que cheguem a um valor satisfatório, definido a
priori. Sendo assim, surge uma curva de erros, a qual está diretamente relacionada à
natureza do modelo de neurônio utilizado.
Se a rede é formada por unidades lineares, como no modelo de McCulloch e
Pits. Na superfície de erro será encontrado um único valor mínimo. Por outro lado, se a
rede é constituída por unidades não-lineares, podem ser encontrados diversos valores
mínimos chamados de mínimos locais, além do mínimo global.

O processo de Aprendizado por Correção de Erros utiliza algoritmos para


caminhar sobre a curva de erros, com o intuito de alcançar o menor valor de erro
possível, o mínimo global. Muitas vezes, o algoritmo não alcança este mínimo global,
atingindo o que chamamos de mínimo local. Caso este erro alcançado seja desfavorável,
é necessário recomeçar processo de aprendizado.
Para a correção do erro, os pesos da rede devem ser ajustados, de forma a
aproximar a saída real à desejada. De acordo com a Regra Delta de Aprendizado,
apresentada a seguir, tal ajuste dependerá do próprio erro calculado; do valor do
estímulo de entrada que é "transmitido" pelo peso a ser ajustado; e também da taxa de
aprendizado, a qual relaciona-se à cautela com que a curva de erros é percorrida. Para
um dado estímulo k, no passo de treinamento n:

Dw(n) - valor de ajuste a ser acrescido ao peso wij; h - taxa de aprendizado; e(n)
- valor do erro; xj(n) - valor do estímulo. O valor atualizado do peso será:

Portanto, podemos utilizar a Regra Delta para corrigir os valores dos pesos,
minimizando a função de erro , também conhecida como "função de custo":

Onde: e(n) - erro da rede no passo n do treinamento; e(n) - valor da função de


custo no passo n do treinamento. Este processo de aprendizado é utilizado nos modelos
Perceptron de camada única e multicamadas.
3.2. Aprendizado Hebbiano
O Aprendizado Hebbiano baseia-se nos seguintes postulados:
• Se a ativação de um neurônio tiver grande influência na ativação de um
outro neurônio, a ligação entre estes dois neurônios deve ser reforçada;
• Se a ativação de um neurônio não influencia a ativação de um segundo
neurônio, a ligação entre estes dois neurônios deve ser enfraquecida ou até
mesmo removida;
Isto demonstra a natureza local do aprendizado hebbiano e sua relação com o
instante em que ocorrem as ligações sinápticas entre dois neurônios. Podemos encontrar
este processo de aprendizado no Modelo de Hopfield.
3.3. Aprendizado Competitivo
No Aprendizado Competitivo, os neurônios competem entre si, para responder a um
determinado estímulo. Este processo de aprendizado é constituido por:

• Um conjunto de neurônios diferenciados por seus pesos, que respondem de


forma diferente a um dado conjunto de estímulos;
• Um limite imposto sobre a força de cada neurônio;
• Um mecanismo que permita a competição entre os neurônios, onde apenas um,
entre um grupo de neurônios, possa responder a uma classe de estímulos de
entrada.
Este processo de aprendizado é utilizado no treinamento dos Mapas Auto-
Organizáveis de Kohonen.

4. Tipos de Redes Neurais

4.1. Perceptron de Camada Única


O Laboratório de Informática (bioinfo) do Laboratório Nacional de Computação
Científica(LNCC) afirma que a rede Perceptron foi o modelo pioneiro nesta área. Este
modelo é simples, de fácil implementação, e utiliza neurônios McCulloch-Pitts em duas
camadas apenas, a camada de entrada e a camada de saída. Seu treinamento é
supervisionado e a ativação dos neurônios se dá pela utilização da função limiar
(threshold). A regra de treinamento é a regra delta, que é definida como o ajuste
necessário nos pesos para diminuir a distância entre a resposta obtida e a resposta
desejada.
Durante o processo de treinamento do Perceptron, busca-se encontrar um
conjunto de pesos que defina uma reta que separe as diferentes classes, de forma que a
Rede classifique corretamente as entradas apresentadas. O ajustes dos pesos acontece
segundo o algoritmo a seguir: (LNCC- bioinfo)
Considere que:
X(n) = vetor de entrada (m+1)-por-1
W(n) = vetor de pesos (m+1)-por-1
b(n) = bias
y(n) = resposta real
d(n) = resposta desejada
e(n) = erro na saída da unidade
h = taxa de apredeizagem, h ϵ [0,1]
n = contados de passos do algoritmo
1. Inicialização
Inicializar os valores do vetor w e da taxa de aprendizado h
2. Repetir:
2.1- Apresentar o vetor de entrada X(n) e a saída desejada d(n), de cada par do
conjunto de treinamento T = {(x,d)}
2.2- Calcular a resposta real do Perceptron, da seguinte forma: y(n) =
f(W(n)X(n)+b(n)), onde f(.) é a Função de Limiar utlizada como função de ativação.
2.3- Calcular o erro da saída da unidade da seguinte forma: e(n) = d(n) - y(n);
2.4- Atualizar o vetor de pesos para cada uma das unidades da rede segundo a
regra: W(n+1) = W(n) + he(n)X(n);
3. Incremento:
Incremente o passo de tempo (n), volte ao passo 2.1. Até que e(n) = 0 para todos
os elementos do conjunto de treinamento em todas as unidades da rede.
Esta rede está limitada à classe de problemas linearmente separáveis, mas pode,
no entanto, ser utilizada em tarefas de classificação simples.Rosenblatt provou através
do Teorema da Convergência do Perceptron, que este algoritmo consegue encontrar um
conjunto de pesos ideais para que a Rede classifique corretamente as entradas desde que
seja aplicado a classes linearmente separáveis.

4.2. Perceptron Multicamadas


Segundo [Fernandes, 2008], Minsky e Papert analisaram matematicamente o Perceptron
e demonstraram que redes de uma camada não são capazes de solucionar problemas que
não sejam linearmente separáveis. Como não acreditavam na possibilidade de se
construir um método de treinamento para redes com mais de uma camada, eles
concluíram que as redes neurais seriam sempre suscetíveis a essa limitação.
Contudo, o desenvolvimento do algoritmo de treinamento backpropagation, por
Rumelhart, Hinton e Williams em 1986, precedido por propostas semelhantes ocorridas
nos anos 70 e 80, mostrou que é possível treinar eficientemente redes com camadas
intermediárias, resultando no modelo de Redes Neurais Artificiais mais utilizado
atualmente, as redes Perceptron Multi-Camadas (MLP), treinadas com o algoritmo
backpropagation.
Nestas redes, cada camada tem uma função específica. A camada de saída
recebe os estímulos da camada intermediária, realiza os cálculos necessários e constrói
o padrão que será a resposta. As camadas intermediárias funcionam como extratoras de
características. Seus pesos são uma codificação de características apresentadas nos
padrões de entrada e permitem que a rede crie sua própria representação, mais rica e
complexa, do problema.
Como provou Cybenko, a partir de extensões do Teorema de Kolmogoroff, são
necessárias no máximo duas camadas intermediárias, com um número suficiente de
unidades por camada, para se produzir quaisquer mapeamentos. Também foi provado
que apenas uma camada intermediária é suficiente para aproximar qualquer função
contínua [Fernandes, 2008].
É importante ressaltar que o backpropagtion é o algoritmo de aprendizado mais
utilizado em conjunto com o perceptron multicamada, mas outros algoritmos de
aprendizado podem ser usados. As MLP's utilizam uma função de ativação nao-linear,
em geral a função sigmoide e possui alto grau de conectividade, permitindo interação
entre as camadas [LNCC].
As redes que utilizam backpropagation trabalham com uma variação da regra
delta, a regra delta generalizada, apropriada para redes multicamada. A regra delta
generalizada funciona quando são utilizadas na rede unidades com uma função de
ativação semilinear, que é uma função diferenciável e não decrescente. É importante
notar que a função threshold não se enquadra neste quesito. A taxa de aprendizado é
uma constante de proporcionalidade no intervalo [0,1], pois este processo de
aprendizagem requer apenas que a mudança no peso seja proporcional à reta. Quanto
maior forem estas constantes, maior será a mudança dos pesos, aumentando a
velocidade do aprendizado, o que pode levar a uma oscilação do modelo na superfície
de erro. O ideal é utilizar a maior taxa de aprendizado possível que não leve a uma
oscilação, o que resulta em um aprendizado mais rápido.
O treinamento das redes MLP com backpropagation pode demandar muitos
passos no conjunto de treinamento, demandando um tempo de treinamento
consideravelmente longo. Se for encontrado um mínimo local, o erro para o conjunto de
treinamento para de diminuir e estaciona em um valor maior que o aceitável. Uma
técnica usada para contornar o problema de hill climbing é incluir uma constante que
determina o efeito de mudanças passadas dos pesos na direção atual do movimento no
espaço de pesos.[FERNANDES, 2008].
Segundo [Fernandes, 2008]: "O critério de parada do algoritmo backpropagation
não é definido, e, geralmente, é utilizado um número máximo de ciclos. Mas devem ser
consideradas a taxa de erro médio por ciclo, e a capacidade de generalização da rede".
O backpropagation é um algoritmo para treinamento de Redes Multi-Camadas
mais difundido. Baseia-se no Aprendizado Supervisionado por Correção de Erros,
constituído de:
1. Propagação: Depois de apresentado o padrão de entrada, a resposta de uma
unidade é propagada como entrada para as unidades na camada seguinte, até a
camada de saída, onde é obtida a resposta da rede e o erro é calculado;
2. Retropropagação ("backpropagation"): Desde a camada de saída até a camada de
entrada, são feitas alterações nos pesos sinápticos.
Durante a fase treinamento devemos apresentar um conjunto formado pelo par:
entrada para a rede e valor desejado para resposta a entrada. A saída será comparada ao
valor desejado e será computado o erro global da rede, que influenciará na correção dos
pesos no passo de retropropagação. Apesar de não haver garantias que a rede forneça
uma solução ótima para o problema, este processo é muito utilizado por apresentar uma
boa solução para o treinamento de Perceptrons Multi - Camadas.
O algoritmo pode ser resumido em:[LNCC]
1. Inicialização: Inicialize os pesos sinápticos e os bias aleatóriamente, com valores
no intervalo [-1;1];
2. Apresentação dos Exemplos de Treinamento:
• Treinamento "on-line": Para cada exemplo do conjunto de treinamento,
efetue os passos 3 e 4.
• Treinamento "em lote": Para cada "época" do conjunto de treinamento,
efetue os passos 3 e 4.
3. Computação para Frente ( Propagação ): Depois de apresentado o exemplo do
conjunto de treinamento T = {(x(n),d(n)}, sendo x(n) a entrada apresentada à
rede e d(n) a saída desejada, calcule o valor da ativação vj e a saída para cada
unidade da rede, da seguinte forma:

, para o cálculo do valor da ativação;

, para o cálculo da saída y da unidade k, utilizando


a função sigmóide, como no exemplo, ou uma outra função se necessário. Utilize
a saída das unidades de uma camada como entradas para a seguinte, até a última
camada. A saída das unidades da última camada será a resposta da rede.
4. Calcule o Sinal de Erro: Fazendo a saída yj = Oj(n), será Oj(n) a resposta da
rede, calcule o sinal de erro através da seguinte formula:

, onde dj(n) é a saída desejada com resposta para


cada unidade na interação (n). Este sinal de erro será utilizado para computar os
valores dos erros das camadas anteriores e fazer as correções necessárias nos
pesos sinápticos.
5. Computação para Trás (Retropropagação ): Calcule os erros locais, d, para cada
unidade, desde a camada de saída até a de entrada. O gradiente local é definido
por:
, para a unidade da camada de saída ou , para as
unidades das demais camadas.
Onde: Oj(1-Oj) - é a função de ativação diferenciada em função do argumento,
i.e., valor de ativação; dk - é o erro das unidades da camada anterior conectadas
a unidade j; wjk - são os pesos das conexões com a camada anterior.
Após o cálculo dos erros de cada unidade, calcule o ajuste dos pesos de cada
conexão segundo a regra delta generalizada e atualize os pesos:

, para o cálculo dos ajustes dos pesos;


Faça:
, para atualizar os pesos sinápticos;
Onde: a - é a constante de momentum. Quando a= 0, esta função funciona como
a regra delta comum; h - é a taxa de aprendizado; dj - é o erro da unidade; yj - é
a saída produzida pela unidade j;
6. Interação: Refaça os itens 3, 4 e 5 referentes à propagação, cálculo do erro e
retropropagação, apresentando outros estímulos de entrada, até que sejam
satisfeitas as condições de treinamento; as quais podem ser:
• O erro da rede está baixo, sendo pouco alterado durante o treinamento;
• O número máximo de ciclos de treinamento foi alcançado.

4.3. Redes de Kohonen


Redes de Kohonen são redes neurais do tipo não supervisionadas, ou seja, agrupam os
neurônios que respondem similarmente a uma determinada entrada do conjunto de
treinamento, e feedforward, ou seja, não formam ciclos. Nesse esquema, os neurônios
da camada de saída disputam entre si a representação da informação vinda dos
neurônios de entrada. Caso exista um neurônio campeão, os pesos sinápticos são
alterados de forma a melhorar ainda mais a resposta ao estímulo recebido. Como a rede
é do tipo não supervisionada, não apenas um neurônio é reajustado, mas também seus
vizinhos.
O comportamento de agrupar neurônios similares simula o comportamento
cerebral humano. O córtex cerebral rearranja anatomicamente as células nervosas que
são excitadas de forma parecida a um determinado estímulo oriundo dos sensores nos
quais estão ligadas.
Cada neurônio da rede representa uma saída possível. Se a rede possuir 50
neurônios na camada de saída haverá 50 saídas possíveis para qualquer entrada. Outra
propriedade muito importante é que neurônio de saída está ligado fortemente com as
entradas, haverá tantas conexões sinápticas entre cada neurônio de saída e os pontos de
entrada quanto o número de entradas da rede.
No neurônio de saída, especificamente, haverá apenas a resposta do cálculo
efetuado entre as entradas e os pesos sinápticos. O conhecimento da rede reside nos
pesos de suas conexões [Lawrence, 1992].
No início o conjunto de vizinhos começa grande e com o tempo vai diminuindo
e se auto-organizando. O processo de auto organização é similar ao que acontece com o
cérebro humano como mencionado anteriormente.
A adaptação dos neurônios é crucial para a formação ordenada do mapa, pois,
apesar de um neurônio ser afetado independentemente do outro, é o conjunto inteiro que
representa a informação [Kohonen, 2001]. Para se ajustar o peso das ligações, primeiro
é necessário descobrir qual o neurônio vencedor para determinada entrada, através da
fórmula:

Esta fórmula indica a distância euclidiana onde xj(t) = entrada j no instante t,


wij(t) peso j do neurônio i no instante t, N = número de entradas e di(t) = distância do
neurônio no tempo t.
Em cada iteração do aprendizado o neurônio que melhor responder ao estímulo
terá seu peso alterado bem como todos da sua vizinhança V(i) também serão alterados.
Os neurônios fora da vizinhança permanecem inalterados.
Segundo a fórmula, a adaptação dos neurônios se dá fazendo uma diferença
entre os vetores x e w e adicionando uma fração dessa diferença ao vetor de pesos
original w.
[Kohonen, 2001] recomenda que o número de iterações seja de 500 passos para
cada neurônio. Assim se a rede possuir 50 neurônios o número total de iterações será de
25000, ou seja, o conjunto de treinamento deve ser passado por 25000 vezes. Porém
isso é somente uma recomendação e não deve ser tomado como regra.

Os neurônios vencedores necessitam de um rótulo, que será o nome do fato por


ele apontado. Caso exista mais de um neurônio que aponte para o mesmo fato então
cada um deles receberá o mesmo rótulo, que será o nome do fato.
Segundo [Kohonen, 2001], o funcionamento do algoritmo pode ser representado
intuitivamente da seguinte forma: primeiramente os pesos sinápticos são inicializados
aleatoriamente com valores baixos. Uma entrada x é passada à rede sem especificar qual
o valor da saída, isso é uma característica de redes não supervisionadas. Para cada
entrada, um neurônio de saída responderá melhor e será selecionado como o vencedor e
seus vizinhos terão seus pesos sinápticos alterados conforme mencionado
anteriormente. Após todo o conjunto de treinamento ter sido passado à rede e todos os
critérios terem sidos aceitos, a mesma é considerada treinada. Logo após o treinamento
vem a fase de teste da rede neural. Esse processo é semelhante ao treinamento, porém os
pesos das ligações não são alterados, e são informadas entradas não presentes
anteriormente no conjunto de treinamento. Caso a rede reconheça corretamente essas
entradas a rede é considerada treinada com sucesso.
As redes de Kohonen são muito utilizadas em reconhecimentos de padrões em
voz, imagens e textos. Outra aplicação muito utilizada é na área de recuperação da
informação. Segundo [ZUCHINI] recuperação da informação está relacionada à
representação, armazenamento e acessos a itens de informação. Segundo essa definição,
desde simples sistemas de banco de dados tradicionais até mesmo sistemas baseados em
conhecimentos são sistemas de recuperação da informação.
Em seu trabalho sobre Recuperação da informação, [ZUCHINI] enfoca o seu
uso na recuperação de documentos de textos, devido a grande expansão da internet e
consequentemente o surgimento da necessidade de ter uma ferramenta para automatizar
o processo de mineração de dados.

4.4. Redes de Hopfield


O modelo de redes de Hopfield foi desenvolvido em 1982 por John Hopfield, trazendo
grande interesse no estudo das redes neurais artificiais, e vem sendo usado até hoje por
seu ótimo desempenho na resolução de problemas de classificação e clusterização.
Uma das características básicas das redes de Hopfield é recorrência. Isto
significa que existe realimentação do sistema, ou seja, as saídas de neurônios em uma
camada são utilizadas como entrada de neurônios desta mesma camada. Na
representação da rede em forma de um grafo, isto significa dizer que existem ciclos
neste.
Assim, a forma básica de uma rede de Hopfield consiste de uma única camada
de neurônios totalmente interconectados. Uma representação da arquitetura deste tipo de
rede pode ser visto na figura 2, onde existem quatro neurônios e cada um deles possui
sua saída conectada a todos os outros neurônios do sistema, caracterizando a
realimentação proposta.

Figura 2. Um exemplo de rede de Hopfield [De Castro et al]


Como já dito, a principal aplicação deste tipo de RNA está na classificação de
dados e no reconhecimento de padrões. Isto acontece, pois na etapa de aprendizado as
informações armazenadas pela rede são usadas para criar pontos de convergência, que
representam determinados padrões identificados pela rede. Assim, novas entradas
desconhecidas pela rede são atraídos para um destes pontos de convergência pela sua
similaridade como determinado padrão previamente identificado, permitindo que elas
sejam classificadas como pertencentes a este padrão. Desta forma, as redes de Hopfield
funcionam como mapas que seccionam um espaço de entradas em um número de partes
que representam os padrões existentes e mapeiam as entradas fornecidas em alguma
destas partes do espaço.
[De Holanda et al, 2003] cita como uma das principais vantagens de uma rede de
Hopfield, o fato de ela poder ser usada como uma memória associativa. As memórias
associativas são dispositivos que permitem a recuperação de informação pela associação
de dados, possivelmente incompletos, às informações armazenadas por elas. Esta
característica é observada nas redes de Hopfield devido ao fato da evolução da rede
levar a estados estáveis. Assim, novas entradas levam a estados que podem ser
associados a algum dos estados estáveis armazenados pela rede, permitindo a
associação eficiente de dados.
Pode ser citado como desvantagem deste modelo de RNA o fato de, à medida
que a rede aprende novos padrões, isto pode atrapalhar no reconhecimento de outros já
armazenados. Assim, a rede tende a esquecer padrões antigos e pouco usados à medida
que novos padrões são apresentados a elas [De Holanda et al]. Outra desvantagem que
pode ser observada é que o número de padrões que pode ser armazenado e recuperado
com eficiência não é pequeno.
5. Redes Neurais e outros métodos de IA
Muitas pessoas se perguntam quando e por que usar uma técnica em detrimento da
outra. É extremamente importante conhecer as vantagens e os limites das técnicas a
disposição para saber qual delas pode resolver um problema de forma mais satisfatória.
Desta forma, é interessante conhecer as similaridades e distinções entre as diferentes
técnicas utilizadas na área Inteligência Artificial
Um método de resolução de problemas bastante utilizado na IA, atualmente, é o
de Sistemas Especialistas. Neles, o sistema é composto por um conjunto de regras que o
auxiliam na resolução de um problema específico. Este conjunto de regras é extraído de
um individuo especialista no domínio do problema e o sistema é capaz de aplicar as
regras para resolver questões impostas a ele, além de criar novas regras e aprender com
o ambiente. Com o crescimento de estudos e desenvolvimento destes sistemas, é
interessante conhecer as similaridades e diferenças existentes entre os Sistemas
Especialistas e as Redes Neurais Artificiais.
É importante deixar bastante claro que Redes Neurais e Sistemas Especialistas
são técnicas totalmente distintas. Em RNA’s, a aquisição do conhecimento é feita com
bases em exemplos coletados numa base de dados e a aprendizagem é feita
automaticamente através da análise desses dados. Em SE’s todo o raciocínio é derivado
muitas vezes das regras de produção do tipo: SE condição ENTAO ação. Nesse caso, a
figura do engenheiro do conhecimento é importante, pois é ele quem coleta as
informações através de entrevistas com especialistas humanos no escopo do problema
no qual se quer criar a base de conhecimento e as interpreta e formaliza para o mundo
do Sistema Especialista. A grande dificuldade na elaboração desses especialistas está
justamente na formalização dessas informações, pois muitas vezes esses conhecimentos
são subjetivos o que os torna difícil de formalizar através de regras.
Assim, como visto, os Sistemas Especialistas requerem um grande
conhecimento do ambiente e dos dados envolvidos no problema para que ele possua
uma base de conhecimento aceitável e apresente um desempenho satisfatório. Esta é,
então, uma diferença básica entre os dois métodos, pois nas redes neurais, a forma como
os problemas são resolvidos não é o mais importante e exemplos são suficientes para
dar a rede o conhecimento necessário para resolver o problema. Isso credencia as redes
neurais como mais indicadas em ambientes onde as formas de resolução dos problemas
não são conhecidas em detalhes.
Outra técnica que tem crescido no âmbito da Inteligência Artificial, atualmente,
é a dos Algoritmos Genéticos (GA’s). RNA’s e Algoritmos Genéticos podem ser
combinados para resolverem uma série de problemas. Como exemplo pode-se citar a
extração de dados de uma forma confiável de uma base de dados (data mining) através
de redes neurais e em seguida a extração de regras de alta qualidade dessas redes
treinadas.
Algoritmos genéticos são um método de busca global robusto e são adequados
para problemas difíceis, com grande espaço de busca [Santos et al]. Por isso são
utilizados para encontrar uma topologia de Rede Neural que possa extrair um conjunto
de regras com uma maior confiabilidade e menor complexidade. Essas regras são
geralmente da forma SE...ENTÃO e representam o conhecimento formalizado da base
de dados.
Neste contexto, cada topologia é um indivíduo da população. Em cada indivíduo
são aplicados os operadores genéticos de seleção, crossover e mutação. Logo após a
rede é treinada e em seguida é efetuada a extração das regras e depois a avaliação das
regras. O processo pode ser esquematizado na figura abaixo:

Figure 3. Esquema do processo de escolha da melhor topologia de uma rede


neural para a extração de regras. [Santos et al]

6. Conclusão
As redes neurais são um poderoso método de reconhecimento de padrões diversos e
também para implementar controladores. As redes neurais são utilizadas nas áreas de
computação, robótica, engenharia elétrica e biologia, dentre outros. O backpropagation
impulsionou as pesquisas na área devido à superação dos problemas que as redes
Perceptron sofriam. Com o aumento na gama de classes que podem ser resolvidas, as
pesquisas e o uso aumentaram, e atualmente a técnica já está amadurecida e robusta. É
um dos melhores métodos para dotar a máquina de inteligência, desde que o
treinamento e a escolha dos pesos iniciais sejam bem feitos. Além disso, alguns dos
problemas das redes neurais já estão sendo pesquisados, tais como o não conhecimento
da forma como se chegou a resposta e o problema dos mínimos locais. Assim, apesar de
já ser realidade, a tendência é que as redes neurais sejam cada vez mais utilizadas,
principalmente onde esta tem seu melhor desempenho, que é no reconhecimento de
padrões. Nesse caso, um uso promissor é junto com técnicas de visão computacional
para identificação biométrica.

References
De Castro, F. C. C. and De Castro, M. C. F. “Redes Neurais Artificiai”,
http://www.ee.pucrs.br/~decastro/RNA_hp/pdf/.
Vieira, R. C. and Roisenberg, M. “Redes Neurais Artificiais: Um breve tutorial.”
Fernandes, Anita Maria da Rocha. “Inteligência Artificial: Noções gerais” -3 imp.
Florianópolis: Visual Books, 2008.
Oiveira, Cristiano. Redes Neurais, 2000.
http://www.lem.ep.usp.br/Pef411/~Cristiano%20Oliveira/CristianoOliveira/Paginas/
RedesNeurais.htm acessado em 27/11 as 20:30 h
Bioinfo. LNCC- Laboratório Nacional de Computação Cientìfica.
http://www.lncc.br/~labinfo/tutorialRN/ acessado em 27/11/2009 as 21:00 h
De Holanda, M. M. and de Paula, M. M., (2003). “Reconhecimento de padrões
utilizando redes neuronais de Hopfield.”, Centro Universitário da Cidade, Rio de
Janeiro – RJ.
Holton, M. and Alexander, S. (1995) “Soft Cellular Modeling: A Technique for the
Simulation of Non-rigid Materials”, Computer Graphics: Developments in Virtual
Environments, R. A. Earnshaw and J. A. Vince, England, Academic Press Ltd., p.
449-460.
Kohonen, T. (2008). “Self Organizing Maps”. Editora Springer.Dyer
Lawrence, Jeannette. “Introduction to neural networks and expert systems”. Califórnia:
California Scientific Software, 1992.
Santos , R. T. and Nievola, J. C. and Freitas, A. A. and Lopes, H. S. “Extração de
Regras de Redes Neurais via Algoritmos Genéticos”, Proceedings of the IV Brazilian
Conference on Neural Networks - IV Congresso Brasileiro de Redes Neurais
Zuchini, M. H. “Aplicações de mapas auto-organizáveis em mineração de dados e
recuperação de informação”, Departamento de Engenharia de Computação e
Automação Industrial (DCA), Faculdade de Engenharia Elétrica e de Computação
(FEEC), Universidade Estadual de Campinas (Unicamp), SP, Brasil.

Você também pode gostar