08 · NLP clàssic i embeddings
Idea central: abans dels Transformers, el NLP ja havia descobert la idea més important del camp: el significat es pot representar com una posició en un espai vectorial, apresa a partir del context.
1. La hipòtesi distribucional# sense fórmules
"Coneixeràs una paraula per la companyia que manté." — J.R. Firth, 1957
Aquesta frase és el fonament conceptual de tot el NLP modern, LLMs inclosos. Si "gat" i "gos" apareixen en contextos semblants, han de tenir representacions semblants. Un LLM no fa res més sofisticat que portar aquesta idea al límit: el significat d'un token és funció de tot el que l'envolta.
La companyia que manté una paraula
Si el significat és la companyia, hauria de sortir dels recomptes de context i de res més. Surt?
| # | paraula | cosinus | barra | ocurrències |
|---|---|---|---|---|
| 1 | gos | 0,8914 | 21 | |
| 2 | pagès | 0,8611 | 18 | |
| 3 | dia | 0,8457 | 25 | |
| 4 | pa | 0,8419 | 24 | |
| 5 | quan | 0,8400 | 49 | |
| 6 | pare | 0,8395 | 24 | |
| 7 | nen | 0,8395 | 11 | |
| 8 | dorm | 0,8379 | 9 | |
| 9 | rei | 0,8333 | 17 | |
| 10 | príncep | 0,8314 | 6 |
Cosinus entre la fila de «gat» i la de cada altra paraula del vocabulari. Una fila és el recompte de què surt dins de la finestra: 353 columnes, una per paraula del vocabulari. El cosinus amb «gos» val 0,891 i el de dues paraules sense res a veure ronda 0,520.
Entre parèntesis, les vegades que surt al corpus.
Finestres petites capten sintaxi; les grans, tema.
Les paraules rares tenen files quasi buides i cosinus sense sentit.
- corpus
- 10.130 paraules
- vocabulari
- 353
- parelles comptades
- 55.940
- ocurrències de "gat"
- 23
- veí més proper
- gos
- cosinus
- 0,8914
Aquestes són les dues files senceres de la matriu de coocurrències —quantes vegades cada paraula ha sortit dins de la finestra de gat i de gos— restringides a les columnes on almenys una de les dues té recompte. El cosinus és el producte escalar dividit per les dues normes, i no hi intervé res més: cap xarxa, cap entrenament, cap paràmetre après.
| context | gat | gos | producte |
|---|---|---|---|
| el | 32 | 28 | 896 |
| la | 11 | 6 | 66 |
| i | 6 | 7 | 42 |
| de | 7 | 3 | 21 |
| els | 4 | 5 | 20 |
| dorm | 6 | 2 | 12 |
| a | 4 | 3 | 12 |
| menja | 3 | 4 | 12 |
| és | 3 | 3 | 9 |
| quan | 2 | 4 | 8 |
| producte escalar de les 93 columnes | 1.160 | ||
— el mateix número que surt al readout, calculat aquí amb les dues normes a la vista. Les dues paraules comparteixen 35 contextos diferents. Això és tota la hipòtesi distribucional: no s'ha mirat què vol dir cap paraula, només amb qui va.
Baixa la finestra a 1 i el veïnatge canvia de naturalesa: amb només la paraula del costat, el que s'assembla són les que fan la mateixa funció sintàctica. Puja-la a 8 i el que s'assembla són les del mateix tema. La mateixa matriu, dues nocions de semblança diferents, i cap de les dues no és la correcta.
2. Models de n-grames# sense fórmules
Estimats per comptatge amb suavitzat (Laplace, Kneser–Ney). Van dominar fins al 2010 i encara són útils com a baseline i per a tasques de baix recurs.
Per què no escalen:
- El nombre de paràmetres creix com (explosió combinatòria).
- Cap generalització: "el gat menja peix" no ajuda gens a estimar "el felí devora bacallà". No hi ha noció de similitud.
- El context és finit i curt (n=5 ja és inviable).
Els LLMs resolen exactament aquests dos problemes: representacions distribuïdes (generalització) i context llarg.
Models de n-grames: on es trenquen
Pujar l'ordre hauria de donar més context i millor predicció. Per què passa el contrari?
- perplexitat al test (esquerra, log)
- perplexitat a l’entrenament
- contextos mai vistos (dreta, 0–100 %)
| paraules | perplexitat |
|---|---|
| 431 | 1.152,0 |
| 861 | 1.060,2 |
| 1.722 | 893,1 |
| 3.014 | 797,8 |
| 4.306 | 737,7 |
| 6.028 | 679,1 |
| 7.319 | 615,7 |
| 8.611 | 589,9 |
poca amigues homes aules pugen junt la casa del muller civada baixen plenes juga recordar tan ensenyarà pesca dits països marxa següent mentrestant agradava tallats ella truca pàgines gana plens canonades expliqui pomes abans
A ordre 1 són paraules soltes; a ordre 4 o 5 comença a copiar trossos sencers del corpus, que és l'altra cara de tenir massa pocs contextos: no generalitza, memoritza.
Paràmetres si es desés dens: V^n = 1,6 M
A k petit el model confia en els recomptes; a k gran, en la uniforme.
El vocabulari es manté fix perquè la comparació sigui justa.
La mateixa llavor dona sempre el mateix resultat.
- perplexitat al test
- 589,9
- pèrdua
- 6,380 nats
- contextos mai vistos
- 7,8 %
- n-grames mai vistos
- 50,5 %
- paràmetres densos (Vⁿ)
- 1,59 M
- contextos observats
- 1.261
La perplexitat no puja amb l'ordre perquè el model «es confongui»: puja perquè a partir d'un cert la immensa majoria dels contextos del test no s'han vist mai a l'entrenament, i llavors el model no respon amb el que ha après sinó amb el que li dicta el suavitzat. Aquesta taula ho mesura.
| n | perplexitat | contextos mai vistos | Vⁿ | vistos de debò |
|---|---|---|---|---|
| 1 | 344,2 | 0,0 % | 1,3 k | 1 |
| 2 | 589,9 | 7,8 % | 1,6 M | 1.261 |
| 3 | 1.042,1 | 50,5 % | 2,0 G | 4.973 |
| 4 | 1.177,2 | 82,4 % | 2,5 T | 7.430 |
| 5 | 1.223,4 | 92,2 % | 3.201,1 T | 8.228 |
| 6 | 1.240,1 | 96,1 % | 4.039.765,3 T | 8.452 |
A l'ordre 5, el 92,2 % dels contextos del test són nous: el model podria haver estat entrenat amb un altre text i donaria gairebé el mateix. I la taula densa tindria 3.201,1 T entrades per a 8.228 contextos realment observats —una de cada 389,0 G. No és un problema d'implementació: amb deu mil paraules no hi ha manera de veure els contextos de cinc paraules, i amb deu mil milions tampoc, perquè el nombre de contextos possibles creix més de pressa que qualsevol corpus.
I el que no arregla res: el suavitzat reparteix massa entre els contextos no vistos, però no pot inventar-se quina paraula hi va. «El gat menja peix» no ajuda gens a estimar «el felí devora bacallà», perquè per a un model de n-grames aquelles sis paraules són sis símbols sense cap relació. Aquest és el segon problema que la secció esmenta, i el que les representacions distribuïdes venen a resoldre: la perplexitat que veus aquí s'ha de comparar amb la de qualsevol model neuronal del fitxer 04.
3. Representacions esparses: TF-IDF i BM25# sense fórmules
TF-IDF: pesa un terme per la seva freqüència al document i per la seva raresa al corpus:
BM25 afegeix saturació de freqüència i normalització per longitud:
TF-IDF i BM25: el rànquing i per què BM25 encara hi és
Repetir un terme deu vegades en un document, el fa deu vegades més rellevant?
- BM25: satura
- TF-IDF: lineal, sense sostre
- límit IDF·(k₁+1) = 1,52
| # | document | puntuació | contribució per terme | l'altre rànquing |
|---|---|---|---|---|
| 1 | Avaries habituals de les bombes d’aigua48 paraules | 1,352 | bomba 1,17aigua 0,18 | 1r |
| 2 | Manual de la bomba MX-412052 paraules | 1,311 | bomba 1,07aigua 0,24 | 2n |
| 3 | Instal·lació del sistema de reg48 paraules | 1,131 | bomba 0,95aigua 0,18 | 4t |
| 4 | Com triar una bomba per al reg50 paraules | 1,117 | bomba 0,94aigua 0,18 | 3r |
| 5 | Aigua i estalvi a l’horta54 paraules | 0,278 | bomba 0,00aigua 0,28 | 6è |
| 6 | Informe de Marta Vilaseca sobre el consum del reg42 paraules | 0,259 | bomba 0,00aigua 0,26 | 5è |
| 7 | Manteniment del filtre48 paraules | 0,181 | bomba 0,00aigua 0,18 | 8è |
| 8 | El motor de dos-cents watts37 paraules | 0,000 | bomba 0,00aigua 0,00 | 7è |
A 0, la freqüència deixa de comptar del tot. El valor habitual és 1,2.
A 0, la longitud del document no compta. El valor habitual és 0,75.
- consulta
- bomba aigua
- primer resultat
- d3
- documents amb puntuació
- 7 de 8
- terme més rar
- bomba (df 4)
- límit de BM25 per aquell terme
- 1,525
- longitud mitjana (avgdl)
- 47,4 paraules
La diferència de forma entre les dues puntuacions es veu amb quatre números. TF-IDF és : lineal en la freqüència, sense sostre. BM25 és , i quan tendeix a sense arribar-hi mai.
| freqüència | BM25 | × respecte d'1 | TF-IDF | × respecte d'1 |
|---|---|---|---|---|
| 1 | 0,693 | 1,00× | 0,693 | 1× |
| 2 | 0,953 | 1,38× | 1,386 | 2× |
| 4 | 1,173 | 1,69× | 2,773 | 4× |
| 8 | 1,326 | 1,91× | 5,545 | 8× |
| 16 | 1,419 | 2,05× | 11,090 | 16× |
| ∞ | 1,525 | 2,20× | ∞ | ∞ |
Doblar la freqüència d'1 a 2 multiplica la puntuació de BM25 per 1,375, no per 2. I per molt que es repeteixi, no passarà mai de 1,525 = 0,693 · 2,2. Aquesta és la propietat que fa BM25 robust al farciment de paraules clau: un document que repeteix «bomba» cent vegades no guanya cent vegades més. Baixa k₁ a 0 i la freqüència deixa de comptar del tot; puja'l a 5 i la corba s'assembla molt més a la recta.
I l'altra meitat de per què encara hi és el 2026. Prova la consulta «MX-4120». Un sol document la conté i és exactament el que vols; tots els altres parlen de bombes d'aigua amb paraules diferents. Un embedding dens col·locaria els vuit documents molt a prop l'un de l'altre —tots parlen del mateix tema— i el codi de producte, que no té cap semàntica, es dissoldria. BM25 no entén res del tema i per això encerta: li dona una IDF alta perquè és rar, i cap altre document no el conté. La recepta guanyadora, com diu el text, és tenir totes dues coses.
4. Embeddings densos: word2vec i GloVe# sense fórmules
word2vec (Mikolov et al., 2013) — dues variants:
- CBOW: prediu la paraula central a partir del context.
- Skip-gram: prediu el context a partir de la paraula central. Amb negative sampling:
Aquesta aritmètica vectorial va ser el moment "ostres" del camp el 2013. Les direccions de l'espai codifiquen atributs (gènere, temps verbal, capital-de-país). És l'avantpassat directe de la hipòtesi de representació lineal que sustenta la interpretabilitat moderna i les tècniques de steering (26pendent).
GloVe arriba a resultats semblants factoritzant la matriu de coocurrències — connectant explícitament amb SVD i LSA.
Limitació fatal: són estàtics
"banc" té un sol vector, tant si parles de seure com de diners. No hi ha desambiguació contextual. Aquesta limitació és la que van resoldre ELMo (2018), BERT (2018) i els Transformers en general: embeddings contextuals, on el vector d'un token depèn de tota la frase.
word2vec i l'aritmètica vectorial
Apropar el que coocorre i allunyar el que no. D'aquí en pot sortir rei − home + dona = reina?
Zero èpoques: el que veus és la inicialització aleatòria. Prem «+10 èpoques» unes quantes vegades i mira com es formen els grups.
Els K de la fórmula. Mikolov en recomanava 5–20 per a corpus petits.
La mateixa llavor dona sempre el mateix resultat.
- èpoques
- 0
- vocabulari
- 308
- analogia
- rei − home + dona
- posició de "reina"
- 169a de 308
- cosinus amb la resposta
- -0,0286
- qui guanya
- dies
L'aritmètica vectorial se sol ensenyar amb una fletxa, i la fletxa amaga el que importa. Això és el rànquing sencer per cosinus amb , amb els tres termes de l'analogia exclosos, com es fa sempre en aquesta avaluació.
| # | candidat | cosinus | ocurrències |
|---|---|---|---|
| 1 | dies | 0,3582 | 15 |
| 2 | germà | 0,3384 | 7 |
| 3 | sopa | 0,3076 | 6 |
| 4 | baixa | 0,2975 | 7 |
| 5 | mig | 0,2959 | 6 |
| 6 | un | 0,2904 | 58 |
| 7 | raïm | 0,2872 | 7 |
| 8 | princesa | 0,2689 | 7 |
Encara no s’ha entrenat res: els vectors són la inicialització aleatòria i el rànquing de dalt és soroll pur. Prem «+10 èpoques» i mira’l canviar.
Aquest corpus està fet per a això. Les regularitats de gènere, de nombre i de capital-de-país hi són perquè el text les repeteix en contextos paral·lels desenes de vegades. Amb deu mil paraules de text arbitrari no hi serien. Això no és trampa respecte del que passa a escala: word2vec sobre cent mil milions de paraules troba les mateixes regularitats exactament pel mateix motiu, que és que el llenguatge real les conté repetides milions de vegades. Aquí la repetició ha de ser densa perquè el corpus és petit.
5. Embeddings moderns de frases i documents# sense fórmules
Els embeddings que fas servir avui en RAG no són word2vec: són sortides d'un Transformer (tipus BERT o un decoder adaptat) entrenat amb aprenentatge contrastiu:
Parelles positives (pregunta–document rellevant) s'apropen; els negatius (sovint in-batch i hard negatives minerats) s'allunyen. és la temperatura.
Conceptes pràctics:
- Bi-encoder (ràpid, indexable) vs cross-encoder (llegeix query i document junts, molt més precís, però per consulta) → d'aquí el patró retrieve amb bi-encoder, reordena amb cross-encoder.
- Matryoshka embeddings: entrenats perquè els primers components ja siguin útils → pots truncar de 1536 a 256 dimensions i perdre poc.
- Embeddings amb instrucció: el mateix text es codifica diferent segons el prefix de tasca ("query:" vs "passage:"). Si no respectes el prefix del model, la qualitat cau en picat.
- MTEB / MMTEB és el benchmark de referència per triar-ne un — amb la precaució habitual de contaminació i sobreajust al leaderboard.
Aprenentatge contrastiu i embeddings Matryoshka
Un embedding de 128 dimensions truncat a 32. Quant es perd de debò?
- entrenat amb pèrdua Matryoshka
- entrenat només a 128 dimensions
Què s'està optimitzant
El denominador recorre els 32 documents del lot. Amb la pèrdua Matryoshka, aquesta mateixa expressió es calcula 5 vegades —una per cada tall de 8, 16, 32, 64, 128 dimensions— i se'n suma el resultat.
Prem el botó d'entrenar per veure les dues corbes.
Baixa, la pèrdua castiga molt els negatius més propers. El 0,07 és el valor de CLIP.
Cada consulta veu els documents de tot el lot com a negatius: lot gran, tasca més difícil.
Documents minerats per ser els més semblants al positiu sense ser-ho.
Com de lluny queda la consulta del seu document. Amb soroll alt, la tasca és molt més difícil.
La mateixa llavor dona sempre el mateix resultat.
- recall@1 amb 128 dim
- —
- truncat a 32, amb Matryoshka
- —
- truncat a 32, sense
- —
- truncat a 8, amb Matryoshka
- —
- truncat a 8, sense
- —
- memòria de l’índex a 32 dim
- 25 %
Prem «Entrena 300 passos». S'entrenen els dos models alhora sobre el mateix conjunt de 256 documents i amb la mateixa llavor, de manera que qualsevol diferència que en surti és de la pèrdua i no de la sort.
6. Altres peces del NLP clàssic que encara trobaràs# sense fórmules
- POS tagging, NER, parsing de dependències: avui els fa un LLM, però els conceptes lingüístics (sintaxi, morfologia) segueixen sent útils per analitzar comportaments.
- CRF i HMM: models seqüencials probabilístics; bon exercici per entendre programació dinàmica (Viterbi) que reapareix en decodificació beam search.
- Lematització i stemming: encara útils en cerca lèxica i en llengües morfològicament riques com el català.
Viterbi: la graella i el camí òptim
Hi ha S^T seqüències d'etiquetes possibles. Com se'n troba la millor sense provar-les totes?
| # | etiquetatge | log-prob | part de la massa |
|---|---|---|---|
| 1 | DET NOM VERB DET NOM | -6,759 | 98,55 % |
| 2 | DET NOM NOM DET NOM | -10,979 | 1,45 % |
| 3 | DET DET DET DET DET | −∞ | 0 % |
| 4 | NOM DET DET DET DET | −∞ | 0 % |
| 5 | VERB DET DET DET DET | −∞ | 0 % |
Dels 243 etiquetatges possibles, ordenats per probabilitat. El segon és el que Viterbi ha descartat, i val la pena mirar per quant.
«canta» i «baixa» poden ser nom o verb: és on la programació dinàmica ha de decidir.
Les 243 seqüències possibles, dibuixades al fons.
- etiquetatge òptim
- DET NOM VERB DET NOM
- log-probabilitat
- -6,7585
- operacions de Viterbi
- 39
- operacions de la cerca exhaustiva
- 2.187
- quant més cara
- 56×
- massa que se’n du el camí òptim
- 98,6 %
Amb tres estats i 5 paraules hi ha etiquetatges possibles, i encara es poden provar tots. És l'única situació on es pot comprovar que la programació dinàmica no s'ha deixat res, i val la pena fer-ho una vegada abans de fiar-se'n per sempre.
| Viterbi | DET NOM VERB DET NOM | -6,75850882 |
| Cerca exhaustiva | DET NOM VERB DET NOM | -6,75850882 |
| diferència | 0,000000000000 | |
| operacions: 39 contra 2.187 | 56× més | |
El mateix camí i la mateixa puntuació, amb 56 vegades menys operacions. El truc és que per saber la millor manera d'arribar a un estat al pas només cal saber la millor manera d'arribar a cada estat al pas : tot el que va passar abans ja està resumit en aquells 3 números. Viterbi costa i l'exhaustiva ; allarga la frase i la diferència creix exponencialment, no proporcionalment.
Fixa't també en l'última xifra del readout: el camí òptim només se'n du el 98,6 % de tota la massa de probabilitat de la frase. Els altres 242 camins se'n reparteixen la resta. Quedar-se amb el màxim és una decisió, no una certesa — i és exactament el mateix dilema que apareix a la decodificació d'un LLM, on el beam search busca el camí més probable i el mostreig respecta la distribució.
7. Comprova que ho has entès#
0 de 6 resoltes
- Enuncia la hipòtesi distribucional i explica com la implementa word2vec.
- Per què els models de n-grames no generalitzen? Amb un vocabulari de 50.000 paraules, quants paràmetres tindria un model de 5-grames desat dens?Marge acceptat: 5 %
- Quan et convé BM25 per sobre d'un embedding dens?
- Quina diferència hi ha entre bi-encoder i cross-encoder, i quan uses cadascun?
- Per què "banc" és un problema per a word2vec i no per a BERT?
- Troba una analogia que no funcioni, i mira per quant falla.
Objectiu:Al widget de word2vec, entrena unes quantes desenes d'èpoques i prova les sis analogies. Deixa seleccionada una que no tregui la resposta esperada la primera, i mira el rànquing complet de la comprovació.
Vés al widget ↑analogia = per defecte · llavor = per defecte
8. Recursos#
Jurafsky & Martin, Speech and Language Processing (3a ed., esborrany gratuït) — la bíblia del NLP.
Mikolov et al. (2013), Efficient Estimation of Word Representations.
Pennington et al. (2014), GloVe.
Robertson & Zaragoza, The Probabilistic Relevance Framework: BM25 and Beyond.
MTEB leaderboard (Hugging Face) per a embeddings actuals.