paint-brush
Transformers: La era de la atenciónpor@bhavdeepsethi
457 lecturas
457 lecturas

Transformers: La era de la atención

por Bhavdeep Sethi7m2024/08/26
Read on Terminal Reader

Demasiado Largo; Para Leer

Explicación sencilla del modelo Transformer del artículo revolucionario "La atención es todo lo que necesitas", que es la base de muchos modelos de última generación como BERT y GPT.
featured image - Transformers: La era de la atención
Bhavdeep Sethi HackerNoon profile picture
0-item



En 2017, un grupo de investigadores (de Google y la Universidad de Toronto) presentó una nueva forma de manejar las tareas de procesamiento del lenguaje natural (PLN). Su artículo revolucionario “ Attention is All You Need ” presentó el modelo Transformer, una arquitectura que desde entonces se ha convertido en la base de muchos sistemas avanzados de IA en la actualidad. El rendimiento, la escalabilidad y la versatilidad del modelo han llevado a su adopción generalizada, formando la columna vertebral de modelos de vanguardia como BERT (Bidirectional Encoder Representations) y GPT (Generative Pre-trained Transformers).


Antes del modelo Transformer, la mayoría de los modelos de IA que procesaban el lenguaje dependían en gran medida de un tipo de red neuronal llamada red neuronal recurrente (RNN) o su versión mejorada, la red de memoria a corto y largo plazo (LSTM). En particular, problemas como el modelado del lenguaje y la traducción automática (también llamada transducción de secuencias). Estos modelos procesaban las palabras en una secuencia, una por una, de izquierda a derecha (o viceversa). Si bien este enfoque tenía sentido porque las palabras de una oración a menudo dependen de las palabras anteriores, tenía algunas desventajas importantes:


  • Lento de entrenar: dado que las RNN y los LSTM procesan una palabra a la vez, entrenar estos modelos en grandes conjuntos de datos requería mucho tiempo.
  • Dificultad con oraciones largas: Estos modelos a menudo tenían dificultades para comprender las relaciones entre palabras que estaban muy separadas en una oración.
  • Paralelización limitada: debido a que las palabras se procesaban secuencialmente, era difícil aprovechar el hardware informático moderno que prospera al realizar muchas operaciones a la vez (paralelización).


La idea clave: atención a la arquitectura

La idea central detrás del modelo Transformer es algo llamado "atención". En términos simples, la atención ayuda al modelo a centrarse en partes específicas de una oración cuando intenta comprender el significado/contexto de una palabra. Considere la oración: "El auto que estaba estacionado en el garaje es azul". Cuando piensa en la palabra "azul", naturalmente se concentra en la palabra "auto" al principio de la oración porque le dice qué es azul. Los modelos de traducción automática tendrían dificultades para identificar si el "azul" se refería al auto o al garaje. Esto es lo que hace la autoatención: ayuda al modelo a centrarse en las palabras relevantes, sin importar dónde se encuentren en la oración.


Cabe señalar que la atención no era un concepto nuevo y que ya se utilizaba en conjunto con las redes neuronales recesivas. Transformer fue el primer modelo de transducción que dependía exclusivamente de la atención, eliminando así la necesidad de redes neuronales. Esto proporcionó las siguientes ventajas:

  • Procesamiento paralelo: a diferencia de las RNN, que procesan las palabras una tras otra, el Transformer puede procesar todas las palabras de una oración al mismo tiempo. Esto hace que el entrenamiento sea mucho más rápido.
  • Mejor comprensión del contexto: gracias al mecanismo de autoatención, el Transformer puede captar las relaciones entre las palabras sin importar cuán separadas estén en una oración. Esto es crucial para comprender oraciones complejas.
  • Escalabilidad: el modelo se puede ampliar fácilmente agregando más capas, lo que le permite manejar conjuntos de datos muy grandes y tareas complejas.


Como puedes ver, el nuevo modelo no solo eliminó todas las desventajas de las redes neuronales, sino que también mejoró el rendimiento de la traducción automática.


Dado que el artículo original puede ser un poco difícil de entender, aquí hay una explicación más simple de la arquitectura del modelo descrita en el artículo.

El Transformador - Arquitectura del Modelo


