Mapas Auto-Organizáveis de Kohonen Moacir P. Ponti Jr. [email protected] Universidade Federal de São Carlos Sumário 1. Introdução 2. Inspiração Neurofisiológica 3. Aprendizagem Competitiva 4. Mapas Auto-Organizáveis Moacir P. Ponti Jr. 2 Introdução O Self-Organizing Map (SOM), ou Mapas AutoOrganizáveis foram desenvolvidos por Kohonen a partir de 1982 Aprendizado não-supervisionado, diferente de todas as redes neurais artificiais desenvolvidas até então Possui forte inspiração neurofisiológica É baseado em Aprendizagem Competitiva Moacir P. Ponti Jr. 3 Inspiração Neurofisiológica Observação de imagens Ressonância magnética (MRI) Tomografia Computadorizada (CT) Diferentes estímulos geram Regiões de excitação Organização topográfica Figura: Regiões ativas durante aplicação de acupuntura no ponto LI-5 Fonte: Neuro-imaging of Acupunture Project Moacir P. Ponti Jr. 4 Inspiração Neurofisiológica Moacir P. Ponti Jr. 5 Inspiração Neurofisiológica Quando um neurônio é excitado, ao redor uma área entre 50 e 100 μm também sofre excitação Ao redor, uma área sofre inibição para impedir a propagação do sinal a áreas não relacionadas A figura ilustra a iteração lateral entre os neurônios Moacir P. Ponti Jr. 6 Aprendizagem Competitiva Neurônios de saída da RNA competem entre si para se tornar ativos Apenas um neurônio de saída está ativo em um determinado instante Três elementos básicos: 1. Neurônios com mesma estrutura, diferente pelos pesos, de forma que tenham respostas diferentes a uma entrada 2. Um limite imposto sobre a força de cada neurônio 3. Mecanismo de competição entre neurônios, de forma que um neurônio é vencedor em um dado instante. Moacir P. Ponti Jr. 7 Aprendizagem Competitiva Em cada momento o neurônio vencedor: aprende a se especializar em agrupamentos de padrões similares tornam-se detectores de características para classes diferentes de padrões de entrada O número de unidades de entrada define a dimensionalidade dos dados Moacir P. Ponti Jr. 8 Aprendizagem Competitiva - Exemplo Exemplo de estrutura simples: 1 camada de saída Totalmente conectada à entrada x1 Pode incluir realimentação entre neurônios para inibição lateral x2 Conexões excitadoras das entradas para os neurônios (setas fechadas com linhas contínuas) Conexões laterais inibitórias entre os neurônios (setas abertas em y1 y2 x3 x4 Entradas y3 Neurônios Saída linhas tracejadas) Moacir P. Ponti Jr. 9 Aprendizagem Competitiva (Neurônio Vencedor) O neurônio vencedor é o que possui o maior campo local induzido υk para um dado padrão de entrada x O campo local induzido representa a ação combinada de todas as entradas do neurônio k A escolha do vencedor maximiza o produto interno entre os pesos do neurônio e o sinal de entrada O sinal de saída yk do neurônio vencedor é colocado em 1 (um) e dos outros neurônios em 0 (zero). 1 se k j para todo j i yk caso contrario 0 Moacir P. Ponti Jr. 10 Aprendizagem Competitiva (Pesos) Considerando ωkj como o peso sináptico conectando o nó de entrada j ao neurônio k, cada neurônio tem uma quantidade de peso sináptico kj 1 para todok j Cada neurônio tem seus pesos inicializados aleatoriamente O aprendizado dá-se então deslocando os pesos do neurônio vencedor, na direção da entrada Moacir P. Ponti Jr. 11 Aprendizagem Competitiva (Regra de Aprendizagem) A regra de aprendizagem competitiva aplica uma variação Δωkj ao peso ωkj, definida por: ( x j - kj ) se o neurôniok for o vencedor kj caso contrario 0 onde α é a taxa de aprendizagem. Esta regra move o vetor de peso do neurônio vencedor em direção ao padrão de entrada Moacir P. Ponti Jr. 12 Aprendizagem Competitiva (Exemplo / Interpretação) 2 entradas (espaço 2D) 7 padrões de entrada 4 neurônios de saída α = 0.5 7 iterações Na Figura, os pontos pretos representam as entradas e os amarelos os vetores dos pesos sinápticos dos 4 neurônios de saída Moacir P. Ponti Jr. Estado Inicial da Rede 13 Aprendizagem Competitiva (Exemplo / Interpretação) 3 Entrada aleatória Neurônio vencedor 2 2 3 Aprendizado 1 1 -1 4 como α = 0.5, o deslocamento é referente à metade da distância -2 -3 -3 -2 -1 1 2 3 Simulação das iterações da aprendizagem competitiva Moacir P. Ponti Jr. 14 Aprendizagem Competitiva Na aprendizagem competitiva, não há ordenação do mapa de neurônios de saída (clusters) No exemplo, a ordem topológica seria: w_1, w_2, w_3 No entanto o mapa de saída está na ordem: w_2, w_3, w_1 Moacir P. Ponti Jr. 15 Mapas Auto-Organizáveis Grades neurais baseadas na aprendizagem competitiva Neurônios de saída da grade competem entre si para serem ativados ou disparados Os neurônios estão dispostos em nós de uma grade, em geral uni- ou bidimensional Mapas de dimensionalidade mais alta são possíveis porem pouco comuns Moacir P. Ponti Jr. 16 Mapas Auto-Organizáveis Processo de organização Aprendizado não-supervisionado Neurônios dispostos em grade Vetores de peso localizam os neurônios no espaço de entrada Torna a rede ideal para detecção de agrupamentos (clusters) Moacir P. Ponti Jr. 17 Mapas Auto-Organizáveis n Neurônio Vencedor O modelo de Kohonen Produz um mapeamento topológico Arranjo bidimensional de neurônios Transforma um padrão de dimensão arbitrária em um mapa discreto uni- ou bidimensional Preserva a relação de vizinhança entre os neurônios Moacir P. Ponti Jr. Conexões sinápticas Entrada x 18 Mapa Topológico No caso bidimensional, dois tipos de grade são possíveis: hexagonal ou retangular. Na hexagonal, cada neurônio possui 6 vizinhos diretos Na retangular, cada neurônio possui 4 vizinhos diretos Moacir P. Ponti Jr. 19 Mapas Auto-Organizáveis (Arquitetura) Considere um espaço vetorial de entrada com dimensão d Cada amostra é um sinal/padrão representado por um vetor x = [ x1, x2, ..., xd ] A arquitetura do SOM consiste de 2 camadas de neurônios Camada de entrada composta por d neurônios Camada de saída (ou de Kohonen) formada por N neurônios denotados por: A = { c1, c2, ..., cN } Moacir P. Ponti Jr. 20 Mapas Auto-Organizáveis (Arquitetura) O vetor peso sináptico de cada neurônio da grade tem a mesma dimensão que o espaço de entrada O vetor peso do neurônio j é representado por: w = [ ωj1, ωj2, ..., ωjd ] j = 1, ..., N este vetor indica as coordenadas de sua localização no espaço de entrada d dimensional Moacir P. Ponti Jr. 21 Mapas Auto-Organizáveis (Arquitetura) Diagrama Esquemático (exemplo) Entrada Pesos Neurônios Moacir P. Ponti Jr. 22 Exemplo Os círculos pretos representam dados (neurônios) de entrada no espaço unidimensional. A, B, C e D são a representação dos neurônios de saída no espaço de entrada (que coincide com o espaço dos pesos de conexão). (a) estado inicial dos neurônios - A, B, C e D tem pesos desordenados (b) estado final dos neurônios A,B,C e D, após os ajustes, os neurônios vizinhos tem pesos similares Moacir P. Ponti Jr. 23 SOM – Algoritmo Básico 1. Inicialização: geralmente aleatória, pode ainda ser estimada por análise da representação dos dados 2. Competição: para cada padrão de entrada, calcula-se a resposta dos neurônios de saída (grade). O neurônio com a maior resposta é o vencedor da competição. 3. Cooperação: o neurônio vencedor define uma vizinhança topológica (em função da grade) de neurônios excitados 4. Adaptação Sináptica: aprendizado em relação ao padrão de entrada. Os pesos do neurônio vencedor, e de sua vizinhança, ficam mais próximos do padrão de entrada. Moacir P. Ponti Jr. 24 Inicialização Inicialização aleatória: mais simples e mais utilizada nenhum estado de organização é considerado durante as primeiras centenas de passos, os vetores peso passam por processo de auto-organização Inicialização linear: tenta pré-organizar o espaço arranjo de neurônios definido ao longo de um subespaço linear correspondente aos: • k auto-vetores da matriz de auto-correlação de X que possuem os maiores auto-valores similar à análise dos componentes principais (PCA) Moacir P. Ponti Jr. 25 Critério de Competição O critério do melhor casamento (best matching) é baseado na maximização do produto interno como na aprendizagem competitiva Isto é matematicamente equivalente a minimizar a distância euclidiana entre w e x O neurônio vencedor, v é escolhido por: v arg min x w j , j 1,2,..., N j Moacir P. Ponti Jr. 26 Processo Cooperativo Compreende a definição de uma função de vizinhança hvj centrada no neurônio vencedor Define uma região de neurônios cooperativos, que terão seus pesos ajustados juntamente com o neurônio vencedor Há diversas formas de implementar a função de vizinhança Mais simples é definir um conjunto Nv(t) de níveis de vizinhança ao redor do neurônio vencedor Moacir P. Ponti Jr. 27 Processo Cooperativo Então, a função de vizinhança torna-se: 1 , j N v (t ) hvj (t ) 0 , j N v (t ) Nv(t) é função monotônica decrescente no tempo A função de vizinhança é mapeada no espaço de saída Figura: Exemplo de níveis de vizinhança para uma grade retangular de neurônios Moacir P. Ponti Jr. 28 Processo Cooperativo Exemplos de função de vizinhança Tipo bolha (todos os neurônios da vizinhança serão atualizados igualmente) • Base Quadrada / Base Circular v v Moacir P. Ponti Jr. 29 Processo Cooperativo Inicia-se o algoritmo com alto nível de vizinhança e esta é reduzida conforme o tempo avança É necessário diminuir a região de vizinhança para obter a auto-organização do mapa Para que o algoritmo convirja é necessário que hvj (t ) 0 quando t Moacir P. Ponti Jr. 30 Processo Cooperativo Exemplo de mudança no nível da vizinhança em uma simulação de 3 iterações Função de vizinhança quadrada tipo ‘bolha’ Iteração 1 Iteração 2 Iteração 3 v Moacir P. Ponti Jr. 31 Processo Cooperativo Uma função muito interessante a ser usada como função de vizinhança é a Gaussiana, dada por: rv r j hvj (t ) exp 2 2 (t ) onde o termo rv r j é a distância entre o neurônio v vencedor e o neurônio j que está sendo atualizado Moacir P. Ponti Jr. 32 Processo Cooperativo O parâmetro σ define a largura da função e deve ser decrescente no tempo. Pode ser usada uma função linear, mas em geral é usada a exponencial: t (t ) (0) exp 1 σ(0) é um valor inicial para σ τ1 é uma constante de tempo do SOM definida para que a taxa de aprendizagem nunca decaia para zero Moacir P. Ponti Jr. NIter 1 log (0) 33 Processo Competitivo Exemplo de função de vizinhança Gaussiana Os neurônios da vizinhança são atualizados de forma ponderada hvj Quanto mais afastados, menor fica a taxa de aprendizado v dvj Moacir P. Ponti Jr. 34 Processo Cooperativo Exemplo de função de vizinhança Gaussiana v v Visão Lateral Visão Superior Moacir P. Ponti Jr. 35 Adaptação Sináptica Modificação dos pesos em relação à entrada, de forma iterativa A equação abaixo é aplicada a todos os neurônios da grade dentro da região de vizinhança hvj w j (t 1) w j (t ) (t )hvj (t )[x w j (t )] Vizinhança Vetor peso Vetor peso Taxa de atualizado anterior aprendizagem Moacir P. Ponti Jr. Adaptação 36 Adaptação Sináptica O parâmetro de aprendizagem α , assim como a função de vizinhança deve decrescer com o tempo, para que as adaptações sejam cada vez mais “finas” Pode ser usada uma função linear decrescente, mas é recomendada uma função exponencial decrescente: t t 0 exp , 2 onde τ2 é o número total de iterações Moacir P. Ponti Jr. 37 Adaptação Sináptica (Ordenação) Grade desordenada Assumindo uma inicialização aleatória, é necessário duas fases de adaptação 1. 1 4 Fase de Ordenação: devido à inicialização aleatória, a grade está desordenada • A ordenação topológica dá-se pela movimentação da vizinhança, o que ocorre em geral nas primeiras 1000 iterações 2 3 Grade ordenada 1 3 2 4 Moacir P. Ponti Jr. 38 Adaptação Sináptica (Ordenação) Para a Fase de Ordenação, a inicialização dos parâmetros: τ2 , α(0) e σ(0) é importante e depende da aplicação Haykin (2000) sugere os seguintes valores iniciais: τ2 = 1000 α(0) = 0,1 O σ(0), largura da função de vizinhança, depende do tamanho da rede. Para uma rede de 50 neurônios, por exemplo, uma possibilidade é: σ(0) = 25 Moacir P. Ponti Jr. 39 Adaptação Sináptica (Convergência) Após a fase de ordenação, inicia-se a adaptação aos padrões de entrada 2. Fase de Convergência: ocorre uma “sintonia fina”, que pode durar muito mais iterações do que a fase de ordenação • Neste momento, a função de vizinhança deverá englobar apenas vizinhos próximos do neurônio vencedor • Pode ainda ser reduzida à apenas o neurônio vencedor Moacir P. Ponti Jr. 40 Adaptação Sináptica (Convergência) Para a Fase de Convergência, a seguinte inicialização dos parâmetros: τ2 , α(0) e σ(0) é recomendada por Haykin (2000): τ2 = 500 . N α(0) = 0,01 onde N é o número de neurônios de saída é importante não permitir que α chegue a zero Moacir P. Ponti Jr. 41 Resumo Durante o processo de aprendizagem os neurônios: organizam-se e tornam-se ordenados entre si especializam-se em detectar determinadas características dos padrões de entrada O SOM é, portanto, caracterizado pela: formação de um mapa topológico dos padrões de entrada a localização espacial dos neurônios na grade após o aprendizado são indicativas das características estatísticas contidas nos padrões de entrada Moacir P. Ponti Jr. 42 Aplicações As aplicações concentram-se principalmente em: Organização da representação dos dados • Redução de dimensionalidade • Reconstrução de Superfícies Separação de agrupamentos de dados • Segmentação de Imagens • Data Mining • Classificação de Documentos Classificação de dados • Reconhecimento de Caracteres • Reconhecimento de Fala Moacir P. Ponti Jr. 43 Aplicações Reconhecimento de Caracteres http://fbim.fh-regensburg.de/~saj39122/begrolu/kohonen.html Moacir P. Ponti Jr. 44 Aplicações Reconstrução de superfícies Nuvem de Pontos Malha 3D do objeto reconstruído MARI, J.F. Reconstrução de superfícies 3D a partir de nuvens de pontos usando redes neurais auto-organizáveis. Projeto Mestrado. 2006 Moacir P. Ponti Jr. 45 Aplicações Segmentação de Imagens Imagem Original Imagem Segmentada Y. Jiang, et.al. SOM Based Image Segmentation. Lecture Notes in Artificial Intelligence 2639, 2003, pp.640-643 http://citeseer.ist.psu.edu/jiang03som.html Moacir P. Ponti Jr. 46 Algoritmo 1. Selecione a topologia da rede (defina os parâmetros) 2. Selecione a região de vizinhança inicial 3. Inicialize os pesos aleatoriamente e defina o nº de iterações 4. Para cada iteração: 1. Selecione um padrão de entrada 2. Encontre o neurônio vencedor (pela menor distância) 3. Atualize os pesos do neurônio vencedor e sua vizinhança w j (t 1) w j (t ) (t )hvj (t )[x w j (t )] 5. 4. Decremente a região de vizinhança e a taxa de aprendizagem (caso desejado) 5. Incremente o número da iteração Fim Moacir P. Ponti Jr. 47 Mapas Auto-Organizáveis (Exemplo) 2 entradas x1 = [ -1.0, 1.0, -2.0, 0.0] x2 = [ -2.0, 1.0, -2.0, 2.0] 4 neurônios de saída w1 = [ 0.0, 1.0, 0.0,-1.0 ]; w2 = [ 1.0, 0.0,-1.0, 0.0 ]; -3 -2 1 -1 2 3 3 2 α = 0.5 Decaimento para 0.3 na iteração 5 Decaimento para 0.2 na iteracao 7 Região de vizinhança tipo ‘bolha’ Início = nível 1 Decaimento de 1 nível na iteração 5 1 1 4 2 3 -1 -2 -3 10 iterações Moacir P. Ponti Jr. 48 Exemplo de Implementação em C – parte 1 // dados de entrada float x1[12] = {-3,-2, 1,-2,-2, 0, 1,-1,-2.5,-2.0, 0,-3.5}; float x2[12] = { 1,-2, 1, 2,-2, 2, 2,-3, 1.5,-2.5, 1, 2.0}; // estado inicial dos vetores de peso float w1[4] = { 0, 1, 0,-1}; float w2[4] = { 1, 0,-1, 0}; // espaco de saida float S1[4] = { 0, 1, 1, 0}; float S2[4] = { 1, 1, 0, 0}; int iX = 0; // entrada atual int iter = 1; // iteracao atual int fConv = 90; // delimita iteracao da fase de convergencia int nD = 12; // numero de dados Moacir P. Ponti Jr. 49 Exemplo de Implementação em C – parte 2 // encontra o neurônio vencedor pelo calculo da menor distancia // wV = neuronio vencedor wV = 0; // indice do neuronio vencedor float dist[4] = { 0, 0, 0, 0 }; // vetor de distancias for (int j=0; j<nN; j++) { // calcula distancia euclidiana dist[j]= sqrt( (pow(x1[at]-w1[j],2)) + (pow(x2[at]-w2[j],2)) ); // verifica a menor distancia if (dist[j] <= dist[wV]) wV = j; } Moacir P. Ponti Jr. 50 Exemplo de Implementação em C – parte 3 // verifica entre todos os neuronios, // quais estao na regiao de vizinhanca ( wV = neuronio vencedor ) for (int j=0; j<nN; j++) { // verifica se esta na regiao de vizinhanca // note que o calculo e feito no espaco de saida (S) distviz = sqrt( (pow(S1[wV]-S1[j],2)) + (pow(S2[wV]-S2[j],2)) ); // se estiver dentro do raio (funcao de vizinhanca circular), // atualiza o vetor de peso if (distviz <= raio) { w1[j] = w1[j]+alpha*(x1[act]-w1[j]); w2[j] = w2[j]+alpha*(x2[act]-w2[j]); } } Moacir P. Ponti Jr. 51 Exemplo de Implementação em C – parte 4 // escolhe nova entrada aleatoria entre 0 e nD (entre os dados) act = (int)(nD * rand() / (RAND_MAX + 1.0)); iter++; // incrementa iteraçao if (iter == fConv) // quando entra na fase de Convergencia { alpha = 0.25; // atualiza parametros raio = 0.5; } // a cada duas iteracoes decrementa taxa de aprendizagem if (iter % 2 == 0) { if (iter < fConv) // decremento na fase de Ordenacao alpha-= 0.01; if (iter >= fConv) // decremento na fase de Convergencia alpha-= 0.001; if (alpha <=0) // protecao para alpha <= 0 alpha-= 0.0005; } Moacir P. Ponti Jr. 52 Variações do SOM Growing Grid Growing Cell Structures Growing Neural Gas Moacir P. Ponti Jr. 53 Growing Grid Growing Grid É uma variante incremental do SOM Inicia com apenas 4 neurônios (no caso 2D). A grade é incrementada pela inserção de linhas ou colunas completas, conforme os dados de entrada Tem duas etapas: 1. Fase de crescimento 2. Fase de ajuste fino Moacir P. Ponti Jr. 54 Growing Grid Growing Grid Moacir P. Ponti Jr. 55 Growing Cell Structures Growing Cell Structures (GCS) Também é incremental, no entanto: • Não tem estrutura topológica regular A dimensionalidade é restrita • A dimensionalidade da rede definida no início é mantida • Isso permite a rede realizar a redução da dimensionalidade O número de neurônios iniciais é o número da dimensão + 1 No caso 2D, as conexões formam triângulos No caso 3D, as conexões formam tetraedros Moacir P. Ponti Jr. 56 Growing Cell Structures Topologia Inicial do Growing Cell Structures (a) Unidimensional (b) Bidimensional (c) Tridimensional Moacir P. Ponti Jr. 57 Growing Cell Structures O algoritmo do GCS é similar ao utilizado pelo SOM, exceto por duas importantes diferenças: 1. A taxa de aprendizagem é mantida constante durante todo o processo de treinamento 2. Apenas o neurônio vencedor e sua vizinhança topológica direta são atualizados Moacir P. Ponti Jr. 58 Growing Cell Structures Exemplo de aprendizado Moacir P. Ponti Jr. 59 Growing Neural Gas Pode ser visto como uma variação do Growing Cell Structures Diferenças quanto à dimensionalidade: A dimensionalidade da rede não é restrita Dimensionalidade definida no início é incrementada Portanto não ocorre redução de dimensionalidade Moacir P. Ponti Jr. 60 Growing Neural Gas Quanto à topologia da rede: Inicia com dois neurônios independente da dimensionalidade A topologia da rede reflete a topologia do espaço de entrada As conexões no espaço de saída são dinâmicas (podem ser criadas e destruídas durante o treinamento) Moacir P. Ponti Jr. 61 Growing Neural Gas Quanto ao aprendizado: Há 2 neurônios vencedores, o primeiro e o segundo. Numa iteração ambos são atualizados e uma conexão entre eles é criada • Esta conexão tem um tempo de vida • Caso não se torne ativa por um número de iterações determinado, a conexão é destruída Moacir P. Ponti Jr. 62 Growing Neural Gas Início com 2 neurônios Inclusão usando interpolação entre os neurônios mais ativos Moacir P. Ponti Jr. Organização topológica 63 Growing Neural Gas Após 1000 iterações, mais neurônios são incluídos conforme as novas entradas Após 25000 iterações, já é possível observar que as conexões são criadas e destruídas conforme a atividade dos neurônios que participam da conexão Moacir P. Ponti Jr. 64 Referências HAYKIN, S. Mapas Auto-Organizáveis (capítulo 9). Em: HAYKIN, S. Redes Neurais: princípios e prática. 2000 KOHONEN, T. Self-organized formation of topologically correct feature maps. Biological Cybernetics, 43:59-69. 1982. PSYCH CENTRAL. Self-Organizing Map. Disponível em: http://psychcentral.com/psypsych/Self-organizing_map. Acesso em: 29/05/2006 HYNNINEN, J. Interactive Self-Organizing Map demonstrations. Disponível em: http://www.cis.hut.fi/research/javasomdemo/index.html. Acesso em: 25/05/2006 FROHLICH, J. 3D Kohonen Feature Map. Disponível em: http://fbim.fhregensburg.de/~saj39122/jfroehl/diplom/e-sample-applet.html. Acesso em: 31/05/2006. Moacir P. Ponti Jr. 65 Outros sites interessantes Sistema de busca baseado no SOM: http://www.gnod.net/ Livro de redes neurais em Java + SOM: http://www.heatonresearch.com/articles/series/1/ Applet SOM 3D: http://fbim.fhregensburg.de/~saj39122/jfroehl/diplom/e-sample-applet.html Applet DemoGNG 1.5 com diversas variações do SOM e muitos recursos: http://www.neuroinformatik.ruhr-unibochum.de/ini/VDM/research/gsn/DemoGNG/GG_2.html Moacir P. Ponti Jr. 66