Descripción de la arquitectura de transformador usada para el procesamiento del lenguaje natural (NLP)

Completado

El último avance en el procesamiento del lenguaje natural (NLP) se debe al desarrollo de la arquitectura del Transformador.

Los transformadores fueron introducidos en la ponencia Todo lo que necesita es atención de Vaswani, et al. de 2017. La arquitectura de Transformador proporciona una alternativa a las redes neuronales recurrentes (RNNS) para realizar NLP. Mientras que los RNN consumen muchos procesos, ya que procesan palabras secuencialmente, los Transformadores no procesan las palabras secuencialmente, sino que procesan cada palabra de forma independiente en paralelo mediante el uso de atención.

La posición de una palabra y el orden de las palabras en una oración son importantes para comprender el significado de un texto. Para incluir esta información sin tener que procesar texto secuencialmente, los Transformadores usan codificación posicional.

Descripción de la codificación posicional

Antes de los transformadores, los modelos de lenguaje usaban incrustaciones de palabras para codificar texto en vectores. En la arquitectura de Transformador, la codificación posicional se usa para codificar texto en vectores. La codificación posicional es la suma de vectores de incrustación de palabras y vectores posicionales. Al hacerlo, el texto codificado incluye información sobre el significado y la posición de una palabra en una oración.

Para codificar la posición de una palabra en una oración, podría usar un solo número para representar el valor del índice. Por ejemplo:

Token Valor del índice
The 0
work 1
de 2
William 3
Shakespeare 4
inspirado 5
many 6
películas 7
... ...

Cuanto más largo sea un texto o una secuencia, mayor será el tamaño de los valores del índice. Aunque el uso de valores únicos para cada posición de un texto es un enfoque sencillo, los valores no contendrán ningún significado y los valores crecientes podrían crear inestabilidad durante el entrenamiento del modelo.

La solución propuesta en la ponencia Todo lo que necesita es atención usa funciones de seno y coseno, donde pos es la posición y i es la dimensión:

Screenshot of the positional encoding function.

Al usar estas funciones periódicas juntas para crear, podrá crear vectores únicos para cada posición. Como resultado, los valores están dentro de un intervalo y el índice no se hace más grande cuando se codifica un texto mayor. Además, estos vectores posicionales facilitan el cálculo y la comparación de posiciones de palabras diferentes en una oración entre sí.

Descripción de la atención de varios encabezados

La técnica más importante utilizada por los Transformadores para procesar texto es el uso de atención en lugar de periodicidad.

La atención (también conocida como auto-atención o intra-atención) es un mecanismo utilizado para asignar nueva información a información aprendida con el fin de comprender lo que implica la nueva información.

Los transformadores usan una función de atención, donde se codifica una nueva palabra (mediante codificación posicional) y se representan como una consulta. La salida de una palabra codificada es una clave con un valor asociado.

Para ilustrar las tres variables que usa la función de atención: consulta, claves y valores, exploraremos un ejemplo simplificado. Imagine codificar la frase Vincent van Gogh is a painter, known for his stunning and emotionally expressive artworks. Al codificar la consulta Vincent van Gogh, la salida podría ser Vincent van Gogh como clave con painter como valor asociado. La arquitectura almacena claves y valores en una tabla, que podrá usar para descodificar en el futuro:

Claves Valores
Vincent Van Gogh Pintor
William Shakespeare Playwright
Charles Dickens Escritor

Cada vez que se presente una nueva frase como Shakespeare's work has influenced many movies, mostly thanks to his work as a .... El modelo puede completar la oración tomando Shakespeare como consulta y buscando en la tabla de claves y valores. Shakespeare la consulta es más cercana a William Shakespeare la clave y, por lo tanto, el valor asociado playwright se presenta como la salida.

Uso de dot-product escalado para procesar la función de atención

Para calcular la función de atención, la consulta, las claves y los valores se codifican en vectores. A continuación, la función de atención calcula dot-product escalado entre el vector de consulta y los vectores de claves.

Screenshot of the attention function.

dot-product calcula el ángulo entre vectores que representan tokens, con el producto siendo mayor cuando los vectores estén más alineados.

La función softmax se usa dentro de la función de atención, sobre dot-product escalado de los vectores, para crear una distribución de probabilidad con posibles resultados. En otras palabras, la salida de la función softmax incluye las claves más cercanas a la consulta. A continuación, se selecciona la clave con la mayor probabilidad y el valor asociado es la salida de la función de atención.

La arquitectura del Transformador usa atención de varios encabezados, lo que significa que la función de atención procesa tokens varias veces en paralelo. Al hacerlo, una palabra o frase se podrá procesar varias veces, de varias maneras, para extraer diferentes tipos de información de la oración.

Exploración de la arquitectura del Transformador

En la ponencia Todo lo que necesita es atención, la arquitectura del Transformador propuesta se modela como:

Screenshot of the Transformer architecture.

Hay dos componentes principales en la arquitectura del Transformador original:

  • El codificador: responsable de procesar la secuencia de entrada y crear una representación que capture el contexto de cada token.
  • El descodificador: genera la secuencia de salida al asistir a la representación del codificador y predecir el siguiente token de la secuencia.

Las innovaciones más importantes presentadas en la arquitectura del Transformador eran la codificación posicional y la atención de varios encabezados. Una representación simplificada de la arquitectura, enfocada en estos dos componentes, podría tener el siguiente aspecto:

Diagram of a simplified version of the Transformer architecture.

  • En la capa del codificador, se codifica una secuencia de entrada con codificación posicional, después de la cual se usa la atención de varios encabezados para crear una representación del texto.
  • En la capa del descodificador, una secuencia de salida (incompleta) se codifica de forma similar mediante la codificación posicional y, a continuación, la atención de varios encabezados. A continuación, el mecanismo de atención de varios encabezados se usa una segunda vez dentro del descodificador para combinar la salida del codificador y la salida de la secuencia de salida codificada que se pasó como entrada a la parte del descodificador. Como resultado, es posible generar la salida.

La arquitectura de Transformador introdujo conceptos que mejoraron drásticamente la capacidad de un modelo para comprender y generar texto. Se han entrenado diferentes modelos mediante adaptaciones de la arquitectura de Transformador para su transformación para tareas de NLP específicas.