Transformers

Rubén Rodríguez Abril

En este artículo iniciamos, por fin, la exposición del modelo que sirve de base para las principales aplicaciones de Procesamiento de Lenguaje Natural existentes en la actualidad (2023): transformadores, o transformers. Una arquitectura revolucionaria que, según Denis Rothman, “parece surgida de otro planeta” y que amenaza con desplazar a otras estructuras como las redes convolucionales o las redes neuronales recurrentes. Son la base de célebres aplicaciones como ChatGPT o Google Bard, y tienen el potencial de realizar por sí solos tareas hasta ahora encomendadas a operadores humanos como los programadores o los abogados.

Contexto de los transformers

A pesar de sus extraordinarias capacidades, sin embargo, su funcionamiento parte de un esquema matemático relativamente simple: la multiplicación matricial. Los vectores de un espacio semántico, que inicialmente representan las palabras de la cadena de entrada, son continuamente multiplicados por matrices de pesos sinápticos. De este modo, el modelo va construyendo relaciones entre palabras, determinando el contexto de la mismas y capturando significados holísticos de frases, párrafos e incluso textos enteros.

El transformer y otros paradigmas del Deep Learning

Arquitectura de los transformers. Codificador y Descodificador.

Arquitectura básica de un transformer. Codificador y descodificador constan de seis capas idénticas entre ellas, las cuales veremos en detalle más adelante. Cada token de entrada (tanto para el codificador como el descodificador) es sometido a un proceso de incrustación léxica (IL) y codificación de la posición (CP). El resultado completo es una matriz de N×512, siendo N el número máximo de tokens permitidos. Aunque la lectura del codificador se realiza al unísono, el descodificador va generando la salida token a token a partir del texto ya generado. 

El rendimiento de los transformers ha superado con creces el de las redes neuronales recurrentes y el de las redes convolucionales (que, en su versión de una sola dimensión, también habían encontrado aplicación en el ámbito del procesamiento de texto).

Las primeras se basan en la capacidad de memorización del significado de un texto en el estado interno de una máquina, que luego, durante el proceso de descodificación, es plasmado en un texto de salida. El problema se plantea cuando los textos a procesar son excesivamente largos y la máquina tiende a olvidar la información absorbida durante los primeros instantes de su funcionamiento.

Las redes convolucionales, a las que dedicamos una entrada en nuestra serie de Visión Artificial, presentan el inconveniente de que su kernel es de tamaño limitado, y por ello, son necesarias varias capas para que la información correspondiente a los extremos inicial y final del texto se combine.

Los inconvenientes de estos dos tipos de redes son superados por los transformers, que son redes neuronales orientadas hacia adelante (se prescinde de cualquier tipo de dependencia del estado interno de una capa) con mecanismos de atención, que ponen en conexión entre sí los diversos tokens del texto, como veremos más adelante.

Attention is all you need

En este artículo presentaremos el trabajo seminal Attention is All You Need, publicado en el año 2017 por un grupo de siete investigadores de Google Brain. Su modelo la base de todos los transformers aparecidos con posterioridad (como BERT o la serie GPT) y por ello merece que le dediquemos una entrada completa en nuestro portal.

Usos de los transformers

En general, un transformer está compuesto de un codificador que lee una cadena de entrada y un descodificador que imprime una cadena de salida. Puede ser utilizado para la realización de múltiples tareas, entre ellas:

Sistemas text-to-text (de texto a texto) como las traducciones a máquina -en las que la cadena de entrada del transformer representa el texto a traducir mientras que la cadena de salida contiene el texto traducido- o los chatbots, cuyas preguntas y respuestas constituyen respectivamente las entradas y salidas del transformador. El artículo original de 2017 contiene un modelo de traducción a máquina.

Sistemas prompt-to-text en los que una línea de comando (p.e. “¿puedo crear los objetos del arreglo steps mediante un bucle?”) produce la impresión de un texto de una cierta magnitud. Entre ellos se encuentran los célebres Chat Bing o GPT Chat.

