stringtranslate.com

Transformer (arquitectura de aprendizaje profundo)

Una arquitectura Transformer estándar, que muestra a la izquierda un codificador y a la derecha un decodificador. Nota: utiliza la convención anterior a LN, que es diferente de la convención posterior a LN utilizada en el Transformer original de 2017.

Un transformador es una arquitectura de aprendizaje profundo desarrollada por investigadores de Google y basada en el mecanismo de atención de múltiples cabezas , propuesto en un artículo de 2017 " Attention Is All You Need ". [1] El texto se convierte en representaciones numéricas llamadas tokens , y cada token se convierte en un vector buscando en una tabla de incrustación de palabras . [1] En cada capa, cada token se contextualiza dentro del alcance de la ventana de contexto con otros tokens (desenmascarados) a través de un mecanismo de atención paralelo de múltiples cabezales que permite amplificar la señal de los tokens clave y disminuir los tokens menos importantes.

Los transformadores tienen la ventaja de no tener unidades recurrentes y, por lo tanto, requieren menos tiempo de entrenamiento que las arquitecturas neuronales recurrentes (RNN) anteriores, como la memoria a corto plazo (LSTM). [2] Se han adoptado ampliamente variaciones posteriores para entrenar modelos de lenguaje grandes (LLM) en conjuntos de datos grandes (de lenguaje), como el corpus de Wikipedia y Common Crawl . [3]

