I - INTRODUCAO : Este trabalho simula uma rede neuronal counterpropagation, com a primeira camada em camada de KOHONEN, podendo ter ate 30 neuronios que agrupam as entradas em sub-classes por similaridade, e a segunda composta de no maximo 10 neuronios do tipo PERCEPTRON capazes de agrupar subclasses adjacentes em uma unica classe. Os neuronios da primeira camada sao criados a medida em que se faz necessario um maior numero deles para cobrir o espaco de entrada. Na segunda camada os neuronios sao criados a medida em que se descobre a proximidade entre duas sub-classes definidas na primeira camada. Os objetivos principais do programa sao : fazer a classificacao em sub-classes por similaridade e agrupar as sub- classes adjacente em uma unica classe. II- PROGRAMA : O programa foi implementado tendo como base o programa de simulacao do algoritmo backpropagation do aluno Marcelo Canelas, sendo este por sua vez implementado com base no programa SARN. Procurou-se ao maximo preservar a estrutura do programa origem mantendo os mesmos nomes de variaveis, janelas de apresentacao, entrada de dados, a mesma tela grafica, a entrada de dados via teclado ou via arquivo, a possibilidade de gerar os dados aleatoriamente. Quanto ao algoritmo neuronal propriamente dito, o programa teve que ser totalmente alterado. III- OPCOES DO MENU PRINCIPAL : O menu principal e'acessado e sempre se retorna a ele ao final de cada operacao. Para acessar as suas opcoes basta teclar a letra em evidencia. -[C]lusters : O usuario tem a opcao de escolher entre definicao por teclado ou leitura em arquivo. Para se ler um arquivo basta teclar 'Y', caso contr ario, sera' acessada a definicao por teclado. - Leitura em arquivo : E' perguntado o nome do arquivo sem extensao, e se desejar ver o diretorio corrente, basta entrar com '?'. Caso o arquivo nao seja encontrado, e'mostrado uma tela de advertencia e se retorna ao menu principal. - Definicao por teclado : E'perguntado o numero de classes que deve ser entre 1 e 10, e em seguida e'mostrado um submenu com as seguintes opcoes: - [T]ype : Onde deve ser definido o tipo, circulo ou retangulo, as coordenadas do ponto central da classe, o raio no caso da classe ser circulo e a altura e largura no caso da classe ser retangulo. Caso se tecle [Esc] e'assumido o tipo anteriormente definido, e caso se tecle [Return] durante a entrada de dados, e assumido o valor previamente definido, que e' mostrado. - [P]robability : E' perguntado a probabilidade de ocorrencia de um ponto cada classe, sendo que a ultima e' o complemento para 100. Caso a ultima classe venha ter probabilidade nula ou negativa, as probabi- lidades nao serao aceitas. Neste caso e' mostrado uma tela de adver- tencia e se retorna ao submenu de definicao por teclado. - [R]andom Choice : Os tipos e as suas respectivas localizacoes e definicoes sao escolhidos aleatoriamente seguindo regras descritas no item SIMULACAO. -[P]arameters : Caso as classes nao tenham sido previamente definidas, e' mostrado uma tela de advertencia e se retorna ao menu principal. Do contrario, entra no submenu de definicao dos parametros. - [S]inapses : Possui duas opcoes de alteracao de parametros relativos ao treinamento das sinapses : 1- Sinapses Prunning : iteraction Informa qual o numero de repeticoes das iteracoes necessarias para que seja verificada a necessidade da poda das sinapses. 2- Sinapses Jumps : ALFA Define o fator de reducao do passo de treinamento a cada nova iteracao. * E' dividido em quatro entradas que compoem a curva exponencial de decrescimento. No 1i = No 1i ( 1 - 1 / tauNo1) No 2i = No 2i ( 1 - 1 / tauNo2) onde : ALFA i = No 1i + No 2i - Os valores de inicializacao estao ajustados para classes de entrada pequenas, e sao os seguintes : No 1i = 0.9 No 2i = 0.2 tauNo1 = 20 tauNo2 = 200 - Para classes de entrada grandes sugere-se os seguintes valores para os parāmetros : No 1i = 0.8 No 2i = 0.1 tauNo1 = 10 tauNo2 = 200 - [I]nfluence Sferes : Apresenta as opcoes disponiveis relativas as esferas de influencia das sinapses : 1 - Sferes Distance : Permite ao usuario a escolha da proximidade entre as sinapses que a segunda camada aceitaria como pertencente a uma mesma classe . * Para o valor 1 a proximidade e' o limite das esferas. Para valores maiores que 1, as esferas podem estar mais afastadas, e para valores entre 1 e 0, as esferas devem se sobrepor. 2 - Sferes Reductor : Apresenta a opcao de aumentar ou diminuir o indice de reducao de tamanho das esferas de influencia das sinapses a cada iteracao. * E' dividido em quatro entradas que compoem a curva exponencial de decrescimento. Red 1i = Red 1i ( 1 - 1 / taured1) Red 2i = Red 2i ( 1 - 1 / taured2) onde : Redutor i = Red 1i + Red 2i - Os valores de inicializacao estao ajustados para classes de entrada pequenas, e sao os seguintes : Red 1i = 0.2 Red 2i = 0.01 taured1 = 20 taured2 = 200 - Para classes de entrada grandes sugere-se os seguintes valores para os parāmetros : Red 1i = 0.2 Red 2i = 0.02 taured1 = 15 taured2 = 200 -[V]isual : Nesta opcao e' possivel visualizar o posicionamento das classes, caso tenham sido previamente definidas. -[T]raining : Inicia o processo de simulacao da rede neuronal counterpropagation. Todos os parametros previamente definidos pelo usuario sao assumidos, os que nao forem definidos pelo usuario serao definidos aleatoriamente seguindo regras predeterminadas, que sao as seguintes : - Caso o numero de classes nao seja definido, sera determinado aleatoriamente um numero inteiro entre 1 e 10; - Caso as classes nao sejam definidas, serao os tipos escolhidos aleatoriamente entre circulo e retangulo. No caso da escolha ser circulo, o raio e'determinado aleato- riamente na faixa de 0,05 a 0,20. Sendo a escolha um retangulo, a altura e a largura serao determinadas aleatoriamente na faixa de 0,05 a 0,30. O ponto central das classes tera'as suas coor- denadas escolhidas aleatoriamente no plano (X,Y) dentro do circulo unitario, de modo que as entrada sejam normalizadas e que as classes nao se interceptem. - Nao sendo definido os valores para as probabilidades de cada classe, todas as probabilidades serao definidas iguais a 100/(numero de classes); - Se os parametros nao forem definidos pelo usuario, serao assumidos os valores defaults; - Sinapses Jumps : N0 = 25 - Sinapses Prunning : Iteraction = 300 - Sferes Reductor = 15 - Sferes Distance = 0.60 -[E]nd : Entra no seguinte submenu : -[S]ave : Salva as informacoes definidas em disco e volta para o menu principal. -[R]estart : Inicializa todas as variaveis com os valores defaults e entra na tela de apresentacao. -[E]nd : Caso as informacoes definidas nao tenham sido salvas, pergunta se quer salva-las em disco. Caso afirmativo, salva e sai do programa, do contrario apenas sai do programa. - OBS : Na opcao de salvar em disco, e'perguntado o nome do arquivo. Para ver o diretorio corrente basta entrar com '?'. Caso o arquivo ja exista, e'perguntado se deseja continuar a operacao perdendo as informacoes contidas no arquivo, caso afimativo tecle 'Y', do contrario qualquer outra tecla aborta a operacao retornando ao menu principal. IV - OPCOES DURANTE A SIMULACAO : - Para parar a tela basta teclar [S], para voltar a simulacao normalmente basta pressionar qualquer outra tecla. Para realizar a simulacao PASSO A PASSO, e so teclar [P] para cada passo. - E'mostrado o numero de neuronios criados em cada camada; - E' mostrado o numero de iteracoes; - Para voltar ao menu principal, basta teclar [Esc]; - Ao se reiniciar uma simulacao, o usuario tem a opcao de comecar a partir do ponto de parada ou do inicio; - Para se digitar '0.', basta entrar com '.' que automaticamente e'interpretado como '0.'; V - TEORIA : A teoria basica do treinamento counterpropagation foi retirada das Notas de Aula do Prof. CALOBA e do WASSERMAN. Como o treinamento das camadas e'nao supervisionado, na camada de KOHONEN, primeiro e'criado um neuronio com uma esfera de influencia de diametro igual a 2, (diametro do circulo unitario), de modo que todas as entradas pertencam a sua esfera. O calculo da saida e efetuado e a sinapse direcionada para o ponto de entrada. Atraves do Redutor de Esferas, a esfera de influencia deste neuronio e'reduzida a cada iteracao, ate'que um ponto de entrada esteja fora desta, sendo deste modo, criado outro neuronio cuja sinapse coincide com este ponto de entrada. A cada iteracao tambem se reduz o passo de cada sinapse em direcao a uma nova entrada, permitindo assim um posicionamento medio da sinapse em sua classe. Havendo a possibilidade de duas ou mais sinapses competirem pelos mesmos pontos de entrada e ficarem praticamente coincidentes, foi implemen- tado um mecanismo de poda de sinapses, para retirar uma ou mais destas. O mecanismo do Redutor de Esferas e inibido, quando o raio destas chega a um valor previamente determinado na funcao de Amostragem, permitindo que cada classe de entrada tenha o seu raio minimo. A segunda camada ou camada PERCEPTRON e simplesmente um "ou" logico, implementado de modo que as saidas das sinapses, cujas esferas de influencia estejam dentro dos limites de proximidade umas das outras, sejam combinadas em um unico neuronio, e tenham o valor "1", enquanto aqueles, que estiverem distantes, recebem o valor "0", sendo assim possivel a identificacao de classes maiores. Este processo e implementado, simplesmente, colocando a sinapse de um neuronio como ponto de entrada para todos os outros. Aquele que no processo de calculo da saida, acusar que este neuronio esta proximo da sua area de influencia, sera'considerado vizinho, elogicamente perten- cente a mesma classe deste. VI - RESULTADOS E CONCLUSOES : O programa mostrou cumprir com o esperado, treinando as sinapses de um modo muito satisfatorio, principalmente com os devidos ajustes dos parametros. Seu reconhecimento do formato inicial da classe atraves de uma amostragem anterior mostrou-se perfeito para a delimitacao do tamanho minimo das esferas de influencia. Percebeu-se tambem, como seria de se esperar, que, quando duas ou mais classes estao muito proximas a definicao final da independencia destas em relacao umas as outras nao e muito preciso. O treinamento da segunda camada tambem foi satisfatorio, principalmente com a possibilidade de regular as distancias entre as esferas de influencia, possibilitando a visualizacao de varios graus de agrupamento.