Articulo de referencia

Transformer (aprendizaje profundo)

Arquitectura de transformador estándar, que muestra a la izquierda un codificador y a la derecha un decodificador. Nota: se utiliza la convención pre-LN, que difiere de la conve...

Arquitectura de transformador estándar, que muestra a la izquierda un codificador y a la derecha un decodificador. Nota: se utiliza la convención pre-LN, que difiere de la convención post-LN empleada en el transformador original de 2017.

En el aprendizaje profundo , el transformador es una familia de arquitecturas de redes neuronales artificiales basadas en el mecanismo de atención multi-cabeza , en el que el texto se convierte en representaciones numéricas llamadas tokens , y cada token se convierte en un vector mediante una búsqueda en una tabla de incrustaciones de palabras . [ 1 ] En cada capa, cada token se contextualiza dentro del alcance de la ventana de contexto con otros tokens (no enmascarados) mediante un mecanismo de atención multi-cabeza paralelo, lo que permite amplificar la señal de los tokens clave y atenuar la de los tokens menos importantes. Dado que la autoatención por sí sola es invariante a la permutación, los transformadores inyectan información posicional, generalmente a través de codificaciones posicionales o incrustaciones posicionales aprendidas, por lo que el orden de los tokens puede afectar la salida. [ 1 ]

Los transformadores tienen la ventaja de no tener unidades recurrentes, por lo que requieren menos tiempo de entrenamiento que las arquitecturas neuronales recurrentes (RNN) anteriores, como la memoria a corto y largo plazo (LSTM). [ 2 ] Las variantes posteriores se han adoptado ampliamente para entrenar grandes modelos de lenguaje (LLM) en grandes conjuntos de datos (de lenguaje) . [ 3 ] Los diseños modernos de transformadores se agrupan comúnmente en variantes solo de codificador, solo decodificador y codificador-decodificador, dependiendo de si están optimizados para el aprendizaje de representaciones, la generación autorregresiva o las tareas condicionales de secuencia a secuencia. [ 4 ]

La versión original de la arquitectura Transformer fue propuesta en el artículo de 2017 " Attention Is All You Need " por investigadores de Google . [ 1 ] Los predecesores de los Transformers se desarrollaron como una mejora de arquitecturas anteriores para la traducción automática , [ 5 ] [ 6 ] pero han encontrado muchas aplicaciones desde entonces. Se utilizan en el procesamiento del lenguaje natural a gran escala , visión por computadora ( transformadores de visión ), aprendizaje por refuerzo , [ 7 ] [ 8 ] audio , [ 9 ] aprendizaje multimodal , robótica , [ 10 ] y ajedrez . [ 11 ] También ha llevado al desarrollo de sistemas preentrenados , como los transformadores generativos preentrenados (GPT) [ 12 ] y BERT [ 13 ] (representaciones de codificador bidireccional de transformadores).

Historia

Antecesores

Durante muchos años, el modelado y la generación de secuencias se realizaron mediante redes neuronales recurrentes (RNN) simples. Un ejemplo temprano muy citado fue la red de Elman (1990). En teoría, la información de un token puede propagarse arbitrariamente a lo largo de la secuencia, pero en la práctica, el problema del gradiente evanescente deja el estado del modelo al final de una oración larga sin información precisa y extraíble sobre los tokens precedentes.

Un avance clave fue LSTM (descrito originalmente en un informe técnico de 1995 y publicado formalmente en 1997), [ 2 ] [ nota 1 ] una RNN que introdujo mecanismos de compuerta para mitigar el problema del gradiente evanescente, permitiendo un aprendizaje eficiente del modelado de secuencias largas. Un elemento arquitectónico clave fue el uso de unidades de compuerta multiplicativas , en las que las salidas de algunas neuronas modulan las salidas de otras. Estas unidades multiplicativas son conceptualmente distintas del mecanismo de atención aditiva introducido posteriormente para modelos de secuencia a secuencia. [ 14 ] Las redes neuronales que utilizan unidades multiplicativas se denominaron posteriormente redes sigma-pi [ 15 ] o redes de orden superior . [ 16 ] LSTM se convirtió en la arquitectura estándar para el modelado de secuencias largas hasta la publicación de transformers en 2017. Sin embargo, LSTM todavía utilizaba procesamiento secuencial, como la mayoría de las demás RNN. [ nota 2 ] Específicamente, las RNN operan un token a la vez desde el primero hasta el último; No pueden operar en paralelo sobre todos los tokens de una secuencia.

Los transformadores modernos superan este problema, pero a diferencia de las RNN, requieren un tiempo de cálculo que es cuadrático en el tamaño de la ventana de contexto. El controlador de peso rápido de escalado lineal (1992) aprende a calcular una matriz de pesos para su posterior procesamiento dependiendo de la entrada. [ 17 ] Una de sus dos redes tiene "pesos rápidos" o "enlaces dinámicos" (1981). [ 18 ] [ 19 ] [ 20 ] Una red neuronal lenta aprende por descenso de gradiente a generar claves y valores para calcular los cambios de peso de la red neuronal rápida que calcula las respuestas a las consultas. [ 17 ] Posteriormente se demostró que esto era equivalente al transformador lineal no normalizado. [ 21 ] [ 22 ]

Atención con seq2seq

La idea de la transducción de secuencias codificador-decodificador se desarrolló a principios de la década de 2010; comúnmente se citan como los precursores de seq2seq dos artículos publicados simultáneamente en 2014. [ 23 ] [ 24 ]

Un modelo de 380 millones de parámetros para traducción automática utiliza dos redes neuronales de memoria a corto y largo plazo (LSTM). [ 24 ] Su arquitectura consta de dos partes. El codificador es una LSTM que toma una secuencia de tokens y la convierte en un vector. El decodificador es otra LSTM que convierte el vector en una secuencia de tokens. De manera similar, otro modelo de 130 millones de parámetros utilizó unidades recurrentes con compuertas (GRU) en lugar de LSTM. [ 23 ] Investigaciones posteriores demostraron que las GRU no son ni mejores ni peores que las LSTM para seq2seq. [ 25 ] [ 26 ]

Estos primeros modelos seq2seq carecían de mecanismo de atención, y el vector de estado solo era accesible después de procesar la última palabra del texto fuente. Si bien en teoría dicho vector conserva la información de toda la oración original, en la práctica la información se conserva de forma deficiente. Esto se debe a que la entrada es procesada secuencialmente por una red recurrente en un vector de salida de tamaño fijo , que luego es procesado por otra red recurrente en una salida. Si la entrada es larga, el vector de salida no podría contener toda la información relevante, lo que degradaría la salida. Como prueba, invertir la oración de entrada mejoró la traducción seq2seq. [ 27 ]

El modelo de búsqueda RNN introdujo un mecanismo de atención en seq2seq para la traducción automática con el fin de resolver el problema del cuello de botella (del vector de salida de tamaño fijo ), lo que permite al modelo procesar dependencias de larga distancia con mayor facilidad. El nombre se debe a que "emula la búsqueda a través de una oración de origen durante la decodificación de una traducción". [ 5 ]

Se compararon los rendimientos relativos entre las arquitecturas de modelos de atención global (la de la búsqueda RNN ) y local (ventana deslizante) para la traducción automática, encontrándose que la atención mixta tenía mayor calidad que la atención global, mientras que la atención local reducía el tiempo de traducción. [ 28 ]

En 2016, Google Translate se renovó y pasó a llamarse Google Neural Machine Translation , que reemplazó el modelo anterior basado en traducción automática estadística . El nuevo modelo era un modelo seq2seq donde tanto el codificador como el decodificador eran 8 capas de LSTM bidireccional. [ 29 ] Su desarrollo tomó nueve meses y superó al enfoque estadístico, cuyo desarrollo llevó diez años. [ 30 ]

Atención paralela

Los modelos Seq2seq con atención (incluida la autoatención) seguían sufriendo el mismo problema que las redes recurrentes, que es que son difíciles de paralelizar , lo que impedía su aceleración en GPU. En 2016, la atención descomponible aplicó un mecanismo de autoatención a redes de alimentación directa , que son fáciles de paralelizar, y logró un resultado de vanguardia en inferencia textual con un orden de magnitud menos parámetros que las LSTM. [ 31 ] Uno de sus autores, Jakob Uszkoreit, sospechaba que la atención sin recurrencia sería suficiente para la traducción de idiomas, de ahí el título "la atención es todo lo que necesitas". [ 32 ] Esa hipótesis iba en contra de la sabiduría convencional en ese momento, e incluso su padre Hans Uszkoreit , un conocido lingüista computacional, se mostró escéptico. [ 32 ] En el mismo año, se propuso la autoatención (llamada intraatención o atención intrasentencial ) para las LSTM. [ 33 ]

El 12 de junio de 2017, el modelo original de transformador codificador-decodificador (de 100 millones de parámetros) se publicó en el artículo " Attention is all you need ". En ese momento, el enfoque de la investigación era mejorar seq2seq para la traducción automática , eliminando su recurrencia para procesar todos los tokens en paralelo, pero conservando su mecanismo de atención de producto escalar para mantener su rendimiento de procesamiento de texto. [ 1 ] Esto condujo a la introducción de un modelo de atención de múltiples cabezas que era más fácil de paralelizar debido al uso de cabezas independientes y la falta de recurrencia. Su paralelización fue un factor importante para su uso generalizado en grandes redes neuronales. [ 34 ]

era del auge de la IA

Ya en la primavera de 2017, incluso antes de que se publicara la preimpresión "Attention is all you need", uno de los coautores aplicó la variación "solo decodificador" de la arquitectura para generar artículos ficticios de Wikipedia. [ 35 ] La arquitectura Transformer se utiliza ahora junto con muchos modelos generativos que contribuyen al auge actual de la IA .

La "implementación de referencia" del Transformer original se escribió en una biblioteca de TensorFlow. [ 36 ] [ 37 ] En el modelado del lenguaje, ELMo (2018) fue una LSTM bidireccional que produce incrustaciones de palabras contextualizadas , mejorando la línea de investigación de bag of words y word2vec . Le siguió BERT (2018), un modelo Transformer solo de codificador. [ 38 ] En octubre de 2019, Google comenzó a usar BERT para procesar consultas de búsqueda. [ 39 ] En 2020, Google Translate reemplazó el modelo anterior RNN-encoder–RNN-decoder por un modelo transformer-encoder–RNN-decoder. [ 40 ]

A partir de 2018, la serie OpenAI GPT de transformadores solo decodificadores se convirtió en el estado del arte en la generación de lenguaje natural . A finales de 2022, ChatGPT , un chatbot basado en una variante ajustada de GPT-3.5, se volvió inesperadamente popular [ 41 ] [ 42 ] , lo que provocó un auge en torno a los grandes modelos de lenguaje . [ 43 ] [ 44 ]

Los transformadores se han aplicado en modalidades más allá del texto. Cuatro días después de la publicación de "Attention is All You Need", la mayoría de los autores de ese artículo publicaron una arquitectura de transformador multimodal , MultiModel. [ 45 ] Otros ejemplos incluyen el transformador de visión , [ 46 ] el reconocimiento de voz, [ 47 ] la robótica, [ 7 ] y multimodal. [ 48 ] El transformador de visión, a su vez, estimuló nuevos desarrollos en redes neuronales convolucionales . [ 49 ] Los generadores de imágenes y videos como DALL-E (2021), Stable Diffusion 3 (2024), [ 50 ] y Sora (2024), utilizan transformadores para analizar datos de entrada (como indicaciones de texto) dividiéndolos en "tokens" y luego calculando la relevancia entre cada token utilizando autoatención, lo que ayuda al modelo a comprender el contexto y las relaciones dentro de los datos.

Capacitación

Métodos para estabilizar el entrenamiento

La arquitectura de transformador simple tuvo dificultades para converger. En el artículo original, [ 1 ] los autores recomendaron usar un calentamiento de la tasa de aprendizaje . Es decir, la tasa de aprendizaje debe aumentar linealmente desde 0 hasta el valor máximo durante la primera parte del entrenamiento (generalmente se recomienda que sea el 2 % del número total de pasos de entrenamiento), antes de volver a disminuir.

Un artículo de 2020 encontró que usar la normalización de capas antes (en lugar de después) de las capas de atención multi-cabeza y de realimentación estabiliza el entrenamiento, sin requerir calentamiento de la tasa de aprendizaje. [ 51 ] Este es el "transformador pre-LN" y es más comúnmente utilizado, en comparación con el "transformador post-LN" original.

Preentrenamiento y ajuste fino

Los Transformers suelen preentrenarse primero mediante aprendizaje autosupervisado en un gran conjunto de datos genérico, seguido de un ajuste fino supervisado en un pequeño conjunto de datos específico para la tarea. El conjunto de datos de preentrenamiento suele ser un gran corpus sin etiquetar, como The Pile . Las tareas de preentrenamiento y ajuste fino suelen incluir:

El informe del transformador T5 [ 52 ] documenta una gran cantidad de tareas de preentrenamiento en lenguaje natural . Algunos ejemplos son:

  • restaurar o reparar texto incompleto o dañado. Por ejemplo, la entrada "Gracias por invitarme a tu fiesta la semana pasada " podría generar la salida "Gracias por invitarme a tu fiesta la semana pasada ".
  • traducción entre lenguas naturales ( traducción automática )
  • juzgar la aceptabilidad pragmática del lenguaje natural. Por ejemplo, la siguiente oración podría juzgarse como "no aceptable" [ 53 ] porque, aunque está bien formada sintácticamente, es improbable en el uso humano ordinario: El curso está saltando bien.

Si bien cada una de estas tareas resulta trivial u obvia para los hablantes nativos del idioma (o idiomas), por lo general han resultado un desafío para las generaciones anteriores de arquitecturas de aprendizaje automático.

Tareas

En general, existen tres clases de tareas de modelado del lenguaje: "enmascaradas" [ 54 ] , "autorregresivas" [ 55 ] y "prefixLM" [ 56 ] . Estas clases son independientes de una arquitectura de modelado específica, como Transformer, pero a menudo se discuten en el contexto de Transformer.

En una tarea enmascarada, [ 54 ] uno o más tokens se enmascaran, y el modelo produciría una distribución de probabilidad que predice cuáles son los tokens enmascarados en función del contexto. La función de pérdida para la tarea es típicamente la suma de las perplejidades logarítmicas de los tokens enmascarados:Pérdida=tfichas enmascaradasln(probabilidad de t condicionado a su contexto){\displaystyle {\text{Loss}}=-\sum _{t\in {\text{masked tokens}}}\ln({\text{probability of }}t{\text{ conditional on its context}})}y el modelo se entrena para minimizar esta función de pérdida. La serie de modelos BERT se entrena para la predicción de tokens enmascarados y otra tarea. ("Enmascarado" como en "modelado de lenguaje enmascarado" no es lo mismo que " atención enmascarada ").