Pilas de codificadores y decodificadores : el transformador consta de una pila de codificadores (a la izquierda) y una pila de decodificadores (a la derecha). La pila de codificadores convierte la secuencia de entrada (como una oración) en un conjunto de representaciones continuas, mientras que la pila de decodificadores convierte estas representaciones en una secuencia de salida (como una traducción). Para cada pila, de abajo a arriba, aquí se explican los componentes principales del modelo con un ejemplo.


  1. Procesamiento de oraciones de entrada en el codificador

    • Entradas : El texto que desea traducir, por ejemplo: "El coche que estaba aparcado en el garaje es azul".

    • Incorporación de entrada : convierte las palabras en representaciones numéricas de longitud fija (vectores) llamadas incorporaciones. Estas incorporaciones capturan el significado semántico de las palabras de una manera que el modelo puede comprender. En nuestro ejemplo:

      • "El" -> [0,9, -0,4, 0,2, ...]

      • "coche" -> [0,5, 0,1, -0,7, ...]

      • "eso" -> [-0,8, 0,2, 0,8, ...]

      • y lo mismo para cada palabra de la oración anterior.


    • Codificación posicional : dado que el modelo procesa las incrustaciones de entrada, que no tienen ningún orden, necesita una forma de entender el orden de las palabras en una oración. La codificación posicional agrega esta información sobre la posición de cada palabra en la secuencia a su incrustación.

      • "El" en la posición 1 podría ajustarse a [0.9 + P1, -0.4 + P1, 0.2 + P1, ...], donde P1 representa la codificación posicional para la primera posición, generando así una nueva incrustación que es única para la posición P1.


    • Mecanismo de autoatención : como se describió anteriormente, esto permite que el modelo se centre en diferentes palabras de una oración según el contexto. Para cada palabra, el mecanismo de autoatención calcula una puntuación que representa la atención que se debe prestar a otras palabras al codificar la palabra actual.

      • En el caso de la palabra “coche”, la autoatención podría determinar que “aparcado”, “garaje” y “azul” son especialmente relevantes para entender su contexto.


    • Atención multi-cabeza : parte novedosa del modelo de transformador. La atención multi-cabeza consiste simplemente en múltiples capas/operaciones de auto-atención que se ejecutan en paralelo y se concatenan linealmente.

      • Por ejemplo, una cabeza podría centrarse en el sujeto principal (“automóvil”) y sus propiedades (“azul”), mientras que otra cabeza podría centrarse en la cláusula relativa (“eso estaba aparcado en el garaje”).

      • El módulo de atención de múltiples cabezales le brinda al modelo la capacidad de comprender que el “azul” es más relevante para el automóvil que para el garaje.


    • Redes neuronales de retroalimentación : después de la capa de autoatención, la salida pasa a través de una red neuronal de retroalimentación que se aplica a cada posición por separado y de manera idéntica (una vez más, ¡se puede ejecutar en paralelo!). Esto consiste en dos transformaciones lineales con una activación ReLU en el medio.


    • Add & Norm : las conexiones residuales (add) se utilizan para agregar la entrada de una capa a su salida, que luego se normaliza (norm). Esto ayuda con el entrenamiento de redes profundas al evitar que los gradientes desaparezcan o exploten.


  2. Generando la traducción en el decodificador

    En el procesamiento del lenguaje natural, es habitual indicar el inicio del token de inicio de secuencia con el carácter especial <SOS> y el final de la secuencia con <EOS>. El decodificador toma la entrada procesada del codificador y genera la traducción al francés "La voiture qui était garée dans le garage est bleue". Así es como funciona esta parte:


    • Entrada al decodificador : el decodificador comienza con la representación codificada de la oración en inglés del codificador. Si te fijas, el decodificador también toma su propia salida como entrada. Como no tendrá una entrada para la palabra inicial, insertamos el token <SOS> al principio (por lo tanto, desplazado a la derecha) y eliminamos la última palabra. Esta secuencia desplazada es lo que se introduce en el decodificador.


    • Autoatención enmascarada : en el decodificador, un mecanismo de autoatención enmascarada garantiza que cada palabra de la secuencia de salida solo pueda prestar atención a las palabras anteriores. Esto evita que el modelo mire hacia adelante y garantiza que genere la traducción palabra por palabra, de izquierda a derecha.

      • Por ejemplo, cuando el decodificador está a punto de generar la palabra “La” (la primera palabra en francés), solo conoce el contexto de <SOS> y no las palabras futuras como “Voiture”.


    • Redes neuronales de propagación hacia adelante : el decodificador aplica otra red neuronal de propagación hacia adelante para procesar aún más esta información, refinando la traducción paso a paso.


En el decodificador, después de procesar la oración de entrada a través de múltiples capas de autoatención enmascarada, atención codificador-decodificador y redes de retroalimentación, obtenemos una secuencia de representaciones continuas (vector de coma flotante) para cada posición en la oración de destino (en francés en nuestro caso). Estas representaciones deben convertirse en palabras reales. Aquí es donde entra en juego la capa final lineal y softmax.


  • Capa lineal : esta capa es una capa de red neuronal completamente conectada que transforma la salida de la última capa del decodificador (una representación vectorial densa para cada posición) en un vector del tamaño del vocabulario de destino (todas las palabras posibles en el idioma francés, por ejemplo).
  • Capa Softmax : después de la transformación lineal, se aplica una función softmax para convertir estos logits (puntuaciones brutas) en probabilidades. Estas probabilidades indican la probabilidad de que cada palabra del vocabulario de destino sea la siguiente palabra correcta en la traducción. Esto nos permite adivinar qué palabra del vocabulario francés debe seleccionarse (la celda con la mayor probabilidad).


El decodificador básicamente hace esto:

  • Primer paso: El decodificador comienza con <SOS> y genera la primera palabra “La”.
  • Segundo paso: Con la entrada <SOS> La, el modelo predice la siguiente palabra, “Voiture”.
  • Tercer paso: El decodificador toma <SOS> La Voiture y genera la palabra “salir”.
  • Proceso continuo: este proceso continúa y genera "était", "garée", "dans", "le", "garage", "est" y finalmente "bleue".
  • Token de fin de secuencia: el decodificador eventualmente genera un token de fin de secuencia <EOS> para indicar que la traducción está completa.


Al combinar estos pasos, el Transformer puede comprender la estructura y el significado de toda la oración de manera más eficaz que los modelos anteriores. El mecanismo de autoatención y el procesamiento paralelo permiten al Transformer captar de manera eficaz los matices y la estructura tanto del idioma de origen como del de destino, lo que lo hace muy competente en tareas como la traducción automática.