stringtranslate.com

Transformador (arquitectura de aprendizaje profundo)

Arquitectura estándar de Transformer, 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 el 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 a través de la búsqueda 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 (sin máscara) a través de un mecanismo de atención de múltiples cabezas paralelo, lo que permite que la señal de los tokens clave se amplifique y los tokens menos importantes se reduzcan.

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 plazo larga (LSTM). [2] Las variaciones posteriores se han adoptado ampliamente para entrenar modelos de lenguaje grandes (LLM) en grandes conjuntos de datos (de lenguaje), como el corpus de Wikipedia y Common Crawl . [3]

Los transformadores se desarrollaron por primera vez como una mejora de las arquitecturas anteriores para la traducción automática , [4] [5] pero han encontrado muchas aplicaciones desde entonces. Se utilizan en el procesamiento del lenguaje natural a gran escala , la visión por computadora ( transformadores de visión ), el aprendizaje de refuerzo , [6] [7] el audio , [8] el aprendizaje multimodal , la robótica , [9] e incluso el ajedrez . [10] También ha llevado al desarrollo de sistemas preentrenados , como los transformadores preentrenados generativos (GPT) [11] y BERT [12] (representaciones de codificador bidireccional a partir de transformadores).

Historia

Antecesores

Durante muchos años, el modelado y la generación de secuencias se realizaron mediante redes neuronales recurrentes (RNN, por sus siglas en inglés). Un ejemplo temprano muy citado fue la red 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 anteriores.

Un avance clave fue LSTM (1995), [nota 1] una RNN que utilizó varias innovaciones para superar el problema del gradiente de desaparición, lo que permitió un aprendizaje eficiente del modelado de secuencias largas. Una innovación clave fue el uso de un mecanismo de atención que utiliza neuronas que multiplican las salidas de otras neuronas, las llamadas unidades multiplicativas . [13] Las redes neuronales que utilizan unidades multiplicativas se denominaron posteriormente redes sigma-pi [14] o redes de orden superior . [15] 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 el procesamiento secuencial, como la mayoría de las otras 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 redes neuronales regresivas, 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 escalamiento lineal (1992) aprende a calcular una matriz de peso para su posterior procesamiento en función de la entrada. [16] Una de sus dos redes tiene "pesos rápidos" o "enlaces dinámicos" (1981). [17] [18] [19] 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. [16] Más tarde se demostró que esto era equivalente al transformador lineal no normalizado. [20] [21]

Atención con seq2seq

La idea de la transducción de secuencias codificador-descodificador se desarrolló a principios de la década de 2010 (consulte [22] [23] para consultar artículos anteriores). Los artículos que se citan con más frecuencia como los creadores de seq2seq son dos artículos publicados simultáneamente en 2014. [22] [23]

(Sutskever et al, 2014) [23] fue un modelo de 380M de parámetros para la traducción automática que utiliza dos memorias de corto plazo largas (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) [22] fue un modelo de 130M de parámetros que utilizó unidades recurrentes controladas (GRU) en lugar de LSTM. Investigaciones posteriores demostraron que las GRU no son ni mejores ni peores que las LSTM para seq2seq. [24] [25]

Estos primeros modelos seq2seq no tenían mecanismo de atención, y el vector de estado es accesible solo después de que se haya procesado la última palabra del texto fuente. Aunque en teoría un vector de este tipo retiene la información sobre toda la oración original, en la práctica la información se conserva de forma deficiente, ya que la entrada se procesa 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, entonces el vector de salida no podría contener toda la información relevante y la calidad de la salida se degrada. Como prueba, invertir la oración de entrada mejoró la traducción seq2seq. [26]

(Bahdanau et al, 2014) [4] introdujeron 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 que el modelo procese dependencias de larga distancia con mayor facilidad. 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) [27] compararon el desempeño relativo de las arquitecturas de modelos de atención global (el de (Bahdanau et al, 2014)) y local (ventana deslizante) para la traducción automática, y encontraron 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 reducía el tiempo de traducción.

En 2016, Google Translate fue renovado y pasó a llamarse Google Neural Machine Translation , que reemplazó al modelo anterior basado en la traducción automática estadística . El nuevo modelo era un modelo seq2seq en el que el codificador y el decodificador eran ambos 8 capas de LSTM bidireccional. [28] Se necesitaron nueve meses para desarrollarlo y logró un nivel de rendimiento más alto que el enfoque estadístico, que tardó diez años en desarrollarse. [29]

Paralelizando la atención

Los modelos Seq2seq con atención (incluida la autoatención) todavía sufrían del mismo problema con las redes recurrentes, que es que son difíciles de paralelizar , lo que impedía que se aceleraran en las GPU. En 2016, la atención descomponible aplicó un mecanismo de autoatención a las redes de retroalimentación , que son fáciles de paralelizar, y logró un resultado SOTA en implicación textual con un orden de magnitud menos de parámetros que las LSTM. [30] Uno de sus autores, Jakob Uszkoreit, sospechó 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". [31] Esa hipótesis iba en contra de la sabiduría convencional de la época, e incluso su padre, un conocido lingüista computacional, era escéptico. [31] En el mismo año, se propuso la autoatención (llamada intraatención o atención intra-oración ) para las LSTM. [32]

En 2017, el modelo de transformador codificador-decodificador original (de tamaño 100M) se propuso en el artículo " Attention is all you need ". En ese momento, el foco de la investigación estaba en 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 de producto escalar para mantener su rendimiento de procesamiento de texto. [1] Su paralelización fue un factor importante para su uso generalizado en grandes redes neuronales. [33]

La era del auge de la IA

Ya en la primavera de 2017, incluso antes de que se publicara el preprint "Attention is all you need", uno de los coautores aplicó la variante "solo decodificador" de la arquitectura para generar artículos ficticios de Wikipedia. [34] La arquitectura de transformadores ahora se utiliza en muchos modelos generativos que contribuyen al auge actual de la IA .

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

