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:
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:
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 |
Valores pré-fixados para Alfa
|
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) |
Abra o programa
Feche o painel e siga os passos indicados.
Para iniciar, permaneça com a tela limpa, conforme a imagem
abaixo apresentada.
|
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.
|
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:
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.
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 |
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çõesFreqü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 |
É 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 |
|||||
|
|||||
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:
Δwki
= α. ( xi – wki)
Wt – vetor de peso do neurônio vencedor no instante t
Δwki = α.
( xi – wki)
|
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.
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
*****
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
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,
Martins Isnard. Software Visual SOM –
Competitive Learning Redes Neurais. DEI , PUC-Rio, 2005/2006