Los transformadores se desarrollaron por primera vez como una mejora con respecto a las arquitecturas anteriores para la traducción automática , [4] [5] pero han encontrado muchas aplicaciones desde entonces. Se utilizan en procesamiento de lenguaje natural a gran escala , visión por computadora ( transformadores de visión ), aprendizaje por refuerzo , [6] [7] audio, [8] procesamiento multimodal, robótica, [9] e incluso jugar al ajedrez . [10] También ha llevado al desarrollo de sistemas pre-entrenados , como los transformadores generativos pre-entrenados (GPT) [11] y BERT [12] (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 simples (RNN). Un ejemplo temprano bien citado fue la red Elman (1990). En teoría, la información de un token puede propagarse arbitrariamente hacia abajo en la secuencia, pero en la práctica el problema del gradiente evanescente deja el estado del modelo al final de una larga oración sin información precisa y extraíble sobre los tokens anteriores.

Un avance clave fue LSTM (1995), [nota 1] un RNN que utilizó varias innovaciones para superar el problema del gradiente evanescente, permitiendo un aprendizaje eficiente del modelado de secuencias largas. Una innovación clave fue el uso de un mecanismo de atención que utilizaba neuronas que multiplicaban las salidas de otras neuronas, las llamadas unidades multiplicativas . [13] Las redes neuronales que utilizaban unidades multiplicativas se denominaron redes sigma-pi [14] o redes de orden superior , [15] pero enfrentaban una alta complejidad computacional. [2] 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 usaba procesamiento secuencial, como la mayoría de los otros RNN. [nota 2] Específicamente, los RNN operan un token a la vez, desde el primero hasta el último; no pueden operar en paralelo sobre todos los tokens en una secuencia. Uno de los primeros intentos de superar esto fue el control rápido de peso (1992). [16] Utilizó la arquitectura de pesos rápidos (1987), [17] donde una red neuronal genera los pesos de otra red neuronal. Más tarde se demostró que era equivalente al Transformador lineal sin normalización. [18] [19]

Atención con seq2seq

La idea de la transducción de secuencia codificador-decodificador se desarrolló a principios de la década de 2010 (consulte [20] [21] para artículos anteriores). Los artículos más comúnmente citados como los creadores que produjeron seq2seq son dos artículos publicados simultáneamente en 2014. [20] [21]

(Sutskever et al, 2014) [21] era un modelo de 380M de parámetros para traducción automática utilizando dos memorias largas y cortas (LSTM). La arquitectura consta de dos partes. El codificador es un LSTM que toma una secuencia de tokens y la convierte en un vector. El decodificador es otro LSTM que convierte el vector en una secuencia de tokens. De manera similar, (Cho et al, 2014) [20] era un modelo de parámetros 130M que utilizaba unidades recurrentes cerradas (GRU) en lugar de LSTM. Investigaciones posteriores demostraron que los GRU no son ni mejores ni peores que los LSTM para seq2seq. [22] [23]

Estos primeros modelos seq2seq no tenían ningún mecanismo de atención y el vector de estado es accesible solo después de que se procesó la última palabra del texto fuente. Aunque en teoría dicho vector retiene la información sobre toda la oración original, en la práctica la información se conserva deficientemente, ya que la entrada es procesada secuencialmente por una red recurrente en un vector de salida de tamaño fijo , que luego fue procesado por otra red recurrente en una salida. Si la entrada es larga, entonces el vector de salida no podrá contener toda la información relevante y la calidad de la salida se degradará. Como prueba, revertir la oración de entrada mejoró la traducción seq2seq. [24]

(Bahdanau et al, 2014) [4] introdujo un mecanismo de atención en seq2seq para la traducción automática para resolver el problema del cuello de botella, lo que permite que el modelo procese dependencias de larga distancia más fácilmente. Llamaron a su modelo RNNsearch , ya que "emula la búsqueda a través de una oración fuente durante la decodificación de una traducción".

(Luong et al, 2015) [25] compararon el rendimiento relativo de las arquitecturas de modelos de atención global (la de (Bahdanau et al, 2014)) y local (ventana deslizante) para la traducción automática, y descubrieron que una arquitectura de atención mixta tenía mayor calidad. que la atención global, mientras que el uso de una arquitectura de atención local redujo el tiempo de traducción.

En 2016, Google Translate se renovó a Google Neural Machine Translation , que sustituyó al modelo anterior basado en la traducción automática estadística . El nuevo modelo era un modelo seq2seq donde el codificador y el decodificador eran ambos de 8 capas de LSTM bidireccional. [26] Su desarrollo tardó nueve meses y logró un mayor nivel de rendimiento que el enfoque estadístico, que tardó diez años en desarrollarse. [27]

Atención

Los modelos Seq2seq con atención todavía sufrieron el mismo problema con las redes recurrentes, que es que son difíciles de paralelizar, lo que impidió que se aceleraran en las GPU. En 2016, la atención descomponible aplicó un mecanismo de atención a la red feedforward , que es fácil de paralelizar. [28] Uno de sus autores, Jakob Uszkoreit, sospechaba que la atención sin recurrencia es suficiente para la traducción de idiomas, de ahí el título "la atención es todo lo que necesitas". [29]

En 2017, el modelo de transformador codificador-decodificador original (tamaño 100 M) se propuso en el documento " La atención es todo lo que necesitas ". En ese momento, el objetivo de la investigación era mejorar seq2seq para la traducción automática , eliminando su recurrencia para procesar todos los tokens en paralelo, pero preservando su mecanismo de atención al producto punto para mantener su rendimiento de procesamiento de texto. [1] Su paralelización fue un factor importante para su uso generalizado en grandes redes neuronales. [30]

Auge del transformador

Se utilizaron transformadores en muchos modelos que contribuyeron al auge de la IA .

En modelado de lenguaje, ELMo (2018) era un 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 con codificador. [31] En octubre de 2019, Google comenzó a utilizar BERT para procesar consultas de búsqueda. [32] En 2020, Google Translate reemplazó el modelo anterior de codificador-RNN-decodificador RNN por un modelo de codificador-RNN-decodificador Transformer. [33]

A partir de 2018, la serie OpenAI GPT de Transformers solo decodificadores se convirtió en lo último en generación de lenguaje natural . En 2022, un chatbot basado en GPT-3, ChatGPT , se hizo inesperadamente popular, [34] provocando un auge en torno a los grandes modelos de lenguaje . [35] [36]

Desde 2020, los Transformers se aplicaron a más modalidades además del texto, incluido el transformador de visión , [37] reconocimiento de voz, [38] robótica, [6] y multimodal . [39] El transformador de visión, a su vez, estimuló nuevos desarrollos en redes neuronales convolucionales . [40] Generadores de imágenes y video como DALL-E (2021), Stable Diffusion 3 (2024), [41] y Sora (2024), se basaron en la arquitectura Transformer.

Capacitación

Métodos para estabilizar el entrenamiento.

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

Un artículo de 2020 encontró que el uso de la normalización de capas antes (en lugar de después) de la atención de múltiples cabezas y las capas de avance estabiliza el entrenamiento, sin requerir un calentamiento de la tasa de aprendizaje. [42]

Ajuste previo al entrenamiento

Por lo general, los transformadores se entrenan primero mediante aprendizaje autosupervisado en un gran conjunto de datos genéricos, seguido de un ajuste supervisado en un pequeño conjunto de datos de tareas específicas. El conjunto de datos previo al entrenamiento suele ser un corpus grande sin etiquetar, como The Pile . Las tareas de preentrenamiento y ajuste comúnmente incluyen:

El informe del transformador T5 [43] documenta una gran cantidad de tareas de preentrenamiento. Algunos ejemplos son:

Tareas

En general, existen 3 clases de tareas de modelado de lenguaje: "enmascaradas", [44] "autoregresivas", [45] y "prefixLM". [46] Estas clases son independientes de una arquitectura de modelado específica como Transformer, pero a menudo se analizan en el contexto de Transformer.

En una tarea enmascarada, [44] uno o más de los tokens están enmascarados, 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 suele ser la suma de las perplejidades logarítmicas de los tokens enmascarados: y el modelo está entrenado para minimizar esta función de pérdida. La serie de modelos BERT está entrenada para la predicción de tokens enmascarados y otra tarea.

En una tarea autorregresiva, [45] toda la secuencia se enmascara al principio y el modelo produce una distribución de probabilidad para el primer token. Luego se revela la primera ficha y el modelo predice la segunda ficha, y así sucesivamente. La función de pérdida de la tarea suele ser la misma. La serie de modelos GPT se entrena mediante tareas autorregresivas.

En una tarea prefixLM, [46] 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 eso se revelaría y el modelo predice el segundo token, y así sucesivamente. La función de pérdida de la tarea suele ser la misma. La serie de modelos T5 se entrena mediante tareas prefixLM.

Tenga en cuenta que "enmascarado" como en "modelado de lenguaje enmascarado" no es "enmascarado" como en "atención enmascarada" y "prefixLM" (modelado de lenguaje de prefijo) no es "prefixLM" (modelo de lenguaje de prefijo).

Arquitectura

Todos los transformadores tienen los mismos componentes primarios:

La siguiente descripción sigue exactamente el transformador como se describe en el documento original. Existen variantes, que se describen en la siguiente sección.

Por convención, escribimos todos los vectores como vectores fila. Esto, por ejemplo, significa que empujar un vector a través de una capa lineal significa multiplicarlo por una matriz de peso a la derecha, como .

Tokenización

Como la arquitectura Transformer procesa de forma nativa datos numéricos, no texto, debe haber una traducción entre el texto y los tokens. Un token es un número entero que representa un carácter o un segmento corto de caracteres. En el lado de entrada, el texto de entrada se analiza en una secuencia de token. De manera similar, en el lado de la salida, los tokens de salida se analizan nuevamente en texto. El módulo que realiza la conversión entre secuencias de tokens y textos es un tokenizador .

El conjunto de todos los tokens es el vocabulario del tokenizador y su tamaño es el tamaño del vocabulario . Cuando se trata de tokens fuera del vocabulario, normalmente se utiliza un token especial, escrito como "[UNK]" para "desconocido".

Algunos tokenizadores de uso común son la codificación de pares de bytes , WordPieza y SentencePieza.

incrustar

Cada token se convierte en un vector de incrustación mediante una tabla de búsqueda . Dicho de manera equivalente, multiplica una representación única del token por una matriz de incrustación . Por ejemplo, si el token de entrada es , entonces la representación única es y su vector de incrustación es. Los vectores de incrustación del token se agregan a sus respectivos vectores de codificación posicional (ver más abajo), produciendo la secuencia de vectores de entrada.

El número de dimensiones en un vector de incrustación se denomina tamaño oculto o tamaño de incrustación y se escribe como [47]

Desintegración

Una capa de desincrustación es casi lo contrario de una capa de incrustación. Mientras que una capa de incrustación convierte un token en un vector, una capa de desincrustación convierte un vector en una distribución de probabilidad sobre tokens.

La capa de desintegración es una capa lineal- softmax : la matriz tiene forma .

Codificación posicional

Un diagrama de una codificación posicional sinusoidal con parámetros.

Una 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 del transformador información sobre dónde están las palabras en la secuencia de entrada. Sin codificación posicional, el modelo no podría procesar la secuencia de entrada como más que una bolsa de palabras , como por ejemplo, tanto " hombre muerde a perro " como "perro muerde a hombre" se procesarían exactamente de la misma manera.

La codificación posicional se define como una función del tipo , donde es un número entero par positivo . La codificación posicional completa definida en el artículo original [1] es: donde .

Aquí hay un parámetro libre que debería ser significativamente mayor que el mayor que se ingresaría en la función de codificación posicional. El papel original utiliza .

La función tiene una forma más simple cuando se escribe como una función compleja de tipo donde .

La razón principal para usar esta función de codificación posicional es que al usarla, los cambios son transformaciones lineales: ¿ dónde está la distancia que uno desea cambiar? 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 tomar una suma lineal, cualquier convolución también se puede implementar como transformaciones lineales: para cualquier constante . Esto permite que el transformador tome cualquier posición codificada y encuentre una suma lineal de las ubicaciones codificadas de sus vecinos. Esta suma de posiciones codificadas, cuando se introduce en el mecanismo de atención, crearía pesos de atención en sus vecinos, de forma muy parecida a lo que sucede en un modelo de lenguaje de red neuronal convolucional . En palabras del autor, "presumimos que permitiría al modelo aprender fácilmente a atender por posición relativa".

En implementaciones típicas, todas las operaciones se realizan con números reales, no con números complejos, pero dado que la multiplicación compleja se puede implementar como una multiplicación real de matrices 2 por 2 , esta es una mera 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 de transformador original utilizaba una arquitectura codificador-decodificador . El codificador consta de capas de codificación que procesan todos los tokens de entrada juntos, una capa tras otra, 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 de codificador 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 de decodificador contiene dos subcapas de atención: (1) atención cruzada para incorporar la salida del codificador (representaciones de tokens de entrada contextualizadas) y (2) atención propia para "mezclar" información entre los tokens de entrada al decodificador (es decir, los tokens generado hasta ahora durante el tiempo de inferencia). [48] ​​[49]

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

Red de avance

El módulo de red feedforward. Es una red de dos capas que asigna vectores -dimensionales a vectores -dimensionales.

Los módulos de red feedforward (FFN) en un transformador son perceptrones multicapa de 2 capas : ¿dónde está su función de activación? El Transformer original usaba activación ReLU .

El número de neuronas en la capa intermedia se denomina tamaño intermedio (GPT), [50] tamaño de filtro (BERT), [47] o tamaño de avance (BERT). [47] Por lo general, es más grande que el tamaño de 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: .

Atención de productos escalados

cabeza de atencion

Atención de producto escalado, diagrama de bloques.
La dimensión exacta cuenta dentro de un módulo de cabeza de atención.

El mecanismo de atención utilizado en la arquitectura Transformer son unidades de atención de productos escalados . Para cada unidad, el modelo transformador aprende tres matrices de pesos: los pesos de consulta , los pesos de clave y los pesos de valor .

El módulo toma tres secuencias, una secuencia de consulta, una secuencia de claves y una secuencia de valores. La secuencia de consulta es una secuencia de longitud y cada entrada es un vector de dimensión . Lo mismo ocurre con las secuencias de claves y valores.

Para cada vector en la secuencia de consulta, se multiplica por una matriz para producir un vector de consulta . La matriz de todos los vectores de consulta es la matriz de consulta: de manera similar, construimos la matriz clave y la matriz de valores .

Suele darse el caso de que todas sean matrices cuadradas, es decir , etc.

Los pesos de atención se calculan utilizando los vectores clave y de consulta: el peso de atención de un token a otro es el producto escalar entre y . Los pesos de atención se dividen por la raíz cuadrada de la dimensión de los vectores clave, que estabiliza los gradientes durante el entrenamiento, y se pasan a través de un softmax que normaliza los pesos. El hecho de que y sean matrices diferentes permite que la atención sea no simétrica: si el token atiende al token (es decir, es grande), esto no significa necesariamente que el token atenderá al token (es decir, podría ser pequeño). La salida de la unidad de atención para el token es la suma ponderada de los vectores de valor de todos los tokens, ponderada por la atención del token a cada token.

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 matrices , y se definen como las matrices donde las filas enésimas son vectores , y respectivamente. Entonces podemos representar la atención como

donde el softmax se aplica 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 y lo mismo ocurre con el tamaño de la clave y el tamaño del valor . La dimensión de salida de una cabeza de atención es la dimensión de su cabeza . El mecanismo de atención requiere que se cumplan las tres igualdades siguientes: pero por lo demás no tiene restricciones.

Si la cabeza de atención se utiliza en forma de autoatención, entonces . Si la cabeza de atención se utiliza en forma de atención cruzada, entonces generalmente ... En teoría, los tres son diferentes, pero rara vez se utiliza en la práctica.

Atención multidireccional

Atención multidireccional, diagrama de bloques.
La dimensión exacta cuenta dentro de un módulo de atención de múltiples encabezados.

Un conjunto de matrices se llama cabeza de atención y cada capa en un modelo de transformador tiene múltiples cabezas de atención. Si bien cada cabezal de atención atiende a los tokens que son relevantes para cada token, múltiples cabezales de atención permiten que el modelo haga esto para diferentes definiciones de "relevancia". Además, el campo de influencia que representa la relevancia puede dilatarse progresivamente en capas sucesivas. Muchas cabezas de atención transformadoras codifican relaciones de relevancia que son significativas para los humanos. Por ejemplo, algunas cabezas de atención pueden prestar atención principalmente a la siguiente palabra, mientras que otras prestan atención principalmente de los verbos a sus objetos directos. [51] Los cálculos para cada cabeza de atención se pueden realizar en paralelo , lo que permite un procesamiento rápido. Las salidas de la capa de atención se concatenan para pasar a las capas de la red neuronal de retroalimentación .

Concretamente, dejemos que las múltiples cabezas de atención estén indexadas por , entonces tenemos donde la matriz es la concatenación de incrustaciones de palabras, y las matrices son "matrices de proyección" propiedad de la cabeza de atención individual , y es una matriz de proyección final propiedad de todo el conjunto de múltiples cabezas de atención. cabeza de atención dirigida.

En teoría, es posible que cada cabeza de atención tenga una dimensión de cabeza diferente , pero rara vez se utiliza en la práctica.

Por ejemplo, en el modelo GPT-2 más pequeño, solo hay mecanismos de autoatención. Tiene las siguientes dimensiones: Dado que , su matriz de proyección es una matriz cuadrada.

Atención enmascarada

Puede que sea necesario eliminar los vínculos de atención entre algunos pares de palabras. Por ejemplo, el decodificador, al decodificar la posición del token , no debe tener acceso al token en la posición . Esto se puede lograr antes de la etapa softmax agregando una matriz de máscara que esté en las entradas donde se debe cortar el enlace de atención y en otros lugares: Un módulo de atención no enmascarado puede considerarse como un módulo de atención enmascarado donde la máscara tiene todos entradas cero.

Por ejemplo, la siguiente matriz se usa comúnmente en los módulos de autoatención del decodificador, llamada "enmascaramiento causal": en palabras, significa que cada token puede prestar atención a sí mismo y a cada token anterior a él, pero no a ninguno posterior. Como ejemplo de un uso poco común de matriz de máscara, XLNet considera todas las máscaras de la forma , donde es una matriz de permutación aleatoria . [52]

Codificador

Una capa de codificador.

Un codificador consta de una capa de incrustación, seguida de varias capas de codificador.

Cada capa de codificador consta de dos componentes principales: un mecanismo de autoatención y una capa de retroalimentación. Toma una entrada como una secuencia de vectores de entrada, aplica el mecanismo de autoatención para producir una secuencia intermedia de vectores y luego aplica la capa de avance para cada vector individualmente. Esquemáticamente tenemos:

donde significa "red de retroalimentación". Podemos escribirlo de manera más sucinta con la convención implícita de que se aplica a cada fila de la matriz individualmente.

Las capas del codificador están apiladas. La primera capa codificadora toma la secuencia de vectores de entrada de la capa de incrustación, produciendo una secuencia de vectores. Esta secuencia de vectores es procesada por el segundo codificador, y así sucesivamente. Luego, el decodificador utiliza la salida de la capa del codificador final.

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

Descifrador

Una capa de decodificador.

Un decodificador consta de una capa de incrustación, seguida de varias capas de decodificador, seguidas de una capa de desincrustación.

Cada decodificador consta de tres componentes principales: un mecanismo de autoatención enmascarado causalmente, un mecanismo de atención cruzada y una red neuronal de retroalimentación. El decodificador funciona de manera similar al codificador, pero se inserta un mecanismo de atención adicional que, en cambio, extrae información relevante de las codificaciones generadas por los codificadores. Este mecanismo también puede denominarse atención codificador-decodificador . [1] [49]

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 utilizar 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 autorregresivo . Para la decodificación, la atención general es inapropiada, porque un token no puede atender a los tokens que aún no se han generado. Por lo tanto, el módulo de autoatención en el decodificador está causalmente enmascarado.

Por el contrario, el mecanismo de atención cruzada atiende a los vectores de salida del codificador, que se calcula antes de que el decodificador comience a decodificar. En consecuencia, no hay necesidad de enmascarar el mecanismo de atención cruzada.

Esquemáticamente tenemos: ¿Dónde está la matriz con filas que son los vectores de salida del codificador?

Al último decodificador le sigue una capa final de desincrustación. para producir las probabilidades de salida sobre el vocabulario. Luego, se muestrea uno de los tokens según la probabilidad y el decodificador se puede ejecutar nuevamente para producir el siguiente token, etc., generando texto de salida de forma autorregresiva.

Arquitectura de transformador completo

Subcapas

(a) Una capa codificadora y una capa decodificadora. (b) Dos capas codificadoras y dos capas decodificadoras. Las subcapas también están etiquetadas.

Cada capa de codificador contiene 2 subcapas: la red de autoatención y la red de avance. Cada capa decodificadora contiene 3 subcapas: la autoatención causalmente enmascarada, la atención cruzada y la red de retroalimentación.

Codificador de transformador con norma primero y norma última.
Decodificador de transformador con norma primero y norma última.
Diagrama de bloques para la arquitectura Transformer completa.
Jerarquía de objetos esquemática para la arquitectura Transformer completa, en estilo de programación orientada a objetos .

Los puntos finales de detalle son las conexiones residuales y la normalización de capas (LayerNorm o LN), que si bien conceptualmente son innecesarias, son necesarias para la estabilidad numérica y la convergencia. De manera similar a cómo los módulos de red feedforward se aplican individualmente a cada vector, LayerNorm también se aplica individualmente a cada vector.

Hay dos convenciones comunes en uso: la convención posterior a LN y la convención anterior a LN . En la convención posterior a LN, la salida de cada subcapa es donde está la función implementada por la propia subcapa.

En la convención anterior a LN, la salida de cada subcapa es. El Transformer original de 2017 utilizó la convención posterior a LN. Fue difícil de entrenar y requirió un ajuste cuidadoso de los hiperparámetros y un "calentamiento" en la tasa de aprendizaje, donde comienza poco a poco y aumenta gradualmente. La convención anterior a LN se desarrolló en 2020 y se descubrió que era más fácil de entrenar y no requería calentamiento, lo que conducía a una convergencia más rápida. [42]

Pseudocódigo

El siguiente es el pseudocódigo para un transformador codificador-decodificador estándar anterior a LN, adaptado de [53]

entrada: entrada del codificador t_e Entrada del decodificador t_dsalida: Matriz de distribuciones de probabilidad, con forma (vocabulario del decodificador tamaño x longitud (secuencia de salida del decodificador))/* codificador */z_e ← codificador.tokenizer(t_e)para  cada t en 1: longitud (z_e) hacer z_e[t] ← codificador.embedding(z_e[t]) + codificador.positional_embedding(t)para  cada l en 1: longitud (codificador.capas) hacer capa ← codificador.capas[l] /* primera subcapa */ z_e_copiar ← copiar(z_e) para cada t en 1: longitud (z_e) hacer z_e[t] ← capa.layer_norm(z_e[t]) z_e ← capa.multiheaded_attention(z_e, z_e, z_e) para cada t en 1: longitud (z_e) hacer z_e[t] ← z_e[t] + z_e_copia[t] /* segunda subcapa */ z_e_copiar ← copiar(z_e) para cada t en 1: longitud (z_e) hacer z_e[t] ← capa.layer_norm(z_e[t]) z_e ← capa.feedforward(z_e) para cada t en 1: longitud (z_e) hacer z_e[t] ← z_e[t] + z_e_copia[t]para cada t en 1: longitud (z_e) hacer z_e[t] ← codificador.final_layer_norm(z_e[t])/* decodificador */z_d ← decodificador.tokenizer(t_d)para  cada t en 1: longitud (z_d) hacer z_d[t] ← decodificador.embedding(z_d[t]) + decodificador.positional_embedding(t)para  cada l en 1: longitud (decodificador.capas) hacer capa ← decodificador.capas[l] /* primera subcapa */ z_d_copiar ← copiar(z_d) para cada t en 1: longitud (z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.masked_multiheaded_attention(z_d, z_d, z_d) para cada t en 1: longitud (z_d) hacer z_d[t] ← z_d[t] + z_d_copia[t] /* segunda subcapa */ z_d_copiar ← copiar(z_d) para cada t en 1: longitud (z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.multiheaded_attention(z_d, z_e, z_e) para cada i en 1: longitud (z_d) hacer z_d[t] ← z_d[t] + z_d_copia[t] /* tercera subcapa */ z_d_copiar ← copiar(z_d) para cada t en 1: longitud (z_d) hacer z_d[t] ← capa.layer_norm(z_d[t]) z_d ← capa.feedforward(z_d) para cada t en 1: longitud (z_d) hacer z_d[t] ← z_d[t] + z_d_copia[t]z_d ← decodificador.final_layer_norm(z_d)distribuciones_de_salida ← []para cada t en 1: longitud (z_d) hacer distribuciones_salida.append(decodificador.unembed(z_d[t]))devolver distribuciones_salida

Terminología

La arquitectura Transformer al ser modular permite variaciones. Aquí se describen varias variaciones comunes. [54]

Un transformador "solo codificador" aplica el codificador para asignar un texto de entrada a una secuencia de vectores que representan el texto de entrada. Esto generalmente se usa para la incrustación de texto y el aprendizaje de representación para aplicaciones posteriores. BERT es solo codificador. Actualmente se utilizan con menos frecuencia, ya que se descubrió que no son significativamente mejores que entrenar un transformador codificador-decodificador y luego tomar solo el codificador. [46]

Un transformador "sólo decodificador" no es literalmente sólo decodificador, ya que sin un codificador, el mecanismo de atención cruzada no tiene nada que atender. Por lo tanto, las capas de decodificador en un Transformer solo decodificador se componen de solo dos subcapas: la autoatención causalmente enmascarada y la red de alimentación directa. Esto generalmente se usa para generar texto y seguir instrucciones . Los modelos de las series GPT y Chinchilla solo tienen decodificador.

Un transformador "codificador-decodificador" es generalmente el mismo que el transformador original, con 2 subcapas por capa codificadora y 3 subcapas por capa decodificadora, etc. Es posible que tengan mejoras arquitectónicas menores, como funciones de activación alternativas, cambio de ubicación de normalización, etc. Esto también se usa generalmente para la generación de texto y el seguimiento de instrucciones . Los modelos de la serie T5 son codificadores-decodificadores. [54]

Un "prefixLM" (modelo de lenguaje de prefijo) es una arquitectura de solo decodificador, pero con enmascaramiento de prefijo, que es diferente del enmascaramiento causal. Específicamente, tiene una máscara de la forma [54] donde las primeras columnas corresponden al "prefijo" y las columnas posteriores corresponden al texto generado autorregresivamente en función del prefijo. Se parecen a los modelos de codificador-decodificador, pero tienen menos "escasez". Estos modelos rara vez se utilizan, aunque se citan como posibilidades teóricas y comparaciones comparativas. [46]

También hay modelos mixtos seq2seq. Por ejemplo, en 2020, Google Translate reemplazó el modelo anterior de codificador RNN-decodificador RNN por un modelo de codificador-RNN-decodificador Transformer, con el argumento de que un decodificador RNN se ejecuta mucho más rápido que un decodificador Transformer cuando se ejecuta de forma autorregresiva. [55]

Trabajo posterior

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 utilizó SwiGLU; [56] tanto GPT-1 como BERT [31] usaron GELU. [57]

Normalizaciones alternativas

La normalización utilizada en Transformer puede ser diferente de LayerNorm. Un ejemplo es RMSNorm [58] que se utiliza en la serie Llama . Otros ejemplos incluyen ScaleNorm, [59] o FixNorm. [59]

Codificaciones posicionales alternativas

Los transformadores pueden utilizar otros métodos de codificación posicional distintos de los sinusoidales. [60]

El artículo original de Transformer informó que utilizó una codificación posicional aprendida, [61] pero no la encontró superior a la sinusoidal. [1] Más tarde, [62] descubrió que el enmascaramiento causal en sí proporciona suficiente señal a un decodificador Transformer para que pueda aprender a realizar implícitamente codificación posicional absoluta sin el módulo de codificación posicional.

Soga

RoPE (incrustación posicional rotativa), [63] se explica mejor considerando una lista de vectores bidimensionales . Ahora elige algún ángulo . Entonces la codificación RoPE es equivalente, si escribimos los vectores bidimensionales como números complejos , entonces la codificación RoPE es simplemente una multiplicación por un ángulo: para una lista de vectores bidimensionales, un codificador RoPE se define por una secuencia de ángulos . Luego se aplica la codificación RoPE a cada par de coordenadas.

El beneficio de RoPE es que el producto escalar entre dos vectores depende únicamente de su ubicación relativa: para cualquier número entero .

Coartada

ALiBi (Atención con polarizaciones lineales) [64] no reemplaza el 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 de ALiBi es un número real ("escalar") y es la matriz de sesgo lineal definida por , en otras palabras, . La idea es que la matriz de sesgo lineal es una máscara suavizada. Así como representa toda la atención prestada y representa ninguna atención prestada, 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 entrenamiento previo en ventanas de contexto cortas y luego el ajuste en ventanas de contexto más largas. Dado que se conecta directamente al mecanismo de atención, se puede combinar con cualquier codificador posicional que esté conectado al "fondo" de toda la red (que es donde se encuentra el codificador sinusoidal del transformador original, así como RoPE y muchos otros). están ubicados).

Codificaciones de posición relativa

Codificaciones de posición relativa [65] es similar a ALiBi, pero más genérica: dónde está una matriz de Toeplitz , es decir, cuando sea . Esto contrasta con la codificación posicional sinusoidal original, que es una "codificación posicional absoluta". [66]

Implementación eficiente

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

FlashAtención

FlashAttention [67] es un algoritmo que implementa eficientemente el mecanismo de atención del transformador en una GPU. Realiza multiplicaciones de matrices en bloques , de modo que cada bloque cabe dentro del caché de una GPU y, mediante una gestión cuidadosa de los bloques, minimiza la copia de datos entre cachés de GPU (ya que el movimiento de datos es lento).

Se desarrolló una versión mejorada, FlashAttention-2, [68] [69] [70] para satisfacer la creciente demanda de modelos de lenguaje capaces de manejar contextos de mayor longitud. Ofrece mejoras en la partición del trabajo y el paralelismo, lo que le permite alcanzar hasta 230 TFLOP/s en GPU A100 ( FP16 / BF16 ), un aumento de velocidad 2 veces mayor que el FlashAttention original.

Los avances clave en FlashAttention-2 incluyen la reducción de FLOP no matmul, paralelismo mejorado en la dimensión de longitud de secuencia, mejor partición del trabajo entre deformaciones de GPU y soporte agregado para dimensiones de cabeza de hasta 256 y atención de consultas múltiples (MQA) y agrupación. atención de consultas (GQA).

Los puntos de referencia 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.

Atención multiconsulta

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

con Atención Multiconsulta, solo hay una , por lo tanto:

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

Almacenamiento en caché

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

Si se utiliza un transformador con un mensaje integrado, como ["Usted es un agente de atención al cliente..."], entonces los vectores clave y de valor se pueden calcular para el mensaje y guardarse en el disco. El ahorro en computación es significativo cuando el modelo se utiliza para muchas interacciones breves, como en los chatbots en línea.

Decodificación especulativa

Los transformadores se utilizan en modelos de lenguaje grandes para la generación de secuencias autorregresivas: generar un flujo de texto, un token a la vez. Sin embargo, en la mayoría de los entornos, la decodificación de modelos de lenguaje está ligada a la memoria, lo que significa que tenemos potencia de cálculo disponible. La decodificación especulativa [75] [76] utiliza esta potencia de cálculo adicional calculando varios tokens en paralelo. De manera similar a la ejecución especulativa en las CPU, los tokens futuros se calculan simultáneamente, especulando sobre el valor de los tokens anteriores, y luego se descartan si resulta que la especulación fue incorrecta.

Específicamente, considere un modelo de transformador como GPT-3 con un tamaño de ventana de contexto de 512. Para generar una ventana de contexto completa de forma autorregresiva con decodificación codiciosa, se debe ejecutar 512 veces, generando cada vez un token . Sin embargo, si tuviéramos alguna suposición fundamentada sobre los valores de estos tokens, podríamos verificarlos todos en paralelo, en una ejecución del modelo, verificando que cada uno sea de hecho el token con la mayor probabilidad logarítmica en la -ésima salida. .

En la decodificación especulativa, se utiliza un modelo más pequeño o alguna otra heurística simple para generar algunos tokens especulativos que posteriormente son verificados por el modelo más grande. Por ejemplo, supongamos que un modelo pequeño generó cuatro tokens especulativos: . Estos tokens se ejecutan en el modelo más grande y solo se aceptan y . La misma ejecución del modelo grande ya generó un nuevo token para reemplazar y está completamente descartado. Luego, el proceso se repite (a partir del cuarto token) hasta que se generen todos los tokens.

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

Transformadores subcuadráticos

Entrenar arquitecturas basadas en transformadores puede resultar costoso, especialmente para entradas largas. [78] Las arquitecturas alternativas incluyen el Reformer (que reduce la carga computacional de a [78] ), o modelos como ETC/BigBird (que puede reducirla a ) [79] donde es la longitud de la secuencia. Esto se hace utilizando hash sensible a la localidad y capas reversibles. [80] [81]

Los transformadores ordinarios requieren un tamaño de memoria que sea cuadrático en el tamaño de la ventana contextual. Los transformadores sin atención [82] reducen esto a una dependencia lineal y al mismo tiempo conservan las ventajas de un transformador al vincular la clave al valor.

Long Range Arena (2020) [83] es un punto de referencia estándar para comparar el comportamiento de arquitecturas de transformadores en entradas largas.

Atención de características aleatorias (2021) [84] utiliza características aleatorias de Fourier : donde hay muestras independientes de la distribución normal . Esta elección de parámetros satisface , o En consecuencia, la atención unidireccional, con una consulta, se puede escribir como donde . Lo mismo ocurre con consultas múltiples y con atención de múltiples cabezas.

Esta aproximación se puede calcular en tiempo lineal, ya que primero podemos calcular la matriz y luego multiplicarla por la consulta. En esencia, hemos logrado obtener una versión más precisa de

Performer (2022) [85] utiliza la misma atención de características aleatorias, pero primero se muestrean de forma independiente de la distribución normal y luego se procesan según Gram-Schmidt .

Multimodalidad

Los transformadores también se pueden usar/adaptar para modalidades (entrada o salida) más allá del simple texto, generalmente encontrando una manera de "tokenizar" la modalidad.

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

Conformer [38] y posteriormente Whisper [86] 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 divide en una serie de parches, se convierte en vectores y se trata como fichas en un transformador estándar.

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

Para la generación de imágenes, dos arquitecturas destacadas son DALL-E 1 (2021) y Parti (2022). [89] A diferencia de los modelos posteriores, DALL-E no es un modelo de difusión. En su lugar, utiliza un Transformer solo decodificador que genera de forma autorregresiva un texto, seguido de la representación simbólica de una imagen, que luego se convierte mediante un codificador automático variacional en una imagen. [90] Parti es un transformador codificador-decodificador, donde el codificador procesa un mensaje de texto y el decodificador genera una representación simbólica de una imagen. [91]

Aplicaciones

El transformador ha tenido un gran éxito en el procesamiento del lenguaje natural (PLN), por ejemplo en tareas de traducción automática y predicción de series temporales . Muchos modelos de lenguaje grandes como GPT-2 , GPT-3 , GPT-4 , Claude , BERT , XLNet, RoBERTa y ChatGPT demuestran la capacidad de los transformadores para realizar una amplia variedad de tareas relacionadas con la PNL y tienen el potencial de encontrar aplicaciones del mundo real. Estos pueden incluir:

Además de las aplicaciones de PNL, también ha tenido éxito en otros campos, como la visión por ordenador o las aplicaciones de plegado de proteínas (como AlphaFold ). También se aplicó para evaluar las posiciones del tablero de ajedrez. Utilizando únicamente la evaluación estática (es decir, sin búsqueda Minimax ) pudo alcanzar un Elo de 2895, colocándolo al nivel de gran maestro . [10]

Ver también

Notas

  1. ^ Las unidades recurrentes cerradas (2014) redujeron aún más su complejidad.
  2. ^ Algunas arquitecturas, como RWKV o modelos de espacio de estados, evitan el problema.

Referencias

  1. ^ abcdefghij Vaswani, Ashish ; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, León; Gómez, Aidan N ; Káiser, Łukasz; Polosukhin, Illia (2017). "La atención es todo lo que necesita" (PDF) . Avances en los sistemas de procesamiento de información neuronal . 30 . Curran asociados, Inc.
  2. ^ ab Hochreiter, Sepp ; Schmidhuber, Jürgen (1 de noviembre de 1997). "Memoria a largo plazo". Computación neuronal . 9 (8): 1735–1780. doi :10.1162/neco.1997.9.8.1735. ISSN  0899-7667. PMID  9377276. S2CID  1915014.
  3. ^ ab "Mejores modelos de lenguaje y sus implicaciones". AbiertoAI . 2019-02-14. Archivado desde el original el 19 de diciembre de 2020 . Consultado el 25 de agosto de 2019 .
  4. ^ ab Bahdanau; Cho, Kyunghyun; Bengio, Yoshua (1 de septiembre de 2014). "Traducción automática neuronal mediante el aprendizaje conjunto de alinear y traducir". arXiv : 1409.0473 [cs.CL].
  5. ^ 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].
  6. ^ ab Chen, Lili; Lu, Kevin; Rajeswaran, Aravind; Lee, Kimin; Grover, Aditya; Laskin, Michael; Abbeel, Pieter; Srinivas, Aravind; Mordatch, Igor (24 de junio de 2021), Transformador de decisiones: aprendizaje por refuerzo mediante modelado de secuencias, doi :10.48550/arXiv.2106.01345 , consultado el 6 de agosto de 2024
  7. ^ Parisotto, Emilio; Canción, Francisco; Rae, Jack; Pascanu, Razvan; Gulcehre, Caglar; Jayakumar, Siddhant; Jaderberg, Max; Kaufman, Raphaël López; Clark, Aidan; Noury, Seb; Botvinick, Mateo; Heess, Nicolás; Hadsell, Raia (21 de noviembre de 2020). "Transformadores estabilizadores para el aprendizaje por refuerzo". Actas de la 37ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 7487–7498.
  8. ^ 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].
  9. ^ Monastirsky, Máxima; Azulay, Osher; Sintov, Avishai (febrero de 2023). "Aprender a lanzar con un puñado de muestras utilizando transformadores de decisión". Cartas de robótica y automatización IEEE . 8 (2): 576–583. doi :10.1109/LRA.2022.3229266. ISSN  2377-3766.
  10. ^ ab Ruoss, Anian; Delétang, Grégoire; Medapati, Surabh; Grau-Moya, Jordi; Wenliang, Li; Catt, Elliot; Reid, Juan; Genewein, Tim (7 de febrero de 2024). "Ajedrez a nivel de gran maestro sin búsqueda". arXiv : 2402.04494v1 [cs.LG].
  11. ^ ab Lobo, Thomas; Debut, Lisandro; Sanh, Víctor; Chaumond, Julien; Delangue, Clemente; Yo, Antonio; Cistac, Pierric; Rault, Tim; Louf, Rémi; Funtowicz, Morgan; Davison, Joe; Shleifer, Sam; Von Platen, Patrick; Mamá, Clara; Jernita, Yacine; Plu, Julien; Xu, Canwen; Le Scao, Téven; Gugger, Sylvain; Drama, Mariama; Lhoest, Quentin; Rush, Alejandro (2020). "Transformers: procesamiento del lenguaje natural de última generación". Actas de la Conferencia de 2020 sobre métodos empíricos en el procesamiento del lenguaje natural: demostraciones de sistemas . págs. 38–45. doi :10.18653/v1/2020.emnlp-demos.6. S2CID  208117506.
  12. ^ abc "Open Sourcing BERT: formación previa de última generación para el procesamiento del lenguaje natural". Blog de IA de Google . 2 de noviembre de 2018. Archivado desde el original el 13 de enero de 2021 . Consultado el 25 de agosto de 2019 .
  13. ^ Feldman, JA; Ballard, DH (1 de julio de 1982). "Modelos conexionistas y sus propiedades". Ciencia cognitiva . 6 (3): 205–254. doi :10.1016/S0364-0213(82)80001-3. ISSN  0364-0213.
  14. ^ Rumelhart, David E.; Mcclelland, James L.; Grupo, Investigación PDP (29 de julio de 1987). Procesamiento distribuido paralelo, volumen 1: exploraciones en la microestructura de la cognición: fundamentos, capítulo 2 (PDF) . Cambridge, masa: Bradford Books. ISBN 978-0-262-68053-0.
  15. ^ Giles, C. Lee; Maxwell, Tom (1 de diciembre de 1987). "Aprendizaje, invariancia y generalización en redes neuronales de alto orden". Óptica Aplicada . 26 (23): 4972. doi :10.1364/AO.26.004972. ISSN  0003-6935.
  16. ^ Schmidhuber, Jürgen (1992). "Aprender a controlar los recuerdos de peso rápido: una alternativa a las redes recurrentes" (PDF) . Computación neuronal . 4 (1): 131-139. doi :10.1162/neco.1992.4.1.131. S2CID  16683347.
  17. ^ Hinton, Geoffrey E.; Plaut, David C. (1987). "Uso de pesas rápidas para borrar viejos recuerdos". Actas de la reunión anual de la Sociedad de Ciencias Cognitivas . 9 .
  18. ^ Katharopoulos, Ángelos; 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.
  19. ^ Schlag, Imanol; Irie, Kazuki; Schmidhuber, Jürgen (2021). "Los transformadores lineales son programadores de peso secretamente rápidos". ICML 2021 . Saltador. págs. 9355–9366.
  20. ^ abc Cho, Kyunghyun; van Merriënboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougarés, Fethi; Schwenk, Holger; Bengio, Yoshua (2014-10). Moschitti, Alessandro; Pang, Bo; Daelemans, Walter (eds.). "Aprendizaje de representaciones de frases mediante codificador-decodificador RNN para traducción automática estadística". Actas de la Conferencia de 2014 sobre métodos empíricos en el procesamiento del lenguaje natural (EMNLP) . Doha, Qatar: Asociación de Lingüística Computacional: 1724-1734. doi :10.3115/v1/D14-1179. {{cite journal}}: Verifique los valores de fecha en: |date=( ayuda )
  21. ^ abc Sutskever, Ilya; Vinyals, Oriol; Le, Quoc Viet (14 de diciembre de 2014). "Secuencia a secuenciar aprendizaje con redes neuronales". arXiv : 1409.3215 [cs.CL].[primera versión publicada en arXiv el 10 de septiembre de 2014]
  22. ^ Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun; Bengio, Yoshua (2014). "Evaluación empírica de redes neuronales recurrentes cerradas en modelado de secuencias". arXiv : 1412.3555 [cs.NE].
  23. ^ Gruber, N.; Jockisch, A. (2020), "¿Son las células GRU más específicas y las células LSTM más sensibles en la clasificación de motivos del texto?", Frontiers in Artificial Intelligence , 3 : 40, doi : 10.3389/frai.2020.00040 , PMC 7861254 , PMID  33733157, S2CID  220252321 
  24. ^ Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V (2014). "Aprendizaje secuencia a secuencial con redes neuronales". Avances en los sistemas de procesamiento de información neuronal . 27 . Curran asociados, Inc.
  25. ^ 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].
  26. ^ Wu, Yonghui; et al. (01 de septiembre de 2016). "Sistema de traducción automática neuronal de Google: reduciendo la brecha entre la traducción humana y automática". arXiv : 1609.08144 [cs.CL].
  27. ^ Lewis-Kraus, Gideon (14 de diciembre de 2016). "El gran despertar de la IA". Los New York Times . ISSN  0362-4331. Archivado desde el original el 24 de mayo de 2023 . Consultado el 22 de junio de 2023 .
  28. ^ Parikh, Ankur P.; Täckstrom, Oscar; Das, Dipanjan; Uszkoreit, Jakob (25 de septiembre de 2016). "Un modelo de atención descomponible para la inferencia del lenguaje natural". arXiv : 1606.01933 [cs.CL].
  29. ^ Levy, Steven. "Ocho empleados de Google inventaron la IA moderna. Aquí está la historia interna". Cableado . ISSN  1059-1028. Archivado desde el original el 20 de marzo de 2024 . Consultado el 6 de agosto de 2024 .
  30. ^ Peng, Bo; Alcaide, Eric; Antonio, Quintín; Albalak, Alon; Arcadinho, Samuel; Biderman, Stella; Cao, Huanqi; Cheng, Xin; Chung, Michael (10 de diciembre de 2023), RWKV: Reinventando los RNN para la era de los transformadores, doi :10.48550/arXiv.2305.13048 , consultado el 6 de agosto de 2024
  31. ^ ab Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina (11 de octubre de 2018). "BERT: formación previa de transformadores bidireccionales profundos para la comprensión del lenguaje". arXiv : 1810.04805v2 [cs.CL].
  32. ^ "Google: BERT ahora se utiliza en casi todas las consultas en inglés". Tierra de motores de búsqueda . 2020-10-15 . Consultado el 24 de noviembre de 2020 .
  33. ^ "Avances recientes en Google Translate". investigación.google . Consultado el 8 de mayo de 2024 .
  34. ^ "La historia interna de cómo se creó ChatGPT a partir de las personas que lo crearon". Revisión de tecnología del MIT . Consultado el 6 de agosto de 2024 .
  35. ^ "Mejorar la comprensión del lenguaje con el aprendizaje no supervisado". openai.com . 11 de junio de 2018. Archivado desde el original el 18 de marzo de 2023 . Consultado el 18 de marzo de 2023 .
  36. ^ finetune-transformer-lm, OpenAI, 11 de junio de 2018 , consultado el 1 de mayo de 2023
  37. ^ ab 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].
  38. ^ ab 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].
  39. ^ 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, doi :10.48550/arXiv.2009.14794 , consultado el 6 de agosto de 2024
  40. ^ Liu, Zhuang; Mao, Hanzi; Wu, Chao-Yuan; Feichtenhofer, Christoph; Darrell, Trevor; Xie, Saining (2022). Una ConvNet para la década de 2020. Jornada sobre Visión por Computador y Reconocimiento de Patrones. págs. 11976-11986.
  41. ^ Esser, Patricio; Kulal, Sumith; Blattmann, Andreas; Entezari, Rahim; Müller, Jonas; Saini, Harry; Leví, ñame; Lorenz, Dominik; Sauer, Axel (05/03/2024), Escalado de transformadores de flujo rectificados para síntesis de imágenes de alta resolución , arXiv : 2403.03206
  42. ^ ab 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].
  43. ^ Raffel, Colin; Shazeer, Noam; Roberts, Adán; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (1 de enero de 2020). "Explorando los límites del aprendizaje por transferencia con un transformador unificado de texto a texto". La revista de investigación sobre aprendizaje automático . 21 (1): 140:5485–140:5551. arXiv : 1910.10683 . ISSN  1532-4435.
  44. ^ ab "Modelado de lenguaje enmascarado". abrazandoface.co . Consultado el 5 de octubre de 2023 .
  45. ^ ab "Modelado del lenguaje causal". abrazandoface.co . Consultado el 5 de octubre de 2023 .
  46. ^ abcd Tay, Yi; Dehghani, Mostafa; Tran, Vinh Q.; García, Xavier; Wei, Jason; Wang, Xuezhi; Chung, Hyung Won; Shakeri, Siamak; Bahri, Dara (28 de febrero de 2023), UL2: Unificación de paradigmas de aprendizaje de idiomas, doi :10.48550/arXiv.2205.05131 , consultado el 6 de agosto de 2024
  47. ^ abc Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina (11 de octubre de 2018). "BERT: formación previa de transformadores bidireccionales profundos para la comprensión del lenguaje". arXiv : 1810.04805v2 [cs.CL].
  48. ^ "Modelado de secuencias con redes neuronales (Parte 2): modelos de atención". Índico . 2016-04-18. Archivado desde el original el 21 de octubre de 2020 . Consultado el 15 de octubre de 2019 .
  49. ^ abc Alammar, Jay. "El transformador ilustrado". jalammar.github.io . Archivado desde el original el 18 de octubre de 2020 . Consultado el 15 de octubre de 2019 .
  50. ^ Equipo, Keras. "Documentación de Keras: modelo GPT2Backbone". keras.io . Consultado el 8 de agosto de 2024 .
  51. ^ Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (agosto de 2019). "¿Qué mira BERT? Un análisis de la atención de BERT". Actas del taller ACL BlackboxNLP de 2019: análisis e interpretación de redes neuronales para PNL . Florencia, Italia: Asociación de Lingüística Computacional: 276–286. arXiv : 1906.04341 . doi : 10.18653/v1/W19-4828 . Archivado desde el original el 21 de octubre de 2020 . Consultado el 20 de mayo de 2020 .
  52. ^ 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". Avances en los sistemas de procesamiento de información neuronal . 32 . Curran asociados, Inc.
  53. ^ Phuong, María; Hutter, Marcus (19 de julio de 2022), Algoritmos formales para transformadores, doi :10.48550/arXiv.2207.09238 , consultado el 8 de agosto de 2024
  54. ^ abc Raffel, Colin; Shazeer, Noam; Roberts, Adán; 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". Revista de investigación sobre aprendizaje automático . 21 (140): 1–67. ISSN  1533-7928.
  55. ^ "Avances recientes en Google Translate". Investigación de Google . 8 de junio de 2020. Archivado desde el original el 4 de julio de 2024 . Consultado el 7 de agosto de 2024 .
  56. ^ Shazeer, Noam (1 de febrero de 2020). "Las variantes de GLU mejoran el transformador". arXiv : 2002.05202 [cs.LG].
  57. ^ Hendrycks, Dan; Gimpel, Kevin (27 de junio de 2016). "Unidades lineales de error gaussiano (GELU)". arXiv.org . Consultado el 9 de agosto de 2024 .
  58. ^ Zhang, Biao; Sennrich, Rico (2019). "Normalización de la capa cuadrática media". Avances en los sistemas de procesamiento de información neuronal . 32 . Curran asociados, Inc.
  59. ^ ab Nguyen, Toan Q.; Salazar, Julián (2019-11-02). Niehues, Jan; Cattoni, Rolando; Stüker, Sebastián; Negri, Mateo; Turchi, Marco; Ja, Thanh-Le; Salesky, Elizabeth; Sanabria, Ramón; Barrault, Loic (eds.). "Transformers sin lágrimas: mejorando la normalización de la autoatención". Actas de la XVI Conferencia Internacional sobre Traducción del Lenguaje Hablado . Hong Kong: Asociación de Lingüística Computacional.
  60. ^ Dufter, Philipp; Schmitt, Martín; Schütze, Hinrich (6 de junio 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 . ISSN  0891-2017. S2CID  231986066.
  61. ^ Gehring, Jonás; Auli, Michael; Granger, David; Yarats, Denis; Delfín, Yann N. (17 de julio de 2017). "Secuencia convolucional a aprendizaje secuencial". Actas de la 34ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 1243-1252.
  62. ^ Haviv, Adi; Ram, Ori; Prensa, Ofir; Izsak, Peter; Levy, Omer (5 de diciembre de 2022), Los modelos de lenguaje transformador sin codificaciones posicionales aún aprenden información posicional, doi :10.48550/arXiv.2203.16634 , consultado el 9 de agosto de 2024
  63. ^ 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].
  64. ^ Prensa, Ofir; Smith, Noé A.; Lewis, Mike (1 de agosto de 2021). "Entrene corto, pruebe largo: la atención con sesgos lineales permite la extrapolación de la longitud de entrada". arXiv : 2108.12409 [cs.CL].
  65. ^ Shaw, Pedro; Uszkoreit, Jakob; Vaswani, Ashish (2018). "Autoatención con representaciones de posición relativa". arXiv : 1803.02155 [cs.CL].
  66. ^ Ke, Guolin; Él, Di; Liu, Tie-Yan (15 de marzo de 2021), Repensar la codificación posicional en el entrenamiento previo del lenguaje, doi :10.48550/arXiv.2006.15595 , consultado el 9 de agosto de 2024
  67. ^ Dao, Tri; Fu, Dan; Ermón, Stefano; Rudra, Atri; Ré, Christopher (6 de diciembre de 2022). "FlashAttention: atención exacta rápida y con uso eficiente de la memoria con IO-Awareness". Avances en los sistemas de procesamiento de información neuronal . 35 : 16344–16359. arXiv : 2205.14135 .
  68. ^ "CRFM de Stanford". crfm.stanford.edu . Consultado el 18 de julio de 2023 .
  69. ^ "FlashAttention-2: atención más rápida con mejor paralelismo y partición del trabajo". PNL de Princeton . 2023-06-17 . Consultado el 18 de julio de 2023 .
  70. ^ "Presentamos a Tri Dao, científico jefe de IA de Together, mientras lanza FlashAttention-2 para acelerar el entrenamiento y la inferencia de modelos". JUNTOS . Consultado el 18 de julio de 2023 .
  71. ^ Chowdhery, Aakanksha; Narang, Sharan; Devlin, Jacob; Bosma, Martín; Mishra, Gaurav; Roberts, Adán; Barham, Pablo; Chung, Hyung Won; Sutton, Carlos; Gehrmann, Sebastián; Schuh, Parker; Shi, Kensen; Tsvyashchenko, Sasha; Maynez, Josué; Rao, Abhishek (1 de abril de 2022). "PaLM: ampliación del modelado del lenguaje con Pathways". arXiv : 2204.02311 [cs.CL].
  72. ^ Kwon, Woosuk; Li, Zhuohan; Zhuang, Siyuan; Sheng, Ying; Zheng, Lianmin; Yu, Cody Hao; González, José; Zhang, Hao; Estoica, Ion (23 de octubre de 2023). "Gestión eficiente de la memoria para modelos de lenguaje grandes que sirven con PagedAttention". Actas del 29º Simposio sobre principios de sistemas operativos . SOSP '23. Nueva York, NY, EE.UU.: Asociación de Maquinaria de Computación. págs. 611–626. arXiv : 2309.06180 . doi :10.1145/3600006.3613165. ISBN 979-8-4007-0229-7.
  73. ^ vllm-project/vllm, vLLM, 2024-06-20 , consultado el 20 de junio de 2024
  74. ^ Contribución), Woosuk Kwon*, Zhuohan Li*, Siyuan Zhuang, Ying Sheng, Lianmin Zheng, Cody Yu, Joey González, Hao Zhang e Ion Stoica (* Equal (2023-06-20). "vLLM: Fácil, Rápido y servicio LLM económico con PagedAttention". Blog de vLLM . Consultado el 20 de junio de 2024 .{{cite web}}: CS1 maint: multiple names: authors list (link)
  75. ^ ab Leviatán, Yaniv; Kalman, Matán; Matias, Yossi (18 de mayo de 2023), Inferencia rápida a partir de transformadores mediante decodificación especulativa , arXiv : 2211.17192
  76. ^ Fu, Yao (13 de diciembre de 2023). "Hacia una aceleración de 100 veces: optimización de inferencia de transformadores de pila completa".
  77. ^ Chen, Charlie; Borgeaud, Sebastián; Irving, Geoffrey; Lespiau, Jean-Baptiste; Sifré, Laurent; Jumper, John (2 de febrero de 2023), Aceleración de la decodificación de modelos de lenguaje grande con muestreo especulativo , arXiv : 2302.01318
  78. ^ ab Kitaev, Nikita; Káiser, Łukasz; Levskaya, Anselmo (2020). "Reformador: el transformador eficiente". arXiv : 2001.04451 [cs.LG].
  79. ^ "Construcción de transformadores para secuencias más largas con métodos de atención escasa". Blog de IA de Google . 25 de marzo de 2021. Archivado desde el original el 18 de septiembre de 2021 . Consultado el 28 de mayo de 2021 .
  80. ^ "Tareas con secuencias largas: Chatbot". Coursera . Archivado desde el original el 26 de octubre de 2020 . Consultado el 22 de octubre de 2020 .
  81. ^ "Reformador: el transformador eficiente". Blog de IA de Google . 16 de enero de 2020. Archivado desde el original el 22 de octubre de 2020 . Consultado el 22 de octubre de 2020 .
  82. ^ Zhai, Shuangfei; Talbott, Walter; Srivastava, nitish; Huang, Chen; Vaya, Hanlin; Zhang, Ruixiang; Susskind, Josh (21 de septiembre de 2021). "Un transformador sin atención". arXiv : 2105.14103 [cs.LG].
  83. ^ Tay, Yi; Dehghani, Mostafa; Abnar, Samira; Shen, Yikang; Bahri, Dara; Pham, Felipe; Rao, Jinfeng; Yang, Liu; Ruder, Sebastián; Metzler, Donald (8 de noviembre de 2020). "Arena de largo alcance: un punto de referencia para transformadores eficientes". arXiv : 2011.04006 [cs.LG].
  84. ^ 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].
  85. ^ Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Canción, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared; Belanger, David; Colwell, Lucy; Weller, Adrián (30 de septiembre de 2020). "Modelado de lenguaje enmascarado para proteínas mediante transformadores de contexto largo linealmente escalables". arXiv : 2006.03555 [cs.LG].
  86. ^ 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].
  87. ^ Jaegle, Andrés; Gimeno, Félix; Brock, Andrés; Zisserman, Andrés; Vinyals, Oriol; Carreira, Joao (22/06/2021). "Perceptor: percepción general con atención iterativa". arXiv : 2103.03206 [cs.CV].
  88. ^ 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].
  89. ^ "Parti: modelo autorregresivo de texto a imagen de Pathways". sitios.research.google . Consultado el 9 de agosto de 2024 .
  90. ^ Ramesh, Aditya; Pávlov, Mijaíl; Vaya, Gabriel; Gris, Scott; Voss, Chelsea; Radford, Alec; Chen, Marcos; Sutskever, Ilya (26 de febrero de 2021), Generación de texto a imagen de disparo cero, doi :10.48550/arXiv.2102.12092 , consultado el 9 de agosto de 2024
  91. ^ 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 con contenido rico, doi :10.48550/arXiv.2206.10789 , consultado el 9 de agosto de 2024
  92. ^ 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 escala". Revista de medicina traslacional . 21 (1): 157. doi : 10.1186/s12967-023-04011-y . PMC 9972634 . PMID  36855134. 

Lectura adicional