A partir de 2018, la serie OpenAI GPT de Transformers con solo decodificador se convirtió en la última generación de lenguaje natural . En 2022, un chatbot basado en GPT-3, ChatGPT , se volvió inesperadamente popular, [38] lo que desencadenó un auge en torno a los modelos de lenguaje de gran tamaño . [39] [40]

Desde 2020, los Transformers se han aplicado en modalidades más allá del texto, incluido el transformador de visión , [41] reconocimiento de voz, [42] robótica, [6] y multimodal . [43] El transformador de visión, a su vez, estimuló nuevos desarrollos en redes neuronales convolucionales . [44] Los generadores de imágenes y videos como DALL-E (2021), Stable Diffusion 3 (2024), [45] y Sora (2024), se basan en la arquitectura Transformer.

Capacitación

Métodos para estabilizar el entrenamiento

La arquitectura del transformador simple tenía dificultades para converger. En el artículo original [1], los autores recomendaron utilizar un calentamiento de la tasa de aprendizaje. Es decir, la tasa de aprendizaje debería 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 decaer nuevamente.

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

Preentrenamiento-ajuste fino

Los transformadores suelen entrenarse previamente mediante un aprendizaje autosupervisado en un gran conjunto de datos genéricos, seguido de un ajuste fino supervisado en un pequeño conjunto de datos específico de la tarea. El conjunto de datos de entrenamiento previo suele ser un gran corpus sin etiquetar, como The Pile . Las tareas de entrenamiento previo y ajuste fino suelen incluir:

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

Tenga en cuenta que, si bien cada una de estas tareas es trivial u obvia para los hablantes nativos del idioma (o idiomas), por lo general han resultado un desafío para las generaciones anteriores de arquitectura de aprendizaje automático.

Tareas

En general, hay 3 clases de tareas de modelado de lenguaje: "enmascaradas", [49] "autorregresivas", [50] y "prefixLM". [51] 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, [49] uno o más de los 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 para los tokens enmascarados: 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.

En una tarea autorregresiva, [50] primero se enmascara toda la secuencia y el modelo produce una distribución de probabilidad para el primer token. Luego se revela el primer token y el modelo predice el segundo token, y así sucesivamente. La función de pérdida para la tarea sigue siendo típicamente la misma. La serie de modelos GPT se entrena mediante tareas autorregresivas.

En una tarea prefixLM, [51] 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 sigue siendo típicamente la misma. La serie T5 de modelos 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 "prefijoLM" (modelado de lenguaje de prefijo) no es "prefijoLM" (modelo de lenguaje de prefijo).

Arquitectura

Todos los transformadores tienen los mismos componentes primarios:

La siguiente descripción sigue exactamente el modelo del transformador descrito en el artículo 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 al hacer pasar un vector a través de una capa lineal, hay que multiplicarlo por una matriz de pesos 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 texto y 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 tokens. De manera similar, en el lado de salida, los tokens de salida se vuelven a analizar 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 encuentran tokens fuera del vocabulario, normalmente se utiliza un token especial, escrito como "[UNK]" para "desconocido".

Algunos tokenizadores comúnmente utilizados son la codificación de pares de bytes , WordPiece y SentencePiece.

Incrustar

Cada token se convierte en un vector de incrustación a través de una tabla de búsqueda . Dicho de manera equivalente, multiplica una representación one-hot del token por una matriz de incrustación . Por ejemplo, si el token de entrada es , entonces la representación one-hot es y su vector de incrustación es Los vectores de incrustación de tokens se suman a sus respectivos vectores de codificación posicional (ver a continuación), lo que produce 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 [35]

Desincrustación

Una capa de desincrustación es casi lo opuesto a 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 desincrustación es una capa softmax lineal: la matriz tiene forma . A veces se requiere que la matriz de incrustación y la matriz de desincrustación sean transposiciones entre sí, una práctica llamada vinculación de pesos. [52]

Codificación posicional

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 se encuentran las palabras en la secuencia de entrada. Sin la codificación posicional, el modelo no podría procesar la secuencia de entrada como algo más que un conjunto de palabras ; por ejemplo, tanto " el hombre muerde al perro " como "el perro muerde al hombre" se procesarían exactamente de la misma manera.

La codificación posicional se define como una función de tipo , donde es un 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 artículo original utiliza .

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

La razón principal para utilizar esta función de codificación posicional es que, al utilizarla, los desplazamientos son transformaciones lineales: donde 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 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 similar a lo que sucede en un modelo de lenguaje de red neuronal convolucional . En palabras del autor, "planteamos la hipótesis de que permitiría que el modelo aprendiera fácilmente a prestar atención por posición relativa".

En implementaciones típicas, todas las operaciones se realizan sobre números reales, no sobre números complejos, pero como la multiplicación compleja se puede implementar como una multiplicación de matrices reales de 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 de 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 de forma iterativa 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 a través de 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 contextualizadas de 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). [53] [54]

Tanto la capa del codificador como la del decodificador tienen una red neuronal de propagación hacia adelante para el procesamiento adicional de sus salidas y contienen conexiones residuales y pasos de normalización de capas. [54] Estas capas de propagación hacia adelante contienen la mayoría de los parámetros en un modelo Transformer.

Red de retroalimentación

El módulo de red de propagación hacia adelante. Es una red de dos capas que convierte vectores dimensionales en vectores dimensionales.

Los módulos de red de alimentación hacia adelante (FFN) en un transformador son perceptrones multicapa de dos capas : donde es su función de activación. El transformador original utilizaba activación ReLU .

La cantidad de neuronas en la capa intermedia se denomina tamaño intermedio (GPT), [55] tamaño de filtro (BERT), [35] o tamaño de avance (BERT). [35] Por lo general, es mayor 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 producto escalable

Atención cabeza

