Associação de Padrões

Algoritmos de Treinamento para Associação de Padrões

Redes associativas são redes cujo objetivo é associar determinados tipos de padrão a outros a fim de que a rede possa reconhecer ou não uma determinada entrada, mesmo que parte das informações estejam “perdidas” ou “erradas”.

Dado um par associado s:t composto por um vetor s de n elementos e um vetor t de m elementos, necessitamos então de uma rede com n vetores de entrada e m vetores de saída e os pesos podem ser representados em uma matriz W de n linhas por m colunas.

Desta forma, para testarmos se a rede associa corretamente um determinado padrão s a um padrão t, o produto de s por W, sendo aplicado à função de ativação, deverá resultar em t, ou seja:

f(s.W) = t

Regra Hebb

Regra mais simples para a determinação de pesos para uma rede neural associativa.

Algoritmo:

  • Inicialize todos os pesos wij = 0;
  • Para cada vetor de treinamento s:t faça
    • xi = si;
    • yj = tj;
    • wij = wij + xi*yj;

Como se pode perceber Cálculo de pesos de uma rede neural , ou seja, a matriz de pesos W é igual ao produto externo dos vetores s e t.

Matriz dos vetores de treinamento

Perfect recall versus cross talk

Quanto maior for a correlação dos vetores de entrada, maior será o cross talk (ou seja, há contribuições dos vetores nos pesos de forma a perder a precisão).
Já no caso de vetores ortogonais (que são não correlacionados) a rede Hebb irá produzir pesos corretos, conseguindo assim um perfect recall.

Regra Delta

A regra Delta consegue reproduzir melhores resultados que a regra Hebb quando os vetores de entrada do treinamento são não ortogonais.
Como já vimos, a regra Delta original expressa a variação de pesos da seguinte forma:

Variação dos pesos na regra delta original

Uma variação da regra Delta leva em consideração uma função de ativação diferenciável de forma que a diferencial desta entra no cálculo da variação de pesos da seguinte forma:

Variação dos pesos na regra delta modificada

Redes Neurais de Memória Heteroassociativa

São redes em que os pesos são determinados de tal forma que elas podem armazenar um conjunto P de associações padrões.
Uma rede heteroassociativa assemelha-se à representada na figura abaixo:

Exemplo de rede heteroassociativa

Em seu treinamento tanto a regra Hebb quanto a regra Delta pode ser empregada.

A função de ativação das unidades de saída pode ser de uma das seguintes formas:

  • Função de ativação step bipolar Função de ativação step bipolar
  • Função de ativação step binária Função de ativação step binária
  • Função de ativação incluindo um threshold θi (usada em redes de memória associativa bidirecional – BAM) Função de ativação incluindo um threshold

Dado um conjunto de associações padrões S = s(1):t(1), … , s(i):t(i), … , s(P):t(P), se treinarmos uma rede associativa por regra Hebb para cada um desses padrões, teremos matrizes de pesos W(1) , … , W(i), … , W(P). Uma rede heteroassociativa treinada por regra Hebb para o conjunto de padrões S terá uma matriz de pesos W = W(1) + … + W(2) + … + W(P).

Rede Autoassociativa

Uma rede autoassociativa trata-se de um caso especial de rede heteroassociativa na qual o vetor de entrada do treinamento e a saída desejada são idênticos, desta forma, o treinamento resulta naquilo que é chamado de armazenamento do vetor.
A arquitetura de uma rede autoassociativa é, então, da seguinte forma:

Modelo de rede autoassociativa

A matriz W de pesos será tal que possuirá n linhas por n colunas e pode ser encontrada a partir da seguinte forma:

Cálculo da matriz de pesos

Que expressa a soma das matrizes-peso para cada padrão por meio da regra Hebb em um único somatório.
É necessário dizer também que, após o cálculo da matriz W, é comum “zerar-se” (estabelecer seu valor para zero) a diagonal principal dessa matriz, pratica esta que visa aumentar a plausibilidade biológica e previne a produção da matriz identidade para os pesos (quando empregada a regra Delta), além de ser necessário no caso da rede ser iterativa.

Capacidade de Armazenamento

A capacidade de uma rede de armazenamento autoassociativa depende do número de componentes que os vetores armazenados possuem e da correlação existente entre eles, sendo que quanto menor a correlação entre eles, mais vetores podem ser armazenados, alcançando número máximo quando todos os vetores são ortogonais entre si.
Sendo assim, dados vetores bipolares mutuamente ortogonais de n componentes, n – 1 destes vetores é o número máximo que se pode armazenar usando a matriz peso da soma dos produtos externos (com os termos das diagonais “zerados”).

Rede Autoassociativa Iterativa

Algumas redes não são capazes de associar na primeira tentativa um vetor que possua muitas “incertezas” (no caso de padrões bipolares, representadas pelo valor zero), entretanto o fazem muito bem após iterar sobre o resultado, ou seja, utilizar o resultado obtido na iteração anterior como nova entrada, até que não mais haja incertezas sobre os dados.
Essas redes são conhecidas como redes autoassociativas iterativas e encontram nas redes de Hopfield algumas de suas mais fortes representantes.
Nesse tipo de rede é muito comum ter todos os n neurônios conectados entre si, o que leva a deixar de identificar suas camadas como camada de entrada e camada de saída.

