09 · RNN, LSTM, seq2seq i el naixement de l'atenció
Per què estudiar arquitectures "obsoletes": perquè el Transformer és la resposta a problemes molt concrets que aquestes arquitectures tenien. Sense conèixer les preguntes, la resposta sembla arbitrària. A més, els models d'espai d'estats (Mamba) són recurrències modernes: aquest fitxer és el prerequisit del 30pendent.
1. Xarxes recurrents (RNN)# sense fórmules
Una RNN processa una seqüència mantenint un estat ocult que es va actualitzant:
Entrenament: backpropagation through time (BPTT) — desplega la recurrència i aplica backprop. Cost i memòria creixen amb la longitud → es fa truncated BPTT.
El problema fatal
El gradient a través de passos conté . Si el valor propi dominant és <1 el gradient s'esvaeix exponencialment; si és >1, explota.
Conseqüència: una RNN vanilla no aprèn dependències de més de ~10-20 passos. Per a llenguatge, això és inservible ("El noi que vivia a la casa del costat del riu on anàvem de petits ... era metge" — la concordança va a 20 tokens de distància).
La RNN desplegada i el gradient que torna
La pèrdua és a l'últim pas. Quant en queda quan el gradient arriba al primer?
- ‖∂L/∂hₜ‖ (escala logarítmica)
- tram on es mesura el factor per pas
Radi espectral resultant: 0,762
Entrades grans saturen la tanh i la seva derivada cau: és l'altre factor del producte.
La mateixa llavor dona sempre el mateix resultat.
- T
- 40 passos
- ‖∂L/∂h‖ a l’últim pas
- 0,921
- al primer pas
- 3,84·10⁻¹⁵
- ràtio últim/primer
- 2,40·10¹⁴
- abast útil
- 9 passos
- diagnòstic
- esvaït
El text diu que el gradient a través de passos conté . Són dos factors, i tots dos es poden calcular a part del gradient: el radi espectral de —el mòdul del valor propi més gran, calculat amb la fórmula de Gelfand sobre la matriu sola— i la derivada mitjana de la tanh al llarg de la seqüència. El seu producte s'ha de veure al pendent de la recta de dalt.
| radi espectral de W_hh (calculat de la matriu sola) | 0,7622 |
| derivada mitjana de la tanh (mesurada al forward) | 0,5842 |
| producte dels dos: factor previst per pas | 0,4453 |
| factor mesurat al gradient (passos 8 a 32) | 0,4275 |
| diferència relativa | 4,0 % |
El previst és una fita superior i no una igualtat: el radi espectral governa el creixement asimptòtic, i amb deu dimensions i quaranta passos el vector del gradient encara no s'ha alineat del tot amb la direcció dominant. Per això el mesurat hi queda una mica per sota. El que sí que és exacte és la conclusió: puja l'escala de W_hh fins que el radi passi d'1 i el pendent canvia de signe.
I per què no explota sempre que el radi passa d'1? Perquè hi ha el segon factor. Posa l'escala de W_hh a 2 i deixa l'escala de l'entrada a 1: el radi és 0,76 però la tanh satura, la seva derivada cau i el gradient s'esvaeix igualment. Baixa ara l'escala de l'entrada a 0,05 sense tocar res més i el mateix model explota. Cap dels dos factors sol no explica res.
2. LSTM i GRU: portes per controlar la memòria# sense fórmules
LSTM (Hochreiter & Schmidhuber, 1997) afegeix un estat de cel·la amb una via additiva i tres portes:
GRU simplifica a dues portes i un sol estat; resultats semblants amb menys paràmetres.
Amb LSTM, el NLP va funcionar de debò: traducció automàtica neuronal, reconeixement de veu, Google Translate (2016).
Les portes de l'LSTM i la via additiva
Si la porta d'oblit s'obre del tot, què li passa al gradient que travessa la cel·la?
- porta d’oblit f
- porta d’entrada i
- porta de sortida o
- ‖∂L/∂cₜ‖ de l’LSTM (la via additiva)
- ‖∂L/∂hₜ‖ de la RNN vanilla
Sobreescriu f a tots els passos amb el valor de sota, en comptes de deixar-lo calcular.
A 1 la cel·la és una autopista. A 0,9, cada pas en multiplica el gradient per 0,9.
Sense forçar-la, f arrenca a σ(biaix) = 0,731. El truc de posar-lo a 1 o 2 és estàndard des de 2015.
La mateixa llavor dona sempre el mateix resultat.
- f efectiva
- 1,000
- què en queda, cel·la de l’LSTM
- 2,824×
- què en queda, RNN vanilla
- 7,95·10⁻¹²×
- avantatge de l’LSTM
- 3,55·10¹¹×
- factor per pas de la cel·la
- 1,0261
- T
- 45 passos
Les dues xarxes tenen la mateixa amplada, la mateixa llavor i veuen exactament la mateixa seqüència. L'única diferència és per on torna el gradient: a la RNN, per , que el multiplica per una matriu i per una derivada a cada pas; a l'LSTM, per , que el multiplica per i prou.
| què queda del gradient en 45 passos, cel·la de l'LSTM | 2,824× |
| què en queda en 45 passos, RNN vanilla | 7,95·10⁻¹²× |
| l'LSTM conserva això vegades més | 3,55·10¹¹× |
| factor per pas mesurat a la cel·la (previst: f = 1,000) | 1,0261 |
El factor mesurat per pas surt una mica per sota de i no just igual, i el motiu és honest: a cada pas, a part del que arriba de , hi entra també el que ve per . La multiplicació neta per és la del camí recurrent de la cel·la; la mesura de dalt recull tot el gradient. Baixa f a 0,9 i el factor s'hi acosta; posa-la a 1 i queda essencialment a 1.
És la mateixa idea que una connexió residual, descoberta divuit anys abans. Al fitxer 06, la comprovació de les connexions residuals mesurava que la resposta d'un bloc conté intacta perquè . Aquí la és : l'única diferència és que l'LSTM la pot tancar quan li convé oblidar.
3. Seq2seq i el coll d'ampolla# sense fórmules
Encoder–decoder (Sutskever et al., 2014): un LSTM llegeix la frase font i comprimeix tota la informació en un únic vector de context ; un altre LSTM el desplega en la frase destí.
"el gat seu a l'estora" → [encoder] → c (un vector!) → [decoder] → "the cat sits on the mat"
El coll d'ampolla: què hi cap, en un vector
Tota la frase ha de cabre en un vector de mida fixa. Quants bits hi caben, i què passa quan no hi caben tots?
- fita del calaix (calculada)
- codi òptim (mesurat)
- on deixa de cabre-hi
Cada símbol val log₂V = 2,000 bits.
Quantitzar el vector és el que fa que la capacitat sigui un número i no una metàfora.
La mateixa llavor dona sempre el mateix resultat.
- la frase necessita
- 20,0 bits
- al vector hi caben
- 12 bits
- sobren o falten
- -8,0 bits
- fita del calaix
- 0,3906 %
- codi òptim, mesurat
- 0,4333 %
- longitud màxima que hi cap
- 6 símbols
Hi ha frases possibles i el vector només té valors diferents. Si n'hi ha menys que frases, pel principi del calaix dues frases han de compartir codi, i cap descodificador —per bo que sigui— no les pot distingir. La fracció màxima reconstruïble és exactament . No és una regla empírica: és aritmètica, i no depèn de si l'encoder és una LSTM, un Transformer o el que sigui.
| bits que fa falta desar: 10 · log₂4 | 20,00 |
| bits de capacitat: 6 · 2 | 12 |
| fita: 2 elevat a la diferència | 0,39063 % |
| mesurat sobre 3.000 frases amb el codi òptim | 0,43333 % |
Ara mateix no hi cap: falten 8,0 bits, i per això ni el millor codi imaginable no arriba al 0,39 %. Cap arquitectura no hi pot fer res; l'única sortida és no obligar-se a passar per un vector sol, que és exactament el que fa l'atenció.
4. Atenció (Bahdanau, 2014): el moment fundacional# sense fórmules
La idea: en lloc d'un sol vector de context, deixa que el decoder miri totes les posicions de l'encoder i decideixi a quines fer cas a cada pas.
Els pesos són interpretables: visualitzats, mostren l'alineació entre paraules de les dues llengües. Va ser la primera vegada que es podia "veure" què mirava el model.
Variants de la funció de puntuació:
- Additiva/Bahdanau:
- Multiplicativa/Luong: — més ràpida, és la que sobreviu en forma de producte escalar escalat.
L'atenció de Bahdanau: la matriu d'alineació
Cada paraula de la traducció mira totes les de l'original i decideix a quines fer cas. Quant hi fa cas, exactament?
| el | gat | negre | seu | damunt | l’ | estora | |
|---|---|---|---|---|---|---|---|
| the | 0,57 | 0,05 | 0,04 | 0,03 | 0,03 | 0,25 | 0,02 |
| black | 0,06 | 0,07 | 0,65 | 0,08 | 0,05 | 0,05 | 0,04 |
| cat | 0,09 | 0,58 | 0,07 | 0,07 | 0,07 | 0,07 | 0,06 |
| sits | 0,05 | 0,06 | 0,06 | 0,62 | 0,06 | 0,08 | 0,06 |
| on | 0,04 | 0,06 | 0,06 | 0,06 | 0,67 | 0,05 | 0,07 |
| the | 0,28 | 0,04 | 0,04 | 0,05 | 0,05 | 0,48 | 0,06 |
| mat | 0,05 | 0,04 | 0,05 | 0,08 | 0,06 | 0,09 | 0,62 |
Files: la traducció. Columnes: l'original. La cel·la marcada és on hauria d'anar el màxim.
| Paraula destí | Hauria d'alinear-se amb | On mira de debò | Pes màxim |
|---|---|---|---|
| the | el | el ✓ | 0,570 |
| black | negre | negre ✓ | 0,649 |
| cat | gat | gat ✓ | 0,581 |
| sits | seu | seu ✓ | 0,625 |
| on | damunt | damunt ✓ | 0,669 |
| the | l’ | l’ ✓ | 0,485 |
| mat | estora | estora ✓ | 0,625 |
La multiplicativa amb W = I i dividida per √dₖ. És la que sobreviu: la que fa servir el Transformer.
Baixa-la i l'atenció es concentra en una sola paraula; puja-la i es reparteix.
A zero, els estats són conceptes purs. Puja'l i l'alineació es degrada.
La mateixa llavor dona sempre el mateix resultat.
L'additiva té paràmetres propis i, sense entrenar, la matriu és soroll. Entrenar-la és el que fa aparèixer l'alineació, i és exactament el que passava al model de 2014: ningú no li va dir quina paraula anava amb quina.
- puntuació
- Producte escalar escalat
- alineacions encertades
- 7 de 7
- abast efectiu de "mat"
- 3,75 paraules
- entropia d’aquella fila
- 1,906 bits
- màxim desviament de suma 1
- 2,22·10⁻¹⁶
- pes negatiu més gran
- 0,0
Dues afirmacions que es poden comprovar amb números i no amb paraules. La primera: cada fila de suma exactament 1 i no té cap valor negatiu, perquè surt d'una softmax. La segona, que es dedueix de la primera: no pot sortir de l'envolupant convexa dels : cap component del context pot ser més gran que el màxim d'aquella component entre els estats, ni més petita que el mínim.
| Paraula destí | Σ pesos de la fila | |Σ − 1| | abast efectiu |
|---|---|---|---|
| the | 1,000000000000000 | 2,22·10⁻¹⁶ | 3,51 |
| black | 1,000000000000000 | 0 | 3,55 |
| cat | 1,000000000000000 | 0 | 4,17 |
| sits | 1,000000000000000 | 0 | 3,79 |
| on | 1,000000000000000 | 0 | 3,39 |
| the | 1,000000000000000 | 0 | 4,16 |
| mat | 1,000000000000000 | 0 | 3,75 |
El context més allunyat de l'envolupant dels estats de l'encoder se'n surt per 0,0, que és zero exacte i no un zero aproximat: no hi ha cap manera que una mitjana ponderada amb pesos positius que sumen 1 caigui fora. Baixa la temperatura fins a 0,05 i mira què passa a l'abast efectiu: la columna cau a 1 i el context passa a ser una còpia d'un sol estat de l'encoder. Puja-la a 4 i tendeix a 7: el context es torna la mitjana de tota la frase, que és exactament el coll d'ampolla que l'atenció venia a resoldre.
5. El salt: "Attention Is All You Need"# sense fórmules
El 2017 l'equip de Google es va fer la pregunta òbvia però atrevida: si l'atenció fa tota la feina pesada, per a què volem la recurrència?
Traure la recurrència soluciona el problema que realment importava a escala:
| RNN/LSTM | Transformer | |
|---|---|---|
| Paral·lelització en entrenament | ❌ seqüencial per força | ✅ tots els tokens alhora |
| Camí entre dos tokens | passos | (atenció directa) |
| Cost per capa | ||
| Memòria en inferència | (estat fix) | (KV-cache creixent) |
El Transformer canvia cost quadràtic en longitud per paral·lelisme total. En una era de GPUs, això va ser el bescanvi correcte: es podia entrenar amb ordres de magnitud més dades en el mateix temps de calendari.
Observa l'última fila: la recurrència guanya en inferència (estat de mida constant). Aquesta és exactament la porta per on tornen els SSM i els models híbrids el 2024-2026.
RNN contra Transformer: el bescanvi, en números
El Transformer canvia cost quadràtic per paral·lelisme total. A partir de quina longitud comença a pagar-lo?
- RNN: 4Ld²
- Transformer: 8Ld² + 4L²d
- · · · projeccions, 8Ld²
- · · · atenció, 4L²d
- L = 2d
| RNN / LSTM | Transformer | |
|---|---|---|
| Paral·lelització en entrenament | seqüencial, 2.048 passos | tots alhora |
| Camí entre dos tokens | 2.048 | 1 |
| FLOPs per capa | 8,59 G | 34,36 G |
| Memòria en inferència | 131,1kB | 268,4MB |
Llama 3 8B: d = 4096. Creuament previst a L = 2d = 2.048.
- FLOPs per token, RNN
- 134,22 M
- FLOPs per token, Transformer
- 536,87 M
- quant més car
- 4,00×
- camí entre dos tokens
- 2.048 contra 1
- memòria d’inferència, RNN
- 131,1kB
- memòria d’inferència, Transformer
- 268,4MB
El cost per capa del Transformer té dos termes: les quatre projeccions, que valen , i l'atenció, que val . Es creuen quan , és a dir a , i aquesta és la frontera que decideix si el context llarg et surt car. Es pot resoldre amb un llapis; el widget el mesura a part, buscant a l'escombrat on les dues corbes de components es creuen de debò.
| resolt: L = 2d, amb d = 1.024 | 2.048 tokens |
| mesurat a l'escombrat, sense fer servir la fórmula | 2.048 tokens |
| diferència relativa | 0,000 % |
I el creuament de cost total, on és? Enlloc: resolent surt , que no existeix. Per capa, el Transformer sempre costa més que la RNN, i amb L = 2.048 i d = 1.024 en costa 4,00 vegades més. El bescanvi no és de FLOPs: és que aquests FLOPs es poden fer tots alhora, i els de la RNN han d'anar en fila índia. En una GPU amb desenes de milers de nuclis, fer tres vegades més feina en paral·lel guanya de llarg a fer-ne una tercera part en sèrie.
L'última fila del readout és la que el text diu que importa el 2026: en inferència, la RNN manté 131,1kB passi el que passi, i el Transformer arriba a 268,4MB amb aquest context, perquè la KV-cache creix amb cada token generat. Puja L a 131.072 i mira aquella xifra. És per aquesta porta que tornen els models d'espai d'estats.
6. Què conservem de tot això# sense fórmules
- Les portes (multiplicació per sigmoides) són arreu: SwiGLU, routers de MoE, gates de Mamba.
- L'estat additiu és la connexió residual.
- L'atenció és el mecanisme central de tot.
- El marc encoder-decoder segueix viu en traducció, models de veu (Whisper) i models multimodals.
- Beam search i la programació dinàmica de decodificació segueixen sent útils en tasques amb sortida restringida.
La mateixa porta, tres noms
La porta d'entrada d'una LSTM, SwiGLU i el router d'un MoE. Quina diferència hi ha, exactament?
- σ(x): la porta, entre 0 i 1
- x·σ(x) = SiLU: la porta aplicada a ella mateixa
- tanh(x): el candidat de l’LSTM
| canal | a | σ(a) | b | LSTM | SwiGLU | MoE dens | MoE top-2 |
|---|---|---|---|---|---|---|---|
| 0 | 4,41 | 0,988 | 0,77 | 0,7646 | 0,7646 | 0,7646 | 0,7646 |
| 1 | -0,35 | 0,413 | 0,77 | 0,3191 | 0,3191 | 0,3191 | 0 ✂ |
| 2 | -1,51 | 0,180 | 0,61 | 0,1107 | 0,1107 | 0,1107 | 0 ✂ |
| 3 | 0,35 | 0,587 | -0,88 | -0,5188 | -0,5188 | -0,5188 | 0 ✂ |
| 4 | -0,35 | 0,413 | 0,91 | 0,3782 | 0,3782 | 0,3782 | 0 ✂ |
| 5 | 1,47 | 0,813 | 0,29 | 0,2358 | 0,2358 | 0,2358 | 0 ✂ |
| 6 | -1,17 | 0,238 | -0,91 | -0,2158 | -0,2158 | -0,2158 | 0 ✂ |
| 7 | -1,95 | 0,125 | 0,88 | 0,1104 | 0,1104 | 0,1104 | 0 ✂ |
Els primers vuit canals dels 16. Les tres columnes del mig són idèntiques quan els paràmetres estan igualats; l'última és on el router es desmarca.
Posa les tres operacions davant de la mateixa (a, b). Desactiva-ho per veure què fan amb les seves entrades naturals.
A k = 16 el router és dens i idèntic a les altres dues. Baixa'l i apareix la diferència.
La mateixa llavor dona sempre el mateix resultat.
- LSTM contra σ(a)⊙b
- 0
- SwiGLU contra σ(a)⊙b
- 1,11·10⁻¹⁶
- MoE dens contra σ(a)⊙b
- 0
- MoE amb top-k
- 0,804
- canals apagats pel top-k
- 88 %
- canals
- 16
Les tres operacions tenen la mateixa forma: . Canvia què s'hi endolla.
| On | Què és a | Què és b | Diferència màxima |
|---|---|---|---|
| LSTM, porta d'entrada | (el candidat) | 0 | |
| SwiGLU | (la branca de porta) | 1,11·10⁻¹⁶ | |
| MoE, router de sigmoide | (el logit del router) | (el que treu l'expert) | 0 |
L'LSTM i el MoE donen zero exacte: no és «prou a prop», són els mateixos bits de coma flotant, perquè un cop igualats els paràmetres són literalment la mateixa expressió. SwiGLU se'n separa per 1,11·10⁻¹⁶, que és l'arrodoniment de fp64: per arribar a σ(a)·b hi passa per una divisió i una multiplicació de més, i cadascuna arrodoneix. Aquella xifra és de l'ordre de 10⁻¹⁶, i no de l'ordre de la diferència entre dues operacions diferents.
I on deixen de ser la mateixa cosa? No a la porta: al voltant. Amb el top-k a 2 de 16, el router apaga el 88 % dels canals i la diferència salta a 0,804. Aquesta és tota la diferència entre una porta i un router: la porta modula, el router tria, i el que no tria no es calcula. És d'aquí que surt tot l'estalvi d'un MoE. SwiGLU, per la seva banda, lliga l'argument de la sigmoide amb la branca de senyal —les dues surten de la mateixa — mentre que l'LSTM les té independents.
7. Comprova que ho has entès#
0 de 6 resoltes
- Per què una RNN vanilla no pot aprendre dependències llargues? Amb un radi espectral de 0,9 a i una derivada mitjana de la tanh de 0,5, quin factor multiplica el gradient en travessar 30 passos?Marge acceptat: 25 %
- Quina propietat de l'LSTM soluciona el problema, i amb quina idea moderna s'emparenta?
- Què és exactament el coll d'ampolla de seq2seq? Amb un vocabulari de 4 símbols, frases de 10 símbols i un context de 6 dimensions a 2 bits cadascuna, quina fracció de frases es pot reconstruir com a màxim?Marge acceptat: 5 %
- Escriu les tres fórmules de l'atenció de Bahdanau i explica-les en una frase cadascuna.
- En quin aspecte concret una RNN és millor que un Transformer, i per què això importa el 2026?
- Fes explotar el gradient d'una RNN en comptes d'esvair-lo. No n'hi ha prou amb pujar l'escala de : calen dues coses alhora.
Objectiu:Al widget de la RNN desplegada, aconsegueix que el gradient del primer pas sigui més gran que el de l'últim. Pista: mira els dos factors del producte .
Vés al widget ↑w = per defecte · x = per defecte
8. Recursos#
Christopher Olah, Understanding LSTM Networks — encara insuperable com a explicació visual.
Bahdanau, Cho & Bengio (2014), Neural Machine Translation by Jointly Learning to Align and Translate.
Sutskever, Vinyals & Le (2014), Sequence to Sequence Learning with Neural Networks.
Karpathy, The Unreasonable Effectiveness of Recurrent Neural Networks (2015).