Atención del producto punto a escala, diagrama de bloques.
La dimensión exacta cuenta dentro de un módulo de cabezal de atención.

El mecanismo de atención utilizado en la arquitectura Transformer son unidades de atención de producto escalable . Para cada unidad, el modelo Transformer aprende tres matrices de ponderación: las ponderaciones de consulta , las ponderaciones de clave y las ponderaciones 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 de 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 de claves y la matriz de valores .

Generalmente ocurre que todas son matrices cuadradas, es decir , etc.

Los pesos de atención se calculan utilizando los vectores de consulta y clave: el peso de atención de token a token 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 no sea simétrica: si token atiende a token (es decir, es grande), esto no significa necesariamente que token atienda a token (es decir, podría ser pequeño). La salida de la unidad de atención para token es la suma ponderada de los vectores de valor de todos los tokens, ponderada por , la atención de token a cada token.

El cálculo de la atención para todos los tokens se puede expresar como un cálculo de matriz 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 th son vectores , , y respectivamente. Luego podemos representar la atención como

donde el softmax se aplica sobre cada una de las filas de la matriz.

La cantidad 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 un encabezado de atención es su dimensión de encabezado . El mecanismo de atención requiere las siguientes tres igualdades para cumplirse: pero, por lo demás, no tiene restricciones.

Si el cabezal de atención se utiliza en modo de autoatención, entonces . Si el cabezal de atención se utiliza en modo de atención cruzada, entonces normalmente . En teoría, es posible que los tres sean diferentes, pero rara vez ocurre así en la práctica.

Atención multifacética

Atención multicéfala, diagrama de bloques.
La dimensión exacta cuenta dentro de un módulo de atención de múltiples cabezas.

Un conjunto de matrices se denomina cabeza de atención y cada capa en un modelo de transformador tiene múltiples cabezas de atención. Si bien cada cabeza de atención atiende a los tokens que son relevantes para cada token, múltiples cabezas de atención permiten que el modelo haga esto para diferentes definiciones de "relevancia". Específicamente, las matrices de consulta y proyección de clave, y , que están involucradas en el cálculo de la puntuación de atención, definen la "relevancia". Mientras tanto, la matriz de proyección de valor , en combinación con la parte de la matriz de proyección de salida , determina cómo los tokens atendidos influyen en qué información se pasa a las capas posteriores y, en última instancia, a los logits de salida. Además, el alcance de la atención, o el rango de relaciones de tokens capturados por cada cabeza de atención, puede expandirse a medida que los tokens pasan a través de 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. [56] Los cálculos para cada capa de atención se pueden realizar 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 red neuronal de avance .

Concretamente, supongamos que las cabezas de atención múltiples 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 toda la cabeza de atención de múltiples cabezas.

Teóricamente es posible que cada cabezal de atención tenga una dimensión de cabeza diferente , pero en la práctica ese rara vez es el caso.

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

Atención enmascarada

Puede ser necesario cortar los enlaces de atención entre algunos pares de palabras. Por ejemplo, el decodificador, al decodificar para la posición del token , no debería tener acceso al token en la posición . Esto se puede lograr antes de la etapa de 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 se puede considerar como un módulo de atención enmascarado donde la máscara tiene todas las entradas en cero.

Por ejemplo, la siguiente matriz se utiliza comúnmente en módulos de autoatención de decodificadores, llamados "enmascaramiento causal": En palabras, significa que cada token puede prestar atención a sí mismo, y a todos los tokens anteriores, pero no a ninguno posterior. Como ejemplo de un uso poco común de la matriz de máscara, XLNet considera todas las máscaras de la forma , donde es una matriz de permutación aleatoria . [57]

Codificador

Una capa de codificador.

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

Cada capa del 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 retroalimentación 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 del codificador toma la secuencia de vectores de entrada de la capa de incrustación, lo que produce 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 por el decodificador.

Como 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 decodificadora.

Un decodificador consta de una capa de incrustación, seguida de múltiples 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 su lugar, extrae información relevante de las codificaciones generadas por los codificadores. Este mecanismo también puede denominarse atención del codificador-decodificador . [1] [54]

Al igual que el primer codificador, el primer decodificador toma información posicional e incrustaciones de la secuencia de salida como su entrada, 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 autorregresivo . Para la decodificación, la atención de todos a todos es inadecuada, porque un token no puede prestar atención a tokens que aún no se han generado. Por lo tanto, el módulo de autoatención en el decodificador está enmascarado causalmente.

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

Esquemáticamente, tenemos: donde es la matriz con filas que son los vectores de salida del codificador.

El último decodificador es seguido por una capa final de desincrustación para producir las probabilidades de salida sobre el vocabulario. Luego, se toma una muestra de uno de los tokens de acuerdo con la probabilidad y el decodificador puede ejecutarse nuevamente para producir el siguiente token, etc., generando texto de salida de manera 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 del codificador contiene 2 subcapas: la autoatención y la red de retroalimentación. Cada capa del decodificador contiene 3 subcapas: la autoatención enmascarada causalmente, la atención cruzada y la red de retroalimentación.

Codificador de transformador con norma primero y norma último.
Decodificador de transformador con norma primero y norma último.
Diagrama de bloques de la arquitectura completa del Transformer.
Jerarquía esquemática de objetos para la arquitectura completa de Transformer, 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 son conceptualmente innecesarias, son necesarias para la estabilidad numérica y la convergencia. De manera similar a cómo se aplican los módulos de red de avance individualmente a cada vector, 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 es donde está la función implementada por la propia subcapa.

En la convención pre-LN, la salida de cada subcapa es El Transformer original de 2017 utilizó la convención post-LN. Era difícil de entrenar y requería un ajuste cuidadoso de los hiperparámetros y un "calentamiento" en la tasa de aprendizaje, donde comienza pequeña y aumenta gradualmente. Se descubrió que la convención pre-LN, propuesta varias veces en 2018, [58] era más fácil de entrenar, no requería calentamiento, lo que conducía a una convergencia más rápida. [46]

