L.19Partea 4 / Limbajul
Cuprins

Reprezentarea vectorială

O rețea neuronală nu știe ce este o literă sau o idee: ea lucrează exclusiv cu numere, adunări și înmulțiri. Cum putem transforma un cuvânt într-un pachet de cifre fără să-i pierdem sensul? Soluția modernă e surprinzătoare și elegantă: nu inventăm noi definiții matematice rigide, ci lăsăm cuvintele să-și găsească singure locul pe o hartă a înțelesurilor, ghidate doar de tovărășia în care apar zi de zi.

Termeni: reprezentare unară (one-hot) vector de trăsături hartă semantică similaritate cosinus aritmetică a direcțiilor

Cuvântul nu este un simplu număr

Prima idee care ne vine în minte pare la îndemână: ce-ar fi să numerotăm pur și simplu cuvintele din dicționar? „Câine” primește numărul 17, „pisică” primește 18, iar „măr” primește 19. Această abordare naivă strecoară însă în date o ordine falsă, care induce rețeaua în eroare. Pentru o formulă matematică, 17 și 18 sunt vecini imediați, iar 18 se află exact la mijloc între 17 și 19. Dar „pisica” nu este o medie între un câine și un măr! Am văzut în primele lecții că o etichetă binară e doar o adresă de catalog, nu o descriere a conținutului. Dacă luăm adresa drept înțeles, calculele își pierd orice noimă.

A doua idee încearcă să elimine această apropiere artificială. În loc de un singur număr, îi dăm fiecărui cuvânt o listă lungă de zerouri, cu o singură poziție de 1 activată la căsuța lui. Această abordare se numește reprezentare unară (sau, în engleză, one-hot encoding). Avantajul ei este că este perfect imparțială: nu mai presupune nicio rudenie forțată între cuvinte.

Dar tocmai această neutralitate o face neputincioasă. În reprezentarea unară, oricare două cuvinte diferite se află la exact aceeași distanță matematică unul de altul. Pentru rețea, „pisică” este la fel de străină de „câine” pe cât este de „submarin” sau „filosofie” — nu există nicio urmă de semnificație. În plus, lista devine uriașă: pentru un vocabular obișnuit de o sută de mii de cuvinte, fiecare cuvânt ar fi un șir gigantic de o sută de mii de zerouri și un singur 1.

Trei moduri de a reprezenta cuvintele și distanțele dintre ele
numerotare simplă
reprezentare unară
vectori învățați
La numerotarea arbitrară, „para” iese vecină cu „câinele”, iar „pisica” cu „Clujul”, doar fiindcă au primit numere alăturate. La reprezentarea unară, toate cuvintele sunt la fel de străine între ele. Numai vectorii învățați reușesc să așeze fructele lângă fructe și animalele lângă animale.

Harta semantică: înțelesul născut din vecinătăți

Adevărata revoluție a venit dintr-o a treia abordare: să nu hotărâm noi manual valorile numerice, ci să le lăsăm pe seama învățării automate. Fiecare cuvânt primește o listă compactă de numere reale — câteva zeci, trei sute sau o mie — care funcționează exact ca niște coordonate GPS într-un spațiu cu multe dimensiuni. Această listă ordonată de numere se numește vector, iar plasarea conceptelor pe această hartă multidimensională poartă numele de reprezentare vectorială (sau embedding).

Dar cum poate o mașină să afle coordonatele potrivite pentru fiecare cuvânt? Secretul a fost formulat inspirat de lingvistul John Firth încă din 1957: „un cuvânt se cunoaște după tovărășia pe care o ține”. Cuvintele care exprimă noțiuni înrudite tind să apară în contexte similare. Spunem adesea „am băut un ceai fierbinte” sau „am băut o cafea fierbinte”, dar rareori „am băut un tractor fierbinte”. Înțelesul nu este o definiție abstractă dintr-un dicționar imobil, ci un tipar viu de utilizare în limba de zi cu zi — iar aparițiile în text pot fi numărate și măsurate matematic.

Această intuiție devine un joc ingenios de antrenare. Dintr-o bibliotecă uriașă de texte, alegem un cuvânt și îi cerem rețelei să ghicească ce termeni se află în imediata lui vecinătate. Ghicirea în sine este doar un antrenament utilitar: ceea ce ne interesează cu adevărat sunt coordonatele care se ajustează treptat în acest proces. Pentru a prezice corect contextele, modelul este obligat să împingă în aceeași zonă a hărții cuvintele care împart aceiași tovarăși de frază.

O hartă a cuvintelor antrenată în direct pe un text restrâns
—

În exemplul interactiv de mai sus, am pregătit patruzeci și opt de propoziții scurte formate din treizeci și opt de cuvinte. Fiecare cuvânt primește doar două coordonate, pentru a putea fi desenat ca un punct pe un ecran plan. Fără ca cineva să fi programat categorii de tipul „fructe”, „animale” sau „orașe”, punctele migrează singure și formează insule distincte, pur și simplu pentru că apar în propoziții asemănătoare.

