Visualizzazioni delle Embedding

Embedding Visualizations

C’è più di un modo per visualizzare i dati ad alta dimensionalità. Qui, torniamo indietro nella storia dell’IA per esplorare l’evoluzione di queste visualizzazioni.

Ho presentato il mio primo articolo sull’IA nel 1990 a una piccola conferenza locale, la “Midwest Artificial Intelligence and Cognitive Science Society”. In quei giorni, il campo dell’IA era interamente definito dalla ricerca sui “simboli”. Questo approccio era conosciuto come “Good, Old-Fashion AI” o GOFAI (pronunciato “go fi” come in “wifi”). Coloro di noi che lavoravano in ciò che ora è noto come “Deep Learning” dovevano davvero sostenere che ciò che stavamo cercando di studiare dovesse anche essere considerato come IA.

Essere esclusi dall’IA era un’arma a doppio taglio. Da un lato, non ero d’accordo con la maggior parte dei principi di base di ciò che veniva definito come IA all’epoca. L’assunzione di base era che i “simboli” e l'”elaborazione dei simboli” dovessero essere alla base di tutta l’IA. Quindi, ero felice di lavorare in un’area che non veniva nemmeno considerata come IA. D’altra parte, era difficile trovare persone disposte ad ascoltare le tue idee se non le presentavi come almeno correlate all’IA.

Questa piccola conferenza accettava articoli su “IA” e “Scienze cognitive”, che ho visto come un invito a idee al di fuori della semplice “elaborazione simbolica”. Quindi ho presentato il mio primo articolo ed è stato accettato! L’articolo presentava un approccio di rete neurale per la gestione del linguaggio naturale. Molti di noi in questo settore chiamavano questa tipologia di ricerca su reti neurali “connectionism”, ma oggi questo tipo di ricerca, come accennato, sarebbe etichettato come “Deep Learning” (DL) – anche se la mia ricerca iniziale non era molto profonda… solo tre strati! I moderni sistemi di DL possono essere composti da centinaia di strati.

Il mio articolo è stato accettato alla conferenza e l’ho presentato a Carbondale, Illinois nel 1990. Successivamente, l’organizzatore della conferenza, John Dinsmore, mi ha invitato a presentare una versione dell’articolo per un libro che stava mettendo insieme. Non pensavo di riuscire a scrivere da solo un articolo, quindi ho chiesto a due miei amici del corso di laurea magistrale (Lisa Meeden e Jim Marshall) di unirsi a me. L’hanno fatto e alla fine abbiamo ottenuto un capitolo nel libro. Il libro si intitolava “Il paradigma simbolico e connessionista: colmare la distanza”. Il nostro articolo si inseriva bene nel tema del libro. Abbiamo intitolato il nostro articolo “Esplorare il continuum simbolico/sotto-simbolico: uno studio di caso di RAAM”. Con mia grande gioia, il libro si concentrava su questa divisione tra questi due approcci all’IA. Credo che il campo stia ancora lottando con questa divisione ancora oggi.

Dirò di più sulla mia ricerca iniziale più avanti. Per ora voglio parlare di come il campo stava affrontando la visualizzazione delle “embeddings”. Inizialmente, non chiamavamo questi vettori “embeddings”. La maggior parte delle ricerche utilizzava una frase come “rappresentazioni a livello nascosto”. Ciò includeva qualsiasi rappresentazione interna che un sistema connessionista avesse appreso per risolvere un problema. Come le definivamo all’epoca, c’erano tre tipi di strati: “input” (dove si inseriva il dataset), “output” (dove si inserivano gli output desiderati o “target”) e tutto il resto – gli strati “nascosti”. Gli strati nascosti sono dove le attivazioni della rete fluiscono tra l’input e l’output. Le attivazioni degli strati nascosti sono spesso ad alta dimensionalità e rappresentano i “concetti” appresi dalla rete.

Come oggi, la visualizzazione di questi vettori ad alta dimensionalità era considerata utile per comprendere come funzionano questi sistemi e spesso anche per capire perché falliscono. Nel nostro capitolo nel libro, abbiamo utilizzato tre tipi di visualizzazioni:

  1. I cosiddetti “Diagrammi di Hinton”
  2. Diagrammi di Clustering o Dendogrammi
  3. Proiezione nello spazio 2D

Il primo metodo era un’idea appena creata utilizzata da Hinton e Shallice nel 1991. (Si tratta dello stesso Geoffrey Hinton che conosciamo oggi. Ne parlerò in un futuro articolo). Questo diagramma è un’idea semplice con un’utilità limitata. L’idea di base è che le attivazioni, i pesi o qualsiasi tipo di dato numerico possano essere rappresentati da riquadri: riquadri bianchi (tipicamente che rappresentano numeri positivi) e riquadri neri (tipicamente che rappresentano numeri negativi). Inoltre, la dimensione del riquadro rappresenta la magnitudine di un valore in relazione ai valori massimi e minimi nel neurone simulato.

Ecco la rappresentazione dal nostro articolo che mostra le “embeddings” medie nello strato nascosto della rete come rappresentazione delle parole presentate alla rete:

Figura 10 dal nostro articolo.