En una tarea autorregresiva, [ 55 ] la secuencia completa se oculta inicialmente y el modelo genera una distribución de probabilidad para el primer token. Luego se revela el primer token y el modelo predice el segundo, y así sucesivamente. La función de pérdida para la tarea suele ser la misma. Los modelos de la serie GPT se entrenan mediante tareas autorregresivas.

En una tarea de prefixLM, [ 56 ] la secuencia se divide en dos partes. La primera parte se presenta como contexto, y el modelo predice el primer token de la segunda parte. Luego, este se revela, y el modelo predice el segundo token, y así sucesivamente. La función de pérdida para la tarea suele ser la misma. Los modelos de la serie T5 se entrenan con tareas de prefixLM. ("PrefixLM", como en "modelado de lenguaje de prefijos", no es lo mismo que "prefixLM", como en " modelo de lenguaje de prefijos ").

Arquitectura

Todos los transformadores tienen los mismos componentes primarios:

  • Tokenizadores, que convierten texto en tokens.
  • Capa de incrustación, que convierte los tokens y las posiciones de los tokens en representaciones vectoriales.
  • Las capas transformadoras realizan transformaciones repetidas sobre las representaciones vectoriales, extrayendo cada vez más información lingüística. Constan de capas de atención y de propagación hacia adelante alternadas. Existen dos tipos principales de capas transformadoras: capas codificadoras y capas decodificadoras, con variantes adicionales.
  • Capa de desincrustación, que convierte las representaciones vectoriales finales de nuevo en una distribución de probabilidad sobre los tokens.

La siguiente descripción reproduce fielmente el transformador descrito en el artículo original. Existen variantes, descritas en la siguiente sección .

Por convención, escribimos todos los vectores como vectores fila. Por ejemplo, pasar un vector a través de una capa lineal significa multiplicarlo por una matriz de pesos a la derecha, comoincógnitaW{\displaystyle xW}.

Tokenización

Como la arquitectura del transformador consiste intrínsecamente en operaciones con números (multiplicaciones de matrices, productos escalares, funciones de activación) en lugar de con texto, primero debe existir una correspondencia entre cualquier texto de entrada y alguna representación numérica. Esto se realiza en tres pasos.

En primer lugar, el texto de entrada es tratado por un preprocesador , que realiza transformaciones textuales y divide el texto en segmentos de grano grueso llamados pretokens . Esto último se conoce como pretokenización . En segundo lugar, cada pretoken se segmenta aún más en tokens mediante un tokenizador que espera ver solo los pretokens generados por su preprocesador. Cada token que produce es una cadena de uno o más caracteres que pertenecen a un conjunto finito de cadenas llamado vocabulario.V{\displaystyle V}En tercer lugar, dado que el vocabulario es finito y conocido de antemano, a cada token se le puede asignar un identificador entero, y esta correspondencia se aplica a la secuencia de tokens para representar cualquier texto de entrada como una secuencia numérica. Como esta correspondencia es biyectiva, la salida puede generar una secuencia de identificadores enteros que luego se pueden convertir de nuevo en tokens. Tras deshacer parte del preprocesamiento, el resultado vuelve a ser un texto legible.

Entrenar un tokenizador (a veces denominado vocabulización ) significa encontrar un vocabulario adecuado.V{\displaystyle V}, pero también aprender a usarlo, ya que cualquier cadena dadas{\displaystyle s}de longitud|s|{\displaystyle |s|}tiene2|s|1{\displaystyle 2^{|s|-1}}segmentaciones hipotéticas, algunas de las cuales contienen segmentos que no están en el vocabulario. El hiperparámetro más importante durante la vocabulización es el tamaño del vocabulario.|V|{\displaystyle |V|}Cuando el vocabulario aprendido es pequeño, generalmente consta de caracteres y cadenas más cortas, y las palabras se segmentan en muchos tokens. Con tamaños mayores, resulta viable dedicar tokens a palabras completas, aunque, dependiendo del preprocesador y el analizador léxico, no siempre se utilizarán los tokens más grandes disponibles para segmentar una palabra.

Dado que los tokens no siempre son palabras completas, también se les puede denominar subpalabras y los algoritmos de tokenización se pueden denominar tokenizadores de subpalabras . Esto también sirve para diferenciar estos sistemas de la terminología tradicional utilizada en sistemas antiguos de recuperación de información y procesamiento del lenguaje natural, donde "tokenización" se usaba para denotar lo que hoy se llama "pretokenización" (de forma muy simplificada: división en palabras). En los tokenizadores que producen tokens que no forman parte del vocabulario, se utiliza un token especial que sí pertenece al vocabulario como sustituto genérico, escrito como "[UNK]" para "desconocido". En principio, cualquier cadena podría ocultarse mediante un [UNK]. De hecho, en la recuperación de información, los pretokenizadores se utilizaban como tokenizadores (y también se les llamaba "tokenizadores") con un vocabulario a nivel de palabra que contenía un [UNK].

Los algoritmos de tokenización de subpalabras más utilizados son la codificación de pares de bytes (BPE) y el modelo de lenguaje unigrama (ULM), cada uno de los cuales incluye un algoritmo de vocabulización y un algoritmo de segmentación específico. También existen varios algoritmos de segmentación que no requieren aprendizaje y pueden aplicarse a partir de un vocabulario (generado por BPE o ULM, por ejemplo), como el reconocimiento voraz de tokens en un pretoken recorriéndolo de izquierda a derecha. Entre las implementaciones de software más conocidas de tokenizadores de subpalabras se encuentran el paquete de Python de Hugging Face,tokenizers implementado en Rust, y el sentencepiecepaquete de Python implementado en C++. Este último se denomina así porque una de sus opciones de configuración permite desactivar el pretokenizador integrado, convirtiendo así oraciones completas en un pretoken y haciendo que el tokenizador procese oraciones completas en lugar de palabras individuales.

Incrustación

Cada identificador de token entero se convierte en un vector de incrustación a través de una tabla de búsqueda . Dicho de forma equivalente, multiplica una representación one-hot del identificador de token por una matriz de incrustación.METRO{\displaystyle M}. Por ejemplo, si el identificador del token de entrada es3{\displaystyle 3}, entonces la representación one-hot es[0,0,0,1,0,0,]{\displaystyle [0,0,0,1,0,0,\dots ]}y su vector de incrustación esmimetrobmid(3)=[0,0,0,1,0,0,]METRO{\displaystyle \mathrm {Embed} (3)=[0,0,0,1,0,0,\dots ]M}Los vectores de incrustación de tokens se suman a sus respectivos vectores de codificación posicional (véase más abajo), produciendo la secuencia de vectores de entrada.

La dimensión de un vector de incrustación se llama tamaño oculto o tamaño de incrustación y se escribe comodemb{\displaystyle d_{\text{emb}}}. [ 38 ] Este tamaño se escribe comodmodelo{\displaystyle d_{\text{model}}}en el documento original del transformador. [ 1 ]

Desincrustación

Una capa de desincrustación es prácticamente lo opuesto a una capa de incrustación. Mientras que una capa de incrustación convierte un identificador de token en un vector, una capa de desincrustación convierte un vector en una distribución de probabilidad sobre los tokens.

Una ilustración de las 16 probabilidades de token más altas a temperatura 1, para cada token de salida en la respuesta de la cadena de pensamiento, donde el color representa cómo esa salida difiere de la misma indicación pero a temperatura 0.

La capa de desincrustación es una capa softmax lineal :Unortemimetrobmid(incógnita)=soFtmetroaincógnita(incógnitaW+b){\displaystyle \mathrm {UnEmbed} (x)=\mathrm {softmax} (xW+b)}La matriz tiene forma(demb,|V|){\displaystyle (d_{\text{emb}},|V|)}Algunas arquitecturas utilizan la transpuesta de la matriz de incrustación.METRO{\displaystyle M}como la matriz de desincrustaciónW{\displaystyle W}para evitar tener que duplicar la cantidad de parámetros relacionados con la incrustación y para evitar la divergencia durante el entrenamiento. Esta práctica se llama agrupamiento de pesos . [ 57 ]

Codificación posicional

Ilustración de la codificación posicional (absoluta) con parámetrosnorte=10000,d=100{\displaystyle N=10000,d=100}

La codificación posicional es una representación vectorial de tamaño fijo de las posiciones relativas de los tokens dentro de una secuencia: proporciona al modelo transformador información sobre la ubicación de las palabras en la secuencia de entrada. Esto genera un sesgo hacia el orden de la secuencia de entrada, de modo que, por ejemplo, la secuencia " hombre muerde perro " se procesa de forma diferente a "perro muerde hombre".

La codificación posicional se define como una función de tipoF:RRd{\displaystyle f:\mathbb {R} \to \mathbb {R} ^{d}}, dónded{\displaystyle d}es un entero par positivo . La codificación posicional completa definida en el artículo original [ 1 ] es:(F(t)2k,F(t)2k+1)=(pecado(θ),porque(θ))k{0,1,,d/21}{\displaystyle (f(t)_{2k},f(t)_{2k+1})=(\sin(\theta ),\cos(\theta ))\quad \forall k\in \{0,1,\ldots ,d/2-1\}}dóndeθ=trk,r=norte2/d{\displaystyle \theta ={\frac {t}{r^{k}}},r=N^{2/d}}.

Aquí,norte{\displaystyle N}es un parámetro libre que debería ser significativamente mayor que el más grandek{\displaystyle k}que se introduciría en la función de codificación posicional. El artículo original utilizanorte=10000{\displaystyle N=10000}.

La función se presenta en una forma más simple cuando se escribe como una función compleja de tipoF:Rdod/2{\displaystyle f:\mathbb {R} \to \mathbb {C} ^{d/2}}F(t)=(miit/rk)k=0,1,,d21{\displaystyle f(t)=\left(e^{it/r^{k}}\right)_{k=0,1,\ldots ,{\frac {d}{2}}-1}}dónder=norte2/d{\displaystyle r=N^{2/d}}.

La principal razón para utilizar esta función de codificación posicional es que, al usarla, los desplazamientos son transformaciones lineales:F(t+Δt)=diagramo(F(Δt))F(t){\displaystyle f(t+\Delta t)=\mathrm {diag} (f(\Delta t))f(t)}dóndeΔtR{\displaystyle \Delta t\in \mathbb {R} }es la distancia que se desea desplazar. Esto permite que el transformador tome cualquier posición codificada y encuentre la codificación de la posición n pasos adelante o n pasos atrás, mediante una multiplicación de matrices.

Al realizar una suma lineal, cualquier convolución también puede implementarse como una transformación lineal:jdojF(t+Δtj)=(jdojdiagramo(F(Δtj)))F(t){\displaystyle \sum _{j}c_{j}f(t+\Delta t_{j})=\left(\sum _{j}c_{j}\,\mathrm {diag} (f(\Delta t_{j}))\right)f(t)}para cualquier constantedoj{\displaystyle c_{j}}Esto permite que el transformador tome cualquier posición codificada y calcule la suma lineal de las posiciones codificadas de sus vecinos. Esta suma, al ser introducida en el mecanismo de atención, crea ponderaciones de atención en sus vecinos, de forma similar a lo que ocurre en un modelo de lenguaje de red neuronal convolucional . En palabras del autor: «Planteamos la hipótesis de que esto permitiría al modelo aprender fácilmente a prestar atención según su posición relativa».

En las implementaciones típicas, todas las operaciones se realizan sobre los números reales, no sobre los números complejos, pero dado que la multiplicación de números complejos se puede implementar como una multiplicación de matrices reales de 2x2 , se trata simplemente de una diferencia de notación.

Codificador-decodificador (descripción general)

Un bloque codificador-decodificador
Un transformador se compone de capas de codificador y capas de decodificador apiladas.

Al igual que los modelos seq2seq anteriores , el modelo transformador original utilizaba una arquitectura codificador-decodificador . El codificador consta de capas de codificación que procesan todos los tokens de entrada de forma conjunta, capa tras capa, mientras que el decodificador consta de capas de decodificación que procesan iterativamente la salida del codificador y los tokens de salida del decodificador hasta el momento.

El propósito de cada capa codificadora es crear representaciones contextualizadas de los tokens, donde cada representación corresponde a un token que "mezcla" información de otros tokens de entrada mediante un mecanismo de autoatención. Cada capa decodificadora contiene dos subcapas de atención: (1) atención cruzada para incorporar la salida del codificador (representaciones contextualizadas de los tokens de entrada) y (2) autoatención para "mezclar" información entre los tokens de entrada al decodificador (es decir, los tokens generados hasta el momento durante el tiempo de inferencia). [ 58 ] [ 59 ]

Tanto la capa codificadora como la decodificadora tienen una red neuronal de alimentación directa para el procesamiento adicional de sus salidas y contienen conexiones residuales y pasos de normalización de capa. [ 59 ] Estas capas de alimentación directa contienen la mayoría de los parámetros en un modelo transformador.

red de realimentación directa

El módulo de red de alimentación directa. Es una red de dos capas que mapeademb{\displaystyle d_{\text{emb}}}vectores de dimensión endemb{\displaystyle d_{\text{emb}}}Vectores de dimensión .

Los módulos de red de alimentación directa (FFN) en un transformador son perceptrones multicapa de 2 capas :FFnorte(incógnita)=ϕ(incógnitaW(1)+b(1))W(2)+b(2){\displaystyle \mathrm {FFN} (x)=\phi (xW^{(1)}+b^{(1)})W^{(2)}+b^{(2)}}dóndeW(1){\displaystyle W^{(1)}}yW(2){\displaystyle W^{(2)}}son matrices de peso yb(1){\displaystyle b^{(1)}}y b(2){\displaystyle b^{(2)}}son vectores de sesgo yϕ{\displaystyle \phi }es su función de activación. El transformador original utilizaba la activación ReLU .

El número de neuronas en la capa intermedia se denomina tamaño intermedio (GPT), [ 60 ] tamaño del filtro (BERT), [ 38 ] o tamaño de propagación hacia adelante (BERT). [ 38 ] Normalmente es mayor que el tamaño de la incrustación. Por ejemplo, tanto en la serie GPT-2 como en la serie BERT, el tamaño intermedio de un modelo es 4 veces su tamaño de incrustación:dffn=4demb{\displaystyle d_{\text{ffn}}=4d_{\text{emb}}}.

