Transformer (arquitectura de aprendizaje profundo)
Algoritmo de aprendizaje automático utilizado para el procesamiento del lenguaje natural
Un transformador es una arquitectura de aprendizaje profundo desarrollada por Google y basada en el mecanismo de atención de múltiples cabezales , 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. El artículo de Transformer, publicado en 2017, se basa en el mecanismo de atención basado en softmax propuesto por Bahdanau et. Alabama. en 2014 para traducción automática , [2] [3] y el Fast Weight Controller, similar a un transformador, propuesto en 1992. [4] [5] [6]
Cronología de los modelos de procesamiento del lenguaje natural
Línea de tiempo
En 1990, la red Elman , utilizando una red neuronal recurrente , codificó cada palabra en un conjunto de entrenamiento como un vector, llamado incrustación de palabras , y todo el vocabulario como una base de datos vectorial , lo que le permitió realizar tareas como predicciones de secuencias que son más allá del poder de un simple perceptrón multicapa . Una deficiencia de las incrustaciones estáticas fue que no diferenciaban entre múltiples significados de palabras con la misma ortografía. [12]
En 1992, Jürgen Schmidhuber publicó Fast Weight Controller . [4] Aprende a responder consultas programando los pesos de atención de otra red neuronal a través de productos externos de vectores clave y vectores de valores llamados FROM y TO. Más tarde se demostró que el controlador de peso rápido era equivalente al transformador lineal no normalizado. [6] [5] [13] [14] La terminología "aprendizaje de focos internos de atención" se introdujo en 1993. [15]
En 2001, se utilizó un corpus de texto de mil millones de palabras, extraído de Internet, denominado en ese momento "muy, muy grande", para la desambiguación de palabras . [17]
En 2012, AlexNet demostró la eficacia de grandes redes neuronales para el reconocimiento de imágenes, fomentando el enfoque de grandes redes neuronales artificiales en lugar de enfoques estadísticos más antiguos.
En 2014, Sutskever et al propusieron un modelo seq2seq de 380M de parámetros para traducción automática utilizando dos redes de memoria a largo plazo ( LSTM ). [18] 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.
En 2014, la activación demostró ser útil en un modelo seq2seq de 130M de parámetros , que utilizaba unidades recurrentes controladas (GRU) simplificadas. Bahdanau et al [19] demostraron que los GRU no son ni mejores ni peores que los LSTM cerrados. [20] [21]
En 2014, Bahdanau et al. [22] mejoraron el modelo seq2seq anterior mediante el uso de un mecanismo de atención de tipo "aditivo" entre dos redes LSTM. Sin embargo, todavía no era el tipo de atención paralelizable ("producto escalar" escalado, propuesto más tarde en el documento sobre transformadores de 2017).
En 2015, Luong et al evaluaron el rendimiento relativo de las arquitecturas de modelos de atención global y local (en ventanas), y se descubrió que una arquitectura de atención mixta mejoraba las traducciones ofrecidas por la arquitectura de Bahdanau, mientras que el uso de una arquitectura de atención local reducía el tiempo de traducción. [23]
En 2016, Google Translate reemplazó gradualmente el antiguo enfoque de traducción automática estadística con el enfoque más nuevo basado en redes neuronales que incluía un modelo seq2seq combinado por LSTM y el tipo de mecanismo de atención "aditivo". En sólo nueve meses lograron un nivel de rendimiento superior al del enfoque estadístico, que tardó diez años en desarrollarse. [24] [25]
En 2017, el modelo de transformador codificador-decodificador original (de tamaño 100M) con un mecanismo de atención más rápido (paralelizable o descomponible) se propuso en el artículo " La atención es todo lo que necesitas ". Como el modelo tenía dificultades para converger, se sugirió que la tasa de aprendizaje debería aumentarse linealmente desde 0 hasta el valor máximo para la primera parte del entrenamiento (es decir, 2% del número total de pasos de entrenamiento). La intención del modelo transformador es tomar un modelo seq2seq y eliminar sus redes neuronales recurrentes, pero preservar su mecanismo de atención aditiva. [1]
En 2018, en el artículo de ELMo , se procesó una oración completa antes de asignar un vector de incrustación a cada palabra de la oración. Se utilizó un LSTM bidireccional para calcular dichas incrustaciones contextualizadas profundas para cada palabra, mejorando la línea de investigación de bag of Words y word2vec .
En 2018, se utilizó un transformador solo codificador en el modelo BERT (de tamaño más de 1B) , mejorando ELMo. [26]
En 2020, Xiong et al resolvieron las dificultades con la convergencia del transformador original normalizando capas antes (en lugar de después) de la atención multidireccional. Esto se llama transformador anterior a LN . [29]
En 2023, se utilizaban transformadores unidireccionales ("autoregresivos") en el GPT-3 (de tamaño más de 100B) y otros modelos OpenAI GPT . [30] [31]
Antecesores
Antes de los transformadores, los predecesores del mecanismo de atención se agregaron a las redes neuronales recurrentes cerradas, como LSTM y unidades recurrentes cerradas (GRU), que procesaban conjuntos de datos de forma secuencial. La dependencia de cálculos de tokens anteriores les impidió poder paralelizar el mecanismo de atención. En 1992, se propuso el controlador de peso rápido como una alternativa a las redes neuronales recurrentes que pueden aprender "focos de atención internos". [15] [4] 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 de fuga deja el estado del modelo al final de una oración larga sin información precisa y extraíble sobre los tokens anteriores.
El rendimiento de los modelos antiguos se mejoró añadiendo un mecanismo de atención, que permitía al modelo acceder a cualquier punto anterior a lo largo de la secuencia. La capa de atención pesa todos los estados anteriores según una medida de relevancia aprendida, proporcionando información relevante sobre tokens lejanos. Esto resultó ser especialmente útil en la traducción de idiomas , donde el contexto lejano puede ser esencial para el significado de una palabra en una oración. El vector de estado ha sido accesible solo después de que se procesó la última palabra en inglés mientras, por ejemplo, se traducía del francés mediante un modelo LSTM. Aunque en teoría dicho vector conserva la información sobre toda la frase original, en la práctica la información se conserva mal. Si se agrega un mecanismo de atención, el decodificador tiene acceso a los vectores de estado de cada palabra de entrada, no solo la última, y puede aprender pesos de atención que dictan cuánto prestar atención a cada vector de estado de entrada. El aumento de los modelos seq2seq con el mecanismo de atención fue implementado por primera vez en el contexto de la traducción automática por Bahdanau, Cho y Bengio en 2014. [2] [3]
Atención descomponible
En 2016, la atención descomponible altamente paralelizable se combinó con éxito con una red feedforward . [32] Esto indicó que los mecanismos de atención eran poderosos en sí mismos y que el procesamiento secuencial recurrente de datos no era necesario para lograr las ganancias de calidad de las redes neuronales recurrentes con atención. En 2017, Vaswani et al. También propuso reemplazar las redes neuronales recurrentes con autoatención y comenzó el esfuerzo de evaluar esa idea. [1] Los transformadores, utilizando un mecanismo de atención, procesando todos los tokens simultáneamente, calcularon pesos "suaves" entre ellos en capas sucesivas. Dado que el mecanismo de atención solo utiliza información sobre otros tokens de capas inferiores, se puede calcular para todos los tokens en paralelo, lo que mejora la velocidad de entrenamiento.
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. [29]
Ajuste previo al entrenamiento
Los transformadores suelen someterse a un aprendizaje autosupervisado que implica un entrenamiento previo no supervisado seguido de un ajuste fino supervisado . El entrenamiento previo generalmente se realiza en un conjunto de datos más grande que el ajuste fino, debido a la disponibilidad limitada de datos de entrenamiento etiquetados . Las tareas de preentrenamiento y ajuste comúnmente incluyen:
Como ejemplo ilustrativo, Ithaca es un transformador solo codificador con tres cabezales de salida. Toma como entrada la inscripción griega antigua como secuencias de caracteres, pero con caracteres ilegibles reemplazados por "-". Sus tres cabezales de salida generan respectivamente distribuciones de probabilidad sobre caracteres griegos, ubicación de inscripción y fecha de inscripción. [35]
Implementaciones
El modelo de 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. [10]
Arquitectura
Una ilustración de los componentes principales del modelo de transformador del artículo original, donde la normalización de capas se realizó después de la atención de múltiples cabezas. En un artículo de 2020 se descubrió que colocar la normalización de la capa delante de la atención de múltiples cabezas (en lugar de después) mejora la estabilidad del entrenamiento [29] .
Todos los transformadores tienen los mismos componentes primarios:
Tokenizadores, que convierten texto en tokens.
Una única capa de incrustación, que convierte tokens y posiciones de los tokens en representaciones vectoriales.
Capas transformadoras, que realizan transformaciones repetidas sobre las representaciones vectoriales, extrayendo cada vez más información lingüística. Estos constan de capas alternas de atención y retroalimentación.
(opcional) Capa de desintegración, que convierte las representaciones vectoriales finales en una distribución de probabilidad sobre los tokens.
Las capas de transformadores pueden ser de dos tipos: codificador y decodificador . En el artículo original se utilizaban ambos, mientras que los modelos posteriores incluían sólo un tipo. BERT es un ejemplo de un modelo de solo codificador; GPT son modelos solo con decodificador.
Aporte
El texto de entrada se analiza en tokens mediante un tokenizador, generalmente un tokenizador de codificación de pares de bytes , y cada token se convierte en un vector buscando en una tabla de incrustación de palabras . Luego, la información posicional del token se agrega a la palabra incrustación.
Arquitectura codificador-decodificador
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 los tokens de entrada de forma iterativa, una capa tras otra, mientras que el decodificador consta de capas de decodificación que procesan de forma iterativa la salida del codificador, así como los tokens de salida del decodificador hasta el momento.
La función de cada capa codificadora es generar representaciones de tokens contextualizadas, 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) autoatención para "mezclar" información entre los tokens de entrada al decodificador (es decir, la tokens generados hasta ahora durante el tiempo de inferencia). [36] [37]
Tanto la capa codificadora como la capa decodificadora tienen una red neuronal de retroalimentación para el procesamiento adicional de las salidas y contienen conexiones residuales y pasos de normalización de capas. [37]
Atención de productos escalados
Los bloques de construcción del transformador son unidades de atención de productos escalados . Para cada unidad de atención, el modelo transformador aprende tres matrices de ponderaciones: ponderaciones de consulta , ponderaciones de clave y ponderaciones de valor . Para cada token , la representación del token de entrada se multiplica por cada una de las tres matrices de peso para producir un vector de consulta , un vector clave y un vector de valor . 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 softmax se toma sobre el eje horizontal.
Atención multicabezal
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. [38] 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
Atención enmascarada
Puede que sea necesario eliminar los vínculos de atención entre algunos pares de palabras. Por ejemplo, el decodificador de la posición del token no debería tener acceso a la posición del token . Esto se puede lograr antes de la etapa softmax agregando una matriz de máscara que se encuentra en las entradas donde se debe cortar el enlace de atención y en otros lugares:
Codificador
Cada codificador consta de dos componentes principales: un mecanismo de autoatención y una red neuronal de retroalimentación. El mecanismo de autoatención acepta codificaciones de entrada del codificador anterior y pondera su relevancia entre sí para generar codificaciones de salida. La red neuronal de retroalimentación procesa además cada codificación de salida individualmente. Estas codificaciones de salida luego se pasan al siguiente codificador como entrada, así como a los decodificadores.
El primer codificador toma como entrada información posicional e incrustaciones de la secuencia de entrada, en lugar de codificaciones. La información de posición es necesaria para que el transformador haga uso del orden de la secuencia, porque ninguna otra parte del transformador hace uso de ella. [1]
El codificador es bidireccional. Se puede prestar atención a los tokens antes y después del token actual. Se utilizan fichas en lugar de palabras para dar cuenta de la polisemia .
Un diagrama de una codificación posicional sinusoidal con parámetros.
Codificación posicional
Una codificación posicional es una representación vectorial de tamaño fijo que encapsula las posiciones relativas de los tokens dentro de una secuencia objetivo: proporciona al modelo de transformador información sobre dónde están las palabras en la secuencia de entrada.
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, tal como se define en el artículo original, viene dada por la ecuación:
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. En el artículo original, [1] los autores eligieron .
La función está en una forma más simple cuando se escribe como una función compleja de tipo
La razón principal por la que los autores eligieron esto como función de codificación posicional es que permite realizar cambios como transformaciones lineales:
Al tomar una suma lineal, cualquier convolución también se puede implementar como transformaciones lineales:
Cada decodificador consta de tres componentes principales: un mecanismo de autoatención, un mecanismo de atención sobre las codificaciones 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] [37]
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 todos los jefes de atención, no se puede poner atención en las siguientes fichas. Al último decodificador le sigue una transformación lineal final y una capa softmax , para producir las probabilidades de salida sobre el vocabulario.
Todos los miembros de la serie GPT de OpenAI tienen una arquitectura de solo decodificador.
Terminología
En modelos de lenguaje grandes , la terminología es algo diferente a la terminología utilizada en el artículo original de Transformer: [39]
Aquí, "autoregresivo" significa que se inserta una máscara en el cabezal de atención para poner a cero toda la atención desde un token a todos los tokens que le siguen, como se describe en la sección "atención enmascarada".
Generalmente, los modelos de lenguaje basados en Transformer son de dos tipos: causales (o "autoregresivos") y enmascarados. La serie GPT es sólo causal y decodificadora. BERT está enmascarado y solo codificador. [40] [41] La serie T5 es codificador-decodificador, con codificador completo y decodificador autorregresivo. [33]
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, como SwiGLU. [42]
Codificaciones posicionales alternativas
Los transformadores pueden utilizar otros métodos de codificación posicional distintos de los sinusoidales. [43]
Soga
RoPE (incrustación posicional rotativa), [44] se explica mejor considerando una lista de vectores bidimensionales . Ahora elige algún ángulo . Entonces la codificación RoPE es
El beneficio de RoPE es que el producto escalar entre dos vectores depende únicamente de su ubicación relativa:
Coartada
ALiBi (Atención con polarizaciones lineales) [45] 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 ALiBi es
de sesgo lineal
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 localizados).
Codificaciones de posición relativa
Codificaciones de posición relativa [46] es similar a ALiBi, pero más genérica:
FlashAttention [47] 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 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, [48] [49] [50] 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. [51] Mientras que normalmente,
Esto tiene un efecto neutral sobre la calidad del modelo y la velocidad de entrenamiento, pero aumenta la velocidad de inferencia.
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 un modelo de lenguaje está limitada a la memoria, lo que significa que tenemos potencia de cálculo disponible. La decodificación especulativa [52] [53] 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. [52] [54]
Transformadores subcuadráticos
Entrenar arquitecturas basadas en transformadores puede resultar costoso, especialmente para entradas largas. [55] Las arquitecturas alternativas incluyen el Reformer (que reduce la carga computacional de a [55] ), o modelos como ETC/BigBird (que puede reducirla a ) [56] donde es la longitud de la secuencia. Esto se hace utilizando hash sensible a la localidad y capas reversibles. [57] [58]
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 [59] 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) [60] es un punto de referencia estándar para comparar el comportamiento de arquitecturas de transformadores en entradas largas.
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) [62] 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 [27] 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 [28] y posteriormente Whisper [63] 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.
Perceptores de Andrew Jaegle et al. (2021) [64] [65] pueden aprender de grandes cantidades de datos heterogéneos.
Con respecto a la salida de imágenes , Peebles et al introdujeron un transformador de difusión (DiT) que facilita el uso de la arquitectura del transformador para la producción de imágenes basada en difusión . [66] Además, Google lanzó un generador de imágenes centrado en transformadores llamado "Muse" basado en decodificación paralela y tecnología de transformadores generativos enmascarados. [67] (Los transformadores desempeñaron un papel menos central con las tecnologías de producción de imágenes anteriores, [68] aunque sigue siendo importante. [69] )
Ver también
Perceiver : algoritmo de aprendizaje automático para datos no textuales
^ abcdefghijk 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.
^ 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].
^ ab 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].
^ abc Schmidhuber, Jürgen (1992). "Aprender a controlar los recuerdos de peso rápido: una alternativa a las redes recurrentes". Computación neuronal . 4 (1): 131-139. doi :10.1162/neco.1992.4.1.131. S2CID 16683347.
^ ab 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.
^ ab 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.
^ 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.
^ 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 .
^ 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].
^ 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, Teven; 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.
^ 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 .
^ Elman, Jeffrey L. (marzo de 1990). "Encontrar estructura en el tiempo". Ciencia cognitiva . 14 (2): 179–211. doi :10.1207/s15516709cog1402_1. S2CID 2763403.
^ Schmidhuber, Juergen (26 de marzo de 2021). "26 de marzo de 1991: las redes neuronales aprenden a programar redes neuronales con pesos rápidos: las primeras variantes de Transformer. 2021: ¡cosas nuevas!". IDSIA, Suiza. Archivado desde el original el 5 de diciembre de 2023 . Consultado el 29 de diciembre de 2023 .
^ ab Schmidhuber, Jürgen (1993). "Reducir la relación entre la complejidad del aprendizaje y el número de variables que varían en el tiempo en redes totalmente recurrentes". ICANN 1993 . Saltador. págs. 460–463.
^ Marrón, Peter F. (1993). "Las matemáticas de la traducción automática estadística: estimación de parámetros". Lingüística computacional (19): 263–311.
^ Banko, Michele; Brillante, Eric (2001). "Escalar a corpus muy grandes para la desambiguación del lenguaje natural". Actas de la 39ª Reunión Anual de la Asociación de Lingüística Computacional - ACL '01 . Morristown, Nueva Jersey, EE. UU.: Asociación de Lingüística Computacional: 26–33. doi : 10.3115/1073012.1073017 . S2CID 6645623.
^ 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 Associates, Inc. arXiv : 1409.3215 .
^ Cho, Kyunghyun; van Merrienboer, Bart; Bahdanau, Dzmitry; Bengio, Yoshua (2014). "Sobre las propiedades de la traducción automática neuronal: enfoques codificador-decodificador". Actas de SSST-8, Octavo taller sobre sintaxis, semántica y estructura en traducción estadística . Stroudsburg, PA, EE.UU.: Asociación de Lingüística Computacional: 103–111. arXiv : 1409.1259 . doi :10.3115/v1/w14-4012. S2CID 11336213.
^ 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].
^ 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
^ Bahdanau, Dzmitry; 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].
^ 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].{{cite arXiv}}: Parámetro desconocido |website=ignorado ( ayuda )
^ 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 .
^ 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].
^ 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].
^ 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].
^ 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].
^ abc 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].
^ "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 .
^ finetune-transformer-lm, OpenAI, 11 de junio de 2018 , consultado el 1 de mayo de 2023
^ "Artículos con código: un modelo de atención descomponible para la inferencia del lenguaje natural". paperswithcode.com .
^ ab 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.
^ 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.
^ Assael, Yannis; Sommerschield, Thea; Shillingford, Brendan; Bordbar, Mahyar; Pavlopoulos, Juan; Chatzipanagiotou, Marita; Androutsopoulos, Ion; Praga, Jonathan; de Freitas, Nando (marzo de 2022). "Restauración y atribución de textos antiguos mediante redes neuronales profundas". Naturaleza . 603 (7900): 280–283. Código Bib :2022Natur.603..280A. doi :10.1038/s41586-022-04448-z. ISSN 1476-4687. PMC 8907065 . PMID 35264762.
^ "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 .
^ 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 .
^ 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 .
^ LeCun, Yann (28 de abril de 2023). "Un estudio de LLM con guía práctica y árbol evolutivo". Gorjeo . Archivado desde el original el 23 de junio de 2023 . Consultado el 23 de junio de 2023 .
^ "Modelado de lenguaje enmascarado". abrazandoface.co . Consultado el 5 de octubre de 2023 .
^ "Modelado de lenguaje causal". abrazandoface.co . Consultado el 5 de octubre de 2023 .
^ Shazeer, Noam (1 de febrero de 2020). "Las variantes de GLU mejoran el transformador". arXiv : 2002.05202 [cs.LG].
^ Dufter, Philipp; Schmitt, Martín; Schütze, Hinrich (6 de junio de 2022). "Información de posición en transformadores: descripción general". Ligüística computacional . 48 (3): 733–763. arXiv : 2102.11090 . doi : 10.1162/coli_a_00445 . ISSN 0891-2017. S2CID 231986066.
^ 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].
^ 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].
^ Shaw, Pedro; Uszkoreit, Jakob; Vaswani, Ashish (2018). "Autoatención con representaciones de posición relativa". arXiv : 1803.02155 [cs.CL].
^ 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 .
^ "CRFM de Stanford". crfm.stanford.edu . Consultado el 18 de julio de 2023 .
^ "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 .
^ "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 .
^ 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].
^ 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
^ Fu, Yao (13 de diciembre de 2023). "Hacia una aceleración de 100 veces: optimización de inferencia de transformadores de pila completa".
^ 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
^ ab Kitaev, Nikita; Káiser, Łukasz; Levskaya, Anselmo (2020). "Reformador: el transformador eficiente". arXiv : 2001.04451 [cs.LG].
^ "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 .
^ "Tareas con secuencias largas: Chatbot". Coursera . Archivado desde el original el 26 de octubre de 2020 . Consultado el 22 de octubre de 2020 .
^ "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 .
^ 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].
^ 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].
^ 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].
^ 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].
^ 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].
^ 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].
^ Peebles, William; Xie, Saining (2 de marzo de 2023). "Modelos de difusión escalables con transformadores". arXiv : 2212.09748 [cs.CV].
^ "Google AI presenta Muse, un nuevo modelo transformador de texto a imagen". InfoQ .
^ "Uso de modelos de difusión para crear avatares NeRF superiores". 5 de enero de 2023.
^ Islam, Arham (14 de noviembre de 2022). "¿Cómo funcionan DALL·E 2, difusión estable y mitad del viaje?".
Otras lecturas
Alexander Rush, The Annotated Transformer Archivado el 22 de septiembre de 2021 en Wayback Machine , grupo de PNL de Harvard, 3 de abril de 2018.
Phuong, María; Hutter, Marcus (2022). "Algoritmos formales para transformadores". arXiv : 2207.09238 [cs.LG].
Fernando, Javier; Sarti, Gabriele; Bisazza, Arianna; Costa-jussà, Marta R. (2024-05-01). "Introducción al funcionamiento interno de los modelos de lenguaje basados en transformadores". arXiv : 2405.00208 [cs.CL].
Hubert Ramsauer et al. (2020), "Hopfield Networks es todo lo que necesita" Archivado el 18 de septiembre de 2021 en Wayback Machine , preimpresión enviada para ICLR 2021. arXiv : 2008.02217; ver también el blog de los autores Archivado el 18 de septiembre de 2021 en Wayback Machine.