Hiperespacios semánticos

Los transformers pivotan en torno a dos elementos fundamentales: Los hiperespacios semánticos de altas dimensiones y el mecanismo de atención.

Llamamos hiperespacios semánticos a aquellos espacios vectoriales de centenares de dimensiones que codifican fenómenos lingüísticos  como el significado de palabras y frases, la sintaxis de las oraciones, los diferentes tipos de contexto o incluso los sentimientos, ideologías o actitudes del autor de un texto. En ellos, la cercanía semántica entre dos palabras es medida mediante el producto escalar de los vectores que los representan. 

Hiperespacio semántico de palabras en un Transformer.

Incrustación léxica y codificación de la posición

En el modelo de Attention is All You Need, al inicio del codificador cada palabra (token) de la cadena inicial es transformada en un vector de 512 mediante un mecanismo de incrustamiento léxico (embedding). La posición de la palabra también es codificada en otro vector de 512 dimensiones, que es sumado al anterior. Esto último asegura que cuanto menor sea la distancia de dos tokens en la oración, mayor será su cercanía semántica dentro del nuevo espacio vectorial construido.

Todo el funcionamiento de los transformers gira en torno al procesamiento algebraico de este vector, que es multiplicado y sumado una y otra vez a medida que la información progresa desde la entrada hacia la salida. Por increíble que parezca, la operación del producto escalar parece ser capaz de capturar la inmensa mayoría de las características de los lenguajes naturales, hasta el punto que los transformers son capaces de realizar labores como la traducción o la redacción de documentos con un nivel de eficiencia comparable al de los humanos.

Niveles de abstracción

En el esquema original de 2017, tanto el codificador como el descodificador se componen de seis capas idénticas dispuestas serialmente, una detrás de otra. Cada uno de estas capas produce un conjunto de N vectores de módulo unidad, que pueden ser entendidos como puntos en la superficie de una hiperesfera de 512 dimensiones y radio igual a uno. Los puntos de esta superficie representarían elementos lingüísticos, como conceptos, sentimientos, estructuras, etc.… Al inicio del codificador, los vectores reflejan exclusivamente el significado y posición de cada una de las palabras de la cadena de entrada. Sin embargo, conforme se avanza hacia la salida cada capa va incorporando a los vectores información de carácter cada vez más holístico y abstracta.

La Auto-atención

Mecanismos de atención

El mecanismo de atención, que tal vez debería de recibir el nombre de mecanismo de ponderación, crea en cada capa nuevos vectores a partir de la suma ponderada de los vectores de entrada. Los coeficientes de la suma son determinados por una matriz de atención.

Dentro del modelo de 2017 se distingue entre dos tipos de atención: la auto-atención y la atención codificador-descodificador.

Matriz de Atención en la cabeza de la subcapa de Auto-Atención en los Transformers.
En la imagen se muestra una matriz de auto-atención, que señala la relación existente entre cada uno de los tokens del texto. Cuanta mayor sea la relación, mayor es la intensidad del color.  De este modo, «verde» se relaciona muy intensamente con «árbol» y «ramas». Las filas representan los nuevos vectores. Así, el vector «verde» será sustituido por una combinación lineal del resto de los vectores, en la que el vector «verde» tendrá un peso prominente.

Auto-atención multicabeza

La auto-atención existe tanto en el codificador como en el descodificador. La unidad pone en conexión unos con otros los diferentes tokens de entrada, creando con ello una matriz de atención, como la señalada en la imagen.

El sistema de atención empleado en este modelo es multicabeza (multihead), en la medida en que son ocho, y no una, las matrices de atención. El hiperespacio de d = 512 dimensiones se divide en cierto número de partes h, ocho en el artículo original, a cada una de las cuales le corresponde una matriz (\left [ 1 \right ] en la imagen). Cada una de ellas crea diferentes relaciones entre los tokens de entrada.

Funcionamiento de la Atención