Atención de producto escalar

Atención, jefe

Diagrama de bloques de atención de producto escalar a escala
Recuentos de dimensiones exactas dentro de un módulo de atención de la cabeza

El mecanismo de atención utilizado en la arquitectura Transformer son unidades de atención de producto escalar escaladas . Para cada unidad, el modelo Transformer aprende tres matrices de pesos: los pesos de consultaWQ{\displaystyle W^{Q}}, los pesos claveWK{\displaystyle W^{K}}y los pesos de valorWV{\displaystyle W^{V}}.

El módulo toma tres secuencias, una secuencia de consulta, una secuencia de clave y una secuencia de valor. La secuencia de consulta es una secuencia de longitudsecuencia, consulta{\displaystyle \ell _{\text{seq, query}}}y cada entrada es un vector de dimensióndemb, consulta{\displaystyle d_{\text{emb, query}}}. Lo mismo ocurre con las secuencias de clave y valor.

Para cada vectorincógnitai,consulta{\displaystyle x_{i,{\text{query}}}}En la secuencia de consulta, se multiplica por una matriz.WQ{\displaystyle W^{Q}}para producir un vector de consultaqi=incógnitai,consultaWQ{\displaystyle q_{i}=x_{i,{\text{query}}}W^{Q}}La matriz de todos los vectores de consulta es la matriz de consulta:Q=incógnitaconsultaWQ{\displaystyle Q=X_{\text{query}}W^{Q}}De manera similar, construimos la matriz clave.K=incógnitallaveWK{\displaystyle K=X_{\text{key}}W^{K}}y la matriz de valoresV=incógnitavalorWV{\displaystyle V=X_{\text{value}}W^{V}}.

Por lo general, es el caso que todosWQ,WK,WV{\displaystyle W^{Q},W^{K},W^{V}}son matrices cuadradas, lo que significademb, consulta=dconsulta{\displaystyle d_{\text{emb, query}}=d_{\text{query}}}, etc.

Los pesos de atención se calculan utilizando los vectores de consulta y clave: el peso de atenciónaij{\displaystyle a_{ij}}desde tokeni{\displaystyle i}para ficharj{\displaystyle j}es el producto escalar entreqi{\displaystyle q_{i}}ykj{\displaystyle k_{j}}. Los pesos de atención se dividen por la raíz cuadrada de la dimensión de los vectores clave,dk{\displaystyle {\sqrt {d_{k}}}}, que estabiliza los gradientes durante el entrenamiento, y pasa a través de una función softmax que normaliza los pesos. El hecho de queWQ{\displaystyle W^{Q}}yWK{\displaystyle W^{K}}son matrices diferentes permite que la atención sea asimétrica: si el tokeni{\displaystyle i}atiende al tokenj{\displaystyle j}(es decirqikj{\displaystyle q_{i}\cdot k_{j}}es grande), esto no significa necesariamente que el tokenj{\displaystyle j}atenderá al tokeni{\displaystyle i}(es decirqjki{\displaystyle q_{j}\cdot k_{i}}podría ser pequeño). La salida de la unidad de atención para el tokeni{\displaystyle i}es la suma ponderada de los vectores de valor de todos los tokens, ponderados poraij{\displaystyle a_{ij}}, la atención del tokeni{\displaystyle i}a cada ficha.

El cálculo de atención para todos los tokens se puede expresar como un cálculo matricial grande utilizando la función softmax , que es útil para el entrenamiento debido a las optimizaciones de operaciones matriciales computacionales que calculan rápidamente las operaciones matriciales. Las matricesQ{\displaystyle Q},K{\displaystyle K}yV{\displaystyle V}se definen como las matrices donde lai{\displaystyle i}Las filas son vectoresqi{\displaystyle q_{i}},ki{\displaystyle k_{i}}, yvi{\displaystyle v_{i}}respectivamente. Entonces podemos representar la atención comoAtención(Q,K,V)=softmax(QKTdk)V{\displaystyle {\begin{aligned}{\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{\mathrm {T} }}{\sqrt {d_{k}}}}\right)V\end{aligned}}}

donde se aplica la función softmax sobre cada una de las filas de la matriz.

El número de dimensiones en un vector de consulta es el tamaño de la consulta.dconsulta{\displaystyle d_{\text{query}}}y de forma similar para el tamaño de la llave.dllave{\displaystyle d_{\text{key}}}y tamaño del valordvalor{\displaystyle d_{\text{value}}}La dimensión de salida de una cabeza de atención es su dimensión de cabeza .dcabeza{\displaystyle d_{\text{head}}}El mecanismo de atención requiere que se cumplan las siguientes tres igualdades:secuencia, clave=secuencia, valor,dconsulta=dllave,dvalor=dcabeza{\displaystyle \ell _{\text{seq, key}}=\ell _{\text{seq, value}},\;d_{\text{query}}=d_{\text{key}},\;d_{\text{value}}=d_{\text{head}}}pero por lo demás no tiene restricciones.

Si la cabeza de atención se utiliza de forma autoatención, entoncesincógnitaconsulta=incógnitallave=incógnitavalor{\displaystyle X_{\text{query}}=X_{\text{key}}=X_{\text{value}}}. Si el cabezal de atención se utiliza de forma cruzada, entonces normalmenteincógnitaconsultaincógnitallave=incógnitavalor{\displaystyle X_{\text{query}}\neq X_{\text{key}}=X_{\text{value}}}En teoría, es posible que los tres sean diferentes, pero en la práctica rara vez ocurre así.

Atención multicabeza

Diagrama de bloques de atención multi-cabezal
Recuentos de dimensiones exactas dentro de un módulo de atención multi-cabeza

Un conjunto de(WQ,WK,WV){\displaystyle \left(W^{Q},W^{K},W^{V}\right)}Las matrices se denominan cabezas de atención , y cada capa en un modelo transformador tiene múltiples cabezas de atención. Mientras que cada cabeza de atención atiende a los tokens que son relevantes para cada token, las múltiples cabezas de atención permiten que el modelo haga esto para diferentes definiciones de "relevancia". Específicamente, las matrices de proyección de consulta y clave,WQ{\displaystyle W^{Q}}yWK{\displaystyle W^{K}}, que participan en el cálculo de la puntuación de atención, define la "relevancia". Mientras tanto, la matriz de proyección de valorWV{\displaystyle W^{V}}, en combinación con la parte de la matriz de proyección de salidaWO{\displaystyle W^{O}}, determina cómo los tokens atendidos influyen en la información que se pasa a las capas subsiguientes y, en última instancia, a los logits de salida. Además, el alcance de la atención, o el rango de relaciones de tokens capturadas por cada cabeza de atención, puede expandirse a medida que los tokens pasan por capas sucesivas. Esto permite que el modelo capture dependencias más complejas y de largo alcance en capas más profundas. Muchas cabezas de atención de transformador codifican relaciones de relevancia que son significativas para los humanos. Por ejemplo, algunas cabezas de atención pueden atender principalmente a la siguiente palabra, mientras que otras atienden principalmente de los verbos a sus objetos directos. [ 61 ] Los cálculos para cada cabeza de atención pueden realizarse en paralelo , lo que permite un procesamiento rápido. Las salidas para la capa de atención se concatenan para pasar a las capas de la red neuronal de alimentación directa .

Concretamente, supongamos que las múltiples cabezas de atención se indexan mediantei{\displaystyle i}, entonces tenemosAtención multicabezal(Q,K,V)=Concatenari[nortecabezas](Atención(incógnitaWiQ,incógnitaWiK,incógnitaWiV))WO{\displaystyle {\text{MultiheadAttention}}(Q,K,V)={\text{Concat}}_{i\in [n_{\text{heads}}]}({\text{Attention}}(XW_{i}^{Q},XW_{i}^{K},XW_{i}^{V}))W^{O}}donde la matrizincógnita{\displaystyle X}es la concatenación de incrustaciones de palabras y las matricesWiQ,WiK,WiV{\displaystyle W_{i}^{Q},W_{i}^{K},W_{i}^{V}}son "matrices de proyección" propiedad de cada cabeza de atención individuali{\displaystyle i}, yWO{\displaystyle W^{O}}es una matriz de proyección final propiedad de todo el cabezal de atención multicabezal.

Teóricamente es posible que cada cabeza de atención tenga una dimensión de cabeza diferente.dcabeza{\displaystyle d_{\text{head}}}, pero en la práctica rara vez es así.

Como ejemplo, en el modelo GPT-2 más pequeño, solo existen mecanismos de autoatención. Tiene las siguientes dimensiones:demb=768,nortecabeza=12,dcabeza=64{\displaystyle d_{\text{emb}}=768,n_{\text{head}}=12,d_{\text{head}}=64}Desde12×64=768{\displaystyle 12\times 64=768}, su matriz de proyección de salidaWOR(12×64)×768{\displaystyle W^{O}\in \mathbb {R} ^{(12\times 64)\times 768}}es una matriz cuadrada.

Atención enmascarada

La arquitectura del transformador está construida para calcular los tokens de salida de forma iterativa. Suponiendo quet=0{\displaystyle t=0}se refiere al cálculo del primer token de salidai=0{\displaystyle i=0}, para el pasot>0{\displaystyle t>0}, el token de salidai=0{\displaystyle i=0}permanecerá constante. Esto garantiza propiedades del modelo similares a las de los modelos autorregresivos . [ 1 ] Por lo tanto, en cada paso de tiempot{\displaystyle t}, el cálculo para todas las salidasi{\displaystyle i}no debería tener acceso a los tokens en la posiciónj{\displaystyle j}paraj>=i{\displaystyle j>=i}(como es naturalmente el caso para el paso de tiempot=i{\displaystyle t=i}, cuando los tokensj>t{\displaystyle j>t}aún no se han calculado). Este comportamiento se puede lograr antes de la etapa softmax agregando una matriz de máscara.METRO{\displaystyle M}eso es{\displaystyle -\infty }en las entradas donde se debe cortar el vínculo de atención, y0{\displaystyle 0}en otros lugares:Atención enmascarada(Q,K,V)=softmax(METRO+QKTdk)V{\displaystyle {\begin{aligned}{\text{MaskedAttention}}(Q,K,V)={\text{softmax}}\left(M+{\frac {QK^{\mathrm {T} }}{\sqrt {d_{k}}}}\right)V\end{aligned}}}La siguiente matriz se utiliza comúnmente en módulos de autoatención del decodificador, denominados "enmascaramiento causal":METROcausal=[0000000000]{\displaystyle M_{\text{causal}}={\begin{bmatrix}0&-\infty &-\infty &\dots &-\infty \\0&0&-\infty &\dots &-\infty \\0&0&0&\dots &-\infty \\\vdots &\vdots &\vdots &\ddots &\vdots \\0&0&0&\dots &0\end{bmatrix}}}

En otras palabras, significa que cada token puede prestar atención a sí mismo y a todos los tokens anteriores, pero no a los posteriores. Un módulo de atención no enmascarado puede considerarse como un módulo de atención enmascarado donde la máscara tiene todas las entradas en cero. Como ejemplo de un uso poco común de la matriz de máscaras, XLNet considera todas las máscaras de la formaPAGMETROcausalPAG1{\displaystyle PM_{\text{causal}}P^{-1}}, dóndePAG{\displaystyle P}es una matriz de permutación aleatoria . [ 62 ]

Codificador

Una capa codificadora

Un codificador consta de una capa de incrustación, seguida de múltiples capas de codificador.

Cada capa codificadora consta de dos componentes principales: un mecanismo de autoatención y una capa de propagación hacia adelante. Recibe una entrada como una secuencia de vectores, aplica el mecanismo de autoatención para producir una secuencia intermedia de vectores y, a continuación, aplica la capa de propagación hacia adelante a cada vector individualmente. Esquemáticamente, tenemos:vectores de entrada dados h0,h1,combinarlos en una matriz H=[h0h1]Capa de codificador(H)=[FFN(Atención multicabezal(H,H,H)0)FFN(Atención multicabezal(H,H,H)1)]{\displaystyle {\begin{aligned}{\text{given input vectors }}&h_{0},h_{1},\dots \\{\text{combine them into a matrix }}H&={\begin{bmatrix}h_{0}\\h_{1}\\\vdots \end{bmatrix}}\\{\text{EncoderLayer}}(H)&={\begin{bmatrix}{\text{FFN}}({\text{MultiheadAttention}}(H,H,H)_{0})\\{\text{FFN}}({\text{MultiheadAttention}}(H,H,H)_{1})\\\vdots \end{bmatrix}}\\\end{aligned}}}

dóndeFFN{\displaystyle {\text{FFN}}}significa "red de realimentación directa". Podemos escribirlo de forma más concisa comoCapa de codificador(H)=FFN(Atención multicabezal(H,H,H)){\displaystyle {\text{EncoderLayer}}(H)={\text{FFN}}({\text{MultiheadAttention}}(H,H,H))}con la convención implícita de que elFFN{\displaystyle {\text{FFN}}}se aplica a cada fila de la matriz individualmente.

Las capas del codificador están apiladas. La primera capa del codificador toma la secuencia de vectores de entrada de la capa de incrustación, generando una secuencia de vectores. Esta secuencia de vectores es procesada por el segundo codificador, y así sucesivamente. La salida de la última capa del codificador es utilizada posteriormente por el decodificador.

Dado que el codificador procesa toda la entrada a la vez, cada token puede prestar atención a todos los demás tokens (atención de todos a todos), por lo que no hay necesidad de enmascaramiento causal.

Descifrador

Una capa decodificadora

Un decodificador consta de una capa de incrustación, seguida de múltiples capas de decodificación, y finalmente una capa de desincrustación.

Cada decodificador consta de tres componentes principales: un mecanismo de autoatención con enmascaramiento causal, un mecanismo de atención cruzada y una red neuronal de alimentación directa. El decodificador funciona de manera similar al codificador, pero se inserta un mecanismo de atención adicional que extrae información relevante de las codificaciones generadas por los codificadores. Este mecanismo también se conoce como atención codificador-decodificador . [ 1 ] [ 59 ]

Al igual que el primer codificador, el primer decodificador toma como entrada información posicional e incrustaciones de la secuencia de salida, en lugar de codificaciones. El transformador no debe usar la salida actual o futura para predecir una salida, por lo que la secuencia de salida debe estar parcialmente enmascarada para evitar este flujo de información inverso. [ 1 ] Esto permite la generación de texto autorregresiva . Para la decodificación, la atención de todos a todos es inapropiada, porque un token no puede atender a tokens que aún no se han generado. Por lo tanto, el módulo de autoatención en el decodificador está causalmente enmascarado.