Pseudocódigo

El siguiente es el pseudocódigo para un codificador-decodificador Transformer pre-LN estándar, adaptado de [59]

entrada: Entrada del codificador t_e Entrada del decodificador t_dSalida: 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] ← codificador.incrustación(z_e[t]) + codificador.incrustación_posicional(t)para  cada l en 1:length(encoder.layers) hacer capa ← codificador.capas[l] /* primera subcapa */ z_e_copy ← copia(z_e) para cada t en 1:length(z_e) hacer z_e[t] ← capa.norma_capa(z_e[t]) z_e ← capa.multiheaded_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 ← copia(z_e) para cada t en 1:length(z_e) hacer z_e[t] ← capa.norma_capa(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] ← decodificador.incrustación(z_d[t]) + decodificador.incrustación_posicional(t)para  cada l en 1:length(decoder.layers) hacer capa ← decodificador.capas[l] /* primera subcapa */ z_d_copy ← copiar(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.norma_capa(z_d[t]) z_d ← capa.masked_multiheaded_attention(z_d, z_d, z_d) para cada t en 1:length(z_d) hacer z_d[t] ← z_d[t] + z_d_copia[t] /*segunda subcapa*/ z_d_copy ← copiar(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.norma_capa(z_d[t]) z_d ← capa.atención_multicabezal(z_d, z_e, z_e) para cada i en 1:length(z_d) hacer z_d[t] ← z_d[t] + z_d_copia[t] /*tercera subcapa*/ z_d_copy ← copiar(z_d) para cada t en 1:length(z_d) hacer z_d[t] ← capa.norma_capa(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_copia[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 Transformer, al ser modular, permite variaciones. Aquí se describen varias variaciones comunes. [60]

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

Un Transformer "solo decodificador" no es literalmente solo decodificador, ya que sin un codificador, el mecanismo de atención cruzada no tiene nada a lo que prestar atención. Por lo tanto, las capas de decodificador en un Transformer solo decodificador se componen de solo dos subcapas: la autoatención enmascarada causalmente y la red de retroalimentación. Esto se usa generalmente para la generación de texto y el seguimiento de instrucciones . Los modelos de la serie GPT y la serie Chinchilla son solo decodificadores.

Un Transformer "codificador-decodificador" es generalmente igual que el Transformer original, con 2 subcapas por capa de codificador y 3 subcapas por capa de decodificador, etc. Pueden tener pequeñas mejoras arquitectónicas, como funciones de activación alternativas, cambio de la ubicación de la normalización, etc. Esto 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. [60]

Un "prefixLM" (modelo de lenguaje de prefijo) es una arquitectura que solo utiliza un decodificador, pero con enmascaramiento de prefijo, que es diferente del enmascaramiento causal. En concreto, tiene una máscara de la forma [60] : Figura 3  , donde las primeras columnas corresponden al "prefijo" y las columnas posteriores corresponden al texto generado de forma autorregresiva en función del prefijo. Se parecen a los modelos de codificador-decodificador, pero tienen menos "esparcimiento". Estos modelos rara vez se utilizan, aunque se citan como posibilidades teóricas y comparaciones de referencia. [51]

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

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 utilizó SwiGLU; [62] tanto GPT-1 como BERT [35] utilizaron GELU. [63]

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

Normalizaciones alternativas

La normalización utilizada en el Transformador puede ser diferente de LayerNorm. Un ejemplo es RMSNorm [65] que se utiliza en la serie Llama . Otros ejemplos incluyen ScaleNorm [66] o FixNorm [66] .

Codificaciones posicionales alternativas

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

El artículo original de Transformer informó el uso de una codificación posicional aprendida, [68] pero no la encontró superior a la sinusoidal. [1] Más tarde, [69] descubrió que el enmascaramiento causal en sí mismo proporciona suficiente señal a un decodificador Transformer 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), [70] se explica mejor considerando una lista de vectores bidimensionales . Ahora elija algún ángulo . Entonces la codificación RoPE es Equivalentemente, si escribimos los vectores bidimensionales como números complejos , entonces la codificación RoPE es solo la multiplicación por un ángulo: Para una lista de vectores dimensionales, un codificador RoPE se define por una secuencia de ángulos . Luego, la codificación RoPE se aplica a cada par de coordenadas.

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

Coartada

ALiBi (Atención con sesgos lineales) [71] no es un reemplazo del codificador posicional en el 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 es Aquí, 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 la atención total prestada, y representa la falta de 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 realizar un entrenamiento previo en ventanas de contexto cortas y luego realizar un ajuste fino en ventanas de contexto más largas. Dado que está conectado directamente al mecanismo de atención, se puede combinar con cualquier codificador posicional que esté conectado a la "parte inferior" de toda la red (que es donde se encuentran el codificador sinusoidal del transformador original, así como RoPE y muchos otros).

Codificación de posición relativa

Las codificaciones de posición relativa [72] son ​​similares a ALiBi, pero más genéricas: donde es una matriz de Toeplitz , es decir, siempre que . Esto contrasta con la codificación posicional sinusoidal original, que es una "codificación posicional absoluta". [73]

Implementación eficiente

El modelo de transformador 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 transformadores y modelos preentrenados. [11]

Atención Flash

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

Se desarrolló una versión mejorada, FlashAttention-2, [75] [76] [77] para satisfacer la creciente demanda de modelos de lenguaje capaces de manejar longitudes de contexto más largas. 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 sobre el FlashAttention original.

Los avances clave en FlashAttention-2 incluyen la reducción de FLOP no matmul, paralelismo mejorado sobre la dimensión de longitud de secuencia, mejor partición de trabajo entre warps de GPU y soporte adicional para dimensiones de cabezal de hasta 256 y atención de consultas múltiples (MQA) y atención de consultas agrupadas (GQA). [78]

Los análisis comparativos revelaron que FlashAttention-2 es hasta dos veces más rápido que FlashAttention y hasta nueve 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 GPU H100 y nuevos tipos de datos como FP8.

Atención de consultas múltiples

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

Con Multi-Query Attention, 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.

En términos más generales, la atención de consultas agrupadas (GQA) divide los encabezados 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 multiencabezado estándar es GQA con el número máximo de grupos. [80]

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 de clave y 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é KV. [81] [82] [83]

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

Descodificació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 a partir de modelos de lenguaje está limitada por la memoria, lo que significa que tenemos potencia de cómputo de sobra disponible. La decodificación especulativa [84] [85] utiliza esta potencia de cómputo de sobra al calcular 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 era incorrecta.

En concreto, 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 voraz, debe ejecutarse 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, comprobando que cada uno es de hecho el token con la mayor probabilidad logarítmica en la salida -ésima.

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 a través del modelo más grande, y solo se aceptan y . La misma ejecución del modelo grande ya generó un nuevo token para reemplazar a , y se descarta por completo. Luego, el proceso se repite (comenzando desde el cuarto token) hasta que se generan 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. [84] [86]

Transformadores subcuadráticos

El entrenamiento de arquitecturas basadas en transformadores puede resultar costoso, especialmente para entradas largas. [87] Se han desarrollado muchos métodos para intentar abordar el problema. Long Range Arena (2020) [88] 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 todos a todos o causal, y ambos se escalan según donde es el número de tokens en una secuencia.

Reformer (2020) [87] [89] reduce la carga computacional de a mediante el uso de hash sensible a la localidad y capas reversibles. [90]

La atención dispersa [91] utiliza gráficos de atención que crecen más lentamente que . Por ejemplo, BigBird (2020) [92] utiliza redes aleatorias de mundo pequeño que crecen como .

Los transformadores ordinarios requieren un tamaño de memoria que sea cuadrático con respecto al tamaño de la ventana de contexto. Los transformadores sin atención [93] reducen esto a una dependencia lineal, pero conservan las ventajas de un transformador al vincular la clave con el valor.

Característica aleatoria Atención

Atención de características aleatorias (2021) [94] utiliza características aleatorias de Fourier : donde son 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 . De manera similar para consultas múltiples y para atención multidireccional.

Esta aproximación se puede calcular en tiempo lineal, ya que podemos calcular primero la matriz y luego multiplicarla por la consulta. En esencia, hemos logrado obtener una versión más precisa de Performer (2022) [95] utiliza la misma función aleatoria de atención, pero primero se muestrean de forma independiente de la distribución normal y luego se procesan mediante Gram-Schmidt .

Multimodalidad

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

Los modelos multimodales se pueden entrenar desde cero o mediante un ajuste fino. Un estudio de 2022 descubrió que los Transformers preentrenados solo en lenguaje natural se pueden ajustar en solo el 0,03 % de los parámetros y volverse competitivos con los LSTM en una variedad de tareas lógicas y visuales, lo que demuestra aprendizaje por transferencia . [96] El LLaVA era un modelo de visión-lenguaje compuesto por un modelo de lenguaje (Vicuna-13B) [97] y un modelo de visión ( ViT -L/14), conectados por una capa lineal. Solo la capa lineal está ajustada. [98]

Los transformadores de visión [41] 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 tokens en un transformador estándar.

Conformer [42] y posteriormente Whisper [99] 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 fichas en un transformador estándar.

Los perceptores [100] [101] 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), [102] Phenaki (2023), [103] y Muse (2023). [104] 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 autocodificador variacional en una imagen. [105] Parti es un transformador codificador-decodificador, donde el codificador procesa un mensaje de texto y el decodificador genera una representación de token de una imagen. [106] Muse es un transformador solo codificador que está entrenado para predecir tokens de imagen enmascarados a partir de tokens de imagen desenmascarados. 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. [104] 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 luego en un vídeo. [103]

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 , AlbertAGPT, Claude , BERT , XLNet , RoBERTa y ChatGPT, demuestran la capacidad de los transformadores para realizar una amplia variedad de subtareas relacionadas con el PLN y sus aplicaciones prácticas o del mundo real relacionadas, entre ellas:

Más allá del PNL tradicional, la arquitectura del transformador ha tenido éxito en otras aplicaciones, como:

Véase también

Notas

  1. ^ Las unidades recurrentes cerradas (2014) redujeron aún más su complejidad.
  2. ^ Algunas arquitecturas, como RWKV o los 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. ^ 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". OpenAI . 2019-02-14. Archivado desde el original el 2020-12-19 . Consultado el 2019-08-25 .
  4. ^ ab 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].
  5. ^ Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (17 de agosto de 2015). "Enfoques efectivos 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 a través del modelado de secuencias , arXiv : 2106.01345
  7. ^ 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 (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, Maxim; Azulay, Osher; Sintov, Avishai (febrero de 2023). "Aprendiendo a lanzar con un puñado de muestras usando transformadores de decisión". IEEE Robotics and Automation Letters . 8 (2): 576–583. doi :10.1109/LRA.2022.3229266. ISSN  2377-3766.
  10. ^ ab Ruoss, Anian; Delétang, Grégoire; Medapati, Sourabh; Grau-Moya, Jordi; Wenliang, Li; Catt, Elliot; Reid, John; Genewein, Tim (7 de febrero de 2024). "Ajedrez de nivel de gran maestro sin búsqueda". arXiv : 2402.04494v1 [cs.LG].
  11. ^ ab 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: Procesamiento de 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. Número de identificación del sujeto  208117506.
  12. ^ abc "Open Sourcing BERT: Preentrenamiento de última generación para procesamiento del lenguaje natural". Blog de Google AI . 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.; Hinton, Geoffrey E. (29 de julio de 1987). Procesamiento distribuido paralelo, volumen 1: exploraciones en la microestructura de la cognición: fundamentos, capítulo 2 (PDF) . Cambridge, Mass.: Bradford Books. ISBN 978-0-262-68053-0.
  15. ^ Giles, C. Lee; Maxwell, Tom (1987-12-01). "Aprendizaje, invariancia y generalización en redes neuronales de orden superior". Applied Optics . 26 (23): 4972–4978. doi :10.1364/AO.26.004972. ISSN  0003-6935. PMID  20523475.
  16. ^ ab Schmidhuber, Jürgen (1992). "Aprender a controlar las memorias de peso rápido: una alternativa a las redes recurrentes" (PDF) . Neural Computation . 4 (1): 131–139. doi :10.1162/neco.1992.4.1.131. S2CID  16683347.
  17. ^ Christoph von der Malsburg: La teoría de la correlación de la función cerebral. Informe interno 81-2, MPI Biophysical Chemistry, 1981. http://cogprints.org/1380/1/vdM_correlation.pdf Véase la reimpresión en Models of Neural Networks II, capítulo 2, páginas 95-119. Springer, Berlín, 1994.
  18. ^ Jerome A. Feldman, "Conexiones dinámicas en redes neuronales", Biological Cybernetics, vol. 46, no. 1, pp. 27-39, diciembre de 1982.
  19. ^ Hinton, Geoffrey E.; Plaut, David C. (1987). "Uso de pesos rápidos para desenfocar viejos recuerdos". Actas de la Reunión Anual de la Sociedad de Ciencias Cognitivas . 9 .
  20. ^ 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.
  21. ^ 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.
  22. ^ abc Cho, Kyunghyun; van Merriënboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougares, Fethi; Schwenk, Holger; Bengio, Yoshua (octubre de 2014). "Aprendizaje de representaciones de frases mediante el codificador-decodificador RNN para 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 el 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.
  23. ^ abc 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]
  24. ^ Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun; Bengio, Yoshua (2014). "Evaluación empírica de redes neuronales recurrentes controladas en el modelado de secuencias". arXiv : 1412.3555 [cs.NE].
  25. ^ 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 
  26. ^ Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V (2014). "Aprendizaje secuencia a secuencia con redes neuronales". Avances en sistemas de procesamiento de información neuronal . 27 . Curran Associates, Inc. arXiv : 1409.3215 .
  27. ^ Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (2015). "Enfoques efectivos para la traducción automática neuronal basada en la atención". arXiv : 1508.04025 [cs.CL].
  28. ^ Wu, Yonghui; et al. (1 de septiembre de 2016). "El sistema de traducción automática neuronal de Google: cerrando la brecha entre la traducción humana y la traducción automática". arXiv : 1609.08144 [cs.CL].
  29. ^ Lewis-Kraus, Gideon (14 de diciembre de 2016). «El gran despertar de la IA». The New York Times . ISSN  0362-4331. Archivado desde el original el 24 de mayo de 2023. Consultado el 22 de junio de 2023 .
  30. ^ Parikh, Ankur P.; Täckström, 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].
  31. ^ ab Levy, Steven. "8 empleados de Google inventaron la IA moderna. Aquí está la historia desde dentro". Wired . ISSN  1059-1028. Archivado desde el original el 20 de marzo de 2024 . Consultado el 6 de agosto de 2024 .
  32. ^ Cheng, Jianpeng; Dong, Li; Lapata, Mirella (noviembre de 2016). "Redes de memoria a corto y largo plazo para lectura de máquinas". En Su, Jian; Duh, Kevin; Carreras, Xavier (eds.). Actas de la Conferencia de 2016 sobre métodos empíricos en el procesamiento del lenguaje natural . Austin, Texas: Asociación de Lingüística Computacional. págs. 551–561. doi :10.18653/v1/D16-1053.
  33. ^ Peng, Bo; Alcaide, Eric; Anthony, Quentin; Albalak, Alon; Arcadinho, Samuel; Biderman, Stella; Cao, Huanqi; Cheng, Xin; Chung, Michael (10 de diciembre de 2023), RWKV: Reinventando las RNN para la era de los transformadores , arXiv : 2305.13048
  34. ^ Marche, Stephen (23 de agosto de 2024). "¿La IA lingüística se creó por accidente?". The New Yorker . ISSN  0028-792X . Consultado el 27 de agosto de 2024 .
  35. ^ abcde Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina (11 de octubre de 2018). "BERT: preentrenamiento de transformadores bidireccionales profundos para la comprensión del lenguaje". arXiv : 1810.04805v2 [cs.CL].
  36. ^ "Google: BERT ahora se usa en casi todas las consultas en inglés". Search Engine Land . 15 de octubre de 2020 . Consultado el 24 de noviembre de 2020 .
  37. ^ "Avances recientes en Google Translate". research.google . Consultado el 8 de mayo de 2024 .
  38. ^ "La historia interna de cómo se creó ChatGPT a partir de las personas que lo hicieron". MIT Technology Review . Consultado el 6 de agosto de 2024 .
  39. ^ "Mejorar la comprensión del lenguaje con aprendizaje no supervisado". openai.com . 11 de junio de 2018. Archivado desde el original el 2023-03-18 . Consultado el 2023-03-18 .
  40. ^ finetune-transformer-lm, OpenAI, 11 de junio de 2018 , consultado el 1 de mayo de 2023
  41. ^ 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].
  42. ^ 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].
  43. ^ 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
  44. ^ Liu, Zhuang; Mao, Hanzi; Wu, Chao-Yuan; Feichtenhofer, Christoph; Darrell, Trevor; Xie, Saining (2022). Una ConvNet para la década de 2020. Conferencia sobre visión artificial y reconocimiento de patrones. págs. 11976–11986.
  45. ^ Esser, Patrick; Kulal, Sumith; Blattmann, Andreas; Entezari, Rahim; Müller, Jonas; Saini, Harry; Levi, Yam; Lorenz, Dominik; Sauer, Axel (5 de marzo de 2024), Escalado de transformadores de flujo rectificados para síntesis de imágenes de alta resolución , arXiv : 2403.03206
  46. ^ 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].
  47. ^ Raffel, Colin; Shazeer, Noam; Roberts, Adam; 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". The Journal of Machine Learning Research . 21 (1): 140:5485–140:5551. arXiv : 1910.10683 . ISSN  1532-4435.
  48. ^ 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].
  49. ^ ab "Modelado de lenguaje enmascarado". huggingface.co . Consultado el 5 de octubre de 2023 .
  50. ^ ab "Modelado del lenguaje causal". huggingface.co . Consultado el 5 de octubre de 2023 .
  51. ^ 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 , arXiv : 2205.05131
  52. ^ Press, Ofir; Wolf, Lior (2017-02-21), Uso de la incrustación de salida para mejorar los modelos de lenguaje, arXiv : 1608.05859 , consultado el 21 de octubre de 2024
  53. ^ "Modelado de secuencias con redes neuronales (parte 2): modelos de atención". Indico . 2016-04-18. Archivado desde el original el 2020-10-21 . Consultado el 2019-10-15 .
  54. ^ abc Alammar, Jay. "El transformador ilustrado". jalammar.github.io . Archivado desde el original el 2020-10-18 . Consultado el 2019-10-15 .
  55. ^ Equipo, Keras. "Documentación de Keras: modelo GPT2Backbone". keras.io . Consultado el 8 de agosto de 2024 .
  56. ^ 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 de 2019 BlackboxNLP: análisis e interpretación de redes neuronales para NLP . Florencia, Italia: Association for Computational Linguistics: 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 .
  57. ^ 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 Associates, Inc. arXiv : 1906.08237 .
  58. ^ 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
  59. ^ Phuong, Mary; Hutter, Marcus (19 de julio de 2022), Algoritmos formales para transformadores , arXiv : 2207.09238
  60. ^ abc 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". Revista de investigación en aprendizaje automático . 21 (140): 1–67. arXiv : 1910.10683 . ISSN  1533-7928.
  61. ^ "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 .
  62. ^ Shazeer, Noam (1 de febrero de 2020). "Las variantes de GLU mejoran el transformador". arXiv : 2002.05202 [cs.LG].
  63. ^ Hendrycks, Dan; Gimpel, Kevin (27 de junio de 2016). "Unidades lineales de error gaussiano (GELU)". arXiv : 1606.08415v5 [cs.LG].
  64. ^ Shazeer, Noam (14 de febrero de 2020). "Las variantes de GLU mejoran el transformador". arXiv : 2002.05202 [cs.LG].
  65. ^ Zhang, Biao; Sennrich, Rico (2019). "Normalización de la capa de raíz cuadrada media". Avances en sistemas de procesamiento de información neuronal . 32 . Curran Associates, Inc. arXiv : 1910.07467 .
  66. ^ ab 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 de Lenguas Habladas . Hong Kong: Association for Computational Linguistics. arXiv : 1910.05895 . doi :10.5281/zenodo.3525484.
  67. ^ 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.
  68. ^ Gehring, Jonas; Auli, Michael; Grangier, David; Yarats, Denis; Dauphin, Yann N. (17 de julio de 2017). "Secuencia convolucional para aprendizaje de secuencias". Actas de la 34.ª Conferencia internacional sobre aprendizaje automático . PMLR: 1243–1252.
  69. ^ Haviv, Adi; Ram, Ori; Press, Ofir; Izsak, Peter; Levy, Omer (5 de diciembre de 2022), Los modelos de lenguaje transformador sin codificaciones posicionales aún aprenden información posicional , arXiv : 2203.16634
  70. ^ 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].
  71. ^ Press, Ofir; Smith, Noah A.; Lewis, Mike (1 de agosto de 2021). "Entrenar corto, probar largo: la atención con sesgos lineales permite la extrapolación de la longitud de entrada". arXiv : 2108.12409 [cs.CL].
  72. ^ Shaw, Peter; Uszkoreit, Jakob; Vaswani, Ashish (2018). "Autoatención con representaciones de posición relativa". arXiv : 1803.02155 [cs.CL].
  73. ^ Ke, Guolin; Él, Di; Liu, Tie-Yan (15 de marzo de 2021), Repensar la codificación posicional en el entrenamiento previo del lenguaje , arXiv : 2006.15595
  74. ^ Dao, Tri; Fu, Dan; Ermon, Stefano; Rudra, Atri; Ré, Christopher (6 de diciembre de 2022). "FlashAttention: Atención exacta rápida y eficiente en memoria con IO-Awareness". Avances en sistemas de procesamiento de información neuronal . 35 : 16344–16359. arXiv : 2205.14135 .
  75. ^ "CRFM de Stanford". crfm.stanford.edu . Consultado el 18 de julio de 2023 .
  76. ^ "FlashAttention-2: Atención más rápida con mejor paralelismo y partición del trabajo". Princeton NLP . 2023-06-17 . Consultado el 2023-07-18 .
  77. ^ "Presentamos al científico jefe de Together AI, Tri Dao, mientras lanza FlashAttention-2 para acelerar el entrenamiento y la inferencia de modelos". TOGETHER . Consultado el 18 de julio de 2023 .
  78. ^ Ainslie, Joshua; Lee-Thorp, James; de Jong, Michiel; Zemlyanskiy, Yury; Lebrón, Federico; Sanghai, Sumit (23 de diciembre de 2023). "GQA: Entrenamiento de modelos de transformadores multiconsulta generalizados a partir de puntos de control multicabezal". arXiv : 2305.13245 [cs.CL].
  79. ^ 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 (1 de abril de 2022). "PaLM: Escalado del modelado del lenguaje con Pathways". arXiv : 2204.02311 [cs.CL].
  80. ^ Ainslie, Joshua; Lee-Thorp, James; de Jong, Michiel; Zemlyanskiy, Yury; Lebrón, Federico; Sanghai, Sumit (2023-12-23), GQA: Entrenamiento de modelos de transformadores multiconsulta generalizados a partir de puntos de control multicabezal , arXiv : 2305.13245
  81. ^ 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 la memoria para el servicio de modelos de lenguaje de gran tamaño 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.
  82. ^ vllm-project/vllm, vLLM, 20 de junio de 2024 , consultado el 20 de junio de 2024
  83. ^ Contribución), Woosuk Kwon*, Zhuohan Li*, Siyuan Zhuang, Ying Sheng, Lianmin Zheng, Cody Yu, Joey Gonzalez, Hao Zhang e Ion Stoica (* Igual (2023-06-20). "vLLM: publicación LLM fácil, rápida y económica con PagedAttention". Blog de vLLM . Consultado el 2024-06-20 .{{cite web}}: CS1 maint: multiple names: authors list (link)
  84. ^ de Leviathan, Yaniv; Kalman, Matan; Matias, Yossi (18 de mayo de 2023), Inferencia rápida a partir de transformadores mediante decodificación especulativa , arXiv : 2211.17192
  85. ^ Fu, Yao (13 de diciembre de 2023). "Hacia una aceleración de 100x: optimización de inferencia de transformador de pila completa".
  86. ^ Chen, Charlie; Borgeaud, Sebastian; Irving, Geoffrey; Lespiau, Jean-Baptiste; Sifre, Laurent; Jumper, John (2 de febrero de 2023), Aceleración de la decodificación de modelos de lenguaje grandes con muestreo especulativo , arXiv : 2302.01318
  87. ^ ab Kitaev, Nikita; Kaiser, Łukasz; Levskaya, Anselm (2020). "Reformador: el transformador eficiente". arXiv : 2001.04451 [cs.LG].
  88. ^ Tay, Yi; Dehghani, Mostafa; Abnar, Samira; Shen, Yikang; Bahri, Dara; Pham, Philip; Rao, Jinfeng; Yang, Liu; Ruder, Sebastian; Metzler, Donald (8 de noviembre de 2020). "Arena de largo alcance: un punto de referencia para transformadores eficientes". arXiv : 2011.04006 [cs.LG].
  89. ^ "Reformer: The Efficient Transformer". Blog de Google AI . 16 de enero de 2020. Archivado desde el original el 22 de octubre de 2020. Consultado el 22 de octubre de 2020 .
  90. ^ Gomez, Aidan N; Ren, Mengye; Urtasun, Raquel; Grosse, Roger B (2017). "La red residual reversible: retropropagación sin almacenar activaciones". Avances en sistemas de procesamiento de información neuronal . 30 . Curran Associates, Inc. arXiv : 1707.04585 .
  91. ^ Child, Rewon; Gray, Scott; Radford, Alec; Sutskever, Ilya (23 de abril de 2019), Generación de secuencias largas con transformadores dispersos , arXiv : 1904.10509
  92. ^ "Construcción de transformadores para secuencias más largas con métodos de atención dispersa". Blog de Google AI . 25 de marzo de 2021. Archivado desde el original el 18 de septiembre de 2021. Consultado el 28 de mayo de 2021 .
  93. ^ Zhai, Shuangfei; Talbott, Walter; Srivastava, Nitish; Huang, Chen; Goh, Hanlin; Zhang, Ruixiang; Susskind, Josh (21 de septiembre de 2021). "Un transformador sin atención". arXiv : 2105.14103 [cs.LG].
  94. ^ 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].
  95. ^ Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared; Belanger, David; Colwell, Lucy; Weller, Adrian (30 de septiembre de 2020). "Modelado de lenguaje enmascarado para proteínas mediante transformadores de contexto largo escalables linealmente". arXiv : 2006.03555 [cs.LG].
  96. ^ Lu, Kevin; Grover, Aditya; Abbeel, Pieter; Mordatch, Igor (28 de junio de 2022). "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.
  97. ^ "Vicuna: un chatbot de código abierto que impresiona a GPT-4 con una calidad de ChatGPT del 90 %* | LMSYS Org". lmsys.org . Consultado el 11 de agosto de 2024 .
  98. ^ Liu, haotiano; 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 . 36 : 34892–34916.
  99. ^ 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].
  100. ^ Jaegle, Andrew; Gimeno, Felix; Brock, Andrew; Zisserman, Andrew; Vinyals, Oriol; Carreira, Joao (2021-06-22). "Perceptor: Percepción general con atención iterativa". arXiv : 2103.03206 [cs.CV].
  101. ^ 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].
  102. ^ "Parti: Pathways Autoregressive Text-to-Image Model" (Modelo de texto a imagen autorregresivo de vías). sites.research.google . Consultado el 9 de agosto de 2024 .
  103. ^ ab 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". {{cite journal}}: Requiere citar revista |journal=( ayuda )
  104. ^ ab Chang, Huiwen; Zhang, Han; Barber, Jarred; Maschinot, AJ; Lezama, Jose; Jiang, Lu; Yang, Ming-Hsuan; Murphy, Kevin; Freeman, William T. (2 de enero de 2023). "Muse: Generación de texto a imagen mediante transformadores generativos enmascarados". arXiv : 2301.00704 [cs.CV].
  105. ^ Ramesh, Aditya; Pavlov, Mikhail; Goh, Gabriel; Gray, Scott; Voss, Chelsea; Radford, Alec; Chen, Mark; Sutskever, Ilya (26 de febrero de 2021), Generación de texto a imagen con cero disparos , arXiv : 2102.12092
  106. ^ 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
  107. ^ 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