Los vectores-tokens son dispuestos en una matriz de 512×N dimensiones, donde N es el número de tokens. Todos ellos son, pues, tratados en paralelo por la red, sin que sea necesario que en cada instante de tiempo la red analice un vector.

Mecanismo de Auto-Atención. Cabeza de una de las subcapas de los Transformers

El mecanismo de autoatención consiste en una multiplicación repetida de matrices. La matriz de entrada Z se descompone en varias submatrices, cada una de las cuales se alimenta una de las ocho cabezas. En la ilustración se muestra la acción de la cabeza 1. Z_1 se multiplica en paralelo con tres matrices de pesos sinápticos para obtener Q, K y V. La matriz de autoatención se obtiene multiplicando las dos primeras. Aunque no se muestra en la imagen, las salidas de las cabezas de la subcapa de auto-atención se concatenan, resultando en una matriz de idéntico tamaño a la entrada Z.

Tras ello, la entrada se hace pasar por tres capas de neuronas en paralelo, obteniendo tres matrices: consulta (query, Q), clave (key, K), y por último valor (value, V)(\left [ 1 \right ] en la imagen). La matriz de atención se obtiene multiplicando la primera Q por la matriz traspuesta de la segunda K^{T} \left [ 2 \right ]. Los coeficientes se dividen por la raíz cuadrada de las dimensiones del modelo (64) y cada una de las filas es sometida a una función softmax, de tal manera que la suma de los coeficientes de la fila sea igual a uno.

La salida se obtiene multiplicando la matriz de atención por la matriz de los valores \left [ 3 \right ].

Especialización de la auto-atención

El sistema de atención multicabeza fue objeto de un interesante estudio del año 2019 titulado Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned, en el que se analizaba la especialización de cada una de las diferentes cabezas del transformer original de 2017.

El transformer fue entrenado para traducir textos de inglés a alemán. Los autores investigaron la importancia de cada cabeza en el funcionamiento del codificador, así como el tipo de tarea realizada por la misma. El resultado es el mostrado en la imagen:

Interpretación semántica de las capas y las cabezas de atención en los transformers

En este diagrama se observa cómo las tareas de naturaleza posicional (casillas en morado) son perfeccionadas por las cabezas 1, 2 y 4 entre las capas 2 y 4. Las casillas en verde representan a cabezas que realizan tareas de naturaleza sintáctica. Unas veces vinculan a verbo con objeto directo (V-O), otras a verbo con sujeto (V-S) o a sujeto con verbo (S-V). Como era de esperar, estas unidades que incorporan información sintáctica tienden a situarse en las capas más profundas. La casilla en amarillo situada en la primera capa contribuye la detección de tokens poco comunes como los nombres propios.

Atención codificador-descodificador

La atención codificador-descodificador es similar a la recogida en el artículo anterior. La capa del descodificador señala qué vectores de salida del codificador (y con qué ponderación) deben utilizarse para elaborar cada uno de los vectores del descodificador.
Mecanismo de Atención Codificador-Descodificador. Cabeza de una de las subcapas de los Transformers.

Cabeza del mecanismo de Atención Codificador-Descodificador, el cual se encuentra únicamente en cada una de las capas del descodificador. Obsérvese como toma la información de la capa anterior del descodificador para crear la matriz Q, al mismo que tipo que se generan las matrices K y V a partir de la salida final del codificador. En la imagen se representa el funcionamiento del mecanismo durante su entrenamiento, momento en que el descodificador debe leer la frase objetivo, en este caso, la traducción correcta ya realizada.

Arquitectura de los transformers

Como señalábamos antes, cada codificador y descodificador se componen de 6 capas. La entrada se hace pasar a través de una unidad de incrustación léxica  y posicional que codifica la información semántica y de posición de los tokens en vectores de 512 dimensiones. Inicialmente, los tokens corresponden a las palabras de la cadena de entrada. Los vectores se disponen en una matriz de 512×N dimensiones, con la que se alimenta la primera capa del codificador. El número N de tokens permanece invariante a lo largo de todo el codificador.

