09 · Llegir amb memòria, i aprendre a mirar enrere
Un text és una seqüència: les paraules venen en ordre, i el significat de cadascuna depèn del que ha vingut abans. Abans del Transformer, la manera natural de fer que una xarxa llegís era la mateixa que fem nosaltres: d'una en una, recordant el que portem llegit. Aquest capítol explica per què aquella manera tenia un límit, com es va anar apedaçant, i com la idea que la va substituir, l'atenció, va néixer precisament d'aquests pedaços. Sense conèixer les preguntes, la resposta del capítol 11 semblaria arbitrària.
1. Llegir amb una memòria que s'esborra#
Imagina que llegeixes un llibre amb una llibreta d'una sola pàgina. Després de cada paraula, apuntes a la llibreta el que creus que cal recordar. Però la pàgina no creix: per apuntar una cosa nova, has d'esborrar o comprimir part del que ja hi havia. Al cap d'unes quantes frases, el que vas llegir al principi és un rastre borrós.
Això és una xarxa neuronal recurrent (recurrent neural network, RNN). La xarxa llegeix el text paraula a paraula i, a cada pas, combina la paraula nova amb una memòria de mida fixa, l'estat ocult, que fa de resum de tot el que ha llegit. Amb la mateixa xarxa, repetida a cada pas, pot llegir textos de qualsevol llargada. És una idea neta i bonica. I té un problema.
Llegir amb una memòria que s’esborra
1/6Llegeix «El noi»
La xarxa llegeix d’una en una. Després de cada paraula, actualitza una memòria de mida fixa: un resum de tot el que ha llegit fins ara.
El problema no és només que la memòria s'esborri; és que la xarxa no aprèn a evitar-ho. Recorda el capítol 6: una xarxa aprèn quan s'equivoca, i la correcció de l'error viatja enrere per tota la cadena de càlculs que l'ha produït. En una xarxa recurrent, aquella cadena és la frase: la correcció ha de tornar paraula a paraula fins al principi. I a cada pas enrere es multiplica pel mateix factor. Si aquest factor és més petit que u, després de trenta passos no en queda pràcticament res.
La correcció que no arriba al principi
La conseqüència és que una xarxa recurrent simple no aprèn a relacionar coses separades per més d'unes deu o vint paraules. Per al llenguatge, això és inservible: a «el noi que vivia a la casa del costat del riu on anàvem de petits era metge», el verb ha de concordar amb un subjecte que és vint paraules enrere. Si el factor és més gran que u passa el contrari, la correcció es dispara i l'entrenament es torna inestable. Cap de les dues coses s'arregla aprenent més a poc a poc: el problema és la forma de la cadena.
2. Una cinta amb portes: l'LSTM#
La solució de 1997 es diu LSTM (long short-term memory, memòria a curt termini llarga), i la idea és afegir a la xarxa una segona via, una mena de cinta transportadora que travessa tota la frase (als articles se'n diu estat de cel·la). El que hi ha a la cinta passa d'un pas al següent sense que ningú hi escrigui a sobre: només s'hi poden afegir o treure coses. I tres portes decideixen, a cada paraula, què s'hi afegeix, què es conserva i què se'n llegeix.
Una cinta amb tres portes
1/6Una cinta que travessa la frase
L’LSTM afegeix a la xarxa recurrent una cinta que va de la primera paraula a l’última. El que hi ha a la cinta passa d’un pas al següent sense que se li escrigui a sobre: només s’hi afegeixen o se’n treuen coses.
La clau és la porta d'oblit, la que decideix què es conserva. Quan és oberta del tot, el que hi ha a la cinta passa intacte al pas següent, i la correcció de l'entrenament també torna enrere intacta: ja no es multiplica per un factor que l'encongeix. Al camí matemàtic es mesura: amb la porta oberta, la correcció travessa cinquanta passos sense perdre força, mentre que a la xarxa simple, amb la mateixa frase, la correcció arriba cent mil milions de vegades més petita. I fixa't que l'avantatge no ve de tenir més peces: si es força la porta d'oblit a la meitat, sense canviar res més, l'avantatge desapareix.
La idea de fons, sumar en comptes de reescriure, és la mateixa que divuit anys més tard va fer possibles les xarxes molt profundes: la connexió residual. La tornaràs a trobar, gairebé idèntica, al centre del Transformer. Hi ha una versió simplificada de l'LSTM, la GRU (gated recurrent unit), amb dues portes en comptes de tres i resultats semblants.
Amb l'LSTM, el processament del llenguatge amb xarxes neuronals va funcionar de debò: traducció automàtica, reconeixement de veu, i el Google Translate de 2016.
3. Resumir una frase sencera en un sol vector#
Amb l'LSTM es va poder fer una cosa ambiciosa: traduir. L'esquema, del 2014, es diu seq2seq (de seqüència a seqüència) o codificador-descodificador (encoder-decoder). Una xarxa, el codificador, llegeix tota la frase original i la resumeix en un únic vector, una llista de números de mida fixa. Una segona xarxa, el descodificador, agafa aquell vector i en treu la frase traduïda, paraula a paraula.
Pensa en un intèrpret que ha d'escoltar un discurs sencer, sense prendre notes, i només després traduir-lo. Amb frases curtes se'n surt; amb frases llargues, es deixa coses. El problema té nom: el coll d'ampolla. Tota la frase ha de passar per un forat de mida fixa, i per a frases prou llargues no hi cap.
No és una manera de parlar: es pot comptar. La unitat d'informació és el bit, la resposta a una pregunta de sí o no. Una frase feta de símbols triats entre quatre necessita dos bits per símbol (dues preguntes de sí o no distingeixen quatre opcions). Si el vector només en té dotze, una frase de deu símbols, que en necessita vint, no hi cap.
Fer passar una frase per un forat fix
Això no depèn de com sigui de bo el codificador: si hi ha més frases possibles que codis diferents, algunes frases han de compartir codi, i llavors no es poden distingir. Fer el vector més gran ajorna el problema, però no l'elimina, perquè sempre hi haurà frases més llargues. Aquest problema concret és el que va originar l'atenció.
4. L'atenció: mirar enrere en comptes de recordar#
La idea que ho va canviar tot, publicada el 2014, és la del bon intèrpret que sí que pren notes: no cal resumir-ho tot en un vector. El codificador deixa una nota per a cada paraula de l'original, i el descodificador, cada vegada que ha d'escriure una paraula de la traducció, les mira totes i decideix a quines ha de fer cas.
Com decideix? Compara el que necessita en aquell moment amb cada nota i les puntua. Després reparteix cent fitxes entre les notes segons la puntuació (moltes a les que s'hi assemblen, poques a la resta), i el que s'emporta és una barreja de totes les notes, on cadascuna pesa tant com fitxes ha rebut. Aquest mecanisme s'anomena atenció (attention).
Cada paraula de la traducció mira on li cal
Tres coses fan que això sigui tan important. Primera, el coll d'ampolla desapareix: per molt llarga que sigui la frase, el descodificador sempre té accés a totes les notes. Segona, ningú no li diu on ha de mirar: les puntuacions s'aprenen soles, perquè mirar al lloc correcte fa que la traducció surti millor. Tercera, per primera vegada es podia veure què mirava el model: dibuixant el repartiment de fitxes, apareixia l'alineació entre les paraules de les dues llengües.
Hi ha una manera útil de pensar-hi: és com consultar un arxiu on cada fitxa té una etiqueta, però sense exigir una coincidència exacta. En lloc de «dona'm la fitxa que diu X», l'atenció fa «dona'm una barreja de totes les fitxes, pesant més les que s'assemblen més al que busco». De les maneres de puntuar que es van provar, la que ha sobreviscut és la més senzilla i ràpida: comparar dues llistes de números multiplicant-les terme a terme i sumant. És la que fa servir el Transformer.
5. El salt: només atenció#
El 2017, un equip de Google es va fer la pregunta que, vista ara, sembla òbvia: si l'atenció fa tota la feina important, per a què volem la recurrència? L'article que la responia es deia «Attention Is All You Need» (l'atenció és tot el que necessites), i presentava el Transformer: una arquitectura sense cap memòria que avanci paraula a paraula, on cada paraula mira directament totes les altres.
Treure la recurrència no era una qüestió d'elegància, sinó de velocitat. Una xarxa recurrent és una fila índia: no pots calcular la paraula deu fins que has acabat la nou. Un Transformer calcula totes les paraules alhora, i les targetes gràfiques (GPU), que són màquines de fer milers de càlculs en paral·lel, s'hi adapten com un guant. En el mateix temps es podia entrenar amb moltíssim més text: desenes o centenars de vegades més.
En fila índia o tots alhora
El bescanvi té una segona cara, i és important ser honest amb ella: el Transformer fa més feina en total, perquè cada paraula es compara amb totes les altres, i aquesta feina creix amb el quadrat de la llargada del text. En una època de GPUs, pagar més càlcul a canvi de fer-lo tot alhora va ser la tria correcta. Però en el moment de generar text, la recurrència guanya: guarda una memòria de mida fixa passi el que passi, mentre que el Transformer ha de guardar notes de cada paraula que ha llegit. És per aquesta porta que tornen, en els darrers anys, els models d'espai d'estats com Mamba i els híbrids: recurrències modernes que intenten tenir el millor de les dues coses.
6. Què en queda#
Les xarxes recurrents ja quasi no es fan servir per al llenguatge, però gairebé cap de les seves idees s'ha perdut.
El que les xarxes recurrents ens han deixat
Les portes (deixar passar una part d'un senyal segons el que diu un altre) són arreu: a dins de cada capa d'un LLM modern, als sistemes que decideixen quina part del model ha de treballar en cada paraula, i als models d'espai d'estats. La cinta que suma és la connexió residual. L'atenció és el mecanisme central de tot el que vindrà. I l'esquema codificador-descodificador continua viu allà on hi ha una entrada i una sortida de natures diferents: traducció, reconeixement de veu, models que miren imatges. Fins i tot sobreviu un truc de l'època de la traducció automàtica, la cerca en feix (beam search): en comptes de quedar-se a cada pas amb la paraula més probable, el model manté unes quantes frases candidates alhora i al final tria la millor. Encara es fa servir quan la sortida ha de complir unes regles estrictes.
Què t'has d'endur#
Quatre problemes, quatre respostes
- Una xarxa recurrent llegeix paraula a paraula amb una memòria de mida fixa, i el passat llunyà s'hi esvaeix.
- El problema de fons és d'aprenentatge: la correcció que torna enrere es multiplica a cada pas pel mateix factor i, després d'una vintena de paraules, pràcticament ja no hi arriba.
- L'LSTM ho resol amb una cinta on les coses se sumen en comptes de reescriure's, i amb portes que decideixen què s'hi apunta, què es conserva i què es llegeix. És la mateixa idea que la connexió residual.
- Resumir una frase sencera en un vector de mida fixa té un límit que és aritmètica pura: per a frases prou llargues, no hi caben.
- L'atenció trenca aquest coll d'ampolla deixant mirar totes les paraules i repartint-hi cent fitxes. El Transformer es queda només amb l'atenció i ho calcula tot alhora, a canvi d'una memòria que creix amb el text.
Comprova que ho has entès#
0 de 3 resoltes
- Per què una xarxa recurrent simple no aprèn a fer concordar un verb amb un subjecte que és vint paraules enrere?
- Un traductor seq2seq tradueix bé les frases curtes i malament les llargues. Fer el vector de context el doble de gran ho resoldria?
- En què continua sent millor una xarxa recurrent que un Transformer?
Per anar més lluny#
Christopher Olah, Understanding LSTM Networks: les portes de l'LSTM en diagrames. Té alguna fórmula, però els dibuixos s'entenen sols (en anglès).
Jay Alammar, Visualizing A Neural Machine Translation Model: seq2seq i l'atenció de Bahdanau en animacions (en anglès).