Atenție la capcanele contextelor prea înguste: dacă un cuvânt apare într-un singur tip de frază, el este atras cu forța în acel cerc restrâns. În micul nostru text didactic, „din” ajunge lipit de fructe fiindcă apare exclusiv în „cumpăr mărul din piață”. Într-un corpus amplu de limbă naturală, el este folosit în mii de contexte diferite și migrează firesc spre centrul neutru al hărții.

Distanța și orientarea pe busola semantică

Pe o astfel de hartă a înțelesurilor, ceea ce contează nu este lungimea vectorului (distanța de la centrul diagramei până la cuvânt), ci unghiul format de săgețile celor doi vectori. Dacă privim fiecare cuvânt ca pe un ac de busolă îndreptat din origine, două cuvinte cu sensuri apropiate vor arăta aproape în aceeași direcție, indiferent cât de des sau de rar au fost întâlnite în text.

Instrumentul matematic standard pentru această comparație poartă numele de similaritate cosinus. El măsoară cât de aliniate sunt cele două direcții: primește valoarea 1 dacă săgețile indică exact aceeași direcție, coboară la 0 dacă ele sunt perpendiculare (fără nicio legătură de sens) și ajunge la −1 dacă indică direcții complet opuse. Aceasta este nota de proximitate afișată lângă fiecare vecin în diagrama de mai sus.

Geometria sensului: direcții cu înțeles

Când o astfel de reprezentare este antrenată pe miliarde de cuvinte de pe internet, se produce un fenomen spectaculos pe care nimeni nu l-a programat anume. Spațiul căpătă o geometrie plină de logică: deplasarea de la vectorul „rege” la vectorul „regină” este aproape paralelă cu deplasarea de la „bărbat” la „femeie”, de la „actor” la „actriță” sau de la „bunic” la „bunică”. O anumită axă din spațiu ajunge să codifice genul gramatical, o altă axă codifică trecerea de la singular la plural, iar o alta leagă țările de capitalele lor.

Consecința este fascinantă: putem rezolva analogii lingvistice prin simple adunări și scăderi de vectori. Dacă luăm coordonatele cuvântului „rege”, scădem vectorul „bărbat” și adunăm vectorul „femeie”, ajungem matematic într-un punct extrem de apropiat de „regină”. Această proprietate, evidențiată în 2013 odată cu modelul Word2Vec, a stârnit o adevărată senzație în lumea științei, arătând că relațiile de gândire umană pot fi cartografiate geometric.

Aritmetica analogiilor pe un set de date prea mic
—

Dacă testăm această operație pe micul nostru exemplu didactic, observăm că modelul identifică zona corectă — toate cuvintele feminine apar simultan pe primele locuri —, însă nu le poate departaja fin între ele. „Regina”, „actrița” și „bunica” primesc scoruri aproape identice, iar ordinea lor este pur întâmplătoare. De ce se întâmplă asta? Deoarece în cele câteva propoziții din exercițiu, cele trei cuvinte apar în exact aceleași tipare de frază, fără suficiente nuanțe care să le distingă.

Aici înțelegem rolul decisiv al volumului uriaș de date. Algoritmul de învățare este identic; ceea ce aduce o bibliotecă gigantică este varietatea infinită de contexte particulare, singurul lucru care poate separa un concept de celălalt. Un cuvânt are o identitate bine definită doar în măsura în care situațiile în care este folosit diferă de ale semenilor săi. Cu date puține, concepte distincte rămân contopite în același punct.

Marea limitare: cuvintele cu mai multe fețe

Oricât de ingenioasă este această metodă, ea ascunde o slăbiciune fundamentală: asociază fiecărui cuvânt un singur vector fix, ca o etichetă lipită o dată pentru totdeauna. Ce facem însă cu omofonele și polisemantismele? Cuvântul „broască” poate fi o vietate de pe malul apei sau mecanismul de încuiere al unei uși. Neavând voie să aibă două poziții distincte, vectorul său este tras simultan în două direcții opuse și sfârșește într-un compromis bizar la mijlocul hărții — un punct care nu se potrivește cumsecade cu niciunul dintre cele două sensuri.

Această piedică nu ține de cantitatea de text citit, ci de principiul de bază al sistemului: nu poți reduce un cuvânt la un vector static, rupt de contextul clipei. Pentru a înțelege limba vie, vectorul unui termen trebuie să fie fluid, modelat dinamic de propoziția în care trăiește la un moment dat. Această nevoie profundă va deschide drumul către mecanismele de atenție și marile modele de limbaj de astăzi.

Mai există o dificultate practică: am presupus până acum că unitatea de lucru este cuvântul întreg. Dar oricât de voluminos ar fi un dicționar, vor apărea necontenit cuvinte noi, nume proprii, greșeli de tipar, termeni tehnici sau flexiuni neașteptate. În lecția următoare, vom descoperi cum rezolvă inteligența artificială această dilemă, descompunând cuvintele în piese flexibile de Lego.