FastICA è un popolare algoritmo per l'analisi delle componenti indipendenti, sviluppato da Aapo Hyvärinen presso la Helsinki University of Technology. L'algoritmo è basato su un punto fisso, schema iterativo per massimizzare la non-gaussianità di una misura statistica di indipendenza. L'algoritmo può anche essere derivato dall'iterazione approssimata di Newton.

Algoritmo

modifica

FastICA per una componente

modifica

L'algoritmo iterativo trova la direzione per il vettore di pesi   massimizzando la non-gaussianità della proiezione   per  . La funzione   è la derivata di una funzione nonquadrata.

  1. Scegliere un vettori pesi iniziale  
  2. Sia  
  3. Sia  
  4. se non converge, torna al punto 2

In questo caso, come convergenza si intende il verificarsi della situazione per cui i valori di   riferiti a 2 iterazioni successive puntano nella stessa direzione.

Alcuni esempi di funzioni   sono:

  •  
  •  

I massimi relativi all'approssimazione della negentropia di   sono ottenuti in corrispondenza di alcuni risultati dell'ottimizzazione della funzione  ; in accordo con le condizioni di Karush-Kuhn-Tucker, gli ottimi della funzione   con il vincolo   sono ottenuti nei punti in cui si verifica:  

Risolvendo l'equazione con il metodo di Newton e definendo la parte sinistra dell'equazione con F, si ottiene la matrice Jacobiana JF(w) come:   Per semplificare l'inversione di questa matrice, risulta utile approssimare il primo termine; se i dati sono centrati (valore medio nullo) e sbiancati (whitening), si può approssimare così:  

Applicandola, la matrice jacobiana diventa una matrice diagonale, e può quindi essere facilmente invertibile. Si ottiene quindi un'iterazione di Newton approssimata:

 

L'algoritmo può essere ulteriormente semplificato moltiplicando entrambe le parti per  , dando origine al vero e proprio algoritmo FastICA.

(L'algoritmo usa un'approssimazione della negentropia, che fa uso della curtosi).

FastICA per più componenti

modifica

L'algoritmo descritto per una componente permette di ricavare una sola delle componenti indipendenti. Per poterne stimare di più è necessario applicare l'algoritmo ad un insieme di n unità, caratterizzati da vettori di pesi  .

L'applicazione dell'algoritmo è la stessa, ma bisogna impedire che più neuroni presentino una convergenza nei confronti dello stesso massimo, ovvero bisogna scorrelare le uscite della rete   alla fine di ciascuna iterazione. Per fare questo esistono almeno tre metodi in letteratura.

Caratteristiche dell'algoritmo

modifica
  • la convergenza è cubica assumendo un modello ICA, rendendo quindi l'algoritmo più veloce rispetto ai classici metodi basati sulla discesa del gradiente, che sono caratterizzati da convergenza lineare.
  • l'algoritmo gode di una grande facilità d'uso, anche perché non vi sono troppi parametri da impostare.
  • FastICA riesce a trovare le componenti indipendenti di quasi tutte le distribuzioni gaussiane mediante qualsiasi funzione non lineare g, a differenza di altre tecniche che necessitano di informazioni a priori sulle distribuzioni.
  • Le componenti indipendenti possono essere stimate una per una, facendo di questo strumento uno strumento importante per l'analisi esplorativa dei dati e riducendo l'onere computazionale.
  • L'algoritmo condivide con gli approcci neurali le caratteristiche desiderabili: è parallelo, distribuito, computazionalmente flessibile e poco esigente in termini di memoria utilizzata.

Voci correlate

modifica

Collegamenti esterni

modifica