VisualSOM – REDES NEURAIS

Competitive Learning - Referência de operação

DEI - PUC-Rio  Isnard Martins – 2005/ 2006

 

Download Software Visual SOM (13mg)       Instruções Preliminares para instalação (10 kb)


Comercialização proibida. Para uso exclusivo por estudantes,
professores e pesquisadores, citando os  autores e referências
Professores Dra Marley Vellasco e Drd. Isnard Martins. PUC-Rio

1-      Conceitos

 

Este laboratório, orientado para aplicações de redes neurais, permite ensaios com variáveis normalizadas, agrupando os resultados em clusters processados.

As variáveis são denominadas “Inputs” e os neurônios agrupadores são denominados “Pesos”.

Estas informações permanecem residentes temporariamente em uma tabela localizada em um painel de trabalho do programa.

 

O arquivo de entrada de informações para esta tabela, em formato texto, recebeu o sufixo “nomedoarquivo.som”, podendo ser editado usando programas comuns do Windows como Word, Notepad, Wordpad ou Excel.

 

Como unidade de informação básica de entrada, o arquivo apresenta a linha de dados, exemplificada abaixo:

 

Tipo

Coseno (variável1)

Seno(variável2)

ângulo

Titulo

Ordem

Input

0,2379

0,8206

199

Copacabana

1

 

Um exemplo de conteúdo parcial de um arquivo “*.som”:

(a primeira linha do arquivo será simplesmente a referência do título da tabela)

 

 
Tipo,CosY,SenX,Angulo,Titulo,Ordem

Input,0@6,0@8,37,,1

Input,-0@9848,0@1736,280,,2

Input,0@707,0@707,46,,3

Input,-0@9397,0@342,291,,4

Input,0@8,0@6,54,,5

Peso,0,1,0,,1

Peso,0,-1,180,,2

Após a entrada deste arquivo teremos:

 

Observações

O “@” substitui o ponto decimal para efeitos de importação do arquivo texto pelas rotinas do programa aplicativo.

Os campos devem estar separados por vírgula. Apos o último campo a linha não apresenta vírgula. A ausência do campo deve estar indicada por duas vírgulas seqüenciadas,

   Ex Input,0@2379,-0@0929,109, ,2

Em uma planilha Excel, esta conversão é automática.

 

O sistema dispõe também de recursos para suportar entradas gráficas, livremente traçadas na tela pelo usuário, conforme pode ser observado na tabela abaixo:

 

Três entradas livremente traçadas

Conversão e normalização da entrada

Traçadas pelo usuário na tela

 

Conversão pelo sistema, mediante opção do usuário digitando [F1] após o traçado da linha ou clicando a opção no menu

 

Pincel

 

Etapas para obtenção da representação acima:

  • Foi traçada uma reta de tamanho arbitrário, localizada em qualquer posição na tela.
  • Foi digitada a Tecla F1, atalho para a rotina de transformação da reta em dado de entrada [Input – Entrada Gráfica] acionada imediatamente após o desenho da reta.
  • Você poderá optar pela transformação de Linha em Entrada , diretamente clicando o menu do programa. O programa calculou o coeficiente angular da reta, normalizando a reta como entrada na tabela.
  • Opção: Digitando-se a tecla [F5] o programa executa a ciclagem da Tela, permanecendo apenas com os Vetores Neurais. (equivale ao acionamento da tecla reciclagem, localizada no painel de ferramentas).
  • Opção: Se desejarmos [Peso] no lugar de [Input] digitamos [F9]. Este procedimento altera a coluna 1, desta forma alteramos o tipo da entrada, passando de “Input” para “Peso”. Este procedimento refere-se sempre à última linha obtida para a tabela.
  • Você poderá optar pela transformação de Linha em Peso , diretamente clicando o menu do programa.
  • As demais retas seguiram o mesmo procedimento acima descrito.

 

O VisualSom está ajustado de forma nativa para o desenho de retas na tela. Este ajuste é alterado se o usuário selecionar outro modo do Pincel ativado, clicando-se sobre opção no painel móvel, Deslocando-se o cursor para o extremo direito da tela, este painel é ativado. Retornando com o menu para esquerda este painel é desativado. A pequena janela de apresentação de modo exibe o tipo de pincel que está presentemente em uso.

 

 

Este painel auxiliar apresenta opções de pincel que podem ser utilizados a qualquer tempo:

  • Circulo
  • Quadrado
  • Segmento de Reta

 

Para ativar este painel de Pincéis, desloque o cursor para o extremo direito da tela.

A desativação do painel é automática.

 

