Embedding (NLP) (IT)

From Systems analysis Wiki
Jump to navigation Jump to search

Embedding (dall'inglese embedding — «incorporamento») — è una tecnologia fondamentale nel campo del Machine Learning e dell'elaborazione del linguaggio naturale (NLP), che trasforma oggetti discreti o complessi (come parole, frasi, immagini) in rappresentazioni vettoriali numeriche di dimensione fissa. Questi vettori, o embedding, sono collocati in uno spazio multidimensionale in modo tale che oggetti semanticamente simili risultino vicini tra loro.

Definizione e concetto

Formalmente, un embedding è una funzione di mappatura f:Xd, dove X è lo spazio originale degli oggetti (ad esempio, il vocabolario delle parole), e d è lo spazio vettoriale multidimensionale (spazio degli embedding) con dimensione d. La dimensione d è significativamente inferiore alla dimensione dello spazio originale, il che rende queste rappresentazioni dense (dense).

La base teorica per le rappresentazioni vettoriali delle parole è la semantica distribuzionale, che afferma che il significato di una parola è determinato dal contesto del suo utilizzo. Ovvero, le parole che compaiono in contesti simili hanno significati analoghi e, di conseguenza, rappresentazioni vettoriali simili.

Principi fondamentali degli embedding

  • Dimensione fissa: Tutti gli oggetti vengono mappati in vettori della stessa lunghezza, indipendentemente dalla dimensione dei dati originali (ad esempio, dalla lunghezza della frase).
  • Prossimità semantica: La distanza tra i vettori (spesso misurata tramite la similarità del coseno) riflette la vicinanza semantica degli oggetti originali.
  • Supporto alle operazioni matematiche: I vettori preservano le relazioni semantiche, consentendo di eseguire su di essi operazioni algebriche. Esempio classico: вектор(«король»)вектор(«мужчина»)+вектор(«женщина»)вектор(«королева»).

Storia e sviluppo

Approcci iniziali (anni 1980–2000)

Le prime idee sulle rappresentazioni vettoriali emersero negli anni '80 nell'ambito della ricerca sulle reti neurali. I metodi iniziali si basavano sull'analisi statistica della co-occorrenza delle parole.

L'era di Word2Vec (2013)

Il momento rivoluzionario fu lo sviluppo di Word2Vec da parte del team di Google guidato da Tomáš Mikolov nel 2013. Word2Vec propose due architetture efficienti e computazionalmente economiche per l'addestramento degli embedding delle parole:

  • CBOW (Continuous Bag of Words): Predice la parola centrale sulla base del contesto circostante.
  • Skip-gram: Predice le parole contestuali a partire dalla parola centrale.

Word2Vec divenne la prima implementazione popolare delle rappresentazioni vettoriali, in gran parte grazie al codice sorgente aperto e all'elevata velocità di elaborazione.

Sviluppo di approcci alternativi

Dopo Word2Vec comparvero altri modelli significativi di embedding statici:

  • GloVe (2014): Modello sviluppato presso l'Università di Stanford, che utilizza la statistica globale di co-occorrenza delle parole per addestrare i vettori.
  • FastText (2015): Modello di Facebook, che tiene conto della morfologia delle parole rappresentando ciascuna parola come somma dei vettori dei suoi n-grammi di caratteri. Ciò consente di creare embedding anche per parole assenti dal vocabolario di addestramento (parole Out-of-Vocabulary).

L'era dei transformer e degli embedding contestuali (2018–oggi)

Una svolta si ebbe con l'apparizione dell'architettura transformer e del modello BERT (2018). Ciò portò alla nascita degli embedding contestuali, in cui la rappresentazione vettoriale di una parola dipende dal contesto d'uso. A differenza delle rappresentazioni statiche, in cui la parola «chiave» avrebbe lo stesso vettore in frasi come «chiave della porta» e «chiave di violino», i modelli contestuali generano embedding diversi per ciascun caso.

Tipi di embedding

Per livello di rappresentazione

  • Embedding di parole: Tipo base, in cui ogni parola è rappresentata da un vettore separato (Word2Vec, GloVe).
  • Embedding di frasi e documenti: Rappresentano intere frasi, proposizioni o documenti con un unico vettore (PV-DM, PV-DBOW).
  • Embedding di utenti e oggetti: Utilizzati nei sistemi di raccomandazione per rappresentare gli interessi degli utenti e le caratteristiche dei prodotti.

Per contestualità

  • Embedding statici: A ciascuna parola viene assegnato un vettore fisso unico, indipendentemente dal contesto (Word2Vec, GloVe, FastText).
  • Embedding contestuali: Generano rappresentazioni diverse per la stessa parola in base al contesto circostante. Principali rappresentanti:
    • BERT: Modello bidirezionale basato su transformer.
    • ELMo: Modello LSTM bidirezionale.
    • RoBERTa, DistilBERT, ALBERT: Varianti migliorate di BERT.

Per modalità

  • Embedding testuali: Il tipo più diffuso, che include rappresentazioni di parole, frasi e documenti.
  • Embedding visivi: Rappresentazioni di immagini per compiti di visione artificiale.
  • Embedding multimodali: Combinano diversi tipi di dati (testo, immagini, audio) in un unico spazio vettoriale. Un esempio è ImageBind, capace di collegare dati provenienti da sei modalità.

Architetture e metodi di addestramento

Metodi classici

  • Codifica one-hot: Il metodo più semplice, in cui ogni parola è codificata con un vettore di dimensione pari al vocabolario, con un uno nella posizione corrispondente. Svantaggi: elevata sparsità e assenza di informazioni semantiche.
  • Fattorizzazione di matrici: Metodi di riduzione della dimensionalità (ad esempio, LSA), applicati a matrici di co-occorrenza delle parole.

Architetture a rete neurale

  • Reti neurali superficiali: Le architetture CBOW e Skip-gram in Word2Vec utilizzano reti neurali a due strati per un addestramento efficiente.
  • Transformer: Architettura che ha rivoluzionato il settore grazie al meccanismo di attention.

Approcci moderni

  • Apprendimento con mascheramento: BERT utilizza il compito di previsione delle parole mascherate per addestrare rappresentazioni contestuali.
  • Apprendimento contrastivo: Metodi che massimizzano la similarità tra coppie semanticamente vicine (positive) e minimizzano la similarità tra coppie lontane (negative).

Applicazioni degli embedding

Gli embedding trovano ampia applicazione in diversi ambiti:

Elaborazione del linguaggio naturale

  • Ricerca e recupero delle informazioni: Miglioramento della qualità della ricerca semantica, consentendo di trovare documenti per significato e non per parole chiave.
  • Classificazione dei testi: Le rappresentazioni vettoriali fungono da dati di input per i classificatori, aumentandone la precisione.
  • Analisi del sentiment: Determinazione della tonalità emotiva dei testi tenendo conto del contesto.
  • Traduzione automatica: Miglioramento della comprensione della semantica della lingua sorgente e di destinazione.

Sistemi di raccomandazione

Gli embedding di utenti e prodotti sono alla base dei sistemi di raccomandazione personalizzata, tra cui:

  • Filtraggio collaborativo: basato sugli embedding del comportamento degli utenti.
  • Filtraggio basato sui contenuti: con l'utilizzo degli embedding delle caratteristiche dei prodotti.

Visione artificiale

  • Classificazione e ricerca di immagini: Le reti neurali convoluzionali e i Vision Transformer creano embedding delle immagini per la loro classificazione e per la ricerca di immagini visivamente simili.

Bioinformatica e medicina

  • Analisi dei dati medici: Analisi delle cartelle cliniche e della diagnostica delle malattie.
  • Rappresentazioni molecolari: Creazione di embedding per la previsione delle proprietà dei composti chimici.

Aspetti tecnici e ottimizzazione

  • Metodi di ottimizzazione della dimensionalità: Matryoshka Representation Learning (MRL) — un approccio innovativo che consente di ottenere embedding di diverse dimensioni da un unico modello, concentrando le informazioni importanti all'inizio del vettore.
  • Quantizzazione degli embedding: Riduzione della precisione della rappresentazione numerica (ad esempio, a 8 o 4 bit) per accelerare i calcoli e risparmiare memoria.
  • Integrazione con le basi di dati: I moderni database vettoriali (ad esempio, Milvus, Pinecone) e le estensioni per i DBMS tradizionali (ad esempio, pgvector per PostgreSQL) consentono di archiviare e ricercare embedding in modo efficiente.

Riferimenti

  • Rappresentazione vettoriale delle parole — Wikipedia
  • Rappresentazione vettoriale delle parole — NEERC

Bibliografia

  • Mikolov, T. et al. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781.
  • Mikolov, T. et al. (2013). Distributed Representations of Words and Phrases and their Compositionality. arXiv:1310.4546.
  • Pennington, J.; Socher, R.; Manning, C. (2014). GloVe: Global Vectors for Word Representation. PDF.
  • Bojanowski, P. et al. (2017). Enriching Word Vectors with Subword Information. arXiv:1607.04606.
  • Joulin, A. et al. (2017). Bag of Tricks for Efficient Text Classification. arXiv:1607.01759.
  • Peters, M. E. et al. (2018). Deep Contextualized Word Representations. ACL Anthology.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Reimers, N.; Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. arXiv:1908.10084.
  • Kusupati, A. et al. (2022). Matryoshka Representation Learning. arXiv:2205.13147.
  • Radford, A. et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. PMLR 139.
  • Girdhar, R. et al. (2023). ImageBind: One Embedding Space To Bind Them All. CVPR 2023.