Cuprins
S23/Sesiunea 23/Deep learning/~1 săptămână

Embeddings și secvențe

La final știi săReprezinți cuvintele ca vectori denși care poartă sens și înțelegi cum procesează rețelele secvențe de text.

Toate moduleleS23 · Embeddings și secvențe

One-hot tratează fiecare cuvânt ca pe ceva izolat: câine și pisică sunt la fel de diferite ca și câine și televizor. Embeddings pun cuvintele într-un spațiu unde apropierea înseamnă sens apropiat. E ideea pe care stă tot NLP-ul modern. Modulul ăsta îți dă intuiția, ca modelele mari de mai târziu să nu fie magie.

01

Problema reprezentării one-hot

În NLP clasic (S16), un cuvânt era o poziție într-un vector uriaș de zerouri cu un singur 1. Problema: toți vectorii sunt la fel de departe unul de altul. Modelul nu are cum să știe că rege și regină sunt înrudite, sau că bun și excelent sunt apropiate. Sensul se pierde complet.

Vectorii sunt și enormi (cât vocabularul, zeci de mii de dimensiuni) și rari (aproape numai zerouri). Ineficient și fără sens semantic. Embeddings rezolvă ambele probleme.

02

Embeddings: sens ca poziție în spațiu

Un embedding e un vector dens, scurt (de exemplu 100-300 de numere), învățat pentru fiecare cuvânt, astfel încât cuvintele cu sens apropiat să aibă vectori apropiați. Se învață din contexte: cuvintele care apar în contexte similare primesc vectori similari. Câine și pisică apar amândouă lângă hrană, blană, animal, deci ajung aproape.

Word2Vec învață astfel de vectori în două variante: skip-gram (din cuvânt prezici contextul) sau CBOW (din context prezici cuvântul). Un rezultat celebru: aritmetica vectorilor funcționează. Vectorul rege minus bărbat plus femeie cade aproape de regină. Sensul devine geometrie.

vec(rege) - vec(bărbat) + vec(femeie) ≈ vec(regină)
Relațiile de sens devin direcții în spațiu. Diferența bărbat-femeie e aceeași direcție ca rege-regină.
03

FastText: important pentru română

Word2Vec tratează fiecare cuvânt ca un tot. FastText merge pe subcuvinte (bucăți de litere): reprezintă un cuvânt din fragmentele lui. Asta contează enorm la română, cu flexiunea ei bogată. Merg, mergem, mergeau împart subcuvinte, deci primesc vectori înrudiți, chiar dacă una din forme e rară sau nevăzută la antrenare.

Poți folosi vectori preantrenați (Word2Vec, FastText, GloVe gata antrenați) ca extractoare de trăsături, fără să antrenezi nimic: iei vectorii cuvintelor și pui un model simplu deasupra. Cu puține date, e mult mai bine decât să pornești de la zero.

04

Secvențe: RNN, LSTM, GRU

Un embedding dă sens unui cuvânt, dar o propoziție e o secvență în care ordinea contează. Rețelele recurente (RNN) procesează textul cuvânt cu cuvânt, ținând o stare care rezumă ce au văzut până acum. Problema: pe secvențe lungi, gradientul dispare și rețeaua uită începutul propoziției.

LSTM și GRU rezolvă asta cu porți: mecanisme care decid ce informație rețin, ce uită și ce lasă să treacă. Așa pot ține minte context de mai departe. Nu trebuie să le implementezi de la zero, dar înțelege conceptual de ce funcționează: porțile protejează informația importantă de la a fi ștearsă pas cu pas.

RNN-urile și LSTM-urile au fost înlocuite în mare parte de transformere în NLP-ul de vârf, dar rămân importante ca să înțelegi ideea de procesare a secvenței și problema memoriei pe distanță lungă, care e exact ce au venit transformerele să rezolve mai bine.

Reține
  • One-hot pierde sensul; toate cuvintele sunt la fel de departe.
  • Embeddings sunt vectori denși unde apropierea = sens apropiat, învățați din context.
  • Aritmetica vectorilor de cuvinte funcționează: relațiile de sens devin direcții.
  • FastText folosește subcuvinte, esențial pentru flexiunea bogată a românei.
  • RNN procesează secvențe dar uită pe distanță lungă; LSTM/GRU rețin cu porți.
Index
De la one-hot la vector densWord2Vec (skip-gram, CBOW), GloVe, FastText, și de ce subcuvintele contează pentru românăAritmetica vectorilor de cuvinteRNN, gradientul care dispare, LSTM și GRU conceptualModele preantrenate ca extractoare de trăsături
Dacă vrei mai mult