Il diagramma di Hinton aiuta a visualizzare i modelli nei dati. Tuttavia, non aiutano realmente a comprendere le relazioni tra le rappresentazioni, né quando il numero di dimensioni diventa molto più grande. Le moderne rappresentazioni possono avere molte migliaia di dimensioni.

Per affrontare questi problemi, ci rivolgiamo al secondo metodo: diagrammi di cluster o dendogrammi. Questi sono diagrammi che mostrano la distanza (come viene definita) tra due modelli qualsiasi come un albero gerarchico. Ecco un esempio dal nostro articolo utilizzando la distanza euclidea:

Figura 9 dal nostro articolo.

Questo è lo stesso tipo di informazione mostrata nel Diagramma di Hinton, ma in un formato molto più utile. Qui possiamo vedere le relazioni interne tra i singoli modelli e i modelli complessivi. Nota che l’ordinamento verticale è irrilevante: la posizione orizzontale dei punti di diramazione è l’aspetto significativo del diagramma.

Nel dendogramma sopra, abbiamo costruito l’immagine complessiva a mano, dati i cluster dell’albero calcolati da un programma. Oggi esistono metodi per costruire automaticamente tale albero e immagine. Tuttavia, il diagramma può diventare difficile da comprenderlo quando il numero di modelli è molto superiore a qualche decina. Ecco un esempio realizzato oggi da matplotlib. Puoi leggere di più sull’API qui: dendogramma di matplotlib.

Dendogramma moderno con un grande numero di modelli. Immagine realizzata dall'autore.

Infine, arriviamo all’ultimo metodo e quello utilizzato principalmente oggi: il metodo di proiezione. Questo metodo utilizza un algoritmo per trovare un modo di ridurre il numero di dimensioni della rappresentazione in un numero che può essere più facilmente comprensibile per gli esseri umani (ad esempio, 2 o 3 dimensioni) e lo rappresenta come un grafico a dispersione.

All’epoca nel 1990, il metodo principale per proiettare dati ad alta dimensionalità in un insieme di dimensioni più piccolo era l’Analisi delle Componenti Principali (PCA). La riduzione dimensionale è un’area di ricerca attiva, con nuovi metodi che continuano a essere sviluppati.

Probabilmente gli algoritmi di riduzione dimensionale più utilizzati oggi sono:

  1. PCA
  2. t-SNE
  3. UMAP

Qual è il migliore? Dipende davvero dai dettagli dei dati e dai tuoi obiettivi per la creazione della riduzione delle dimensioni.

PCA è probabilmente il metodo migliore in generale, poiché è deterministico e consente di creare una mappatura dello spazio ad alta dimensionalità nello spazio ridotto. Questo è utile per l’addestramento su un set di dati e quindi esaminare dove un set di dati di test viene proiettato nello spazio appreso. Tuttavia, PCA può essere influenzato da dati non normalizzati e può portare a una “palla di punti” che offre poche informazioni sui modelli strutturali.

t-SNE, che sta per t-distributed Stochastic Neighbor Embedding, è stato creato da Roweis e Hinton (sì, quello Hinton) nel 2002. Questa è una proiezione appresa e può sfruttare dati non normalizzati. Tuttavia, uno svantaggio di t-SNE è che non crea una mappatura, ma è semplicemente un metodo di apprendimento stesso per trovare un clustering. Ciò significa che, a differenza di altri algoritmi che hanno metodi Projection.fit() e Projection.transform(), t-SNE può solo eseguire un adattamento. (Ci sono alcune implementazioni, come openTSNE, che forniscono una mappatura di trasformazione. Tuttavia, openTSNE sembra essere molto diverso da altri algoritmi, è lento e ha meno supporto rispetto ad altre forme.)

Infine, c’è UMAP, Uniform Manifold Approximation and Projection. Questo metodo è stato creato nel 2018 da McInnes e Healy. Questo potrebbe essere il miglior compromesso per molti spazi ad alta dimensionalità poiché è abbastanza poco costoso dal punto di vista computazionale e tuttavia è in grado di preservare strutture rappresentative importanti nelle dimensioni ridotte.

Ecco un esempio degli algoritmi di riduzione delle dimensioni applicati ai dati non normalizzati sul Cancro al Seno disponibili in sklearn:

Esempio di riduzione dimensionale tra tre metodi di proiezione, PCA, t-SNE e UMAP. Immagine realizzata dall'autore.

Puoi testare gli algoritmi di riduzione dimensionale tu stesso per trovare il migliore per il tuo caso d’uso e creare immagini come quelle sopra utilizzando Kangas DataGrid.

Come accennato, la riduzione dimensionale è ancora un’area di ricerca attiva. Mi aspetto pienamente di vedere miglioramenti continui in questo campo, inclusa la visualizzazione del flusso di informazioni mentre si sposta all’interno di una rete di Deep Learning. Ecco un ultimo esempio dal capitolo del nostro libro che mostra come le attivazioni si muovono nello spazio rappresentativo del nostro modello:

Figura 7 dal nostro articolo. Attivazioni del livello nascosto passo dopo passo nella sezione di decodifica della rete neurale.

Interessato a scoprire da dove provengono le idee nell’Intelligenza Artificiale, nell’Apprendimento Automatico e nella Scienza dei Dati? Considera un applauso e una sottoscrizione. Fammelo sapere di cosa sei interessato!