En cambio, el mecanismo de atención cruzada se centra en los vectores de salida del codificador, que se calculan antes de que el decodificador comience a decodificar. Por consiguiente, no es necesario aplicar enmascaramiento en el mecanismo de atención cruzada.

Esquemáticamente, tenemos:H=Atención multicabeza enmascarada(H,H,H)Capa decodificadora(H)=FFN(Atención multicabezal(H,Hmi,Hmi)){\displaystyle {\begin{aligned}H'&={\text{MaskedMultiheadAttention}}(H,H,H)\\{\text{DecoderLayer}}(H)&={\text{FFN}}({\text{MultiheadAttention}}(H',H^{E},H^{E}))\end{aligned}}}dóndeHmi{\displaystyle H^{E}}es la matriz cuyas filas son los vectores de salida del codificador.

Tras el último decodificador, se aplica una capa final de eliminación de incrustaciones para generar las probabilidades de salida del vocabulario. A continuación, se selecciona uno de los tokens según su probabilidad, y el decodificador se ejecuta de nuevo para obtener el siguiente token, y así sucesivamente, generando el texto de salida de forma autorregresiva.

Arquitectura de transformador completo

Subcapas

(a) Una capa de codificador y una capa de decodificador. (b) Dos capas de codificador y dos capas de decodificador. Las subcapas también están etiquetadas.

Cada capa codificadora contiene 2 subcapas: la de autoatención y la de propagación hacia adelante. Cada capa decodificadora contiene 3 subcapas: la de autoatención con enmascaramiento causal, la de atención cruzada y la de propagación hacia adelante.

Codificador Transformer con norm-first y norm-last
Decodificador Transformer con norm-first y norm-last
Diagrama de bloques para la arquitectura completa del transformador
Jerarquía esquemática de objetos para la arquitectura completa del transformador, en estilo de programación orientada a objetos.

Los últimos detalles son las conexiones residuales y la normalización de capas (denominada "LayerNorm" o "LN" en lo sucesivo), que, si bien conceptualmente no son necesarias, resultan imprescindibles para la estabilidad numérica y la convergencia.

Las conexiones residuales se introducen para evitar problemas de gradiente evanescente y estabilizar el proceso de entrenamiento. Se pueden expresar medianteincógnitaF(incógnita)+incógnita{\displaystyle x\mapsto F(x)+x}, dóndeF{\displaystyle F}es un componente dado del transformador. Añadiendo la entradaincógnita{\displaystyle x}puede preservar la información de entrada y evitar problemas cuando el gradiente deF(incógnita){\displaystyle F(x)}es cercano a cero.

De forma similar a como se aplican individualmente los módulos de red de alimentación directa a cada vector, la función LayerNorm también se aplica individualmente a cada vector.

Existen dos convenciones comunes en uso: la convención post-LN y la convención pre-LN . En la convención post-LN, la salida de cada subcapa esLaymirnorteormetro(incógnita+Sblaymir(incógnita)){\displaystyle \mathrm {LayerNorm} (x+\mathrm {Sublayer} (x))}dóndeSblaymir(incógnita){\displaystyle \mathrm {Sublayer} (x)}es la función implementada por la propia subcapa.

En la convención pre-LN, la salida de cada subcapa esincógnita+Sblaymir(Laymirnorteormetro(incógnita)){\displaystyle x+\mathrm {Sublayer} (\mathrm {LayerNorm} (x))}El transformador original de 2017 utilizó la convención post-LN. Su entrenamiento resultó complejo y requirió un ajuste preciso de los hiperparámetros y un periodo de calentamiento en la tasa de aprendizaje, donde esta comienza con un valor bajo y aumenta gradualmente. La convención pre-LN, propuesta en varias ocasiones en 2018, [ 63 ] demostró ser más fácil de entrenar, sin necesidad de calentamiento, lo que condujo a una convergencia más rápida. [ 51 ]

Pseudocódigo

A continuación se muestra el pseudocódigo para un transformador codificador-decodificador pre-LN estándar, adaptado de Formal Algorithms for Transformers [ 64 ].

Entrada: Entrada del codificador t_e Entrada del decodificador t_d Salida: Matriz de distribuciones de probabilidad, con forma (tamaño del vocabulario del decodificador x longitud (secuencia de salida del decodificador)) /* codificador */ z_e ← codificador.tokenizador(t_e) para cada t en 1:length(z_e) hacer z_e[t] ← encoder.embedding(z_e[t]) + encoder.positional_embedding(t) para cada l en 1:length(encoder.layers) hacer capa ← codificador.capas[l] /* primera subcapa */ z_e_copy ← copy(z_e) para cada t en 1:length(z_e) hacer z_e[t] ← capa.layer_norm(z_e[t]) z_e ← capa.multihead_attention(z_e, z_e, z_e) para cada t en 1:length(z_e) hacer z_e[t] ← z_e[t] + z_e_copy[t] /* segunda subcapa */ z_e_copy ← copy(z_e) para cada t en 1:length(z_e) hacer z_e[t] ← capa.layer_norm(z_e[t]) z_e ← capa.feedforward(z_e) para cada t en 1:length(z_e) hacer z_e[t] ← z_e[t] + z_e_copy[t] para cada t en 1:length(z_e) hacer z_e[t] ← codificador.final_layer_norm(z_e[t]) /* decodificador */ z_d ← decodificador.tokenizador(t_d) para cada t en 1:length(z_d) hacer z_d[t] ← decoder.embedding(z_d[t]) + decoder.positional_embedding(t) para cada l en 1:length(decoder.layers) hacer capa ← decodificador.capas[l] /* primera subcapa */ z_d_copy ← copy(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.atención_multicabeza_enmascarada(z_d, z_d, z_d) para cada t en 1:length(z_d) hacer z_d[t] ← z_d[t] + z_d_copy[t] /* segunda subcapa */ z_d_copy ← copy(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.multihead_attention(z_d, z_e, z_e) para cada t en 1:length(z_d) hacer z_d[t] ← z_d[t] + z_d_copy[t] /* tercera subcapa */ z_d_copy ← copy(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.feedforward(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← z_d[t] + z_d_copy[t] z_d ← decodificador.final_layer_norm(z_d) distribuciones_de_salida ← [] para cada t en 1:length(z_d) hacer distribuciones_de_salida.append(decodificador.unembed(z_d[t])) devolver distribuciones_de_salida

Terminología

La arquitectura del transformador, al ser modular, permite variaciones. Aquí se describen varias variaciones comunes. [ 52 ]

Un transformador "solo codificador" aplica el codificador para mapear un texto de entrada en una secuencia de vectores que lo representan. Esto se usa generalmente para la incrustación de texto y el aprendizaje de representaciones para aplicaciones posteriores. BERT es solo codificador. Actualmente se usan con menos frecuencia, ya que se ha descubierto que no son significativamente mejores que entrenar un transformador codificador-decodificador y luego tomar solo el codificador. [ 56 ] También se les conoce como "de todo a todo" o "similares a BERT".

Un transformador "solo decodificador" no es literalmente solo decodificador, ya que sin un codificador, el mecanismo de atención cruzada no tiene a qué prestar atención. Por lo tanto, las capas de decodificación en un transformador solo decodificador se componen de solo dos subcapas: la autoatención con enmascaramiento causal y la red de alimentación directa. Esto se suele utilizar para la generación de texto y el seguimiento de instrucciones . Los modelos de las series GPT y Chinchilla son solo decodificadores. También se les conoce como "autorregresivos" o "causales".

Un transformador "codificador-decodificador" es generalmente igual que el transformador original, con 2 subcapas por capa de codificador y 3 subcapas por capa de decodificador, etc. Pueden presentar pequeñas mejoras arquitectónicas, como funciones de activación alternativas , cambios en la ubicación de la normalización , etc. También se suele utilizar para la generación de texto y el seguimiento de instrucciones. Los modelos de la serie T5 son codificadores-decodificadores. [ 52 ]

Un "prefixLM" (modelo de lenguaje de prefijos) es una arquitectura que solo utiliza decodificadores, pero con enmascaramiento de prefijos, que es diferente del enmascaramiento causal. Específicamente, tiene una máscara de la forma [ 52 ] : Figura 3METROprefijoLM=[00METROcausal]{\displaystyle M_{\text{prefixLM}}={\begin{bmatrix}\mathbf {0} &-\infty \\\mathbf {0} &M_{\text{causal}}\end{bmatrix}}}donde las primeras columnas corresponden al "prefijo" y las columnas subsiguientes corresponden al texto generado autorregresivamente en función del prefijo. Se asemejan a los modelos codificador-decodificador, pero tienen menor "esparcidad". Dichos modelos se utilizan raramente, aunque se citan como posibilidades teóricas y comparaciones de referencia. [ 56 ]

También existen modelos seq2seq mixtos. Por ejemplo, en 2020, Google Translate reemplazó el modelo anterior de codificador-decodificador RNN con un modelo de codificador-decodificador RNN basado en transformadores, ya que los decodificadores basados ​​en transformadores no parecían aumentar significativamente la calidad, a diferencia del codificador, mientras que el decodificador RNN era mucho más rápido. [ 40 ]

Trabajos posteriores

Funciones de activación alternativas

El transformador original utiliza la función de activación ReLU . Se desarrollaron otras funciones de activación. La serie Llama y PaLM utilizaron SwiGLU; [ 65 ] tanto GPT-1 como BERT [ 38 ] utilizaron GELU. [ 66 ]

Las funciones de activación alternativas se utilizan a menudo en combinación con unidades lineales con compuerta en el módulo de alimentación directa. [ 65 ]

Normalizaciones alternativas

La normalización utilizada en el transformador puede ser diferente de LayerNorm. Un ejemplo es RMSNorm [ 67 ] , que se utiliza en la serie Llama . Otros ejemplos incluyen ScaleNorm [ 68 ] y FixNorm [ 68 ] .

Codificaciones posicionales alternativas

Los transformadores pueden utilizar otros métodos de codificación posicional distintos del sinusoidal. [ 69 ]

El artículo original sobre transformadores informó del uso de una codificación posicional aprendida, [ 70 ] pero no la encontró superior a la sinusoidal. [ 1 ] Posteriormente, [ 71 ] se descubrió que el enmascaramiento causal en sí mismo proporciona suficiente señal a un decodificador transformador como para que pueda aprender a realizar implícitamente una codificación posicional absoluta sin el módulo de codificación posicional.

Soga

RoPE (incrustación posicional rotatoria), [ 72 ] se explica mejor considerando una lista de vectores bidimensionales.[(incógnita1(1),incógnita1(2)),(incógnita2(1),incógnita2(2)),(incógnita3(1),incógnita3(2)),...]{\displaystyle [(x_{1}^{(1)},x_{1}^{(2)}),(x_{2}^{(1)},x_{2}^{(2)}),(x_{3}^{(1)},x_{3}^{(2)}),...]}Ahora elige algún ángulo.θ{\displaystyle \theta }. Entonces la codificación RoPE esSoga(incógnitametro(1),incógnitametro(2),metro)=(porquemetroθpecadometroθpecadometroθporquemetroθ)(incógnitametro(1)incógnitametro(2))=(incógnitametro(1)porquemetroθincógnitametro(2)pecadometroθincógnitametro(2)porquemetroθ+incógnitametro(1)pecadometroθ){\displaystyle {\text{RoPE}}{\big (}x_{m}^{(1)},x_{m}^{(2)},m{\big )}={\begin{pmatrix}\cos m\theta &-\sin m\theta \\\sin m\theta &\cos m\theta \end{pmatrix}}{\begin{pmatrix}x_{m}^{(1)}\\x_{m}^{(2)}\\\end{pmatrix}}={\begin{pmatrix}x_{m}^{(1)}\cos m\theta -x_{m}^{(2)}\sin m\theta \\x_{m}^{(2)}\cos m\theta +x_{m}^{(1)}\sin m\theta \\\end{pmatrix}}}De forma equivalente, si escribimos los vectores bidimensionales como números complejoszmetro:=incógnitametro(1)+iincógnitametro(2){\displaystyle z_{m}:=x_{m}^{(1)}+ix_{m}^{(2)}}, entonces la codificación RoPE es simplemente una multiplicación por un ángulo:Soga(zmetro,metro)=miimetroθzmetro{\displaystyle {\text{RoPE}}{\big (}z_{m},m{\big )}=e^{im\theta }z_{m}}Para obtener una lista de2norte{\displaystyle 2n}Vectores de dimensión , un codificador RoPE se define mediante una secuencia de ángulosθ(1),...,θ(norte){\displaystyle \theta ^{(1)},...,\theta ^{(n)}}A continuación, se aplica la codificación RoPE a cada par de coordenadas.

La ventaja de RoPE es que el producto escalar entre dos vectores depende únicamente de su ubicación relativa:Soga(incógnita,metro)TSoga(y,norte)=Soga(incógnita,metro+k)TSoga(y,norte+k){\displaystyle {\text{RoPE}}{\big (}x,m{\big )}^{T}{\text{RoPE}}{\big (}y,n{\big )}={\text{RoPE}}{\big (}x,m+k{\big )}^{T}{\text{RoPE}}{\big (}y,n+k{\big )}} para cualquier número enterok{\displaystyle k}.

Coartada

ALiBi (Atención con sesgos lineales) [ 73 ] no reemplaza al codificador posicional del transformador original. En cambio, es un codificador posicional adicional que se conecta directamente al mecanismo de atención. Específicamente, el mecanismo de atención ALiBi esAtención(Q,K,V)=softmax(QKTdk+sB)V{\displaystyle {\begin{aligned}{\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{\mathrm {T} }}{\sqrt {d_{k}}}}+sB\right)V\end{aligned}}}Aquí,s{\displaystyle s}es un número real ("escalar"), yB{\displaystyle B}es la matriz de sesgo lineal definida porB=(0123101221013210){\displaystyle B={\begin{pmatrix}0&1&2&3&\cdots \\-1&0&1&2&\cdots \\-2&-1&0&1&\cdots \\-3&-2&-1&0&\cdots \\\vdots &\vdots &\vdots &\vdots &\ddots \\\end{pmatrix}}}en otras palabras,Bi,j=ji{\displaystyle B_{i,j}=j-i}La idea es que la matriz de sesgo lineal es una máscara suavizada. Al igual que0{\displaystyle 0}representan la atención prestada y{\displaystyle -\infty }representa que no se presta atención, la matriz de sesgo lineal aumenta la atención prestada en una dirección y disminuye la atención prestada en la otra dirección.

ALiBi permite el preentrenamiento en ventanas de contexto cortas y el ajuste fino en ventanas de contexto más largas. Dado que se integra directamente con el mecanismo de atención, puede combinarse con cualquier codificador posicional conectado a la parte inferior de la red (donde se ubican el codificador sinusoidal del transformador original, así como RoPE y muchos otros).

Codificaciones de posición relativa

Las codificaciones de posición relativa [ 74 ] son ​​similares a ALiBi, pero más genéricas:Atención(Q,K,V)=softmax(QKTdk+B)V{\displaystyle {\begin{aligned}{\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{\mathrm {T} }}{\sqrt {d_{k}}}}+B\right)V\end{aligned}}}dóndeB{\displaystyle B}es una matriz de Toeplitz , es decir,Bi,j=Bi,j{\displaystyle B_{i,j}=B_{i',j'}}cuando seaij=ij{\displaystyle i-j=i'-j'}Esto contrasta con la codificación posicional sinusoidal original, que es una "codificación posicional absoluta". [ 75 ]

