Nel campo del machine learning, un termine che sentiamo spesso è "embeddings". Ma cosa significa esattamente? In questo articolo, esploreremo il concetto di embedding, cosa sono e perché sono così importanti nelle applicazioni di machine learning.
Un embedding è una rappresentazione vettoriale di un oggetto astratto in uno spazio multidimensionale. In altre parole, è una tecnica che consente di rappresentare dati complessi, come parole, immagini o concetti, sotto forma di vettori numerici, in modo che possano essere elaborati e interpretati da algoritmi di machine learning.
Gli embeddings sono importanti perché consentono ai modelli di machine learning di lavorare con dati complessi in modo più efficiente ed efficace. Trasformare i dati in rappresentazioni vettoriali consente ai modelli di trovare relazioni e pattern nascosti nei dati, rendendo possibile l’analisi e la previsione di fenomeni complessi.
Esempio pratico
Nelle applicazioni di Natural Language Processing (NPL), le parole o le frasi che compongono il testo vengono rappresentate sotto forma di vettori numerici in uno spazio multidimensionale. In questo caso si parla di “word embeddings”.
One-hot encoding
Un esempio classico è la codifica “one-hot” che permette di rappresentare ogni parola con un vettore numerico. Il vettore in questione avrà lunghezza pari alla dimensione del dizionario della lingua che si vuole utilizzare e ad ogni parola del dizionario viene associato l’indice di una una colonna/cella.
Per esempio, supponiamo di voler rappresentare la frase “il gatto dorme sul tappeto”:
La codifica delle parole sarà quindi:
- “il” ->
[1, 0, 0, 0, 0]
- “gatto” ->
[0, 1, 0, 0, 0]
- “dorme” ->
[0, 0, 1, 0, 0]
- “sul” ->
[0, 0, 0, 0, 0]
- “tappeto” ->
[0, 0, 0, 0, 0
]
Bag of Words encoding (BoW)
Nel caso precedente abbiamo visto come rappresentare le parole mediante vettori ma nel caso in cui dovessimo rappresentare delle intere frasi la codifica precedente potrebbe risultare poco efficace. Una soluzione è quella dell’algoritmo di BoW che prevede di valorizzare ogni cella del vettore con 1 se la parola è presente nella frase e con 0 se la parola non è presente. Per esempio:
- “il gatto dorme sul tappeto” ->
[1, 1, 1, 1, 1]
- “il gatto dorme” ->
[1, 1, 1, 0, 0]
Più in generale, ogni cella può contenere il numero di occorrenze della parola all’interno della frase in modo da gestire anche parole ripetute più volte.
Riduzione di dimensionalità
Come si può facilmente intuire, volendo applicare l’esempio precedente al dizionario completo di una qualsiasi lingua, si otterrebbero vettori con una dimensionalità molto elevata. Esistono diversi algoritmi che consentono di ovviare a questo problema ma non li analizzeremo in questo articolo. Ad esempio, utilizzando tecniche come PCA, t-SNE, autoencoder e LDA, è possibile ridurre la dimensione degli embeddings mantenendo al contempo la maggior parte delle informazioni importanti. Questo permette di migliorare le prestazioni dei modelli, esplorare e interpretare i dati in modo più efficace e ottenere una migliore comprensione del problema affrontato.
Casi d’uso degli embeddings
Le rappresentazioni vettoriali possono essere di tipo diverso e anche il loro utilizzo può essere molteplice. Di seguito alcuni esempi più comuni:
Word Embeddings:
- Rappresentano parole come vettori numerici in uno spazio multidimensionale.
- Catturano le relazioni semantiche tra le parole.
- Utilizzati in applicazioni di NLP come il riconoscimento del linguaggio naturale, la traduzione automatica e la generazione di testo.
Sentence Embeddings:
- Rappresentano frasi o sequenze di parole come vettori numerici.
- Possono essere ottenuti combinando gli embeddings delle parole nella frase.
- Utilizzati in applicazioni di NLP come l’analisi del sentiment, il clustering di testo e la ricerca semantica.
Document Embeddings:
- Rappresentano interi documenti o testi lunghi come vettori numerici.
- Possono essere ottenuti combinando gli embeddings delle frasi e utilizzando tecniche di riduzione dimensionale.
- Utilizzati in applicazioni di NLP come il raggruppamento di documenti, la ricerca di informazioni e la classificazione di testo.
Contextual Embeddings:
- Rappresentano parole o frasi considerando il loro contesto nel testo.
- Possono essere ottenuti utilizzando modelli di linguaggio preaddestrati come BERT (Bidirectional Encoder Representations from Transformers) o GPT (Generative Pre-trained Transformer).
- Forniscono rappresentazioni più ricche e contestualmente sensate delle parole e delle frasi.
- Utilizzati in applicazioni di NLP avanzate come il question answering, la generazione di testo e la comprensione del linguaggio naturale basata sul contesto.
Image Embeddings:
- Rappresentano immagini come vettori numerici in uno spazio multidimensionale.
- Catturano le caratteristiche visuali e semantiche delle immagini.
- Possono essere ottenuti utilizzando reti neurali convoluzionali preaddestrate come VGG, ResNet o Inception.
- Utilizzati in applicazioni di computer vision come il riconoscimento di oggetti, la classificazione di immagini e la ricerca di immagini simili.
Audio Embeddings:
- Rappresentano segnali audio come vettori numerici in uno spazio multidimensionale.
- Catturano le caratteristiche acustiche e semantiche del suono.
- Possono essere ottenuti utilizzando reti neurali convoluzionali o reti neurali ricorrenti addestrate su spettrogrammi o altri rappresentazioni audio.
- Utilizzati in applicazioni di elaborazione del suono come il riconoscimento vocale, la trascrizione di audio e l’analisi del suono ambientale.
Queste sono solo alcune delle altre tipologie di embeddings utilizzate in diversi ambiti del machine learning e dell’analisi dei dati. Ogni tipo di embedding ha le proprie caratteristiche e applicazioni specifiche, e la scelta dipende dalle esigenze e dagli obiettivi del progetto.
Il concetto di similarità negli embeddings
Il concetto di similarità è fondamentale nell’analisi degli embeddings, poiché ci consente di valutare quanto due elementi (parole, immagini, oggetti, etc.) siano simili o correlati nello spazio vettoriale. La similarità è spesso calcolata utilizzando misure come la similarità coseno o la distanza euclidea tra i vettori embedding.
Similarità Coseno:
- La similarità coseno misura l’angolo tra due vettori nello spazio.
- È calcolata dividendo il prodotto scalare dei due vettori per il prodotto delle loro norme.
- Valori più vicini a 1 indicano una maggiore similarità, mentre valori più vicini a 0 indicano una minore similarità.
Distanza Euclidea:
- La distanza euclidea misura la lunghezza del vettore che collega due punti nello spazio.
- È calcolata come la radice quadrata della somma dei quadrati delle differenze tra le coordinate dei due vettori.
- Valori più vicini a 0 indicano una maggiore similarità, mentre valori più grandi indicano una minore similarità.
Rappresentazione grafica e clusterizzazione
Graficamente, gli embeddings possono essere rappresentati in uno spazio bidimensionale o tridimensionale utilizzando tecniche di riduzione dimensionale come quelle citate sopra. In questa rappresentazione, i punti corrispondenti ai vettori sono posizionati nello spazio in modo che le loro distanze riflettano le similarità tra gli elementi.
Ad esempio, è possibile addestrare modelli di IA su un corpus di testo sufficientemente ampio e variegato al fine di calcolare embeddings delle parole che ne rappresentino il significato sulla base del contesto. Così facendo si può fare in modo che parole con significati simili abbiano embedding simili (il modello impara a catturare le relazioni semantiche durante l’addestramento).
Rappresentando gli embeddings delle parole in uno spazio bidimensionale utilizzando l’algoritmo PCA, le parole con embeddings simili saranno posizionate vicine l’una all’altra, mentre le parole con embeddings diversi saranno posizionate lontano l’una dall’altra. Questo ci consente di definire delle clusterizzazioni come nell’esempio seguente in cui si distinguono chiaramente due “tipologie” di parole simili: animali e stati:
Gli embeddings sono uno strumento potente e versatile nel campo del machine learning, utilizzato in una vasta gamma di applicazioni per rappresentare dati complessi in modo vettoriale. Grazie alla loro capacità di catturare il significato semantico e le relazioni tra i dati, gli embeddings consentono ai modelli di machine learning di comprendere e interpretare il mondo intorno a noi in modo più efficace ed efficiente.