FastICA

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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 | modifica wikitesto]

FastICA per una componente[modifica | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

  • 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 | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]