Redes Neurais simples para classificação de padrões

Como afirmamos anteriormente, redes neurais artificiais podem ser empregadas a fim de classificar determinados dados de entrada segundo padrões, buscando assim associar uma resposta a cada um deles. Essa classificação de padrões pode ser feita de diferentes formas, de acordo com o tipo de rede neural adotado, bem como a regra de aprendizado que o mesmo emprega.

Começaremos então nossos estudos analisando alguns modelos de redes neurais mais simples que satisfazem tal proposta.

Arquitetura

Por hora, será estudado o tipo de arquitetura mais simples possível para a classificação de padrões: redes neurais single-layer, isto é, de uma única camada.
Além disso, o uso de bias ajustável será necessário, de tal forma que podemos manter o threshold da função de ativação fixo em zero, variando assim somente
O uso de bias ajustável permitirá que se ajuste a região de separação dos padrões (sem necessitar ajustar o threshold da função de ativação, que permanecerá fixado em zero).
A figura abaixo representa o nosso modelo de uma rede neural para classificação de padrões:

Rede neural singlelayer para classificação de padrões

Separabilidade Linear

Entende-se por separabilidade linear a capacidade de uma rede de separar completamente dois padrões a partir de pesos e bias bem ajustados para tal.
Diz-se que é linearmente separável porque a representação gráfica do domínio dos parâmetros de entrada pode ser dividida por uma reta de forma a manter cada padrão de um dos lados da mesma, conforme demonstra a figura abaixo.

Representação gráfica da separabilidade linear

Tomando-se 1 e –1 como sendo os valores a dizer qual padrão encontrado, o valor zero determina a “fronteira” entre eles, ou seja, a reta que os separa, reta esta determinada por:

É provado também que se uma rede multilayer com funções de ativações lineares for utilizada, ela também só poderá solucionar problemas linearmente separáveis.

Rede Hebb

Na rede Hebb proposta pelo autor deste livro, os vetores de entrada devem estar na forma bipolar (1 ou –1) ou binária (1 ou 0), bem como os valores a serem atingidos (resultado de cada treinamento) será na forma bipolar. Além disso, o treinamento é supervisionado, ou seja, são dados vetores de entrada com seus respectivos resultados (target) a fim de que os pesos possam ser ajustados.
Os pesos são inicialmente zero e a cada vetor de entrada do treinamento os pesos são ajustados por meio da seguinte fórmula:

Onde:
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

Obs: Apesar de considerarmos a bias como sendo x0, sua representação será sempre ao final do vetor de entrada)

Abaixo, segue o treinamento de uma rede Hebb para a função AND:

INPUT
(x1 x2 1)
TARGET WEIGHT CHANGES
(Δw1 Δw2 Δb)
WEIGHTS
(w1 w2 b)
( 0 0 0 )
( 1 1 1 ) 1 ( 1 1 1 ) ( 1 1 1 )
( 1 0 1 ) -1 ( -1 0 -1 ) ( 0 1 0 )
( 0 1 1 ) -1 ( 0 -1 -1 ) ( 0 0 -1 )
( 0 0 1 ) -1 ( 0 0 1 ) ( 0 0 -2 )

Uma rede Hebb pode ser usada no reconhecimento de alguns padrões simples, por exemplo, distinguir um caractere “x” de um “o”.
Entretanto, não são todos os problemas linearmente separáveis que a rede Hebb é capaz de resolver. Problemas cuja saída não seja da forma bipolar são descartados e alguns, mesmo possuindo vetor de entrada e resultado na forma bipolar, não são possíveis.

Perceptron