Implementación eficiente

El modelo Transformer se ha implementado en marcos de aprendizaje profundo estándar como TensorFlow y PyTorch . Transformers es una biblioteca producida por Hugging Face que proporciona arquitecturas basadas en Transformer y modelos preentrenados. [ 12 ]

Almacenamiento en caché KV

Cuando se utiliza un transformador autorregresivo para la inferencia, como la generación de texto, el vector de consulta es diferente en cada paso, pero los vectores clave y valor ya calculados siempre son los mismos. El método de almacenamiento en caché KV guarda los vectores clave y valor calculados en cada bloque de atención, de modo que no se vuelven a calcular con cada nuevo token. PagedAttention aplica paginación de memoria al almacenamiento en caché KV. [ 76 ] [ 77 ] [ 78 ]

Si se utiliza un transformador con un mensaje predefinido, como ["Usted es un agente de atención al cliente..."], se pueden calcular los vectores clave-valor para dicho mensaje y guardarlos en el disco. El ahorro en recursos computacionales es significativo cuando el modelo se utiliza para muchas interacciones breves en tiempo real, como en los chatbots en línea.

En general, cuando un usuario utiliza un transformador autorregresivo para generar una continuación de una secuencia de tokens, el modelo primero realiza un paso hacia adelante sobre esta secuencia, mediante el cual se calculan las cachés KV sobre la misma. Esto se denomina prellenado . Los proveedores de servicios en la nube que dan servicio a modelos Transformer de gran tamaño pueden utilizar inferencia desagregada , en la que el prellenado y la decodificación se realizan en hardware especializado independiente. [ 79 ]

Atención rápida

FlashAttention [ 80 ] es un algoritmo que implementa el mecanismo de atención del transformador de manera eficiente en una GPU . Es un algoritmo que evita la comunicación y realiza multiplicaciones de matrices en bloques , de manera que cada bloque cabe dentro de la caché de una GPU, y mediante una gestión cuidadosa de los bloques minimiza la copia de datos entre las cachés de la GPU (ya que el movimiento de datos es lento).

El método FlashAttention es un algoritmo que evita la comunicación y fusiona estas operaciones en un único bucle, aumentando la intensidad aritmética . Es un algoritmo en línea que calcula las siguientes cantidades: [ 81 ] [ 82 ]zi=qTkimetroi=máximo(z1,,zi)=máximo(metroi1,zi)i=miz1metroi++mizimetroi=mimetroi1metroii1+mizimetroioi=miz1metroiv1++mizimetroivi=mimetroi1metroioi1+mizimetroivi{\displaystyle {\begin{aligned}z_{i}&=q^{T}k_{i}&\\m_{i}&=\max(z_{1},\dots ,z_{i})&={}&\max(m_{i-1},z_{i})\\\ell _{i}&=e^{z_{1}-m_{i}}+\dots +e^{z_{i}-m_{i}}&={}&e^{m_{i-1}-m_{i}}\ell _{i-1}+e^{z_{i}-m_{i}}\\o_{i}&=e^{z_{1}-m_{i}}v_{1}+\dots +e^{z_{i}-m_{i}}v_{i}&={}&e^{m_{i-1}-m_{i}}o_{i-1}+e^{z_{i}-m_{i}}v_{i}\end{aligned}}}y devolucionesonorte/norte{\displaystyle o_{N}/\ell _{N}}En la práctica, FlashAttention opera sobre múltiples consultas y claves por iteración del bucle, de manera similar a la multiplicación de matrices en bloque . Si se necesita retropropagación , entonces los vectores de salida y las matrices intermedias[metro1,,metronorte],[1,,norte]{\displaystyle [m_{1},\dots ,m_{N}],[\ell _{1},\dots ,\ell _{N}]}se almacenan en caché y, durante el paso hacia atrás, las matrices de atención se rematerializan a partir de estas, lo que lo convierte en una forma de punto de control de gradiente.

Se desarrolló una versión mejorada, FlashAttention-2, [ 83 ] [ 84 ] [ 85 ] para satisfacer la creciente demanda de modelos de lenguaje capaces de manejar contextos más largos. Ofrece mejoras en la partición del trabajo y el paralelismo, lo que le permite alcanzar hasta 230 TFLOPs/s en GPU A100 ( FP16 / BF16 ), un aumento de velocidad de 2x con respecto al FlashAttention original.

Los avances clave en FlashAttention-2 incluyen la reducción de FLOPs que no son de multiplicación de matrices, un paralelismo mejorado en la dimensión de longitud de secuencia, una mejor partición del trabajo entre warps de GPU y soporte añadido para dimensiones de cabezal de hasta 256 y atención de consultas múltiples (MQA) y atención de consultas agrupadas (GQA). [ 86 ]

Las pruebas de rendimiento revelaron que FlashAttention-2 es hasta 2 veces más rápido que FlashAttention y hasta 9 veces más rápido que una implementación de atención estándar en PyTorch. Los desarrollos futuros incluyen la optimización para nuevo hardware como las GPU H100 y nuevos tipos de datos como FP8 .

FlashAttention-4 se centra en la segmentación para aumentar el rendimiento de las instrucciones y fue desarrollado para funcionar particularmente bien en las GPU Blackwell . [ 87 ]

Atención a múltiples consultas

Comparación entre varias formas diferentes de mecanismo de atención y la cantidad de almacenamiento en caché KV necesaria para cada una.

La atención de consultas múltiples cambia el mecanismo de atención de múltiples cabezas. [ 88 ] Mientras que normalmente,

Atención multicabezal(Q,K,V)=Concatenari[nortecabezas](Atención(incógnitaWiQ,incógnitaWiK,incógnitaWiV))WO{\displaystyle {\text{MultiheadAttention}}(Q,K,V)={\text{Concat}}_{i\in [n_{\text{heads}}]}\left({\text{Attention}}(XW_{i}^{Q},XW_{i}^{K},XW_{i}^{V})\right)W^{O}}Con atención de consultas múltiples, solo hay unaWK,WV{\displaystyle W^{K},W^{V}}, de este modo:

Atención de consulta múltiple(Q,K,V)=Concatenari[nortecabezas](Atención(incógnitaWiQ,incógnitaWK,incógnitaWV))WO{\displaystyle {\text{MultiQueryAttention}}(Q,K,V)={\text{Concat}}_{i\in [n_{\text{heads}}]}\left({\text{Attention}}(XW_{i}^{Q},XW^{K},XW^{V})\right)W^{O}}

Esto tiene un efecto neutro sobre la calidad del modelo y la velocidad de entrenamiento, pero aumenta la velocidad de inferencia.

En términos más generales, la atención de consulta agrupada (GQA) divide las cabezas de atención en grupos, cada uno de los cuales comparte el par clave-valor. MQA es GQA con un grupo, mientras que la atención multicabezal estándar es GQA con el número máximo de grupos. [ 89 ]

La arquitectura de V2, que muestra tanto MLA como una variante de mezcla de expertos [ 90 ] : Figura 2

La atención latente multi-cabeza (MLA) es una aproximación de bajo rango a la MHA estándar. Específicamente, cada vector oculto, antes de entrar en el mecanismo de atención, se proyecta primero en dos espacios de baja dimensión ("espacio latente"), uno para la consulta y otro para el vector clave-valor (vector KV). Este diseño minimiza la caché KV, ya que solo es necesario almacenar en caché el vector KV de baja dimensión. [ 90 ]

Decodificación especulativa

La decodificación especulativa [ 91 ] [ 92 ] es un método para acelerar la decodificación de tokens. De forma similar a la ejecución especulativa en las CPU, los tokens futuros se calculan rápidamente y luego se verifican. Si los tokens calculados rápidamente son incorrectos, se descartan y se vuelven a calcular lentamente.

El factor clave en la decodificación especulativa es que un decodificador transformador puede verificar más rápido de lo que puede decodificar, en el siguiente sentido.

Supongamos que tenemos dos modelos transformadores como GPT-3 y GPT-3-small, ambos con un tamaño de ventana de contexto de 512. Para generar una ventana de contexto completa de forma autorregresiva con decodificación voraz con GPT-3, debe ejecutarse 512 veces, generando un token en cada ejecución.incógnita1,incógnita2,...,incógnita512{\displaystyle x_{1},x_{2},...,x_{512}}tomarse el tiempo512TGPT-3{\displaystyle 512T_{\text{GPT-3}}}Sin embargo, si tuviéramos una estimación fundamentada de los valores de estos tokens, podríamos verificarlos todos en paralelo, en una sola ejecución del modelo, comprobando que cada uno...incógnitat{\displaystyle x_{t}}es de hecho el token con la mayor probabilidad logarítmica en elt{\displaystyle t}-th salida.

En la decodificación especulativa, se utiliza un modelo más pequeño u otra heurística simple para generar algunos tokens especulativos que posteriormente son verificados por el modelo más grande. Por ejemplo, supongamos que usamos GPT-3-small para generar cuatro tokens especulativos:incógnita~1,incógnita~2,incógnita~3,incógnita~4{\displaystyle {\tilde {x}}_{1},{\tilde {x}}_{2},{\tilde {x}}_{3},{\tilde {x}}_{4}}Esto solo toma4TGPT-3-pequeño{\displaystyle 4T_{\text{GPT-3-small}}}Estos tokens se procesan luego a través del algoritmo GPT-3 más grande de una sola vez. Supongamos queincógnita~1{\displaystyle {\tilde {x}}_{1}}yincógnita~2{\displaystyle {\tilde {x}}_{2}}son verificados por GPT-3 como lo que habría elegido, luego esos se conservan, peroincógnita~3{\displaystyle {\tilde {x}}_{3}}no lo es, así queincógnita~3,incógnita~4{\displaystyle {\tilde {x}}_{3},{\tilde {x}}_{4}}se descartan y se ejecuta GPT-3 sobre ellos. Esto tomaría4TGPT-3-pequeño+3TGPT-3{\displaystyle 4T_{\text{GPT-3-small}}+3T_{\text{GPT-3}}}, que podría ser más corto que4TGPT-3{\displaystyle 4T_{\text{GPT-3}}}.

Para la decodificación no codiciosa, se aplican ideas similares, excepto que los tokens especulativos se aceptan o rechazan estocásticamente, de manera que se garantiza que la distribución de salida final sea la misma que si no se utilizara la decodificación especulativa. [ 91 ] [ 93 ]

Predicción multitoken

En la predicción de múltiples tokens, una sola pasada hacia adelante crea un vector de incrustación final, que luego se desincrusta en una probabilidad de token. Sin embargo, ese vector puede ser procesado posteriormente por otro bloque transformador para predecir el siguiente token, y así sucesivamente durante un número arbitrario de pasos hacia el futuro. Esto implica sacrificar precisión por velocidad, ya que cada nuevo token cuesta solo un bloque transformador adicional, en lugar de toda la pila. [ 94 ] [ 95 ]

Transformadores subcuadráticos

El entrenamiento de arquitecturas basadas en transformadores puede ser costoso, especialmente para entradas largas. [ 96 ] Se han desarrollado muchos métodos para intentar abordar el problema. En el dominio de la imagen, el transformador Swin es una arquitectura eficiente que realiza atención dentro de ventanas deslizantes. [ 97 ] En el dominio del audio, SepTr desacopla la atención en los dominios del tiempo y la frecuencia. [ 98 ] Long Range Arena (2020) [ 99 ] es un punto de referencia estándar para comparar el comportamiento de las arquitecturas de transformadores en entradas largas.

Gráficos de atención alternativos

El gráfico de atención estándar es de todo a todo o causal, ambos escalables comoO(norte2){\displaystyle O(N^{2})}dóndenorte{\displaystyle N}es el número de tokens en una secuencia.

Reformer (2020) [ 96 ] [ 100 ] reduce la carga computacional deO(norte2){\displaystyle O(N^{2})}aO(nortelnnorte){\displaystyle O(N\ln N)}mediante el uso de funciones hash sensibles a la localidad y capas reversibles. [ 101 ]

La atención dispersa [ 102 ] utiliza gráficos de atención que crecen más lentamente queO(norte2){\displaystyle O(N^{2})}. Por ejemplo, BigBird (2020) [ 103 ] utiliza redes aleatorias de mundo pequeño que crecen comoO(norte){\displaystyle O(N)}.

Los transformadores ordinarios requieren un tamaño de memoria que es cuadrático en el tamaño de la ventana de contexto. Los transformadores sin atención [ 104 ] reducen esto a una dependencia lineal, conservando al mismo tiempo las ventajas de un transformador al vincular la clave con el valor.

Atención a características aleatorias