Outra possibilidade oferecida pelo programa é a entrada de dados diretamente digitada.

O usuário pode registrar as suas informações diretamente na tabela no painel de  trabalho.

 

Tipo

Coseno (variável1)

Seno (variável2)

ângulo

Titulo

# linha

Input

0,2379

0,8206

199

Copacabana

1

 

As seguintes restrições e facilidades deverão ser observadas:

 

·         O campo Seno (3a. coluna) e Coseno (2a. coluna) admitem apenas dados numéricos, exceto os símbolos  (-) menos, (.) ponto decimal ou (,) vírgula.

 

·         Os campos [Titulo] (4a. coluna) e [Ordem] (5a. coluna) admitem dados alfanuméricos

 

·         O campo [Tipo] (1a. coluna) admite apenas o caracter “I” ,  “W”  ou “P” que geram o título “Input’ ou “Peso”.

 

·         Nos campos Seno (3a. coluna) e Coseno (2a. coluna), para efeitos de processamento, o sistema converte automaticamente o ponto decimal em vírgula.

 

·         Para ampliar o tamanho da tabela digite o botão [Inclui Linha]

 

·         Para excluir uma linha digite a coluna [1] na linha selecionada e digite a tecla [Retira linha].

 

·         O preenchimento dos campos [Titulo] (4a. coluna) e [# numero do input] (5a. coluna) é opcional.

 

·         Quando a solicitação de ciclagem da tela é acionada o programa ajusta os dados, eliminando as linhas em excesso, calcula o ângulo de referência das coordenadas e re-numera os vetores (coluna 5), segundo categoria selecionada – Input ou Peso.

 

·         É possível digitar o ângulo e pedir o cálculo das coordenadas. Digite o ângulo desejado e acione com duplo-click (dois clique rápidos) sobre a informação do ângulo que se deseja obter as coordenadas.

 

As seguintes teclas de apoio estão disponíveis:

 

Tecla

Ação

ESC

Limpa o campo

Back Space

Apaga o último dígito no campo selecionado

Setas

Desloca para o campo referente à direção da seta digitada

F1

Esta operação transforma a última reta desenhada em uma entrada da rede.

F5

Esta operação retira as “retas -rascunho” iniciadoras, mantendo apenas as entradas devidamente normalizadas

F9

Converte a última entrada em vetor de Peso para a rede

F11

Inicia a competição dos processadores por um número de ciclos indicado no painel de ferramentas

F12

Inicia a operação de refinamento, decaindo monotonicamente a taxa de aprendizado (valor de Alfa) em sucessivas iterações.

 

 

 

2- Resumo geral de operação (1)

 

Edita na tela os Títulos das Entradas (inputs)

Edita na Tela as coordenadas das entradas e  centróides

Exporta para Excel os Clusters processados

Exporta em formato texto os Clusters processados

Importa uma tabela formato texto contendo Titulo, Seno e Coseno
 Os campos devem estar editados com ponto decimal  no lugar de virgulas.
Estes campos importada deverão estar separados por vígulas

 

 

 

Valores pré-fixados para Alfa
É possível alterar diretamente o valos de Alfa manualmente, digitando no campo indicado no formato  0.n

Processa uma iteração (geralmente a inicial ou teste)

Processa N iterações. O valor de N pode ser alterado nos parâmetros

Processa N iterações reduzindo sucessivamente a taxa de aprendizado até o valor especificado na tabela de parâmetros

Recicla todas as entradas na tabela principal

Ativa a tabela de entradas

 

 

2-      Resumo geral de operação (2)

 

Edita no relatório a imagem do hiper espaço e  resumo das propriedades dos neurônios

Edita no relatório, a imagem do hiper espaço

Apresenta o conteúdo do relatório editado até o momento

Apresenta o Log editado do processamento

 

 

Tabela de Entradas

 

Amplia a ou retira uma linha  - (selecionar a linha a ser retirada clicando na coluna 1 da tabela)

Exporta a Tabela para Excel

Abre / fecha painel da Tabela

Interrompe um processamento longo

Esconde / Exibe painel complementar de Ferramentas

Lê uma tabela formatada em Excel (preparada para o sistema Visual Som)

 

3- Guia Prático, em pequenos passos.

 

Abra o programa

Feche o painel e siga os passos indicados.

Para iniciar, permaneça com a tela limpa, conforme a imagem abaixo apresentada.

 

3.1 - O Desenho das Entradas – Inputs Gráficos

 

Figura 1 - Inicio


Mantendo o botão esquerdo do mouse pressionado, desenhe uma linha reta no 1o. quadrante, conforme o gráfico abaixo, iniciando próximo ao centro do círculo e terminando no sentido nordeste. O início da reta não necessita estar situado exatamente sobre o centro do círculo.

 

Sentido da seta neste exemplo

 

Figura 2 – Traçado de um Vetor de Entrada

 

O sentido da reta é indicado pelos seus extremos – o ponto preto é o início (cabeça), o vermelho é o final (cauda).

A posição da reta na tela pode ser livremente escolhida pelo usuário. O normaliza sistema a entrada como um raio do circulo, cujo coeficiente angular será  igual aquele da reta originalmente desenhada.

 

Aperte [F1]. Esta operação transforma a última reta desenhada em uma entrada da rede.

 

Figura 3 – Transformação da reta em Input

Figura 4 – Geração de n estradas

 

Repita a operação para várias retas.

Lembre-se: A posição da reta na tela é livre. Após cada reta desenhada pressione [F1].

A localização da entrada no sistema de quadrantes dependerá do sentido definido pela reta, isto é, segundo a direção entre a cabeça e a cauda da reta. A cabeça apresenta um ponto preto e a cauda apresenta um ponto vermelho. O ponto preto corresponderá ao centro do círculo e o ponto vermelho define o final do raio normalizado no círculo.

 

Figura 5 - Reciclagem

 

Para reciclar o trabalho e entradas pressione [F5] a qualquer momento. Esta operação retira as “retas -rascunho” iniciadoras, mantendo apenas as entradas devidamente normalizadas (figura 5).

 

Para transformar uma reta em vetor de Peso para a rede, pressione [F9] após pressionar [F1] Esta operação deverá ocorrer logo após a transformação da reta desenhada na tela em Input, (ação da tecla [F1]). Desta forma estaremos garantindo que a última entrada será um vetor de Peso que é indicado pela cor escura na tela. Veja abaixo dois exemplos.

 

Figura 6 – 1 Vetor de Peso no primeiro quadrante

Figura 7 – Vários vetores de Peso.

 

O limite atual corresponde a 200 entradas, combinando-se Inputs e Pesos.

 

3.2 - A Competição

 

Figura 8 – Resultado de 20 iterações desenvolvidas nesta competição

 

A competição dos processadores tem início pressionando-se [F11].

Com esta operação o sistema realiza 20 ciclos completos, utilizando os parâmetros fixados no painel de especificações (Valor de Alfa e número de ciclos da competição).

A figura 6 apresenta o resultado desenvolvido pela primeira competição comandada para o exemplo.  Se o desenho deste teste seguiu o modelo apresentado, o resultado estará próximo ao gráfico acima exibido. As linhas verdes representam o curso de ação de cada neurônio na competição. Mais tarde você verificará que poderá também dar partida na competição, acionando o processamento desejado pelo menu do programa (Neurais) ou pelo painel de especificações.

Normalmente a fase seguinte seria a operação de refinamento, decaindo monotonicamente a taxa de aprendizado (valor de Alfa) em sucessivas iterações. Esta operação pode ser solicitada através da tecla [F12].

 

Observe este painel temporário sobre a tela.

 

Representa um monitor do processamento. A barra indica o progresso do processamento. O painel seguinte apresenta a taxa de aprendizado corrente em uso e  leds que indicam se a rede está aprendendo ou encontra-se paralisada no ciclo atual. O sinaleiro também indica o aprendizado, apresentando a fase Verde, se ativada ou se paralisada, apresenta a fase vermelha ativada. Se o usuário deseja interromper o processamento basta dar um clique do mouse sobre o sinal. Este pequeno led ao lado do comutador do painel é ativado por erros originados na operação do programa.

 

Figura 9 – Resultado de sucessivas iterações refinando a competição, decaindo a taxa de aprendizado.

 

Teste diversas vezes a tecla [F12], observando o comportamento do painel diante das alterações da competição. Este teste utilizado como exemplo pode ser recuperado a qualquer momento pela leitura do arquivo “Primeira Competição.Som” , localizado no sub-diretório Neurais/Arquivos

 

Observações:

  • O tamanho da tela pode ser ajustado para as conveniências do usuário.
  • O limite mínimo da tela ativada é igual ao tamanho do painel de especificações.
  • A tela pode ser minimizada ou maximizada a qualquer momento.
  • Após um reajuste de tamanho da tela, o programa realiza automaticamente uma ação necessária de reciclagem (igual ao resultado promovido pela tecla [F5]) para redimensionamento da figura ativada na tela.
  • Os resultados da Iteração, promovidos por [F11] ou [F12], podem ser explorados de diversas formas impressas ou gráficas, através de funções disponíveis no painel de especificações.
  • Explore os caminhos oferecidos no painel de especificações e observe as facilidades presentes para conferir os resultados da competição. Um destes resultados é apresentado em um “passo-a-passo” de toda competição processada. Utilize para este fim o botão [LOG] localizado na barra direita do painel. Os Log´s são arquivados no diretório Neurais/Log e recebem um numero diário seqüencial decrescente. Este arquivo deve ser imediatamente aproveitado pelo usuário ou eliminado após cada sessão de uso do programa.

 

3.3 - O painel de Especificações

 

Os dados abaixo representam os vetores registrados de forma gráfica para o sistema.

Acione o painel através da palavra “Painel on /off” na tela.

 

Os dados apresentados podem ser alterados, inseridos ou eliminados.

Se inserirmos os vetores manualmente, será necessário usar o processamento de normalização das entradas localizado nas ferramentas do painel de especificações. Se a entrada foi realizada através de meio gráfico (retas traçadas na tela), a normalização será automática logo após a primeira operação de reciclagem. Observe que a mesma operação realizada pela tecla [F5] pode ser solicitada no botão de reciclagem deste Painel.

Figura 10 – Vetores de Entrada localizados na matriz de dados do painel de especificações

 

 

Este é o conjunto de ferramentas do programa VisualSom, através do qual é possível explorar resultados do processamento e redefinir parâmetros da Iteração.

 

O botão de normalização dos parâmetros de entrada está localizado neste grupo de facilidades. Use quando precisar obter normalização entre as entradas, prévia e individualmente normalizadas.

 

Um exemplo desta operação seria uma entrada manual de valores para vetores, diretamente digitados nos campos da tabela.

Figura 11 – Conjunto de ferramentas no painel de especificações

 

Se optarmos pela digitação do valor do ângulo da entrada (campo 4) deveremos clicar sobre este valor digitado. O sistema calculará automaticamente o valor das coordenadas do vetor, correspondentes aos valores normalizados dos campos seno e coseno do ângulo digitado.

 

3.4 - Agregando Títulos às Entradas

 

Digite na coluna 5 da tabela os títulos das entradas registradas. Neste exemplo colocamos nomes dos campos que participam de uma hipotética “competição de Neurônios”.

 

     

Figura 12 – Títulos digitados nos vetores de entrada

Figura 13 – Acionando a função [ Editar Títulos ]

 

Figura 13 – Vetores de Entrada localizados na matriz de dados do painel de especificações

 

  • Para trocar os dados digite [ESC] no campo desejado.
  • O campo 1 admite apenas a letra “I” de Input ou “W” ou “P” de Peso.
  • Os campos 2,3,4 aceitam apenas dados numéricos , exceto “-“ menos , “,” vírgula ou ponto decimal.
  • Para eliminar ou incluir linhas na tabela digite as teclas de edição.
  • Edite os títulos na tela, acionando a tecla [Editar Títulos] no conjunto de ferramentas.

 

Após o processamento, se desejar observar a posição dos centróides no espaço acione a tecla [Editar Centróides], localizada no conjunto de ferramentas.

 

Observações

 

Freqüentemente os resultados da competição não apresentam seus dados não tão arrumados ou inteligíveis como apresentado neste exemplo, particularmente quando a densidade dos vetores de entrada é alta e/ou graficamente confusa.

 

Para uma melhor compreensão dos resultados utilize uma das funções de edição de resultados. Uma boa idéia é utilizar as saídas impressas em arquivo texto ou arquivo Excel. Estas opções encontram-se no conjunto de ferramentas do painel de especificações.

Figura 13 – Edição dos centróides pós-processamento


4 - Referencial Teórico (Marley Vellasco, 2005)

 

Competitive Learning

 

É uma forma de aprendizado que particiona o conjunto de padrões de entrada em grupos específicos de dados.

 

Forma simplificada : Winner takes all (o ganhador leva tudo)

 

4.1 - Objetivos:

·         Demonstrar graficamente os resultados promovidos por uma competição entre os processadores de uma rede neural auto-organizável.

·         Desenvolver ensaios laboratoriais de estudos, onde o método denominado Competitive Learning pode ser aplicado como solução para “clusterização” de variáveis.

 

Competitive Learning

S 1
 
Topologia

 

 

 

 

 

 

 

 

 

 

 

 

 


ICA –DEE, Vellasco, 2005

 

            O número de processadores corresponde ao número de grupamentos desejados.

 

4.2 – Características da Solução Competitive Learning

 

Regra de propagação

net j = Σ xj . wji = x.wj

Função de ativação

Degrau (apenas para o neurônio vencedor)

Topologia

Uma única camada de processadores

Algoritmo de aprendizado

Não supervisionado

Δwki = α. ( xi – wki)

Valores de entrada/saída

Binários/contínuos

 

4.3 - Representação Geométrica

 

Supondo todos os vetores de entrada e vetores de peso normalizados – tem-se todos os vetores dentro de um circulo de raio 1

= ||x 2|| ||w1|| cos θ

 

w – processadores

x - entradas

 

calcula-se
 net1 = |x 2|| |||w1|| cos θ

 

Ajusta-se os pesos de forma que os vetores de entrada similares ativem o mesmo neurônio.

A direção de atualização dos pesos minimiza a diferença entre o vetor de pesos e o vetor de entrada do processador vencedor.

 

Reduzimos o valor de (X-W), multiplicando por α , onde 0 < α <1.

Isto reduz a aproximação de W para X.

 

W novo = Wantigo + α. ( xi – wki)

 

Aprendizado:

 

Wt – vetor de peso do neurônio vencedor no instante t

 
Δwki = α. ( xi – wki)

 

 

 

 

 


 

 


Δwki = α. ( xi – wki)

 

 

 

 

 

Hiperplano

 
 

 

 

 

 

 

 

 


Somente o peso do neurônio vencedor é atualizado porque será o que melhor representa aquele padrão de entrada do grupo ao qual pertence.

A atualização dos pesos do processador vencedor aproxima ainda mais o vetor W do vetor de entrada corrente.

 

No caso de vetores normalizados, o processador vencedor é o que possui o vetor W mais próximo do vetor de entrada.

 

O processador vencedor é o que possui maior valor de net.

 

net1 =  Σ xj . wji = x.wj  = ||x 2|| |||w1|| cos θ = cos θ

 

A regra de propagação (soma ponderada)  indica a proximidade dos dois vetores

 

Usamos  0 < α <1 porque queremos o vetor W representando uma classe ou grupo de padrões e não um padrão específico. Desta forma W procura o centro do grupo.

 

O valor de α deve ser adaptativo, decrescendo com o tempo.

 

6 – Programação Resumida

 

Programação do aprendizado Visual SOM

Tabela de Vetores é MSFlexGrid1

matriz Inputs() contém Entradas

matriz Pesos() contém Pesos

 

l***Loop de entrada  para cada entrada

        For W = 1 To Ubond Inputs ()

 

            *** Faz Entrada Processada = W

                 Entrada Atual = Input(w)

 

            *** Inicializa Peso ganhador

                  Peso Ganhador =999

                 Teta ganhador = 999

 

            l***Loop para cada peso

                        For i = 0 To ubond Pesos (i)

 

            *** Faz Entrada Processada = W

                  Pesos Atual = Pesos (w)

 

                angulo1 = Val(MSFlexGrid1.TextArray(faIndex1(ii, 3)))

                angulo2 = Val(MSFlexGrid1.TextArray(faIndex1(wi, 3)))

 

                ******   prepara calculo de teta

 

                AngDif = Abs(Angulo 1 – Angulo 2)              

             

                Cosen1 = (MSFlexGrid1.TextArray(faIndex1(ii, 2)))

                Cosen2 = (MSFlexGrid1.TextArray(faIndex1(wi, 2)))

                               

                Teta Atual = (Cos(AngDif))

 

               ****** Taxa = Taxa aprendizado atual

                       Taxa = alfa

 

            Se TetaGanhador > Teta Atual then

                      Faz TetaGanhador = Teta Atual

                      Faz Peso ganhador = Peso Artual

            End  if

 

                          Next  i

 

               ***** atualiza novo W  ganhador

                 ****  atualiza novo W

                           W delta = (AngDif) * Taxa                               

                 *****'  direção de W

                            Novo W = (W antigo – W delta)

                  ****** Atualiza tabela com novo W

                           MSFlexGrid1.TextArray(faIndex1(Winerlinha, 3)) = Abs(NovoW)               

                  *****  atualiza dominio do Peso W

                               Inputs Dominio (wi) = Input Ganhador                

        Next W

 

5 - Bibliografia

 

Vellasco Marley, Redes Neurais, ICA Núcleo de Pesquisa em Inteligência Computacional Aplicada, PUC-Rio, Julho de 2005

 

Haykin Simon; Neural Networks – A Comprehensive Foundation. Macmillan College Publishing Company, USA, 1994

 

Martins Isnard. Software Visual SOM – Competitive Learning Redes Neurais. DEI , PUC-Rio, 2005/2006