![]() |
![]() |
|||
|
Reconhecimento de Padrões3. Técnicas Subsimbólicas: Redes NeuraisParte I: 3.1. Filosofia
Geral da Aplicação do Raciocínio Subsimbólico
a Padrões: Redes Neurais Aprendendo Dados, Classificadores e Agrupadores
Parte II: 3.4. Desenvolvimento de Aplicações: Usando Aprendizado Supervisionado Parte III: 3.5. Agrupadores:
Usando Aprendizado Não Supervisionado para Organizar Padrões
Parte IV: 3.6. Explorando
Dados Agrupados em Redes
3.6.0. O que aprende uma
Rede de Kohonen ?
|
Nota 1: Se a distribuição é conhecida, podemos calcular w0 usando exatamente o método de cálculo do centro de massa da Física, atribuindo uma massa qualquer, não nula, a cada um dos pontos do conjunto. |
Nota 2: Das mesma forma, se a distribuição é conhecida, podemos utilizar o método de cálculo do eixo de massa principal da Física para obter w1. |
O problema de uma representação deste tipo ocorre quando temos uma distribuição de dados como em (b). Numa situação como essa, o centro da distribuição é um ponto em V que não pertence à distribuição e o eixo principal da distribuição é uma descrição muito pobre e falha do real comportamento desta. É o caso de distribuições de dados com tendências não-lineares, que nós já abordamos no capítulo 1, quando falamos de Nearest Neighbour.
Para representarmos adequadamente uma distribuição de dados como a representada em (b) necessitamos de uma representação não-linear da distribuição, dada por uma curva principal da distribuição, como é mostrado na Figura abaixo.
Figura: Curva Principal
O cálculo exato de uma curva principal, porém, pode ser um processo matemático extremamente custoso, envolvendo interpolação polinomial ou outra técnica.
Quando discutimos Nearest Neighbour, no capítulo 1, e algoritmos que o utilizam, como IBL, no capítulo 2, vimos que existe a possibilidade de se aproximar um mapeamento de uma distribuição deste tipo através da divisão desta área curva em pedaços discretos, representados através de um conjunto de protótipos w0i. Isto está muito bem exemplificado pela facilidade com que IBL representa o problem ada espiral exatamente implementando esta técnica. Para gerarmos um conjunto de protótipos w0i deste tipo, porém, é necessário que a distribuição seja conhecida. Isto é fácil, quando temos, de antemão, associada a cada padrão, a sua categoria. Mas como proceder quando não conhecemos a distribuição dos dados nem quais classes existem ?
É aqui que a utilização de Redes de Kohonen se torna interessante: Helge Ritter demonstrou que uma rede de Kohonen aprende exatamente uma representação não linear discretizada deste tipo, sem necessidade de que se forneça de antemão as classes a que pertence cada padrão, realizando uma espécie de Análise Fatorial Não-Linear Discretizada. O resultado do processo de aprendizado, quando a convergência ocorreu adequadamente, é um mapeamento de subconjuntos da distribuição de dados a neurônios específicos da Rede A, que passam a fungir como protótipos para esses subconjuntos. Regiões vizinhas da distribuição são mapeadas para neurônios vizinhos no mapa de Kohonen A. O mecanismo de escolha do vencedor, similar a idéia do Nearest Neighbour, é o que garantre a não-linearidade da capacidade de representação da rede depois de treinada, agindo como uma função limiar, intrinsecamente não-linear, que determina as fronteiras entre cada subárea (subvolume) da distribuição mapeada. Isto pode ser visto na figura abaixo, onde uma classe é representada por um agrupamento (cluster) de neruônios em torno do vencedor S. O vencedor S representa com a maior aproximação o padrão X apresentado à rede..
Figura: Representação
discretizada de uma distribuição não-linear de padrões
aprendida por uma rede de Kohonen segundo Ritter.
3.6.2. Técnicas de Exploração de Dados Agrupados em Redes
Apropriedade estrutural das redes de Kohonen que vimos até agora coloca a pergunta: Não podemos de alguma forma aproveitar o fato de as redes de Kohonen estruturarem e organizarem topologicamente a informação aprendida ?
A resposta a essa pergunta é sim. Ao contrário das redes-BP, que necessariamente têm de ser encaradas como classificador de caixa-preta, as informações (e as abstrações) “aprendidas” por uma rede de Kohonen podem ser exploradas após o treinamento da rede e utilizadas das mais variadas formas.
Para finalizar este capítulo, vamos ver duas aplicações de redes de Kohonen.
A primeira delas se refere à utilização da informação contida em uma rede de Kohonen para guiar a busca de dados ainda desconhecidos que tenham a mais forte relação com um contexto atual de informação incompleta. Na verdade, trata-se da utilização de uma rede de Kohonen treinada como uma máquina de inferência neural que guia um processo de busca no sentido de se seguir pelo menor caminho na árvore de busca. Este trabalho foi realizado por nós no início da década de 1990 e apresenta uma solução para o problema de se explorar o espaço de possíveis soluções de maneira eficiente utilizando-se redes neurais.
A segunda é uma aplicação
de treinamento de um braço-robô desenvolvida por Helge Ritter
em 1989, onde se utiliza uma terceira camada de saída para uma rede
de Kohonen, que controla um braço-robô de forma a que se mova
para um ponto visualizado fornecido como dado de entrada. Esta não
é propriamente uma aplicação de reconhecimento de
padrões pura, mas mostra como extender uma rede de Kohonen através
de uma camada de saída, aspecto pouco comentado na literatura.
Utilizando Mapas Auto-Organizantes
como Máquinas de Inferência: KoDiag
No início da década de 1990 foi desenvolvido, pelo grupo de Sistemas Especialistas de Kaiserslautern, um sistema híbrido, denominado KoDiag [RW94, RW93, Wan93, RWW92, WR92], para diagnóstico baseado em casos utilizando uma Rede Neural de Kohonen modificada para dinamicamente atribuir pesos a atributos em função do contexto do problema e, assim, também realizar diagnóstico por meio do levantamento dirigido de atributos para o novo caso.
Para a implementação
de KoDiag foi utilizado o princípio do mapeamento topológico
da rede neuronal de Kohonen para o armazenamento de casos: casos mais similares
são armazenados em áreas topologicamente próximas
na rede. KoDiag utilizou pela primeira vez uma representação
não simbólica para a base de casos, que era aprendida pela
rede e ficava armazenada na mesma de forma sintética.
KoDiag utiliza a base de
casos de PATDEX [Wes91, Wes93] para o treinamento da rede neural. Os casos
são codificados como padrões especiais, e são representados
de forma explícita: variáveis, valores de variáveis
e diagnóstico. Dessa forma, o padrão de treinamento possui
3 partes: a primeira representa todas as variáveis do sistema; a
segunda, todos os possíveis valores dessas variáveis; e a
terceira, todos os diagnósticos. Dessa forma, um caso a ser treinado
é representado com dois valores para cada variável: um para
indicar a existência da mesma e outro para indicar seu valor.
Figura: KoDiag - no alto
é mostrado o padrão de treinamento. No diagnóstico,
somente a primeira parte era utilizada. Abaixo, o agrupamento ativo após
apresentação do caso atual [RW94]
KoDiag podia realizar aquisição incremental dirigida de dados para diagnóstico com a apresentação de dados incompletos da situação atual. Caso a informação não bastasse para o diagnóstico, o agrupamento de neurônios ativado por esta apresentação era analisado e o valor da variável ainda desconhecida mais fortemente correlacionada a este agrupamento era solicitado para ser levantado pelo usuário. Um exemplo de um padrão em PATDEX pode ser visto abaixo:
Código Smalltalk descrevendo um caso de defeito em uma máquina CNC utilizado por KoDiag
PortableCase
newCase: #Toolarm10
withEnvironment: #(#(#IoStateIN32
#logical0) #(#Code #I41)
#(#ToolarmPosition
#back) #(#IoStateOUT30 #logical0)
#(#IoStateOUT28
#logical1) #(#Valve21Y2 #switched)
#(#IoStateIN37
#logical1) )
describes: #IoCardFaultAtIN32i59
KoDiag é considerado um sistema de Raciocínio Baseado em Casos, em contraste com outros sistemas que também utilizam a codificação de casos em redes neurais, por utilizar uma interpretação autônoma passo a passo dos dados aprendidos na rede e guiar o usuário de forma inteligente no processo de levantamento de dados.
3.6.3. Qual é o objetivo de KoDiag ?
O ponto de partida para o desenvolvimento de KoDiag (Diagnóstico com Redes de Kohonen) foi a necessidade de se possibilitar o levantamento incremental de variáveis de um problema em uma situação de diagnóstico descrita como um padrão composto por pares atributo-valor: em muitas situações onde é necessário efetuar-se um diagnóstico de um problema não se possui de antemão valores para todas as variáveis do problema e tampouco todas as variáveis são necessárias para se determinar o diagnóstico correto para todas as situações.
Um exemplo é o domínimo de aplicação-exemplo de KoDiag: Diagnóstico de falhas em tornos de comando numérico:
Em muitas situações, porém, a relevância de variáveis para contexto é desconhecida e precisamos de uma técnica capaz de agrupar as informações de forma a representar esses contextos. A rede de Kohonen é ideal para isso pois possibilita a exploração da informação codificada na rede através da:
KoDiag explora o fato de que uma rede de Kohonen mapeia valores de variáveis a contextos representados por grupos de neurônios na rede ativados por um padrão incompleto de forma a possibilitar o levantamento dirigido de novas informações.
A codificação de informação em KoDiag funciona da seguinte forma:
O processo de diagnóstico, depois de treinada a rede, funciona então da seguinte maneira:
KoDiag foi testado com o mesmo conjunto de daods do sistema PATDEX, um sistem ade RBC estado-da-arte na época e os resultados obtidos foram bastante similares, tanto em termos de levantamento de variávesi quanto de resultados de classificação em função de perda de informação.
3.6.5. Utilizando Redes de Kohonen para a coordenação visumotora de um braço de Robô
Motivação: simulação das „cartas motoras“ encontradas em cérebros de mamíferos utilizando uma rede de Kohonen tridmensional com uma camada extra de saída representando os comandos de movimento do braço-robô.
Técnica: Modelar uma projeção F : V -> U de um espaço „sensorial“ V em um espaço de „comandos motores“ U.
a) criar uma projeção f dos „estímulos sensoriais“ V em uma carta tridimensional A
b) criar uma projeção da carta em um espaço de „comandos motores“ U.
Figura: Desenho da
simulação utilizada por Helge Ritter
O modelo geral da projeção gerada pode ser visto na próxima figura. O objetivo é utilizar-se dois mapeamentos: um entre a camada de entrada e a de Kohonene outro entre camada de Kohonen e a de saída.
Figura: Mapeamento esperado
Algoritmo geral de treinamento:
Estrutura da simulação para os movimentos do braço do robô:
Figura: Estrutura
da simulação para os movimentos do braço do robô
Resultados do treinamento podem ser vistos na próxima figura: com o passar do tempo a rede vai aprendendo a configuração tridimensional do espaço de movimentação do braço-robô e cada ponto do espaço na rede tridimensional é mapeado a um conjunto de ângulos das juntas do braço robô na camada de saída que movimenta o braço para aquela posição.
Figura: Treinamento
a) Espaços de Entrada e de Saída ao Início do Treinamento
b) Organizaçlão gradual da rede no espaço de saída durante o treinamento segundo Ritter
Implemente você mesmo
a estratégia de guia de diagnóstico do modelo KoDiag utilizando
os dados de animais de Kohonen e Ritter, vistos na aula anterior, extendendo-os
de forma a que contenham todo o set de dados: tando as características
dos animais como a "classe" de cada vetor de características. Dessa
forma você terá padrões de treinamento de no mínimo
23 entradas. Para tal, treine uma rede de Kohonen usando o SNNS de forma
a que ela prenda as distribuições dos animais e gere o arquivo
em "C" descrevendo esta rede. A seguir, utilize este código C e
extenda-o permitindo que as ações de busca descritas acima
sejam realizadas. Teste apresentando dados incompletos de animais e utilize
a filosofia de guia de busca de KoDiag para decidir se você pode
realizar o diagnóstico assim mesmo ou se você precisa levantar
mais alguma característica e qual é esta característica
que precisa ser levantada.