Capa del codificador de los transformers

Cada capa del codificador se compone de dos subcapas. La primera es una unidad de atención multicabeza. La segunda es una minired neuronal orientada hacia adelante compuesta de dos operaciones lineales y una función ReLU intercalada entre ellas. Ambos elementos vienen seguidos de una operación de normalización, que aseguran que los vectores resultantes tengan una dimensión de una unidad, y puedan ser entendidos como puntos superficiales de una hiperesfera de radio unidad y 512 dimensiones. Así mismo, existen conexiones residuales (“atajos”) que permiten que parte de la información “se salte” estas unidades. Ello permite que la información de bajo nivel surgida las primeras capas pueda llegar hasta el final.

Arquitectura de las capas del codificador y descodificador en los transformers.

Capa del descodificador de los transformers

Las capas del descodificador contienen dos unidades de atención (además de la red orientada hacia adelante con las caraterísticas reseñadas). La primera unidad es de autoatención mientras que la segunda es una unidad de atención codificador-descodificador, que señala qué vectores procedentes del codificador deberán ser tenidos en cuenta a la hora de producir la nueva palabra.

No recurrencia

Cabe señalar que el codificador realiza su tarea de golpe. Las palabras de la cadena de entrada son dispuestas en una matriz que se hace pasar a través de todas las capas. El resultado es una matriz que representa n vectores de 512 dimensiones y radio uno. Por el contrario, el descodificador imprime las nuevas palabras una a una. En la fase de evaluación, las palabras producidas con anterioridad son introducidas, como una matriz, al inicio del descodificador. Después de haber atravesado todas las capas, la información debe atravesar una última capa lineal, dotada de una función softmax, que es la que realiza la predicción.

Entrenamiento de los transformers

Para el entrenamiento de los transformers, se utilizaron las bases de datos del concurso WMT 2014, que contenía 4,5 millones de pares de frases en el caso alemán-inglés y 36 millones para las traducciones francés-inglés.

Para entrenar el modelo, los textos de origen y de destino son introducidos, bajo la forma de matrices, en el codificador y el descodificador respectivamente. Es necesario señalar que en esta fase el descodificador funciona de un modo similar al codificador, realizando su predicción “de golpe”. Esta predicción es comparada con el texto de destino mediante la función de pérdida de entropía categórica. Tras ello, el gradiente de esta función es retropropagado por toda la red.

Conclusión

Aunque lo que pretendían los autores del trabajo de 2017 era mejorar las técnicas de traducción a máquina, sin embargo, su nuevo modelo, los transformers, se convirtió en un nueva arquitectura revolucionaria, base de casi todos los LLMs (Large Language Models) existentes en la actualidad como BERT y LaMDA, de Google, o la serie GPT de OpenAI.

Lo verdaderamente impactante no es la eficiencia de estos transformers, sino el hecho de que buena parte de las estructuras lingüísticas humanas parecen ser capturadas por las operaciones de multiplicación matricial y producto escalar. Pero esto, en el fondo, no debe sorprendernos: como ya expusimos en el artículo de la Jerarquía de Chomsky, los autómatas linealmente acotados (una GPU ejecutando un modelo de Deep Learning) son capaces de reconocer estructuras como las expresiones regulares (flexión nominal y verbal), la recursión (oraciones subordinadas) o el contexto (concordancia gramatical, expresiones analíticas).

Evidentemente, los transformers están sometidos a las limitaciones impuestas por la computación digital, que impiden que su poder computacional alcance el de una máquina de Turing. Pero… ¿y si algún día fuese posible crear transformers con parámetros analógicos, que fuesen capaces de operar con vectores de números reales? En tal caso, de acuerdo con la Tesis de la Computación Analógica, el nuevo LLM resultante tendría poderes de computación superiores al de una máquina de Turing, y estaría dotado de unas capacidades de razonamiento y procesamiento lingüístico que sólo podemos imaginar.