Random Feature Attention (2021) [ 105 ] utiliza características aleatorias de Fourier :φ(incógnita)=1D[porquew1,incógnita,pecadow1,incógnita,porquewD,incógnita,pecadowD,incógnita]T{\displaystyle \varphi (x)={\frac {1}{\sqrt {D}}}[\cos \langle w_{1},x\rangle ,\sin \langle w_{1},x\rangle ,\cdots \cos \langle w_{D},x\rangle ,\sin \langle w_{D},x\rangle ]^{T}}dóndew1,...,wD{\displaystyle w_{1},...,w_{D}}son muestras independientes de la distribución normalnorte(0,σ2I){\displaystyle N(0,\sigma ^{2}I)}Esta elección de parámetros satisfacemi[φ(incógnita),φ(y)]=miincógnitay22σ2{\displaystyle \mathbb {E} [\langle \varphi (x),\varphi (y)\rangle ]=e^{-{\frac {\|x-y\|^{2}}{2\sigma ^{2}}}}}, omiincógnita,y/σ2=mi[miincógnita2/2σ2φ(incógnita),miy2/2σ2φ(y)]miincógnita2/2σ2φ(incógnita),miy2/2σ2φ(y){\displaystyle e^{\langle x,y\rangle /\sigma ^{2}}=\mathbb {E} [\langle e^{\|x\|^{2}/2\sigma ^{2}}\varphi (x),e^{\|y\|^{2}/2\sigma ^{2}}\varphi (y)\rangle ]\approx \langle e^{\|x\|^{2}/2\sigma ^{2}}\varphi (x),e^{\|y\|^{2}/2\sigma ^{2}}\varphi (y)\rangle }En consecuencia, la atención unidireccional, con una sola consulta, se puede escribir comoAtención(q,K,V)=softmax(qKTdk)Vφ(q)Timiki2/2σ2φ(ki)viTφ(q)Timiki2/2σ2φ(ki){\displaystyle {\text{Attention}}(q,K,V)={\text{softmax}}\left({\frac {qK^{\mathrm {T} }}{\sqrt {d_{k}}}}\right)V\approx {\frac {\varphi (q)^{T}\sum _{i}e^{\|k_{i}\|^{2}/2\sigma ^{2}}\varphi (k_{i})v_{i}^{T}}{\varphi (q)^{T}\sum _{i}e^{\|k_{i}\|^{2}/2\sigma ^{2}}\varphi (k_{i})}}}dóndeσ=dK1/4{\displaystyle \sigma =d_{K}^{1/4}}. De forma similar para consultas múltiples y para atención multi-cabeza.

Esta aproximación se puede calcular en tiempo lineal, ya que podemos calcular la matriz.φ(ki)viT{\displaystyle \varphi (k_{i})v_{i}^{T}}primero, luego multiplícalo por la consulta. En esencia, hemos logrado obtener una versión más precisa deAtención(Q,K,V)=softmax(QKTdk)VQ(KTV/dk){\displaystyle {\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{\mathrm {T} }}{\sqrt {d_{k}}}}\right)V\approx Q(K^{T}V/{\sqrt {d_{k}}})}Performer (2022) [ 106 ] utiliza la misma Atención de Características Aleatorias, perow1,...,wD{\displaystyle w_{1},...,w_{D}}Primero se toman muestras independientes de la distribución normal.norte(0,σ2I){\displaystyle N(0,\sigma ^{2}I)}, luego se procesan mediante el método de Gram-Schmidt .

Multimodalidad

Los transformadores también pueden utilizarse/adaptarse para modalidades (de entrada o salida) que van más allá del texto, normalmente encontrando una forma de "tokenizar" la modalidad.

Los modelos multimodales pueden entrenarse desde cero o mediante ajuste fino. Un estudio de 2022 encontró que los transformadores preentrenados solo en lenguaje natural pueden ajustarse con solo el 0,03 % de los parámetros y volverse competitivos con las LSTM en una variedad de tareas lógicas y visuales, demostrando el aprendizaje por transferencia . [ 107 ] El LLaVA era un modelo de visión-lenguaje compuesto por un modelo de lenguaje (Vicuna-13B) [ 108 ] y un modelo de visión ( ViT -L/14), conectados por una capa lineal. Solo la capa lineal se ajusta. [ 109 ]

Los transformadores de visión [ 46 ] adaptan el transformador a la visión por computadora descomponiendo las imágenes de entrada como una serie de parches, convirtiéndolos en vectores y tratándolos como un vector de incrustación de tokens en un transformador estándar.

Conformer [ 47 ] y posteriormente Whisper [ 110 ] siguen el mismo patrón para el reconocimiento de voz , primero convirtiendo la señal de voz en un espectrograma , que luego se trata como una imagen, es decir, se descompone en una serie de parches, se convierte en vectores y se trata como un vector de incrustación de tokens en un transformador estándar.

Los perceptores [ 111 ] [ 112 ] son ​​una variante de los transformadores diseñados para la multimodalidad.

Para la generación de imágenes, las arquitecturas notables son DALL-E 1 (2021), Parti (2022), [ 113 ] Phenaki (2023), [ 114 ] y Muse (2023). [ 115 ] A diferencia de los modelos posteriores, DALL-E no es un modelo de difusión . En cambio, utiliza un transformador solo decodificador que genera autorregresivamente un texto, seguido de la representación de token de una imagen, que luego es convertida por un autoencoder variacional en una imagen. [ 116 ] Parti es un transformador codificador-decodificador, donde el codificador procesa una indicación de texto y el decodificador genera una representación de token de una imagen. [ 117 ] Muse es un transformador solo codificador que está entrenado para predecir tokens de imagen enmascarados a partir de tokens de imagen sin enmascarar. Durante la generación, todos los tokens de entrada están enmascarados y las predicciones de mayor confianza se incluyen para la siguiente iteración, hasta que se predicen todos los tokens. [ 115 ] Phenaki es un modelo de texto a vídeo. Es un transformador enmascarado bidireccional condicionado a tokens de texto precalculados. Los tokens generados se decodifican a un vídeo. [ 114 ]

Aplicaciones

El transformador ha tenido un gran éxito en el procesamiento del lenguaje natural (PLN). Muchos modelos de lenguaje de gran tamaño , como GPT-2 , GPT-3 , GPT-4 , Gemini , AlbertAGPT, Claude , BERT , Grok , XLNet , RoBERTa y ChatGPT , demuestran la capacidad de los transformadores para realizar una amplia variedad de subtareas relacionadas con el PLN y sus aplicaciones en el mundo real, entre las que se incluyen:

Más allá del PLN tradicional, la arquitectura de transformadores ha tenido éxito en otras aplicaciones, tales como:

Véase también

