08 · Paraules com a punts en un mapa
Un ordinador no sap què vol dir «gat». No l'ha vist mai, no l'ha acariciat, no sap que miola. Tot el que té són textos. La pregunta d'aquest capítol és com es pot fer, amb només textos, una representació del significat prou bona perquè una màquina pugui dir que «gat» s'assembla a «gos» i no gens a «dimarts». La resposta es va trobar molt abans dels grans models de llenguatge, i encara és la base de tots ells.
1. Coneixeràs una paraula per les companyies#
Imagina que trobes en un llibre una paraula que no coneixes: «el xirivell dormia al sofà, es llepava les potes i va miolar quan va sentir el gos». No cal diccionari. Per les paraules que l'envolten, saps que és un animal petit i domèstic, probablement un gat. No has necessitat que ningú te la definís: n'has tingut prou mirant amb qui anava.
Aquesta és la hipòtesi distribucional, que el lingüista J. R. Firth va resumir el 1957 en una frase que ha fet fortuna: «coneixeràs una paraula per la companyia que manté». Dues paraules que surten envoltades de les mateixes paraules tenen significats relacionats. La idea no diu què vol dir cap paraula; diu on mirar per esbrinar-ho. I com que «on mirar» és una cosa que es pot comptar, es pot convertir en un programa.
La versió més literal és exactament aquesta: per a cada paraula, comptar quines altres paraules surten a prop seu. «Gat» surt a prop de «dorm», «menja», «jardí»; «gos», també. Si dues paraules tenen llistes de companyies semblants, les tractem com a semblants. La figura ho fa amb el corpus de deu mil paraules en català que fa servir tot el curs.
Digues-me amb qui vas…
Companyies més freqüents de «gat»
- ★ dorm ×5
- carn ×2
- ★ menja ×2
- petit ×2
- cuina ×1
- espera ×1
- fa ×1
… i de «gos», la seva veïna més propera
- corre ×3
- ★ dorm ×2
- ★ menja ×2
- ahir ×1
- aigua ×1
- avui ×1
- baixa ×1
Paraules amb les companyies més semblants a les de «gat»
- 1. gos
- 2. pagès
- 3. mestre
- 4. pare
- 5. príncep
★ = companyia que comparteixen. La barra és la semblança entre les dues llistes de recomptes senceres, no només les set que es veuen.
Fixa't en el que hi ha i en el que no hi ha. El programa no sap res de gats ni de ciutats: només ha comptat. I tot i així posa «gos» al costat de «gat» i «barcelona» o «londres» al costat de «parís». També s'equivoca de maneres que diuen molt: com que el corpus és petit, algunes veïnes ho són per casualitat. Amb més text, les casualitats es dilueixen i el que queda és el que les paraules tenen en comú de debò.
Tots els models de llenguatge actuals porten aquesta idea al límit. Un LLM no té cap altra font de significat que el context: el que una paraula vol dir per a ell és el que ha après de totes les frases on l'ha vista.
2. Comptar què ve després: els n-grames#
Abans de fer mapes de significats, la manera clàssica de modelar el llenguatge era encara més senzilla: comptar què ve després. Si al teu corpus, després de «el pagès porta el pa al», la paraula que surt més sovint és «mercat», el model dirà que «mercat» és la continuació més probable. Un model que mira les dues paraules anteriors és un trigrama; el que en mira quatre, un 5-grama. En general, un model de n-grames (n-gram model) és una taula enorme de recomptes: per a cada grup de paraules, què ha vingut després i quantes vegades.
Aquests models van dominar fins al voltant del 2010 i encara són útils com a punt de comparació. Però tenen dos problemes de fons.
El primer és que mirar més enrere fa que gairebé tot sigui nou. Si només mires una paraula enrere, gairebé sempre l'has vist abans. Si en mires quatre, la combinació exacta que tens davant gairebé mai no ha sortit al text d'entrenament, i llavors la taula no té res a dir: el model ha d'endevinar amb regles de recanvi. La figura ho mesura sobre el corpus del curs.
Com més enrere mires, menys coses has vist
elpagèsportaelpaalmercatdel?
El segon problema és pitjor: no hi ha cap noció de semblança. Haver llegit «el gat menja peix» no ajuda gens a estimar «el felí devora bacallà», perquè per a la taula són combinacions de símbols diferents que no tenen res a veure. No hi ha cap lloc on posar que «gat» i «felí» són gairebé el mateix. Els models moderns resolen exactament aquests dos problemes: fan servir representacions on les paraules semblants són a prop (així una frase ajuda a entendre'n una altra) i poden mirar molt més enrere.
3. Buscar per paraules: TF-IDF i BM25#
Una altra cosa que es feia molt abans dels LLMs, i que es fa encara avui, és buscar documents. Escrius «filtre de la bomba» i vols la fitxa tècnica que en parla. La idea és la d'un bibliotecari que no entén res del tema però té bon ull per a les paraules rares: si la cerca conté una paraula que surt a molt pocs documents, aquells documents són candidats molt bons; si conté «de» o «la», que surten a tot arreu, no diuen res.
TF-IDF pesa cada paraula per dues coses: quantes vegades surt al document i com de rara és a la col·lecció. BM25, el seu successor, hi afegeix dues correccions de sentit comú: repetir una paraula deu vegades no fa un document deu vegades més rellevant (cada repetició suma menys que l'anterior), i un document llarg no ha de guanyar només per tenir més paraules.
Buscar per paraules: les rares pesen més
- Manual de la bomba MX-4120
- Com triar una bomba per al reg
- Avaries habituals de les bombes d’aigua
- Instal·lació del sistema de reg
- Informe de Marta Vilaseca sobre el consum del reg
- Aigua i estalvi a l’horta
- El motor de dos-cents watts
- Manteniment del filtre
Un codi rar: només una fitxa el conté, i guanya sola.
4. Un mapa de significats: word2vec#
Tornem a la idea de la secció 1, però amb un canvi de representació. En comptes de guardar per a cada paraula una llista llarguíssima de recomptes (una casella per cada paraula del vocabulari), donem a cada paraula un punt en un mapa. El punt és una llista curta de números, uns quants centenars, que fan de coordenades. Ja ho has vist al capítol 1: una llista de números és un punt en un espai amb molts eixos, i la distància entre dos punts pot voler dir semblança. A aquesta llista se l'anomena vector d'embedding (embedding), o simplement embedding.
Com es col·loquen els punts? word2vec, de l'any 2013, ho fa amb una regla molt simple que es repeteix milions de vegades: agafa una paraula del text i una de les que té a prop, i apropa una mica els seus punts; agafa després unes quantes paraules a l'atzar, que no tenen res a veure, i allunya'ls una mica. Res més. Al final, les paraules que comparteixen companyies han anat a parar a prop les unes de les altres. És la hipòtesi distribucional, ara en forma de mapa. Un altre mètode de la mateixa època, GloVe, arriba a mapes molt semblants per un altre camí: resumint de cop la taula de recomptes de la secció 1.
El que va sorprendre tothom va ser que en aquest mapa no només importa la distància, sinó també la direcció.
Un mapa on el significat és una posició
1/5Cada paraula, un punt
Una paraula es representa amb una llista de números que fan de coordenades. Aquí n’hi ha dues per poder-ho dibuixar; els models de debò en fan servir uns quants centenars.
Aquesta aritmètica («rei, menys home, més dona, és a prop de reina») va ser el moment més celebrat del camp el 2013. Vol dir que algunes idees (masculí i femení, singular i plural, país i capital) s'han convertit en direccions del mapa sense que ningú les hi posés. És l'avantpassat directe d'una idea que avui és a la base de la recerca sobre com funcionen per dins els models moderns: que els conceptes hi són direccions, i que es poden trobar i fins i tot empènyer.
Però cal ser honest amb el que es mesura. Quan el camí matemàtic entrena aquest model sobre el corpus del curs, unes analogies surten i d'altres no; quan fallen, sol guanyar una paraula molt freqüent que comparteix context amb les tres de la pregunta. No hi ha una direcció màgica de «capital de país»: hi ha direccions barrejades, i l'aritmètica en treu la que domina.
El defecte que no es pot arreglar amb més dades
word2vec té un límit que no és de qualitat sinó de forma. Cada paraula té un sol punt. I hi ha paraules que en necessitarien dos.
«Banc»: un punt per a dos significats
«Vaig seure al banc» i «el banc em deixa diners» fan servir la mateixa paraula per a dues coses que no tenen res a veure. En un mapa amb un sol punt per paraula, «banc» queda a mig camí entre els seus dos sentits, com una mitjana que no representa cap dels dos. I entrenar amb mil vegades més text no ho arregla: només fa que la mitjana sigui més precisa. El que cal és que el punt d'una paraula depengui de la frase on és. Això és el que van portar els models de 2018 (ELMo, BERT) i el que fa cada capa d'un Transformer, com veuràs al capítol 11.
5. Frases senceres com a punts#
Si una paraula pot ser un punt, una frase o un document sencer també. Els embeddings de frases que es fan servir avui per buscar documents no surten de word2vec sinó d'un Transformer (el tipus de xarxa del capítol 11) entrenat amb una idea molt semblant a la de la secció anterior, però amb frases: s'agafen parelles que van juntes (una pregunta i el paràgraf que la respon) i s'apropen els seus punts, mentre s'allunyen els d'altres paràgrafs que no hi tenen res a veure. Aquesta manera d'entrenar s'anomena aprenentatge contrastiu (contrastive learning).
Per comparar una pregunta amb els documents hi ha dues maneres, una que fa servir aquests punts i una que no, i el sistema bo les combina.
Dues maneres de comparar una pregunta amb uns documents
Hi ha dos detalls pràctics que val la pena saber. Alguns models s'entrenen perquè els primers números de la llista ja diguin el més important, com una nina russa (Matryoshka): pots quedar-te amb una quarta part dels números i perdre poca precisió, cosa que fa l'índex molt més petit. I alguns models esperen que posis davant del text una etiqueta que diu què és («pregunta:» o «document:»); si te la deixes, el punt cau en un lloc una mica equivocat i la cerca empitjora molt.
6. Les eines de sempre#
Abans dels LLMs, el processament del llenguatge estava fet de moltes peces especialitzades: etiquetar cada paraula amb la seva funció gramatical (article, nom, verb), trobar els noms de persones i llocs d'un text, dibuixar l'arbre sintàctic d'una frase, reduir cada paraula a la seva arrel («cantàvem», «cantaran» → «cantar»). Avui tot això ho fa un LLM sense que ningú l'hi hagi programat a part, però les idees continuen sent útils, sobretot per entendre per què un model s'equivoca i per buscar text en llengües amb moltes formes per paraula, com el català.
Una d'aquestes peces val la pena mirar-la de prop perquè reapareixerà. Etiquetar una frase és un problema de combinacions: cada paraula pot tenir diverses etiquetes, i la millor tria depèn de les veïnes.
La mateixa paraula, una altra funció
- laarticle
- músicanom
- baixaverbnom o verb?
Combinacions possibles d’etiquetes: 27. Operacions que ha fet Viterbi: 21. Amb una frase de vint paraules, les combinacions serien més de tres mil milions; les operacions, menys de dues-centes.
L'algorisme que fa aquesta feina, el de Viterbi, és un truc de llibreta: en comptes de provar totes les combinacions, avança d'esquerra a dreta i a cada pas només recorda el millor camí que arriba a cada etiqueta. Quan un LLM genera text i vol considerar diverses continuacions alhora (el que s'anomena beam search), fa servir una versió retallada de la mateixa idea.
Què t'has d'endur#
De comptar paraules a col·locar-les en un mapa
- El significat d'una paraula es pot aproximar mirant les paraules que l'acompanyen. És la hipòtesi distribucional, i és l'única font de significat que té un LLM.
- Els models de recomptes no generalitzen: no saben que dues paraules s'assemblen, i com més enrere miren, més sovint es troben davant d'un context que no han vist mai.
- Per buscar documents, les paraules rares pesen més. BM25 continua sent imprescindible per a coincidències exactes, com codis i noms propis.
- Un embedding converteix cada paraula en un punt d'un mapa on la distància vol dir semblança i algunes direccions volen dir alguna cosa, com masculí i femení.
- Un sol punt per paraula no pot distingir «banc» de seure de «banc» de diners. La solució és que el punt depengui de la frase, i és el que fan els Transformers.
Comprova que ho has entès#
0 de 3 resoltes
- Un programa que només compta quines paraules surten a prop de quines decideix que «gat» s'assembla a «gos». D'on ho ha tret?
- Un model com word2vec confon el «banc» de seure amb el «banc» de diners. Què l'arreglaria?
- Busques en un manual el codi d'error «E-4471». Per què una cerca per paraules exactes com BM25 hi pot anar millor que una cerca per significat?
Per anar més lluny#
Jay Alammar, The Illustrated Word2vec: el mapa de significats i com s'entrena, explicat amb dibuixos i sense fórmules (en anglès).