Autoassociador Linear Recorrente

Trata-se do tipo mais simples de rede neural autoassociadora iterativa.
Apresenta todos os seus neurônios interconectados e os pesos podem ser encontrados pela regra Hebb.
Uma vez que a regra Hebb trata-se do somatório das componentes dos vetores de entrada (para ser mais específico, do quadrado das componentes), os pesos correspondentes podem crescer indefinidamente, alterando assim a confiabilidade das informações obtidas por essa rede.
Para resolver isso, desenvolveu-se uma modificação deste tipo de rede, criando assim o “Brain-State-in-a-Box” (redes BSB).
Essas redes possuem esse nome porque impõem limites ao crescimento por meio da modificação da função de ativação, restringindo assim os valores possíveis a um cubo. Neste tipo de rede, as autoconexões (os termos da diagonal principal da matriz) não são “zerados”, havendo uma autoconexão com peso 1.
Uma outra possibilidade é trabalhar com uma função de ativação baseada no threshold. Neste caso, podemos ter vetores de entrada bipolares, pesos simétricos ( wij = wji ) e nenhuma autoconexão ( wii = 0 ) tendo como função threshold a seguinte:
Função de ativação de autoassociador linear recorrente

Rede Discreta de Hopfield

As redes de Hopfield também são completamente interconectadas, possuem pesos simétricos e nenhuma autoconexão. O que realmente as difere das anteriores é o fato de que somente uma unidade terá seu valor de ativação atualizado de cada vez e cada uma dessas unidades continua a receber um sinal externo além do sinal de cada um dos outros neurônios na rede.
Essa atualização assíncrona permite a determinação da função de Lyapunov (ou função de energia), capaz de descrever de que forma a rede convergirá para a solução.
A inicialização dos pesos (lembrando que se trata de armazenamento de padrões, ou seja, uma rede autoassociativa) pode ser feita usando-se a regra Hebb e, após esta, para cada vetor de entrada deve-se atualizar de forma assíncrona (escolhendo aleatoriamente um neurônio de cada vez, mas tendo o cuidado de atualizar todos na mesma proporção) os valores de ativação, até que estes atinjam a convergência para aquilo que será a resposta de nossa rede.
Nossa função de ativação pode trabalhar com um valor θi ou ter como threshold o valor zero.
Inicialmente, a entrada externa (ou seja, os valores do vetor de entrada) era usada somente no início de cada passo, entretanto algumas modificações da rede de Hopfield podem utilizar-se da entrada externa durante todo o processo.

Função Energia

Função energia

Capacidade de Armazenamento
Hopfield para padrões binários – Capacidade de armazenamento para hopfield para padrões binários

Hopfield para padrões bipolares – Capacidade de armazenamento para hopfield para padrões bipolares

Memória Associativa Bidirecional (BAM)

Uma rede BAM é capaz de armazenar um conjunto de associações-padrão por meio da soma de matrizes de correlação bipolares.
Sua arquitetura consiste de duas camadas de neurônios, cada qual conectado a todos os neurônios da outra camada por meio de conexões bidirecionais.
Uma vez que o sinal será enviado e retornado entre essas camadas diversas vezes até convergir, é convencionado denominar essas camadas de “camada X” e “camada Y”, em vez de camadas de entrada e saída.
A arquitetura de uma rede BAM fica, então, da seguinte forma:

Modelo de rede BAM

BAM discreta

Há duas formas de rede BAM que se utilizam de padrões de entrada e saída discretos são as formas binárias e bipolares, ambas com um comportamento muito similar.
O cálculo do peso é encontrado mais uma vez por meio do produto externo das formas bipolares dos vetores pares de treinamento. Além disso, a função de ativação continua sendo uma função step, sendo que, agora, quando o valor de entrada for igual ao threshold, a função de ativação opta por manter o valor de ativação previamente conhecido.
Uma função de ativação pode ser, por exemplo (considerando uma rede BAM bipolar):
Função de ativação para rede BAM bipolar

BAM contínua

Uma rede BAM contínua transforma de forma suave e contínua a saída em um valor no intervalo [0, 1] usando para isso não mais uma função step, mas sim uma função sigmóide logística.
A função de ativação é:

Função de ativação para uma rede BAM contínua

O cálculo do y_inj leva em consideração o valor de um bias, diferentemente das outras redes associativas que temos visto aqui.

Outros Conceitos

Distância Hamming

A distância Hamming entre dois vetores x1 e x2 (denotada por H[x1, x2]) trata-se do número de componentes diferentes que estes possuem.
A distância média Hamming entre dois vetores é Cálculo da distância hamming
, valor este que expressa o percentual de diferenças que há entre os dois vetores.

Apagar uma associação armazenada

Seja xc o complemento de um vetor bipolar x (ou seja, um vetor que inverte os valores 1 por –1 e vice-versa).
Codificar uma matriz-peso para armazenar xc:tc é o mesmo que codificá-la para armazenar x:t.
Entretanto, se ela for treinada para armazenar xc:t ou x:tc, ela perderá as informações armazenadas a respeito do par associado x:t, o que é facilmente provado por meio de álgebra linear.

[Conteúdo pertencente ao Material do curso de Redes Neurais Artificiais]

Share and Enjoy

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

One comment

Leave a Reply

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

Email
Print