Notas

  1. Las unidades recurrentes con compuertas (2014) redujeron aún más su complejidad.
  2. Algunas arquitecturas, como RWKV (Receptance Weighted Key Value) o los modelos de espacio de estados, evitan este problema.

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Vaswani, Ashish ; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, León; Gómez, Aidan N ; Káiser, Łukasz; Polosukhin, Illia (2017). "Todo lo que necesita es atención" (PDF) . 31.ª Conferencia sobre sistemas de procesamiento de información neuronal (NIPS 2017), del 4 al 9 de diciembre de 2017, Long Beach, CA, EE. UU . vol.  30. Curran Associates, Inc. arXiv : 1706.03762 . ISBN 978-1-5108-6096-4Archivado del original (PDF) el 21/02/2024 . Consultado el 31/10/2023 .
  2. 1 2 Hochreiter, Sepp ; Schmidhuber, Jürgen (noviembre de 1997). "Memoria a largo plazo". Computación neuronal . 9 (8): 1735–1780 . doi : 10.1162/neco.1997.9.8.1735 . PMID 9377276 . 
  3. 1 2 "Mejores modelos de lenguaje y sus implicaciones" . OpenAI . 14 de febrero de 2019. Archivado del original el 19 de diciembre de 2020. Consultado el 25 de agosto de 2019 .
  4. Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2019-10-23). ​​"Explorando los límites del aprendizaje por transferencia con un transformador unificado de texto a texto". arXiv : 1910.10683 [ cs.LG ].
  5. 1 2 Bahdanau; Cho, Kyunghyun; Bengio, Yoshua (1 de septiembre de 2014). "Traducción automática neuronal mediante el aprendizaje conjunto de alineación y traducción". arXiv : 1409.0473 [ cs.CL ].
  6. Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (17 de agosto de 2015). "Enfoques eficaces para la traducción automática neuronal basada en la atención". arXiv : 1508.04025 [ cs.CL ].
  7. 1 2 Chen, Lili; Lu, Kevin; Rajeswaran, Aravind; Lee, Kimin; Grover, Aditya; Laskin, Michael; Abbeel, Pieter; Srinivas, Aravind; Mordatch, Igor (2021-06-24). "Decision Transformer: Reinforcement Learning via Sequence Modeling". arXiv : 2106.01345 [ cs.LG ].
  8. Parisotto, Emilio; Song, Francis; Rae, Jack; Pascanu, Razvan; Gulcehre, Caglar; Jayakumar, Siddhant; Jaderberg, Max; Kaufman, Raphaël Lopez; Clark, Aidan; Noury, Seb; Botvinick, Matthew; Heess, Nicolas; Hadsell, Raia (2020-11-21). "Stabilizing Transformers for Reinforcement Learning" . Actas de la 37.ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 7487–7498 . Archivado del original el 9 de agosto de 2024. Consultado el 9 de agosto de 2024 .
  9. Radford, Alec; Jong Wook Kim; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya (2022). "Reconocimiento de voz robusto mediante supervisión débil a gran escala". arXiv : 2212.04356 [ eess.AS ].
  10. Monastirsky, Maxim; Azulay, Osher; Sintov, Avishai (febrero de 2023). "Aprender a lanzar con un puñado de muestras usando transformadores de decisión". IEEE Robotics and Automation Letters . 8 (2): 576– 583. Bibcode : 2023IRAL....8..576M . doi : 10.1109/LRA.2022.3229266 .
  11. 1 2 Ruoss, Anian; Delétang, Grégoire; Medapati, Sourabh; Grau-Moya, Jordi; Wenliang, Li; Catt, Elliot; Reid, John; Genewein, Tim (2024-02-07). "Ajedrez de nivel gran maestro sin búsqueda". arXiv : 2402.04494v1 [ cs.LG ].
  12. 1 2 Wolf, Thomas; Debut, Lysandre; Sanh, Victor; Chaumond, Julien; Delangue, Clement; Moi, Anthony; Cistac, Pierric; Rault, Tim; Louf, Remi; Funtowicz, Morgan; Davison, Joe; Shleifer, Sam; von Platen, Patrick; Ma, Clara; Jernite, Yacine; Plu, Julien; Xu, Canwen; Le Scao, Teven; Gugger, Sylvain; Drame, Mariama; Lhoest, Quentin; Rush, Alexander (2020). "Transformers: State-of-the-Art Natural Language Processing". Actas de la Conferencia de 2020 sobre Métodos Empíricos en Procesamiento del Lenguaje Natural: Demostraciones de Sistemas . págs. 38–45 . doi : 10.18653/v1/2020.emnlp-demos.6 . 
  13. 1 2 3 "Borrado de código abierto para BERT: Preentrenamiento de vanguardia para el procesamiento del lenguaje natural" . Blog de IA de Google . 2 de noviembre de 2018. Archivado del original el 13 de enero de 2021. Consultado el 25 de agosto de 2019 .
  14. Feldman, J; Ballard, D (septiembre de 1982). "Modelos conexionistas y sus propiedades". Cognitive Science . 6 (3): 205– 254. doi : 10.1016/S0364-0213(82)80001-3 .
  15. Rumelhart, David E.; McClelland, James L.; Hinton, Geoffrey E. (1986). Procesamiento distribuido en paralelo, Volumen 1: Exploraciones en la microestructura de la cognición: Fundamentos, Capítulo 2 (PDF) . Cambridge, Massachusetts: Bradford Books. ISBN 978-0-262-68053-0. OCLC 12837549 . OL 21219798M . Archivado (PDF) del original el 16 de abril de 2026.  
  16. Giles, C. Lee; Maxwell, Tom (diciembre de 1987). "Aprendizaje, invariancia y generalización en redes neuronales de alto orden". Applied Optics . 26 (23): 4972– 4978. doi : 10.1364/AO.26.004972 . PMID 20523475 . 
  17. 1 2 Schmidhuber, Jürgen (enero de 1992). "Aprendizaje para controlar memorias de peso rápido: una alternativa a las redes recurrentes dinámicas". Neural Computation . 4 (1): 131– 139. doi : 10.1162/neco.1992.4.1.131 .
  18. Christoph von der Malsburg: La teoría de la correlación de la función cerebral. Informe interno 81-2, Química Biofísica del MPI, 1981. http://cogprints.org/1380/1/vdM_correlation.pdf Archivado el 26 de enero de 2022 en Wayback Machine . Véase la reimpresión en Models of Neural Networks II, capítulo 2, páginas 95-119. Springer, Berlín, 1994.
  19. Feldman, Jerome A. (diciembre de 1982). "Conexiones dinámicas en redes neuronales". Cibernética biológica . 46 (1): 27– 39. doi : 10.1007/BF00335349 . PMID 6307398 . 
  20. Hinton, Geoffrey E.; Plaut, David C. (1987). "Using Fast Weights to Deblur Old Memories" . Actas de la Reunión Anual de la Sociedad de Ciencias Cognitivas . 9. Archivado del original el 23 de julio de 2024. Recuperado el 23 de julio de 2024 .
  21. Katharopoulos, Angelos; Vyas, Apoorv; Pappas, Nikolaos; Fleuret, François (2020). "Los transformadores son RNN: transformadores autorregresivos rápidos con atención lineal" . ICML 2020. PMLR. págs. 5156–5165 . 
  22. Schlag, Imanol; Irie, Kazuki; Schmidhuber, Jürgen (2021). "Los transformadores lineales son secretamente programadores de peso rápidos" . ICML 2021. Springer. pp. 9355–9366 . Archivado del original el 20 de mayo de 2026. Consultado el 20 de mayo de 2026 . 
  23. 1 2 Cho, Kyunghyun; van Merriënboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougares, Fethi; Schwenk, Holger; Bengio, Yoshua (octubre de 2014). "Aprendizaje de representaciones de frases usando un codificador-decodificador RNN para la traducción automática estadística" . En Moschitti, Alessandro; Pang, Bo; Daelemans, Walter (eds.). Actas de la Conferencia de 2014 sobre Métodos Empíricos en Procesamiento del Lenguaje Natural (EMNLP) . Doha, Qatar: Asociación de Lingüística Computacional. págs. 1724–1734 . arXiv : 1406.1078 . doi : 10.3115/v1/D14-1179 . Archivado del original el 6 de septiembre de 2024. Consultado el 9 de agosto de 2024 . 
  24. 1 2 Sutskever, Ilya; Vinyals, Oriol; Le, Quoc Viet (14 de diciembre de 2014). "Aprendizaje secuencia a secuencia con redes neuronales". arXiv : 1409.3215 [ cs.CL ].[Primera versión publicada en arXiv el 10 de septiembre de 2014]
  25. Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun; Bengio, Yoshua (2014). "Evaluación empírica de redes neuronales recurrentes con compuertas en el modelado de secuencias". arXiv : 1412.3555 [ cs.NE ].
  26. Gruber, Nicole; Jockisch, Alfred (30 de junio de 2020). "¿Son las células GRU más específicas y las células LSTM más sensibles en la clasificación de motivos de texto?" . Frontiers in Artificial Intelligence . 3 40. doi : 10.3389/frai.2020.00040 . PMC 7861254 . PMID 33733157 .  
  27. Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V (2014). "Aprendizaje secuencia a secuencia con redes neuronales" . Advances in Neural Information Processing Systems . 27. Curran Associates, Inc. arXiv : 1409.3215 . Archivado del original el 27 de enero de 2025. Recuperado el 23 de julio de 2024 .
  28. Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (2015). "Enfoques eficaces para la traducción automática neuronal basada en la atención". arXiv : 1508.04025 [ cs.CL ].
  29. Wu, Yonghui; et al. (2016-09-01). "Sistema de traducción automática neuronal de Google: Cerrando la brecha entre la traducción humana y la automática". arXiv : 1609.08144 [ cs.CL ]. 
  30. Lewis-Kraus, Gideon (14 de diciembre de 2016). "El gran despertar de la IA" . The New York Times . Archivado del original el 24 de mayo de 2023. Recuperado el 22 de junio de 2023 .
  31. Parikh, Ankur P.; Täckström, Oscar; Das, Dipanjan; Uszkoreit, Jakob (2016-09-25). "Un modelo de atención descomponible para la inferencia del lenguaje natural". arXiv : 1606.01933 [ cs.CL ].
  32. 1 2 Levy, Steven. "8 empleados de Google inventaron la IA moderna. Esta es la historia interna" . Wired . Archivado del original el 20 de marzo de 2024. Recuperado el 6 de agosto de 2024 .
  33. Cheng, Jianpeng; Dong, Li; Lapata, Mirella (noviembre de 2016). "Redes de memoria a corto y largo plazo para la lectura automática" . En Su, Jian; Duh, Kevin; Carreras, Xavier (eds.). Actas de la Conferencia de 2016 sobre Métodos Empíricos en Procesamiento del Lenguaje Natural . Austin, Texas: Asociación de Lingüística Computacional. pp. 551–561 . doi : 10.18653/v1/D16-1053 . Archivado del original el 27 de agosto de 2024. Recuperado el 27 de agosto de 2024 . 
  34. Peng, Bo; Alcaide, Eric; Anthony, Quentin; Albalak, Alon; Arcadinho, Samuel; Biderman, Stella; Cao, Huanqi; Cheng, Xin; Chung, Michael (2023-12-10). "RWKV: Reinventando las RNN para la era de los transformadores". arXiv : 2305.13048 [ cs.CL ].
  35. Marche, Stephen (23 de agosto de 2024). "¿Fue la IA lingüística creada por accidente?" . The New Yorker . Consultado el 27 de agosto de 2024 .
  36. Vaswani, Ashish; Bengio, Samy; Brevdo, Eugene; Chollet, Francois; Gomez, Aidan; Gouws, Stephan; Jones, Llion; Kaiser, Łukasz; Kalchbrenner, Nal; Parmar, Niki; Sepassi, Ryan; Shazeer, Noam; Uszkoreit, Jakob (marzo de 2018). Cherry, Colin; Neubig, Graham (eds.). "Tensor2Tensor para la traducción automática neuronal" . Actas de la 13.ª Conferencia de la Asociación para la Traducción Automática en las Américas (Volumen 1: Pista de investigación) . Boston, MA: Asociación para la Traducción Automática en las Américas: 193–199 . Archivado del original el 29 de abril de 2026. Recuperado el 31 de marzo de 2026 .
  37. Kaiser, Łukasz (19 de junio de 2017). "Acelerando la investigación en aprendizaje profundo con la biblioteca Tensor2Tensor" . Blog de investigación de Google . Archivado del original el 15 de abril de 2026. Consultado el 31 de marzo de 2026 .
  38. 1 2 3 4 5 Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina (11 de octubre de 2018). "BERT: Pre-entrenamiento de transformadores bidireccionales profundos para la comprensión del lenguaje". arXiv : 1810.04805v2 [ cs.CL ].
  39. "Google: BERT ahora se usa en casi todas las consultas en inglés" . Search Engine Land . 15 de octubre de 2020. Archivado del original el 6 de mayo de 2022. Consultado el 24 de noviembre de 2020 .
  40. 1 2 Caswell, Isaac; Liang, Bowen (8 de junio de 2020). "Avances recientes en Google Translate" . Google Research . Archivado del original el 4 de julio de 2024. Recuperado el 7 de agosto de 2024 .
  41. "La historia interna de cómo se construyó ChatGPT contada por las personas que lo crearon" . MIT Technology Review . Archivado del original el 3 de marzo de 2023. Consultado el 6 de agosto de 2024 .
  42. "Presentando ChatGPT" . OpenAI . 30 de noviembre de 2022. Archivado del original el 5 de abril de 2026. Consultado el 16 de mayo de 2026 .
  43. "Mejora de la comprensión del lenguaje con aprendizaje no supervisado" . openai.com . 11 de junio de 2018. Archivado del original el 18 de marzo de 2023. Consultado el 18 de marzo de 2023 .
  44. "finetune-transformer-lm" . OpenAI. 11 de junio de 2018. Archivado del original el 19 de mayo de 2023. Consultado el 1 de mayo de 2023 .
  45. Kaiser, Lukasz; Gomez, Aidan N.; Shazeer, Noam; Vaswani, Ashish; Parmar, Niki; Jones, Llion; Uszkoreit, Jakob (2017-06-16). "Un modelo para aprenderlos a todos". arXiv : 1706.05137v1 [ cs.LG ].
  46. 1 2 Dosovitskiy, Alexey; Beyer, Lucas; Kolesnikov, Alejandro; Weissenborn, Dirk; Zhai, Xiaohua; Unterthiner, Thomas; Dehghani, Mostafa; Minderer, Matías; Heigold, Georg; Gelly, Sylvain; Uszkoreit, Jakob (3 de junio de 2021). "Una imagen vale 16 x 16 palabras: transformadores para el reconocimiento de imágenes a escala". arXiv : 2010.11929 [ cs.CV ].
  47. ^ Gulati , Anmol; Qin, James; Chiu, Chung-Cheng; Parmar, Niki; Zhang, Yu; Yu, Jiahui; Han, Wei; Wang, Shibo; Zhang, Zhengdong; Wu, Yonghui; Pang, Ruoming (2020). "Conformador: transformador de convolución aumentada para reconocimiento de voz". arXiv : 2005.08100 [ eess.AS ].
  48. Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Canción, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared; Mohiuddin, Afroz (19 de noviembre de 2022). "Repensar la atención con los artistas intérpretes o ejecutantes". arXiv : 2009.14794 [ cs.LG ].
  49. Liu, Zhuang; Mao, Hanzi; Wu, Chao-Yuan; Feichtenhofer, Christoph; Darrell, Trevor; Xie, Saining (2022). Una red neuronal convolucional para la década de 2020. Conferencia sobre visión por computadora y reconocimiento de patrones ( CVPR ). págs. 11976–11986 . 
  50. Esser, Patrick; Kulal, Sumith; Blattmann, Andreas; Entezari, Rahim; Müller, Jonas; Saini, Harry; Levi, Yam; Lorenz, Dominik; Sauer, Axel (2024-03-05). "Escalado de transformadores de flujo rectificados para síntesis de imágenes de alta resolución". arXiv : 2403.03206 [ cs.CV ].
  51. 1 2 Xiong, Ruibin; Yang, Yunchang; Él, Di; Zheng, Kai; Zheng, Shuxin; Xing, Chen; Zhang, Huishuai; Lan, Yanyan; Wang, Liwei; Liu, Tie-Yan (29 de junio de 2020). "Sobre la normalización de capas en la arquitectura del transformador". arXiv : 2002.04745 [ cs.LG ].
  52. 1 2 3 4 Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2020). "Explorando los límites del aprendizaje por transferencia con un transformador unificado de texto a texto" . Journal of Machine Learning Research . 21 (140): 1– 67. Archivado del original el 10 de abril de 2026. Recuperado el 18 de abril de 2026 .
  53. Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (2019). "Explorando los límites del aprendizaje por transferencia con un transformador unificado de texto a texto". arXiv : 1910.10683 [ cs.LG ].
  54. 1 2 "Modelado de lenguaje enmascarado" . huggingface.co . Archivado del original el 10-10-2023 . Recuperado el 05-10-2023 .
  55. 1 2 "Modelado de lenguaje causal" . huggingface.co . Archivado del original el 10-10-2023 . Recuperado el 05-10-2023 .
  56. 1 2 3 4 Tay, Yi; Dehghani, Mostafa; Tran, Vinh Q.; Garcia, Xavier; Wei, Jason; Wang, Xuezhi; Chung, Hyung Won; Shakeri, Siamak; Bahri, Dara (2023-02-28). "UL2: Unifying Language Learning Paradigms". arXiv : 2205.05131 [ cs.CL ].
  57. Press, Ofir; Wolf, Lior (2017-02-21). "Using the Output Embedding to Improve Language Models". arXiv : 1608.05859 [ cs.CL ].
  58. Lintz, Nathan (18 de abril de 2016). "Modelado de secuencias con redes neuronales (Parte 2): Modelos de atención" . Indico . Archivado del original el 21 de octubre de 2020. Consultado el 15 de octubre de 2019 .
  59. 1 2 3 Alammar, Jay. "El transformador ilustrado" . jalammar.github.io . Archivado del original el 18 de octubre de 2020. Recuperado el 15 de octubre de 2019 .
  60. Equipo, Keras. "Documentación de Keras: modelo GPT2Backbone" . keras.io . Archivado del original el 8 de agosto de 2024. Consultado el 8 de agosto de 2024 .
  61. Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (agosto de 2019). "¿Qué observa BERT? Un análisis de la atención de BERT" . Actas del taller ACL 2019 BlackboxNLP: Análisis e interpretación de redes neuronales para PLN . Florencia, Italia: Asociación de Lingüística Computacional: 276–286 . arXiv : 1906.04341 . doi : 10.18653/v1/W19-4828 . Archivado del original el 21 de octubre de 2020. Recuperado el 20 de mayo de 2020 .
  62. Yang, Zhilin; Dai, Zihang; Yang, Yiming; Carbonell, Jaime; Salakhutdinov, Russ R; Le, Quoc V (2019). "XLNet: Preentrenamiento autorregresivo generalizado para la comprensión del lenguaje" . Advances in Neural Information Processing Systems . 32. Curran Associates, Inc. arXiv : 1906.08237 . Archivado del original el 9 de agosto de 2024. Recuperado el 9 de agosto de 2024 .
  63. ^ Wang, Qiang; Li, Bei; Xiao, Tong; Zhu, Jingbo; Li, Changliang; Wong, Derek F.; Chao, Lidia S. (4 de junio de 2019). "Aprendizaje de modelos de transformadores profundos para traducción automática". arXiv : 1906.01787 [ cs.CL ].
  64. Phuong, Mary; Hutter, Marcus (19 de julio de 2022). "Algoritmos formales para transformadores". arXiv : 2207.09238 [ cs.LG ].
  65. 1 2 Shazeer, Noam (2020-02-01). "Las variantes de GLU mejoran Transformer". arXiv : 2002.05202 [ cs.LG ].
  66. Hendrycks, Dan; Gimpel, Kevin (27-06-2016). "Unidades lineales de error gaussiano (GELUs)". arXiv : 1606.08415v5 [ cs.LG ].
  67. Zhang, Biao; Sennrich, Rico (2019). "Normalización de capa de raíz cuadrática media" . Advances in Neural Information Processing Systems . 32. Curran Associates, Inc. arXiv : 1910.07467 . Archivado del original el 17 de septiembre de 2024. Consultado el 9 de agosto de 2024 .
  68. 1 2 Nguyen, Toan Q.; Salazar, Julian (2019-11-02). Niehues, Jan; Cattoni, Rolando; Stüker, Sebastian; Negri, Matteo; Turchi, Marco; Ha, Thanh-Le; Salesky, Elizabeth; Sanabria, Ramon; Barrault, Loic (eds.). "Transformers without Tears: Improving the Normalization of Self-Attention" . Actas de la 16.ª Conferencia Internacional sobre Traducción del Lenguaje Hablado . Hong Kong: Asociación de Lingüística Computacional. arXiv : 1910.05895 . doi : 10.5281/zenodo.3525484 . Archivado del original el 9 de agosto de 2024. Recuperado el 9 de agosto de 2024 .
  69. ^ Dufter, Philipp; Schmitt, Martín; Schütze, Hinrich (septiembre de 2022). "Información de posición en transformadores: descripción general" . Lingüística Computacional . 48 (3): 733– 763. arXiv : 2102.11090 . doi : 10.1162/coli_a_00445 .
  70. Gehring, Jonas; Auli, Michael; Grangier, David; Yarats, Denis; Dauphin, Yann N. (17 de julio de 2017). "Aprendizaje convolucional de secuencia a secuencia" . Actas de la 34.ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 1243–1252 . Archivado del original el 9 de agosto de 2024. Consultado el 9 de agosto de 2024 .
  71. Haviv, Adi; Ram, Ori; Press, Ofir; Izsak, Peter; Levy, Omer (2022-12-05). "Los modelos de lenguaje de transformador sin codificaciones posicionales aún aprenden información posicional". arXiv : 2203.16634 [ cs.CL ].
  72. ^ Su, Jianlin; Lu, Yu; Pan, Shengfeng; Murtadha, Ahmed; Wen, Bo; Liu, Yunfeng (1 de abril de 2021). "RoFormer: transformador mejorado con incrustación de posición giratoria". arXiv : 2104.09864 [ cs.CL ].
  73. Press, Ofir; Smith, Noah A.; Lewis, Mike (2021-08-01). "Entrenar corto, probar largo: la atención con sesgos lineales permite la extrapolación de la longitud de entrada". arXiv : 2108.12409 [ cs.CL ].
  74. Shaw, Peter; Uszkoreit, Jakob; Vaswani, Ashish (2018). "Autoatención con representaciones de posición relativa". arXiv : 1803.02155 [ cs.CL ].
  75. Ke, Guolin; Él, Di; Liu, Tie-Yan (15 de marzo de 2021). "Repensar la codificación posicional en la formación previa del lenguaje". arXiv : 2006.15595 [ cs.CL ].
  76. Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; Gonzalez, Joseph; Zhang, Hao; Stoica, Ion (23 de octubre de 2023). "Gestión eficiente de memoria para el servicio de modelos de lenguaje grandes con PagedAttention" . Actas del 29.º Simposio sobre Principios de Sistemas Operativos . SOSP '23. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 611–626 . arXiv : 2309.06180 . doi : 10.1145/3600006.3613165 . ISBN  979-8-4007-0229-7.
  77. "vllm-project/vllm" . vLLM. 2024-06-20. Archivado del original el 2024-06-18 . Recuperado el 2024-06-20 .
  78. Zhuohan Li, Woosuk Kwon; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody; Gonzalez, Joey; Zhang, Hao; Stoica, Ion (2023-06-20). "vLLM: Servicio de LLM fácil, rápido y económico con PagedAttention" . Blog de vLLM . Archivado del original el 2024-06-20 . Recuperado el 2024-06-20 .
  79. ^ Hu, Cunchén; Huang, Heyang; Xu, Liangliang; Chen, Xusheng; Xu, Jiang; Chen, Shuang; Feng, Hao; Wang, Chenxi; Wang, Sa (20 de enero de 2024). "Inferencia sin interferencia: inferencia LLM desagregada para cargas de trabajo posteriores mixtas". arXiv : 2401.11181 [ cs.DC ].
  80. Dao, Tri; Ermon, Stefano; Fu, Dan; Ré, Christopher; Rudra, Atri (2022). «FlashAttention: Atención exacta rápida y eficiente en memoria con conciencia de E/S». Advances in Neural Information Processing Systems 35. pp. 16344–16359 . doi : 10.52202/068431-1189 . ISBN  978-1-7138-7108-8.
  81. Milakov, Maxim; Gimelshein, Natalia (2018). "Cálculo de normalizador en línea para softmax". arXiv : 1805.02867 [ cs.PF ].
  82. Dao, Tri; Fu, Dan; Ermon, Stefano; Rudra, Atri; Ré, Christopher (06-12-2022). "FlashAttention: Atención exacta rápida y eficiente en memoria con conciencia de E/S" . Advances in Neural Information Processing Systems . 35 : 16344–16359 .
  83. "Stanford CRFM" . crfm.stanford.edu . Archivado del original el 18 de julio de 2023. Consultado el 18 de julio de 2023 .
  84. "FlashAttention-2: Atención más rápida con mejor paralelismo y partición del trabajo" . Princeton NLP . 17 de junio de 2023. Archivado del original el 18 de julio de 2023. Consultado el 18 de julio de 2023 .
  85. "Presentamos al científico jefe de Together AI, Tri Dao, quien lanza FlashAttention-2 para acelerar el entrenamiento y la inferencia de modelos" . TOGETHER . Archivado del original el 17 de julio de 2023. Consultado el 18 de julio de 2023 .
  86. Ainslie, Joshua; Lee-Thorp, James; de Jong, Michiel; Zemlyanskiy, Yury; Lebrón, Federico; Sanghai, Sumit (2023-12-23). ​​"GQA: Entrenamiento de modelos transformadores de consultas múltiples generalizadas a partir de puntos de control de múltiples cabezas". arXiv : 2305.13245 [ cs.CL ].
  87. "Hemos aplicado ingeniería inversa a Flash Attention 4" . Modal . Archivado del original el 27/09/2025 . Consultado el 26/09/2025 .
  88. Chowdhery, Aakanksha; Narang, Sharan; Devlin, Jacob; Bosma, Maarten; Mishra, Gaurav; Roberts, Adam; Barham, Paul; Chung, Hyung Won; Sutton, Charles; Gehrmann, Sebastian; Schuh, Parker; Shi, Kensen; Tsvyashchenko, Sasha; Maynez, Joshua; Rao, Abhishek (2022-04-01). "PaLM: Scaling Language Modeling with Pathways". arXiv : 2204.02311 [ cs.CL ].
  89. Ainslie, Joshua; Lee-Thorp, James; de Jong, Michiel; Zemlyanskiy, Yury; Lebrón, Federico; Sanghai, Sumit (2023-12-23). ​​"GQA: Entrenamiento de modelos transformadores de consultas múltiples generalizadas a partir de puntos de control de múltiples cabezas". arXiv : 2305.13245 [ cs.CL ].
  90. ^ DeepSeek -AI; Liu, Aixin; Feng, Bei; Wang, Bin; Wang, Bingxuan; Liu, Bo; Zhao, Chenggang; Dengr, Chengqi; Ruan, Chong (19 de junio de 2024). "DeepSeek-V2: un modelo de lenguaje de combinación de expertos sólido, económico y eficiente". arXiv : 2405.04434 [ cs.CL ]..
  91. 1 2 Leviathan, Yaniv; Kalman, Matan; Matias, Yossi (2023-05-18). "Inferencia rápida a partir de transformadores mediante decodificación especulativa". arXiv : 2211.17192 [ cs.LG ].
  92. Fu, Yao (2023-12-11). "Hacia una aceleración de 100x: optimización de inferencia de transformador de pila completa" . yaofu.notion.site .
  93. Chen, Charlie; Borgeaud, Sebastian; Irving, Geoffrey; Lespiau, Jean-Baptiste; Sifre, Laurent; Jumper, John (2023-02-02). "Aceleración de la decodificación de modelos de lenguaje grandes con muestreo especulativo". arXiv : 2302.01318 [ cs.CL ].
  94. Gloeckle, Fabian; Badr Youbi Idrissi; Rozière, Baptiste; Lopez-Paz, David; Synnaeve, Gabriel (2024). "Mejores y más rápidos modelos de lenguaje a gran escala mediante predicción de múltiples tokens". arXiv : 2404.19737 [ cs.CL ].
  95. ^ DeepSeek-AI; et al. (2024). "Informe técnico de DeepSeek-V3". arXiv : 2412.19437 [ cs.CL ]. 
  96. 1 2 Kitaev, Nikita; Kaiser, Łukasz; Levskaya, Anselm (2020). "Reformer: The Efficient Transformer". arXiv : 2001.04451 [ cs.LG ].
  97. Liu, Ze; Lin, Yutong; Cao, Yue; Hu, Han; Wei, Yixuan; Zhang, Zheng; Lin, Stephen; Guo, Baining (2021). "Swin Transformer: Transformador de visión jerárquico mediante ventanas desplazadas". 2021 IEEE/CVF International Conference on Computer Vision (ICCV) . IEEE. pp. 9992–10002 . arXiv : 2103.14030 . doi : 10.1109 /ICCV48922.2021.00986 . ISBN  978-1-6654-2812-5.
  98. ^ Ristea, Nicolaea Catalin; Ionescu, Radu Tudor; Khan, Fahad Shahbaz (18 de septiembre de 2022). "SepTr: Transformador separable para procesamiento de espectrogramas de audio" . Interdiscurso . ISCA: 4103– 4107. arXiv : 2203.09581 . doi : 10.21437/Interspeech.2022-249 .
  99. Tay, Yi; Dehghani, Mostafa; Abnar, Samira; Shen, Yikang; Bahri, Dara; Pham, Philip; Rao, Jinfeng; Yang, Liu; Ruder, Sebastian; Metzler, Donald (2020-11-08). "Long Range Arena: A Benchmark for Efficient Transformers". arXiv : 2011.04006 [ cs.LG ].
  100. "Reformer: El transformador eficiente" . Blog de IA de Google . 16 de enero de 2020. Archivado del original el 22 de octubre de 2020. Consultado el 22 de octubre de 2020 .
  101. Gomez, Aidan N; Ren, Mengye; Urtasun, Raquel; Grosse, Roger B (2017). "La red residual reversible: retropropagación sin almacenar activaciones" . Advances in Neural Information Processing Systems . 30. Curran Associates, Inc. arXiv : 1707.04585 . Archivado del original el 11 de agosto de 2024. Recuperado el 11 de agosto de 2024 .
  102. Child, Rewon; Gray, Scott; Radford, Alec; Sutskever, Ilya (2019-04-23). ​​"Generación de secuencias largas con transformadores dispersos". arXiv : 1904.10509 [ cs.LG ].
  103. "Construcción de transformadores para secuencias más largas con métodos de atención dispersa" . Blog de IA de Google . 25 de marzo de 2021. Archivado del original el 18 de septiembre de 2021. Consultado el 28 de mayo de 2021 .
  104. Zhai, Shuangfei; Talbott, Walter; Srivastava, Nitish; Huang, Chen; Goh, Hanlin; Zhang, Ruixiang; Susskind, Josh (2021-09-21). "Un transformador sin atención". arXiv : 2105.14103 [ cs.LG ].
  105. ^ Peng, Hao; Pappas, Nikolaos; Yogatama, Dani; Schwartz, Roy; Smith, Noé A.; Kong, Lingpeng (19 de marzo de 2021). "Atención a funciones aleatorias". arXiv : 2103.02143 [ cs.CL ].
  106. Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared; Belanger, David; Colwell, Lucy; Weller, Adrian (2020-09-30). "Masked Language Modeling for Proteins via Linearly Scalable Long-Context Transformers". arXiv : 2006.03555 [ cs.LG ].
  107. Lu, Kevin; Grover, Aditya; Abbeel, Pieter; Mordatch, Igor (2022-06-28). "Transformadores preentrenados congelados como motores de computación universales" . Actas de la Conferencia AAAI sobre Inteligencia Artificial . 36 (7): 7628– 7636. doi : 10.1609/aaai.v36i7.20729 . ISSN 2374-3468 . Archivado del original el 2 de diciembre de 2024. Recuperado el 11 de agosto de 2024 . 
  108. "Vicuna: Un chatbot de código abierto que impresiona a GPT-4 con una calidad ChatGPT del 90%* | LMSYS Org" . lmsys.org . 30 de marzo de 2023. Archivado del original el 12 de agosto de 2024. Consultado el 11 de agosto de 2024 .
  109. ^ Liu, Haotian; Li, Chunyuan; Wu, Qingyang; Lee, Yong Jae (15 de diciembre de 2023). "Ajuste de instrucciones visuales" . Avances en los sistemas de procesamiento de información neuronal . vol. 36. págs. 34892– 34916. doi : 10.52202/075280-1516 . ISBN   978-1-7138-9911-2Archivado del original el 26/09/2024 . Consultado el 11/08/2024 .
  110. Radford, Alec; Kim, Jong Wook; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya (2022). "Reconocimiento de voz robusto mediante supervisión débil a gran escala". arXiv : 2212.04356 [ eess.AS ].
  111. Jaegle, Andrew; Gimeno, Felix; Brock, Andrew; Zisserman, Andrew; Vinyals, Oriol; Carreira, Joao (22 de junio de 2021). "Perceiver: Percepción general con atención iterativa". arXiv : 2103.03206 [ cs.CV ].
  112. ^ Jaegle, Andrés; Borgeaud, Sebastián; Alayrac, Jean-Baptiste; Doersch, Carl; Ionescu, Catalín; Ding, David; Koppula, Skanda; Zoran, Daniel; Brock, Andrés; Shelhamer, Evan; Hénaff, Olivier (2 de agosto de 2021). "Perceiver IO: una arquitectura general para entradas y salidas estructuradas". arXiv : 2107.14795 [ cs.LG ].
  113. "Parti: Pathways Autoregressive Text-to-Image Model" . sites.research.google . Archivado del original el 10 de agosto de 2024. Consultado el 9 de agosto de 2024 .
  114. 1 2 Villegas, Rubén; Babaeizadeh, Mohammad; Kindermans, Pieter-Jan; Moraldo, Hernán; Zhang, Han; Saffar, Mohammad Taghi; Castro, Santiago; Kunze, Julio; Erhan, Dumitru (29 de septiembre de 2022). "Phenaki: generación de vídeos de duración variable a partir de descripciones textuales de dominio abierto". arXiv : 2210.02399 [ cs.CV ].
  115. 1 2 Chang, Huiwen; Zhang, Han; Barber, Jarred; Maschinot, AJ; Lezama, Jose; Jiang, Lu; Yang, Ming-Hsuan ; Murphy, Kevin; Freeman, William T. (2023-01-02). "Muse: Generación de texto a imagen mediante transformadores generativos enmascarados". arXiv : 2301.00704 [ cs.CV ].
  116. Ramesh, Aditya; Pavlov, Mikhail; Goh, Gabriel; Gray, Scott; Voss, Chelsea; Radford, Alec; Chen, Mark; Sutskever, Ilya (2021-02-26). "Generación de texto a imagen sin datos previos". arXiv : 2102.12092 [ cs.CV ].
  117. ^ Yu, Jiahui; Xu, Yuanzhong; Koh, Jing Yu; Luong, Thang; Baid, Gunjan; Wang, Zirui; Vasudevan, Vijay; Ku, Alejandro; Yang, Yinfei (21 de junio de 2022). "Escalado de modelos autorregresivos para la generación de texto a imagen rico en contenido". arXiv : 2206.10789 [ cs.CV ].
  118. Kariampuzha, William; Alyea, Gioconda; Qu, Sue; Sanjak, Jaleal; Mathé, Ewy; Sid, Eric; Chatelaine, Haley; Yadaw, Arjun; Xu, Yanji; Zhu, Qian (2023). "Extracción de información de precisión para la epidemiología de enfermedades raras a gran escala" . Journal of Translational Medicine . 21 (1): 157. doi : 10.1186/s12967-023-04011-y . PMC 9972634. PMID 36855134 .  

