06 · Neurones, capes i culpa repartida
Una xarxa neuronal sona a cervell, però és una cosa molt més modesta: moltes peces petites que fan sumes, apilades en capes. Aquest capítol explica què fa cada peça, per què apilar-les dona tant de poder i com aprenen totes plegades a partir dels seus errors. Tot el que ve després, el Transformer inclòs, és una variació d'aquesta idea.
1. De la neurona a la xarxa#
Imagina un comitè que ha de decidir si un pagament és sospitós. Cada membre mira una pista (l'import, l'hora, el país) i vota. Però no tots els vots valen igual: el de l'expert en imports compta el doble, i el del que mira l'hora compta poc. Se sumen els vots, cadascun amb el seu pes, i si la suma passa d'un cert llindar, el comitè diu que sí.
Això és exactament una neurona artificial: una votació ponderada amb un llindar. Les pistes que entren són números; els pesos diuen quant compta cadascuna (i un pes negatiu vol dir que aquella pista vota en contra). El llindar diu quanta suma cal per dir que sí. Els pesos i el llindar són els paràmetres del capítol 5, els botons que l'entrenament va girant. Aprendre, per a una neurona, vol dir trobar els pesos i el llindar que encerten més.
Una neurona és una votació
La neurona classifica bé 65 de 90 punts (72 %). El fons taronja és on vota «quadrat».
Si mires la figura com un mapa, una neurona sola divideix el pla en dues meitats amb una recta, i res més. Amb dues taques de punts separades, n'hi ha prou. Amb les dues llunes, no: cap recta no les separa, i això va ser, a partir de finals dels anys seixanta, el gran argument contra les xarxes neuronals.
La solució és posar neurones a treballar en equip. Una capa és un grup de neurones que miren les mateixes pistes, cadascuna amb els seus pesos. La capa següent no mira les pistes originals sinó les respostes de la capa anterior, i així successivament. És el que s'anomena una xarxa neuronal o perceptró multicapa (MLP, de multilayer perceptron). Però hi ha un detall que ho decideix tot: entre capa i capa, cada neurona passa la seva suma per un plec, una forma que no és una recta: per exemple, deixar passar els números positius tal com són i convertir els negatius en zero.
Una xarxa aprenent, de debò
Passos d'entrenament
0 de 1.500
Encerts amb punts nous
48 %
Què fan exactament les capes per dins? La millor imatge és la d'un full de paper amb punts de dos colors barrejats. No hi ha cap tall recte que els separi. Però si pots estirar el full, doblegar-lo i plegar-lo, arriba un moment en què tots els punts d'un color queden a una banda i els de l'altre, a l'altra, i llavors un tall recte n'hi ha prou. Cada capa fa una mica d'aquest estirar i plegar, i l'última capa, que només sap traçar una recta, troba el pla ja preparat.
Doblegar el pla fins que una recta n'hi hagi prou
Al pas 0, la recta de l'última capa deixa ben classificats 83 de 154 punts.
L'analogia del paper s'aguanta bé, amb un matís: les xarxes treballen amb molts més eixos que dos, de manera que el «full» té centenars o milers de dimensions, i el plegat no és un plec net sinó una deformació suau en totes direccions.
Hi ha un resultat famós, el teorema d'aproximació universal, que diu que una xarxa amb una sola capa prou ampla pot imitar tan bé com vulguis qualsevol relació raonable entre entrades i sortides. Sembla que ho resol tot, però només diu que la xarxa existeix: no diu quantes neurones calen (poden ser una quantitat astronòmica) ni si l'entrenament la trobarà. A la pràctica, apilar moltes capes és molt més eficient que fer-ne una d'enorme, i per això en diem aprenentatge profund (deep learning).
2. La forma del plec#
El plec que hi ha entre capa i capa es diu funció d'activació, i la seva forma importa més del que sembla, perquè decideix per on pot passar el senyal que fa aprendre la xarxa.
La forma del plec
La ReLU: zero si el número és negatiu i el mateix número si és positiu. Senzillíssima i plana només per l’esquerra. Una neurona que hi cau per a tots els exemples queda morta per sempre.
Les primeres xarxes feien servir la sigmoide, una corba que aixafa qualsevol número entre zero i u. El problema és que pels dos costats es torna plana, i on una forma és plana no hi passa senyal per corregir res. La ReLU, que posa a zero els negatius i deixa passar els positius tal com són, va ser un salt enorme precisament perquè no s'aplana pel costat positiu. Les variants suaus, com la GELU o la SiLU, arrodoneixen el colze de la ReLU i són les que fan servir els models de llenguatge.
Els models actuals fan servir una peça una mica més elaborada, la SwiGLU. En comptes d'un sol camí, en té dos: un produeix el senyal i l'altre fa de comporta, com una aixeta que decideix quant d'aquell senyal passa. Funciona millor a igualtat de mida, i ningú no sap ben bé per què: l'investigador que la va proposar ho va atribuir, amb ironia, a la benevolència divina. Com que la comporta afegeix pesos, s'encongeix una mica la capa per compensar-ho, i d'aquí surten mides estranyes com les 11.008 neurones que trobaràs a la descripció de molts models.
3. Repartir la culpa#
Ja saps què fa una xarxa. Ara, com aprèn? Recorda el capítol 2: aprendre és baixar la muntanya de la pèrdua (l'error del model), i per baixar cal saber cap on fa baixada per a cada pes. Amb milions de pesos, la pregunta és com saber, per a cadascun, si l'has de pujar o baixar i quant.
Pensa en un restaurant on un plat ha sortit malament. El client es queixa al cambrer; el cambrer ho passa al cap de cuina; el cap de cuina reparteix la culpa entre els que han tocat el plat, segons quant hi han intervingut; i cadascun d'aquests la reparteix entre els ingredients que havia fet servir. Ningú no ha de repetir el plat sencer per saber la seva part: la culpa baixa per la mateixa cadena per on havia pujat el plat. Aquesta és la retropropagació (backpropagation). La culpa que acaba rebent cada pes és el seu tros del gradient del capítol 2: diu cap on puja l'error si mous aquell pes, i per tant cap on l'has de moure, i quant, perquè baixi.
Repartir la culpa, capa a capa
1/6Endavant: la xarxa respon
Les dues pistes entren per l’esquerra. Cada connexió les multiplica pel seu pes i cada neurona suma el que li arriba i hi aplica el seu plec. El gruix de cada línia és quant ha aportat a la neurona de destí.
La regla que reparteix la culpa és sorprenentment senzilla, i és la mateixa a totes les capes: la part de culpa d'una connexió depèn de dues coses, de quanta culpa arriba a la neurona on va a parar i de quant de senyal hi passava. Una connexió que no portava senyal no rep culpa; una neurona apagada (que ha donat zero, com fa la ReLU amb els negatius) tampoc. I el més important: una sola passada enrere calcula la culpa de tots els pesos alhora, amb un cost semblant al d'una passada endavant. Si l'haguessis de calcular movent cada pes per separat i mirant què passa, amb mil milions de pesos caldrien mil milions de passades per a cada pas d'entrenament.
Ningú no programa aquesta passada enrere a mà. Les eines que es fan servir per entrenar xarxes apunten cada operació que es fa endavant i, quan cal, recorren la llista al revés aplicant la regla de repartiment a cadascuna: se'n diu diferenciació automàtica. Tres detalls d'aquestes eines tornaran a sortir. Es pot tallar el pas de la culpa en un punt, perquè una part del sistema no aprengui, cosa que es fa servir quan s'entrenen models a partir d'altres models. Es pot estalviar memòria guardant només una part del que va passar endavant i recalculant la resta quan cal, a canvi d'un 30 % més de temps aproximadament. I mai no es construeix la taula sencera de com afecta cada número a cada altre, que seria immensa: només es fa passar la culpa.
4. Quan la culpa es perd pel camí#
Amb dues o tres capes, el repartiment de culpa funciona sol. Amb vint o cent, apareix un problema que va frenar el camp durant anys.
Quanta correcció arriba a cada capa
A la primera capa hi arriba gairebé res: mil bilions de vegades menys que l'última.
És el joc del telèfon: un missatge que passa per moltes boques. Cada capa multiplica la culpa que li arriba per un factor que depèn dels seus pesos i del seu plec. Si aquest factor és més petit que u, encara que sigui per poc, després de desenes de capes del missatge gairebé no en queda res: és l'esvaïment del gradient, i les primeres capes no aprenen. Si és una mica més gran que u, el missatge es converteix en un crit que ho desborda tot: és l'explosió del gradient. Amb la sigmoide, que com a molt deixa passar una quarta part del senyal a cada capa, l'esvaïment és segur.
Tres invencions ho van resoldre, i totes tres són dins de cada model de llenguatge. La primera, les connexions residuals o dreceres: cada bloc de capes, en comptes de substituir el que li arriba, hi suma la seva aportació, de manera que hi ha sempre un camí directe per on la culpa torna enrere sense passar per cap multiplicació. És una autopista al costat de la carretera de muntanya, i sense ella no hi hauria Transformers de cent capes. La segona, la normalització, que manté els números de cada capa en un rang estable i que veuràs al capítol 7. La tercera, començar amb pesos de la mida justa i fer servir plecs que no s'aplanin. I com a xarxa de seguretat, els models grans posen un sostre a la mida de la correcció en cada pas (gradient clipping): si la culpa arriba massa gran, se l'escala fins al sostre i prou.
5. Com comencen els pesos#
Abans d'entrenar, els pesos s'han de posar a algun valor. Sembla un detall, però si comences malament, la xarxa no arrenca.
Com comencen els pesos
A cada capa el senyal es queda en la meitat, perquè el plec de la ReLU n’anul·la la meitat i ningú no ho compensa. En deu capes, ja és més de dues-centes vegades més feble.
La idea és que el senyal arribi a l'última capa amb la mateixa força amb què ha entrat, ni més apagat ni més fort, i que la culpa torni amb la mateixa força. Com que la ReLU anul·la la meitat de cada senyal, els pesos han de ser una mica més grans del que diria la intuïció per compensar-ho exactament; és la inicialització de He, pel cognom del seu primer autor, Kaiming He. En els models de llenguatge es fa servir una recepta molt semblant: pesos petits a l'atzar i, a més, els de la sortida de cada bloc encara més petits com més blocs hi ha, perquè l'autopista de les dreceres no vagi acumulant senyal capa rere capa.
6. Per què funciona? La resposta honesta#
Seria bonic acabar el capítol amb una explicació completa de per què les xarxes profundes aprenen tan bé. No n'hi ha.
Quatre pistes, cap teoria completa
1/4Les capes fan una jerarquia
En les xarxes que miren imatges es veu clarament: les primeres capes responen a vores i taques de color, les del mig a formes i textures, les últimes a objectes sencers. En llenguatge passa alguna cosa semblant, però més difusa.
El que hi ha són pistes ben documentades. Les capes construeixen una jerarquia de pistes, de les més simples a les més abstractes, sense que ningú les dissenyi. L'entrenament té una preferència amagada per les solucions senzilles: entre totes les que encerten els exemples, tendeix a les més suaus, que són les que solen generalitzar. Fer la xarxa més gran ajuda més del que deia la teoria clàssica, tant a entrenar-la com a encertar casos nous: és el doble descens del capítol 5. I hi ha la hipòtesi del bitllet de loteria: dins d'una xarxa gran hi ha subxarxes petites que, amb els seus pesos inicials, haurien après gairebé igual de bé; potser part de l'avantatge de ser gran és tenir més bitllets.
Què t'has d'endur#
Un pas d'aprenentatge
- Una neurona és una votació ponderada amb un llindar, i sola només pot traçar una frontera recta.
- Una xarxa apila capes de neurones amb un plec entre capa i capa; sense el plec, totes les capes juntes equivalen a una sola neurona.
- Les capes estiren i pleguen l'espai de les dades fins que l'última capa pot separar les classes amb una recta.
- La retropropagació reparteix la culpa de l'error enrere, capa a capa, i calcula en una sola passada quant ha de canviar cada pes.
- En xarxes profundes la culpa es pot esvair o explotar pel camí; les dreceres, la normalització i començar amb pesos de la mida justa ho eviten.
- Per què tot plegat funciona tan bé encara no s'entén del tot, i el text honest ho diu.
Comprova que ho has entès#
0 de 3 resoltes
- Algú construeix una xarxa de deu capes però s'oblida de posar el plec entre capa i capa. Què pot fer, comparada amb una sola neurona?
- Durant la retropropagació, una neurona oculta estava apagada (va donar zero) per a l'exemple que s'està corregint. Quina culpa reben les connexions que hi arriben?
- Per què les connexions residuals (les dreceres) permeten entrenar xarxes de cent capes?