![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
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:
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:
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.
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.
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.
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.
El decodificador básicamente hace esto:
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.