Salta el contingut

Xarxes neuronals per al PLN: RNN, CNN i mecanismes d'atenció

Abans que els Transformers dominessin el PLN, les xarxes neuronals ja s'havien adaptat per processar text mitjançant dues famílies d'arquitectures: les xarxes neuronals recurrents (per a seqüències) i les xarxes neuronals convolucionals (per a patrons locals). Entendre-les ajuda a comprendre per què calia una alternativa: el mecanisme d'atenció.

Xarxes neuronals recurrents (RNN)

Una xarxa neuronal recurrent (RNN) és una arquitectura dissenyada per processar dades amb format de seqüència: text, àudio o sèries temporals. A diferència d'una xarxa neuronal tradicional (on cada entrada es processa de forma independent), una RNN retroalimenta part de la seva sortida cap a l'entrada de la iteració següent, dotant-la d'una mena de "memòria" que li permet recordar el que ja ha vist.

graph LR
    X1[Paraula 1] --> H1((Estat ocult 1))
    H1 --> H2((Estat ocult 2))
    X2[Paraula 2] --> H2
    H2 --> H3((Estat ocult 3))
    X3[Paraula 3] --> H3
    H3 --> Y[Sortida]

Aquesta capacitat de processar seqüències de longitud variable i modelar dependències entre elements va fer de les RNN (i les seves variants LSTM i GRU, dissenyades per mitigar el problema del gradient que s'esvaeix en seqüències llargues) l'arquitectura dominant en PLN entre mitjans dels anys 2010 i el 2017.

Keras (creat per Google el 2015) és la biblioteca de referència per construir aquestes xarxes en Python amb poques línies de codi:

# Xarxa recurrent (LSTM) per a classificació de textos amb Keras
from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Embedding(input_dim=10_000, output_dim=64),
    layers.LSTM(64),
    layers.Dense(1, activation="sigmoid"),
])
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
model.summary()

Limitació fonamental de les RNN: processen la seqüència pas a pas, per la qual cosa no es poden paral·lelitzar durant l'entrenament i tenen dificultats per capturar dependències molt llunyanes dins d'un text llarg.

Xarxes neuronals convolucionals aplicades al text (CNN)

Les xarxes neuronals convolucionals (CNN), populars sobretot en visió per computador, també s'apliquen al PLN per aprendre característiques locals i globals del text. Una capa de convolució aplica filtres a finestres de paraules o caràcters superposades, extraient patrons rellevants com n-grames, prefixos, sufixos o combinacions de paraules específiques.

Una CNN de text es compon de:

  • Capes de convolució: apliquen filtres a l'entrada per extreure característiques locals; cada filtre ressalta un patró específic.
  • Capes d'activació: afegeixen no-linealitat perquè el model pugui aproximar funcions complexes.
  • Capes d'agrupació (pooling): redueixen la dimensionalitat prenent submostres de regions veïnes, millorant la generalització.
  • Capes completament connectades: combinen les característiques extretes per resoldre la tasca final (p. ex. classificació de textos).

Les CNN entrenen més ràpid que les RNN (es paral·lelitzen millor) però, igual que aquestes, tenen un abast limitat per capturar relacions entre paraules molt allunyades en el text.

Mecanismes d'atenció: el pont cap als Transformers

Els mecanismes d'atenció permeten a un model enfocar-se en les parts més rellevants de l'entrada durant l'aprenentatge, en lloc de tractar totes les paraules de manera uniforme. En comptes d'assignar el mateix pes a cada paraula, l'atenció assigna pesos diferents segons la rellevància de cada paraula per a la tasca concreta, capturant relacions entre paraules independentment de la distància que les separa.

Aquesta idea va demostrar resultats excel·lents en traducció automàtica, generació de text i anàlisi de sentiments —usada inicialment com a complement de les RNN— fins que el 2017 un equip de Google Brain va publicar l'article "Attention Is All You Need", que proposava eliminar completament la recurrència i la convolució i construir un model basat únicament en mecanismes d'atenció: el Transformer.

graph LR
    RNN[RNN / LSTM 2014] --> ATT[Atencio com a complement de la RNN 2015]
    CNN[CNN per a text] --> ATT
    ATT --> TR[Transformer - nomes atencio - 2017]

Miniactivitat — AC5071/03/04 — De la RNN al Transformer

Explica amb les teves paraules per quin motiu el mecanisme d'atenció multicap d'un Transformer supera les limitacions d'una RNN i d'una CNN a l'hora de processar un text llarg (per exemple, un contracte de 10 pàgines). Esmenta explícitament: (1) la paral·lelització de l'entrenament, (2) la distància màxima entre paraules relacionades, i (3) l'ús de la memòria/context.

Notebooks pràctics a Moodle

Els notebooks Jupyter amb la implementació pas a pas de LDA (Evolució del PLN), la xarxa recurrent, la xarxa convolucional i el Transformer amb Keras (aquesta pàgina) estan disponibles a l'aula Moodle del mòdul.