Mapas Auto-Organizáveis de
Kohonen
Sumário
1. Introdução
2. Inspiração Neurofisiológica 3. Aprendizagem Competitiva 4. Mapas Auto-Organizáveis
Introdução
• O Self-Organizing Map (SOM), ou Mapas Auto-Organizá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
Inspiração Neurofisiológica
• Estudos neurobiológicos indicam que diferentes entradas
sensoriais (motoras, visuais, auditivas, etc.) são mapeadas em
áreas correspondentes no córtex cerebral.
• 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
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
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, mas diferente pelos valores de pesos, têm 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.
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
Aprendizagem Competitiva - Exemplo
• Exemplo de estrutura simples:
• 1 camada de saída
• Totalmente conectada à entrada
• Pode incluir realimentação entre neurônios para inibição lateral
• 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 linhas tracejadas)
Entradas Neurônios Saída x1 x2 x3 x4 y1 y2 y3
Aprendizagem Competitiva
(Neurônio Vencedor)
• O neurônio vencedor é o que possui o maior campo local
induzido
υ
kpara 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
y
kdo neurônio vencedor é colocado em 1 (um)
e dos outros neurônios em 0 (zero).
Aprendizagem Competitiva
(Pesos)
• Considerando
ω
kj
como o peso sináptico conectando o nó de entradaj
ao neurôniok
, cada neurônio tem uma quantidade de peso sináptico• 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
k
j
kj
1
para
todo
Aprendizagem Competitiva
(Regra de Aprendizagem)
• A regra de aprendizagem competitiva aplica uma variação Δ
ω
kj
ao pesoω
kj
, definida por:
contrario
caso
0
vencedor
o
for
neurônio
o
se
)
-(
x
j kjk
kj
onde
α
é a taxa de aprendizagem.
Esta regra move o vetor de peso do neurônio
vencedor em direção ao padrão de entrada
Aprendizagem Competitiva
(Exemplo / Interpretação)
• Entradas com 2
características (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
Aprendizagem Competitiva
(Exemplo / Interpretação)
Simulação das iterações da aprendizagem competitiva
4 2 1 Entrada aleatória Neurônio vencedor Aprendizado 3 como α = 0.5, o deslocamento é referente à metade da distância -1 1 -2 -3 2 3 1 2 3 -3 -2 -1
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
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
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
Mapas Auto-Organizáveis
• O modelo de Kohonen
• Produz um mapeamento topológico • Transforma um padrão de dimensão arbitrária em um mapa discreto uni- oubidimensional
• Preserva a relação de
vizinhança entre os neurônios
Entrada Arranjo bidimensional de neurônios Conexões sinápticas Neurônio Vencedor x n
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
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: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, ..., Neste vetor indica as coordenadas de sua localização no espaço de entrada
d
dimensionalMapas Auto-Organizáveis (Arquitetura)
• Diagrama Esquemático (exemplo)
• Entrada
• Pesos
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
Mapas de Kohonen (resumo)
• Um tipo particular de mapa auto-organizável. Essa
rede tem uma estrutura feed-forward com apenas
duas camadas.
• O vetor de pesos para um cluster serve como
exemplar dos padrões de entrada associado com
esse cluster.
• Padrões de entrada são comparados com todos os
neurônios, e o mais próximo é considerado o
neurônio vencedor.
• Os pesos do neurônio vencedor são atualizados para
aproximar-se mais do padrão de dados que
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.
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
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:
N
j
v
j j,
1
,
2
,...,
min
arg
x
w
Processo Cooperativo
•Compreende a definição de uma função de
vizinhança h
vjcentrada 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 N
v(t)
de níveis
Processo Cooperativo
• Então, a função de vizinhança torna-se:
• N
v(t)
é função monotônica decrescente no tempo
• A função de vizinhança é mapeada no espaço de saída
)
(
,
0
)
(
,
1
)
(
t
N
j
t
N
j
t
h
v v vjFigura: Exemplo de níveis de vizinhança para uma
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
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
t
t
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’
v
Iteração 1
Iteração 2
Processo Cooperativo
• Uma função muito interessante a ser usada como função de vizinhança é a Gaussiana, dada por:
j v
r
r
)
(
2
exp
)
(
2t
t
h
vj v j
r
r
onde o termo é a distância entre o
neurônio
v
vencedor e o neurônio
j
que está sendo
atualizado
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: ) 0 ( log 1 NIter
1exp
)
0
(
)
(
t
t
σ
(0)
é um valor inicial para
σ
τ
1é uma constante de tempo do SOM
definida para que a taxa de
Processo Competitivo
• Exemplo de função de vizinhança Gaussiana
hvj
dvj
v
Os neurônios da vizinhança
são atualizados de forma
ponderada
Quanto mais afastados,
menor fica a taxa de
Processo Cooperativo
• Exemplo de função de vizinhança Gaussiana
v
v
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 h
vj)]
(
)[
(
)
(
)
(
)
1
(
t
jt
t
h
vjt
jt
jw
x
w
w
Vetor peso atualizado Vetor peso anterior Vizinhança Adaptação Taxa de aprendizagemAdaptaçã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:
onde
τ
2 é o número total de iterações
0 2exp
t
,
t
Adaptação Sináptica (Ordenação)
• Assumindo uma
inicialização aleatória, é
necessário duas fases de
adaptação
1.
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
4 2 1 3 3 2 1 4 Grade desordenada Grade ordenadaAdaptaçã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 é:
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
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,01onde N é o número de neurônios de saída
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
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 FalaAplicações
• Reconhecimento de Caracteres
Aplicações
• Reconstrução de superfícies Nuvem de Pontos Malha 3D do objeto reconstruídoMARI, J.F. Reconstrução de superfícies 3D a partir de nuvens de pontos
Aplicações
• Segmentação de Imagens
Imagem Original
Imagem Segmentada
http://citeseer.ist.psu.edu/jiang03som.html
Y. Jiang, et.al. SOM Based Image Segmentation. Lecture Notes in Artificial Intelligence 2639, 2003, pp.640-643
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
4. Decremente a região de vizinhança e a taxa de aprendizagem (caso desejado)
5. Incremente o número da iteração
5. Fim )] ( )[ ( ) ( ) ( ) 1 (t j t t hvj t j t j w x w w
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 2 1 3 -1 1 -2 -3 2 3 1 2 3 -3 -2 -1 4 neurônios de saída w1 = [ 0.0, 1.0, 0.0,-1.0 ]; w2 = [ 1.0, 0.0,-1.0, 0.0 ]; α = 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
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
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;
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]); } }
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; }
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.fh-regensburg.de/~saj39122/jfroehl/diplom/e-sample-applet.html. Acesso em:
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.fh-regensburg.de/~saj39122/jfroehl/diplom/e-sample-applet.html