Lecturas adicionales

  • Alexander Rush, El transformador anotado. Archivado el 22 de septiembre de 2021 en Wayback Machine , grupo de PNL de Harvard, 3 de abril de 2018.
  • Phuong, Mary; Hutter, Marcus (2022). "Algoritmos formales para transformadores". arXiv : 2207.09238 [ cs.LG ].
  • Fernando, Javier; Sarti, Gabriele; Bisazza, Arianna; Costa-jussà, Marta R. (2024-05-01). "Introducción al funcionamiento interno de los modelos de lenguaje basados ​​en transformadores". arXiv : 2405.00208 [ cs.CL ].
  • Leech, Gavin (2024-11-06). "Transformer++" . argmin gravitas . Archivado del original el 26-02-2025 . Recuperado el 08-05-2025 .
  • patente estadounidense 10452978 , Noam M. Shazeer; Aidán Nicolás Gómez; Lukasz Mieczyslaw Káiser; Jakob D. Uszkoreit; León Owen Jones; Niki J. Parmar; Illia Polosukhin; Ashish Teku Vaswani, "Redes neuronales de transducción de secuencias basadas en la atención", publicado el 22 de octubre de 2019, asignado a Google LLC 
  • Raschka, Sebastian (11 de marzo de 2026). "La gran comparación de arquitectura LLM: de DeepSeek V3 a GLM-5: una mirada al diseño moderno de la arquitectura LLM" . Revista de IA de Sebastian Raschka . Archivado del original el 21 de marzo de 2026. Recuperado el 25 de marzo de 2026 .