Modelul neural de limbaj
Oricât text am aduna din toate bibliotecile lumii, un tabel de combinații statistice va rămâne mereu pustiu. Salvarea nu a venit dintr-un catalog mai mare, ci dintr-o schimbare de viziune: o rețea neuronală care înțelege rudenia dintre concepte, astfel încât ceea ce învață despre un animal sau un fruct să se transfere de la sine tuturor fraților săi de pe harta semantică.
Termeni: explozie combinatorie generalizare semantică model neural (Bengio 2003) împărțirea ponderilor fereastră fixă de context
Capcana infinitului: câte combinații există în realitate?
Modelul din lecția precedentă se baza pe o evidență contabilă rigidă: ținea un catastif uriaș cu fiecare grup de cuvinte întâlnit și număra ce a urmat după el. Înainte de a trece mai departe, merită să facem un calcul simplu de bun-simț: cât de mare ar trebui să fie acest registru pentru a acoperi limba vie? Răspunsul este copleșitor și lămurește dintr-o privire de ce vechea abordare s-a prăbușit.
Să ne imaginăm un vocabular modest de numai zece mii de cuvinte uzuale. Numărul combinațiilor posibile de doar două cuvinte este de zece mii înmulțit cu zece mii, adică o sută de milioane. Dacă vrem să ținem cont de trei cuvinte, înmulțim din nou cu zece mii și ajungem la o mie de miliarde! Cu fiecare cuvânt adăugat la context, spațiul posibilităților explodează exponențial într-un abis astronomic.
Chiar dacă am scana un munte de o mie de miliarde de cuvinte — adică tot ce a tipărit omenirea de la Gutenberg încoace —, un text conține un număr finit de ferestre succesive. Față de multitudinea astronomică de combinații permise de vocabular, tabelul nostru rămâne aproape în întregime gol. Nu este vorba de o lipsă de hărnicie din partea programatorilor, ci de o limită fizică a universului: nu s-a scris și nu se va scrie niciodată suficient text pentru a umple toate căsuțele posibile.
Cifra zero nu înseamnă imposibil
Acest deșert de căsuțe goale nu ar fi o dramă dacă frazele absente ar fi greșite sau lipsite de noimă. Dimpotrivă! Marea majoritate a propozițiilor perfect corecte, frumoase și logice din limba română nu au fost rostite sau scrise vreodată de nimeni. Gândiți-vă o clipă: fraza pe care o citiți chiar acum pe acest ecran este, foarte probabil, unică în istoria scrisului universal.
Un tabel statistic orb nu poate face această distincție fină. Pentru el, o secvență absurdă precum „pantofii triunghiul zboară” și o metaforă nouă, poetică sau o frază firească neîntâlnită primesc exact același calificativ sec: zero. Trucul de netezire matematică din lecția precedentă doar împarte o firimitură infimă și egală tuturor variantelor nevăzute — o recunoaștere onestă a neștiinței, dar care nu ajută la nimic în conversația reală.
Ceea ce îi lipsește cu desăvârșire unui tabel este intuiția analogiei: puterea de a spune „nu am auzit niciodată această frază anume, dar seamănă izbitor cu o alta pe care o știu bine, iar cuvintele lor sunt rude apropiate”. Pentru a face acest salt de gândire, cuvintele trebuie să aibă o geometrie a înrudirii — ceva ce un tabel static nu va putea oferi niciodată.
Asemănarea pusă la lucru: rețeaua neuronală
Într-un catalog rigid, termenii „pisica” și „câinele” sunt două etichete izolate, complet străine între ele, la fel de despărțite precum „pisica” și „miercuri”. Orice observație nouă despre câine nu aduce niciun gram de cunoaștere despre pisică.
Aici intervine strălucita idee a hărții vectoriale din Lecția 19. Dacă fiecare cuvânt este reprezentat printr-un pachet de coordonate (un vector), iar termenii care împart contexte asemănătoare ajung vecini apropiați în spațiu, atunci orice învățătură acumulată pentru un punct radiază de la sine asupra întregului său cartier semantic.
Aceasta a fost arhitectura revoluționară propusă de profesorul Yoshua Bengio în 2003: cuvintele din frază sunt transformate în vectorii lor de trăsături, aceștia sunt alăturați și trimiși printr-o rețea neuronală cu straturi ascunse, iar la ieșire rețeaua estimează șansele fiecărui cuvânt din vocabular. Vectorii nu sunt desenați manual: se ajustează continuu prin coborârea pe gradient, învățând simultan cu restul rețelei. Este strămoșul direct al tuturor marilor modele de limbaj de astăzi.
Căsuțele roșii din experimentul de mai sus reprezintă asocieri șterse deliberat din datele de lectură. În fața lor, tabelul statistic se blochează și dă zero: nu le-a întâlnit niciodată, deci ridică din umeri. În schimb, rețeaua neuronală acordă o probabilitate pozitivă plină de sens! De ce? Deoarece a observat că „pisica” seamănă la comportament cu „câinele”, iar despre câine a văzut că doarme în culcuș. Fără ca nimeni să-i fi predat biologie, modelul a dedus prin transfer că și pisicile pot dormi.
De ce funcționează: punerea în comun a cunoștințelor
Marea forță a acestei abordări nu stă în volumul de memorie, ci în faptul că rețeaua folosește parametri comuni pentru situații înrudite.
Într-un tabel izolat, fiecare rând este o insulă singuratică: dacă înveți ceva despre „câine”, cunoștința rămâne ferecată acolo. Într-un model neural, orice propoziție despre un cățel deplasează ușor vectorul său pe hartă, iar această deplasare modifică automat calculele pentru toți termenii apropiați (lup, vulpe, pisică). Fiecare exemplu citit luminează și îmbogățește și cuvintele vecine care nu au fost menționate direct în acea frază!
Efectul este salutar mai ales pentru cuvintele rare. Tabelul statistic le abandonează cu scoruri nule. Modelul neuronal, în schimb, prinde termenul rar după cele două sau trei apariții, îl ancorează lângă sinonimele sale mai populare, iar de acolo înainte conceptul nou moștenește pe loc tot tezaurul de cunoștințe al vecinilor. În fond, a gândi și a generaliza înseamnă a împrumuta cu discernământ: a folosi ceea ce știi dintr-o experiență trăită pentru a naviga o situație nouă, dar similară.
Obstacolul rămas: închisoarea ferestrei fixe
Modelul lui Bengio a spulberat blestemul tabelelor goale, dar s-a lovit curând de o altă barieră inginerească dificilă.
Fereastra de context era încă rigidă și îngustă. Dacă rețeaua este proiectată să primească la intrare exact trei sau patru cuvinte, ea este complet oarbă la tot ce s-a întâmplat mai devreme. Să privim o frază cu acord la distanță: „Fetele pe care le-am întâlnit ieri la bibliotecă, venite din celălalt cartier, ___”. Cuvântul hotărâtor pentru acordul verbului este „Fetele”, aflat cu zece poziții în urmă! Pentru o fereastră fixă de patru cuvinte, subiectul a dispărut demult dincolo de orizont.
De ce nu putem pur și simplu să mărim fereastra la cincizeci sau o sută de cuvinte? Pentru că fiecare poziție nouă din fereastră adaugă un set întreg de conexiuni la primul strat neuronal, umflând exponențial numărul de parametri. Mai mult, conexiunile pentru poziția 1 sunt complet separate de cele pentru poziția 3: ce învață rețeaua despre un substantiv aflat la începutul ferestrei nu se aplică automat dacă același substantiv apare două poziții mai la dreapta!
Este exact aceeași risipă pe care o întâlnisem la analiza imaginilor înainte de apariția convoluției. Avem nevoie de un mecanism flexibil, capabil să citească fraze de orice lungime și să aplice aceleași principii indiferent de poziția cuvântului în text. În lecția următoare, vom explora prima mare încercare de a da rețelelor o memorie continuă: rețeaua recurentă, o idee ingenioasă care avea însă să se lovească de propria ei barieră de uitare.