A regra de aprendizado do perceptron permite abranger soluções para um número muito maior de problemas do que a regra de aprendizado Hebb.
Os primeiros perceptrons possuíam três camadas de neurônios – unidades sensoriais, unidades associadoras e uma unidade de resposta – formando um modelo aproximado da retina.
Os valores de entrada para cada neurônio, bem como da saída dos mesmos, podem ser 1 (atuando de forma excitatória), -1 (atuando de forma inibitória e 0 (indicando indecisão).
Para tal, a função de ativação passa a ser da forma:

Uma análise de como se comporta o threshold ( θ ) em um perceptron e percebe-se que o bias ( b ) apresenta agora um papel diferente daquele, já que o θ representa não somente o threshold, mas também a dimensão da região de indecisão (de – θ a + θ).
Um gráfico representando uma classificação de padrões por uma rede perceptron para o problema da função lógica AND pode possuir a seguinte forma:

Os pesos são inicialmente zero e a cada vetor de entrada do treinamento os pesos são ajustados por meio da seguinte fórmula:

Onde:
α – taxa de aprendizado ( )
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

Após a execução do treinamento para todos os vetores de entrada, verifica-se se houve algum peso alterado. Caso algum peso tenha sido alterado, executa-se novamente todo o processo para todos os vetores de entrada e, no momento em que não mais houver variações nos pesos, interrompe-se o treinamento: foram encontrados pesos adequados na classificação dos mesmos.
As duas retas que dividem o espaço em três regiões podem ser assim determinadas:

O treinamento de um perceptron para a função AND com entrada na forma binária e saída bipolar seria da seguinte forma (adotando-se θ = 0.2 e α = 1 , com todos os pesos inicialmente zero):

Clique aqui para ver a tabela com os dados do treinamento dessa rede Perceptron.

Como durante toda a época 10 não houve variação de pesos, então, alcançamos os pesos que classificam corretamente os vetores do treinamento.

O treinamento de um perceptron para a função AND com entrada na forma binária e saída bipolar seria da seguinte forma (adotando-se θ = 0.2 e α = 1 , com todos os pesos inicialmente zero):

Clique aqui para ver a tabela com os dados do treinamento dessa rede Perceptron.

Como durante toda a época 2 não houve variação de pesos, então, alcançamos os pesos que classificam corretamente os vetores do treinamento.
Com isso, fica claro que a forma como os dados são representados nos vetores de entrada e saída, bem como o threshold escolhido influenciam no tempo que levará para se alcançar os pesos adequados.

Adaline

Adaline (Adaptive Linear Neuron) utiliza principalmente ativações bipolares para a entrada e para a saída, entretanto não se restringe a estes.
A regra de aprendizado de redes Adaline é a regra delta, baseada na variação entre a saída esperada e a entrada da rede para cada neurônio. Apesar de ser aplicada a redes de uma única camada, há uma outra versão desta (a Madaline) que se encarrega do treinamento em redes de múltiplas camadas, conforme será visto mais adiante.
A função de ativação é dada por:

E o cálculo da variação de cada peso associado a um neurônio yj é:

Onde:
α – taxa de aprendizado ( 0 < α ≤ 1 )
wi – peso para a entrada i (lembrando que a entrada da bias é x0 = 1 e w0=b);
xi – valor da entrada i ( 1 ou – 1);
t – resultado desejado (1 ou –1);

O algoritmo para uma rede Adaline é (este algoritmo considera wn+1 = b, isto é, o bias é o peso associado à (n+1)-ésima entrada):


Inicializar todos os pesos (com valores aleatórios pequenos);
Atribuir valor de alpha;
HouveMudanca = verdadeiro (indica se houve alteração de pesos);
Enquanto (houveMudanca) Faça
houveMudanca = falso;
Para cada par de treinamento (entrada : target) faça
y_in = 0;
Para i = 1 até n
Para j = 1 até m+1
y_in = y_in + entradaj*wij;

Se y_in >= 0 então
y = 1;
Senão
y = -1;

Se y ≠ targeti então
houveMudanca = verdadeiro;
Para j = 1 até m+1
weightsij = weightsij + alpha*(targeti – y_in)*entradaj;
// Fim de todo o algoritmo;

Onde:
n número de neurônios na camada de saída;
m número de neurônios de entrada para cada neurônio na camada de saída;
target array de valores esperados na saída para cada neurônio para dada vetor de entrada;
entrada vetor de entrada do treinamento (para facilitar a resolução, assumimos que a última posição do vetor de entrada – m+1 – é sempre 1 – o valor de ativação para o bias);

Madaline

Madaline (Many Adaptive Linear Neuron) comporta-se como sendo um arranjo de vários Adalines agrupados em uma rede de múltiplas camadas.
Devido à estrutura de múltiplas camadas, o processo de treinamento de uma rede Madaline é mais complexo quando comparado com as anteriores.
Há duas formas de se treinar esta rede: por MRI (o algoritmo de treinamento original para uma Madaline), que varia somente os pesos associados aos neurônios da camada oculta, e por MRII (variação do MRI), que permite variar todos os pesos da rede em busca da solução.

No MRI, os pesos associados aos neurônios de saída são fixados (podendo estes, assim, atuar como AND ou OR, dependendo de seus valores) e os pesos dos neurônios ocultos são calculados da seguinte forma:

  • Calcule z_in (entrada da rede) e z (saída do neurônio por meio da função de ativação) para cada neurônio;
  • Calcule então y_in e y do neurônio de saída;
  • Se y for diferente do target, então é necessário ajustar;
    • Se o target é 1, então escolha o neurônio Zj cuja entrada de rede (z_in) for mais próximo de zero e incremente seus pesos por meio da fórmula:
    • Se o target é –1, então decremente os pesos de todos os neurônios Zj cuja entrada de rede são positivas:

O MRII procede similar ao MRI, alterando somente a forma como calcula-se a variação dos pesos dos neurônios. Este algoritmo procura selecionar dentre cada neurônio qual possui a entrada de rede mais próxima de zero, mudando então o sinal da saída e testando se, com o novo valor, o erro entre y e target é reduzido. Caso seja, ajusta-se os pesos nesta unidade (ou seja, encontrou-se uma unidade cuja saída é efetiva para a correção).

[Conteúdo pertencente ao Material do curso de Inteligência Artificial e ao Material do curso de Redes Neurais Artificiais]

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
 

3 comments

  1. […] Aula 2 -Redes Neurais simples para classificação de padrões […]

  2. […] Aula 12 – Redes Neurais simples para classificação de padrões Se você gostou deste artigo, que tal…Redes Neurais simples para classificação de padrõesUma Introdução aos Agentes InteligentesUma Introdução aos Algoritmos Genéticos – Parte 1Material do curso de Redes Neurais ArtificiaisUma Introdução aos Algoritmos Genéticos – Parte 3 […]

  3. Amanda says:

    Olá,

    Seu artigo está incrível. O utilizamos em uma aula na faculdade de sistemas de informação. Obrigada pelas informações.

Leave a Reply

Your email address will not be published. Required fields are marked *

Email
Print