# Mappa auto-organizzata

Una mappa auto-organizzata o mappa auto-organizzante, in inglese self-organizing map (SOM), è un tipo di organizzazione di processi di informazione in rete analoghi alle reti neurali artificiali.
Sono addestrate usando l'apprendimento non supervisionato per produrre una rappresentazione dei campioni di training in uno spazio a bassa dimensione preservando le proprietà topologiche dello spazio degli ingressi. Questa proprietà rende le SOM particolarmente utili per la visualizzazione di dati di dimensione elevata. Il modello fu inizialmente descritto dal professore finlandese Teuvo Kohonen e spesso ci si riferisce a questo modello come mappe di Kohonen.

## Struttura della rete

Le mappe auto-organizzate sono reti neurali a connessioni laterali dove i neuroni di uscita sono organizzati in griglie di bassa dimensione (generalmente 2D o 3D). Ogni ingresso è connesso a tutti i neuroni di uscita. A ogni neurone è associato un vettore dei pesi della stessa dimensione dei vettori d'ingresso. La dimensione del vettore d'ingresso è generalmente molto più alta della dimensione della griglia di uscita. Le SOM sono principalmente usate per la riduzione della dimensionalità piuttosto che per l'espansione.

## L'algoritmo di apprendimento

L'obiettivo dell'apprendimento nelle mappe auto-organizzate è di specializzare parti differenti del reticolo SOM a rispondere similmente a particolari pattern d'ingresso. Questo è in parte motivato da come le informazioni sensoriali visive, uditive o di altro tipo sono gestite da parti separate della corteccia cerebrale nel cervello umano.
I pesi dei neuroni sono inizializzati o a numeri casuali piccoli o a valori campionati uniformemente dal sottospazio attraversato dai due autovettori associati alle due componenti principali più grandi. L'ultima alternativa velocizza significativamente l'addestramento perché i pesi iniziali sono già una buona approssimazione dei pesi della SOM.
L'addestramento utilizza l'apprendimento competitivo. Quando viene passato un campione di training in ingresso alla rete, viene calcolata la sua distanza euclidea da tutti i vettori dei pesi. Il neurone col vettore dei pesi più simile all'ingresso è chiamato Best Matching Unit (BMU). I pesi del BMU e dei neuroni vicini a questo nel reticolo SOM vengono avvicinati al vettore d'ingresso. L'intensità dell'avvicinamento decresce nel tempo e in funzione della distanza dei neuroni dal BMU. La formula utilizzata per l'aggiornamento dei pesi $W_{v}$ di un neurone è:
$W_{v}(t+1)=W_{v}(t)+\Theta (v,t)\alpha (t)(D(t)-W_{v}(t))$
dove $\alpha (t)$ è un coefficiente di apprendimento monotono decrescente e $D(t)$ è il vettore d'ingresso. La funzione che definisce il vicinato $\Theta (v,t)$ dipende dalla distanza nel reticolo fra il BMU e il neurone v. Nella forma semplificata (rete competitiva) è 1 per tutti i neuroni abbastanza vicini al BMU e 0 per gli altri, ma la scelta più comune è una funzione gaussiana. Indipendentemente dalla funzione utilizzata, la funzione vicinato si riduce nel tempo. Inizialmente, quando il vicinato è ampio, l'auto-organizzazione avviene su scala globale (ordering phase). Quando il vicinato è ridotto a solo pochi neuroni i pesi convergono in una stima locale (tuning phase).
Questo processo è ripetuto, per ogni vettore d'ingresso, per un numero di cicli variabile (generalmente ampio). Come la maggior parte delle reti neurali artificiali, la SOM ha due modalità di funzionamento:
* Durante il processo di addestramento si costruisce una mappa, la rete neurale si organizza usando un processo competitivo. È necessario dare in ingresso alla rete un numero elevato di vettori d'ingresso, che rappresentino il più possibile il tipo di vettori che ci si aspetta durante la seconda fase (se ce ne sarà una). Altrimenti, gli stessi vettori d'ingresso devono essere "somministrati" più volte.
* Durante il processo di mapping un nuovo vettore d'ingresso può essere dato in ingresso alla mappa; questo viene automaticamente classificato o categorizzato. Ci sarà un solo neurone vincitore: quello il cui vettore dei pesi giace più vicino al vettore d'ingresso. (Questo può essere facilmente individuato calcolando la distanza euclidea fra il vettore d'ingresso e il vettore dei pesi).

## Esempio di algoritmo
### Definizioni preliminari

L'effettivo algoritmo di addestramento della rete è la quantizzazione vettoriale (vector quantization).
Per spiegare l'algoritmo in profondità, creiamo un array 10x10 di nodi. Ogni nodo conterrà un vettore di pesi, e sarà pienamente a conoscenza della sua "locazione fisica", cioè della sua locazione nell'array. Il vettore dei pesi contenuto in ogni nodo avrà la stessa dimensione dei seguenti vettori d'ingresso. (N.B. I pesi sono inizializzati con valori casuali).
Ora abbiamo bisogno d'ingressi da dare in pasto alla mappa. (Nota: la mappa generata e gli ingressi esistono in sottospazi differenti). Come di consueto, creiamo tre vettori per rappresentare colori nel formato RGB (red, green, blue). Pertanto i nostri vettori d'ingresso avranno tre componenti, ognuna corrispondente ad uno spazio dei colori. I nostri vettori d'ingresso saranno così:

### Passi dell'algoritmo

* Assegna ai vettori dei pesi valori casuali
* Prendi un vettore d'ingresso
* Attraversa ogni nodo della mappa
** Usa la distanza euclidea per trovare somiglianze fra il vettore d'ingresso e il vettore dei pesi di ogni singolo nodo della mappa
** Individua il nodo a distanza minore (questo nodo verrà chiamato Best Matching Unit o BMU)
* Aggiorna i nodi del vicinato di BMU "tirandoli" più vicino al vettore d'ingresso
** $W_{v}(t+1)=W_{v}(t)+\Theta (v,t)\alpha (t)(D(t)-W_{v}(t))$

## Interpretazione

Ci sono due modi per interpretare una SOM:
* Dato che nella fase di addestramento i pesi di tutto il vicinato sono spostati nella stessa direzione, elementi simili tendono ad eccitare neuroni adiacenti. Perciò le SOM formano una mappa semantica dove campioni simili vengono mappati vicini e dissimili distanti.
* Un altro modo di considerare i pesi neuronali è di pensarli come punti distribuiti nello spazio degli ingressi. Questi formano un'approssimazione della distribuzione dei campioni d'ingresso. Più neuroni puntano a regioni con un'elevata concentrazione di campioni di addestramento, e meno in zone dove i campioni sono scarsi.