Embedding (NLP) (RO)
Embedding (din engl. embedding — „încorporare") — este o tehnologie fundamentală în domeniul Machine Learning și al procesării limbajului natural, care transformă obiecte discrete sau complexe (precum cuvinte, propoziții, imagini) în reprezentări vectoriale numerice de dimensiune fixă. Acești vectori, sau embedding-uri, sunt plasați într-un spațiu multidimensional astfel încât obiectele semantic similare să se afle aproape unele de altele.
Definiție și concept
Formal, un embedding este o funcție de mapare , unde este spațiul inițial al obiectelor (de exemplu, vocabularul de cuvinte), iar este un spațiu vectorial multidimensional (spațiul embedding-urilor) cu dimensiunea . Dimensiunea este semnificativ mai mică decât dimensiunea spațiului inițial, ceea ce face aceste reprezentări dense (dense).
Baza teoretică pentru reprezentările vectoriale ale cuvintelor o constituie semantica distribuțională, care afirmă că semnificația unui cuvânt este determinată de contextul în care acesta apare. Astfel, cuvintele care apar în contexte similare au semnificații asemănătoare și, prin urmare, reprezentări vectoriale apropiate.
Principiile fundamentale ale embedding-urilor
- Dimensiune fixă: Toate obiectele sunt mapate în vectori de aceeași lungime, indiferent de dimensiunea datelor inițiale (de exemplu, lungimea propoziției).
- Proximitate semantică: Distanța dintre vectori (adesea măsurată prin similaritate cosinus) reflectă proximitatea semantică a obiectelor inițiale.
- Suport pentru operații matematice: Vectorii păstrează relațiile semantice, permițând efectuarea de operații algebrice asupra lor. Exemplul clasic: Failed to parse (syntax error): {\displaystyle ext{вектор}( ext{«король»}) - ext{вектор}( ext{«мужчина»}) + ext{вектор}( ext{«женщина»}) \approx ext{вектор}( ext{«королева»})} .
Istoric și evoluție
Abordări timpurii (anii 1980–2000)
Primele idei de reprezentări vectoriale au apărut în anii 1980, în cadrul cercetărilor privind rețelele neuronale. Metodele timpurii se bazau pe analiza statistică a co-apariției cuvintelor.
Era Word2Vec (2013)
Momentul revoluționar l-a reprezentat dezvoltarea Word2Vec de către echipa Google condusă de Tomáš Mikolov în 2013. Word2Vec a propus două arhitecturi eficiente și economic computațional pentru antrenarea embedding-urilor de cuvinte:
- CBOW (Continuous Bag of Words): Prezice cuvântul central pe baza contextului înconjurător.
- Skip-gram: Prezice cuvintele din context pe baza cuvântului central.
Word2Vec a devenit prima implementare populară a reprezentărilor vectoriale, datorită în mare parte codului sursă deschis și vitezei ridicate de execuție.
Dezvoltarea abordărilor alternative
După Word2Vec au apărut și alte modele semnificative de embedding-uri statice:
- GloVe (2014): Model dezvoltat la Universitatea Stanford, care utilizează statistici globale de co-apariție a cuvintelor pentru antrenarea vectorilor.
- FastText (2015): Model de la Facebook, care ține cont de morfologia cuvintelor, reprezentând fiecare cuvânt ca suma vectorilor n-gramelor sale de caractere. Aceasta permite crearea de embedding-uri chiar și pentru cuvinte care nu au existat în vocabularul de antrenare (cuvinte Out-of-Vocabulary).
Era transformer-elor și a embedding-urilor contextuale (2018–prezent)
Revoluția a avut loc odată cu apariția arhitecturii transformer și a modelului BERT (2018). Aceasta a condus la apariția embedding-urilor contextuale, în care reprezentarea vectorială a unui cuvânt depinde de contextul utilizării sale. Spre deosebire de reprezentările statice, unde cuvântul „cheie" ar avea același vector indiferent de context, modelele contextuale generează embedding-uri diferite pentru fiecare situație.
Tipuri de embedding-uri
După nivelul de reprezentare
- Embedding-uri de cuvinte: Tipul de bază, în care fiecare cuvânt este reprezentat printr-un vector separat (Word2Vec, GloVe).
- Embedding-uri de propoziții și documente: Reprezintă fraze întregi, propoziții sau documente printr-un singur vector (PV-DM, PV-DBOW).
- Embedding-uri de utilizatori și obiecte: Utilizate în sistemele de recomandare pentru a reprezenta interesele utilizatorilor și caracteristicile produselor.
După contextualitate
- Embedding-uri statice: Fiecărui cuvânt îi este atribuit un singur vector fix, indiferent de context (Word2Vec, GloVe, FastText).
- Embedding-uri contextuale: Generează reprezentări diferite pentru același cuvânt în funcție de contextul său. Principalii reprezentanți:
- BERT: Model bidirecțional bazat pe transformer-e.
- ELMo: Model LSTM bidirecțional.
- RoBERTa, DistilBERT, ALBERT: Variante îmbunătățite ale BERT.
După modalitate
- Embedding-uri textuale: Cel mai răspândit tip, incluzând reprezentări de cuvinte, propoziții și documente.
- Embedding-uri vizuale: Reprezentări ale imaginilor pentru sarcini de vedere artificială.
- Embedding-uri multimodale: Combină diferite tipuri de date (text, imagini, audio) într-un spațiu vectorial unificat. Un exemplu este ImageBind, capabil să coreleze date din șase modalități.
Arhitecturi și metode de antrenare
Metode clasice
- Codificare one-hot: Cea mai simplă metodă, în care fiecare cuvânt este codat printr-un vector de dimensiunea vocabularului, cu valoarea unu în poziția corespunzătoare. Dezavantaje: dispersie ridicată și absența informației semantice.
- Factorizarea matriceală: Metode de reducere a dimensionalității (de exemplu, LSA), aplicate matricelor de co-apariție a cuvintelor.
Arhitecturi bazate pe rețele neuronale
- Rețele neuronale superficiale: Arhitecturile CBOW și Skip-gram din Word2Vec utilizează rețele neuronale cu două straturi pentru antrenare eficientă.
- Transformer-e: Arhitectura care a revoluționat domeniul datorită mecanismului de atenție (attention).
Abordări moderne
- Auto-supervizare cu măști: BERT utilizează sarcina de predicție a cuvintelor mascate pentru antrenarea reprezentărilor contextuale.
- Antrenare contrastivă: Metode care maximizează similaritatea perechilor semantic apropiate (pozitive) și minimizează similaritatea perechilor îndepărtate (negative).
Aplicații ale embedding-urilor
Embedding-urile au o largă aplicabilitate în diverse domenii:
Procesarea limbajului natural
- Căutare și recuperare a informațiilor: Îmbunătățirea calității căutării semantice, permițând găsirea documentelor după sens, nu după cuvinte-cheie.
- Clasificarea textelor: Reprezentările vectoriale servesc ca date de intrare pentru clasificatori, sporind acuratețea acestora.
- Analiza sentimentelor: Determinarea tonalității emoționale a textelor ținând cont de context.
- Traducere automată: Îmbunătățirea înțelegerii semanticii limbii sursă și a limbii țintă.
Sisteme de recomandare
Embedding-urile de utilizatori și produse stau la baza sistemelor de recomandări personalizate, inclusiv:
- Filtrare colaborativă: pe baza embedding-urilor comportamentului utilizatorilor.
- Filtrare bazată pe conținut: utilizând embedding-urile caracteristicilor produselor.
Vedere artificială
- Clasificarea și căutarea imaginilor: Rețelele neuronale convoluționale și Vision Transformers creează embedding-uri ale imaginilor pentru clasificarea și căutarea celor similare vizual.
Bioinformatică și medicină
- Analiza datelor medicale: Analiza înregistrărilor clinice și diagnosticarea bolilor.
- Reprezentări moleculare: Crearea de embedding-uri pentru predicția proprietăților compușilor chimici.
Aspecte tehnice și optimizare
- Metode de optimizare a dimensionalității: Matryoshka Representation Learning (MRL) — o abordare inovatoare care permite obținerea de embedding-uri de dimensiuni diferite dintr-un singur model, concentrând informațiile importante la începutul vectorului.
- Cuantizarea embedding-urilor: Reducerea preciziei reprezentării numerelor (de exemplu, la 8 sau 4 biți) pentru accelerarea calculelor și economisirea memoriei.
- Integrarea cu baze de date: Bazele de date vectoriale moderne (de exemplu, Milvus, Pinecone) și extensiile pentru SGBD-uri tradiționale (de exemplu, pgvector pentru PostgreSQL) permit stocarea și căutarea eficientă a embedding-urilor.
Referințe
- Reprezentarea vectorială a cuvintelor — Wikipedia
- Reprezentarea vectorială a cuvintelor — NEERC
Bibliografie
- 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.