Definición

Un modelo transformer es una red neuronal que aprende contexto y, por lo tanto, significado mediante el seguimiento de relaciones en datos secuenciales como las palabras de esta oración, es decir, resuelve tareas Seq2Seq sin los problemas de dependencias largas que presentan las RNN.

Los modelos transformer aplican un conjunto en evolución de técnicas matemáticas, llamadas atención o atención propia, para detectar formas sutiles en que los elementos de datos en una serie se influencian y dependen entre sí.

La idea clave de un Transformer es gestionar completamente las dependencias entre la entrada y la salida con atención y recurrencia.

Cómo Prestan Atención los Transformers

Al igual que la mayoría de las redes neuronales, los modelos de transformers son básicamente grandes bloques de codificación/decodificación que procesan datos.

Las adiciones pequeñas pero estratégicas a estos bloques (que se muestran en el diagrama siguiente) hacen que los transformers sean increíblemente potentes.

Los transformers utilizan codificadores posicionales para etiquetar elementos de datos que entran y salen de la red. Las unidades de atención siguen estas etiquetas, calculando una especie de mapa algebráico de la forma en que cada elemento se relaciona con los demás.

Las consultas de atención se suelen ejecutar en paralelo calculando una matriz de ecuaciones en lo que se llama atención de múltiples encabezados.

Con estas herramientas, las computadoras pueden ver los mismos patrones que ven los humanos.

Características principales de los transformers:

Encoder y Decoder

El Transformer se basa en un Encoder y un Decoder. La idea clave aquí es que se utiliza el encoder para analizar el contexto de la secuencia de entrada y el decoder es el encargado de generar la secuencia del output a partir de este contexto. (Se explica a detalle más adelante)

Embedding del texto

Para que el encoder y el decoder puedan trabajar bien, es necesario realizar un embedding del texto. Embedding, en NLP, significa simplemente una representación vectorial de las palabras. La magia de esta transformación a vectores, es que conseguimos una representación numérica de las palabras, y que, además, las palabras con sentido semántico similar estarán cerca en dicho espacio vectorial.

Codificación Posicional

La posición de una palabra juega un papel principal para que el modelo pueda entender la secuencia que le hemos pasado.

Las RNN, por su arquitectura recurrente, dan importancia al orden de la secuencia. Sin embargo, el Transformer pierde el mecanismo de recurrencia para utilizar el mecanismo de «auto-atención de múltiples cabezas». Esto, en teoría, permite capturar dependencias más largas y agilizar el entrenamiento bastante.

En un Transformer, el texto fluye de manera simultánea entre el encoder y el decoder. Así pues, es primordial añadir información sobre la posición de cada palabra en el vector de secuencia.

Auto-atención

El mecanismo de auto-atención es lo que permite al modelo saber con qué otra palabra de la secuencia está relacionada la palabra que se procesa en ese instante de tiempo. Parece complejo de entender, pero vamos a ver un ejemplo que lo facilita todo.

Por ejemplo, en la oración: Ella sirvió agua de la jarra a la taza hasta que se llenó. Sabemos que «se» se refiere a la taza.

Mientras que en la oración: Ella sirvió agua de la jarra a la taza hasta que se vació. Sabemos que «se» se refiere a la jarra.

El significado es el resultado de las relaciones entre las cosas y la auto-atención es una forma general de aprender las relaciones. Vemos que la auto-atención es una herramienta poderosa y flexible para el aprendizaje.

Aunque las RNN permiten referenciar palabras anteriores de la secuencia, sufren de memoria corto-placista. Esto provoca que cuando trabajamos con una secuencia larga las RNN no pueden referenciar palabras muy antiguas. Las GRU y LSTM tienen una ventana de memoria más grande que las RNN, pero siguen teniendo una capacidad limitada.

El mecanismo de auto-atención resuelve esto ya que, en teoría, posee una ventana de referencia infinita, acotada únicamente por la potencia computacional. Esto permite que el algoritmo pueda usar el contexto completo para realizar la tarea.

Atención por producto escalar

Para poder entender el mecanismo complejo de multi-cabezas, primero es necesario entender lo simple. El producto escalar.

El mecanismo toma 3 valores de entrada:

  1. Q: Representa el vector de una palabra.

  2. K: las keys que son todas las demás palabras de la secuencia.

  3. V: el valor vectorial de la palabra que se procesa en dicho punto temporal.

En el caso de auto-atención, los valores V y Q son el mismo vector. Y por lo tanto, el mecanismo nos devuelve la importancia de la palabra en el texto:

Realizar el producto escalar de Q y K (transpuesto) significa calcular la proyección ortogonal de Q en K. Es decir, intentar estimar la alineación de los vectores y devolver un peso para cada palabra del texto.Se normaliza el resultado al dividir por la raíz del tamaño de K (es decir, por el tamaño de la secuencia).

Esto se hace para evitar problemas de explosión del gradiente que se producirían en la funciond e pérdida Softmax, para valores de gran tamaño. Aplicar la softmax se debe a intentar escalar el peso de la palabra en un rango entre 0 y 1.

Finalmente, se multiplican estos pesos por el valor (el vector de la palabra con la que estamos trabajando) para reducir la importancia de palabras no relevantes y quedarnos solo con las que nos importan.

Auto-atención por multi-cabeza

La versión del mecanismo que utiliza un Transformer es una proyección de Q, K y V en h espacios lineales. Siendo h la cantidad de cabezas que tiene el mecanismo (siendo h=8 en el paper original). Esto permite que cada cabeza se centre en aspectos diferentes, para después concatenar los resultados.

El tener varios subespacios y, por lo tanto, varias representaciones de importancia de cada palabra. Esto permite que la propia palabra no sea la dominante en el contexto.

La arquitectura de multi-cabeza nos permite aprender dependencias mucho más complejas sin añadir tiempo de entrenamiento gracias a que la proyección lineal reduce el tamaño de cada vector.

¿Cómo funciona la arquitectura encoder-decoder?

La codificación

  1. Se realiza un embedding del resultado del punto temporal justo anterior (t-1).

  2. Se añade la componente posicional.

  3. Se aplica el mecanismo de auto-atención de múltiples cabezas a la secuencia del output de t-1.

  4. Se recoge la salida del encoder para el punto temporal t, aplicamos de nuevo el mecanismo de auto-atención, esta vez utilizando las palabras del output t-1 como V, y la salida del encoder (en t) como K y Q.

  5. Capa neuronal de Feed Forward (Completamente Conectada).

  6. Finalizamos con una capa lineal y una Softmax para obtener la probabilidad de la siguiente palabra y devolver aquella con la probabilidad más alta como la siguiente palabra.

La decodificación

  1. Se realiza un embedding de la secuencia de las palabras para convertir cada una en un vector y tener una representación numérica.

  2. Añadir la componente posicional para cada vector de palabra.

  3. Aplicar el mecanismo de auto-atención de múltiples cabezas.

  4. Capa neuronal Feed Forward (Completamente Conectada)..

Ref:

Last updated