Un transformador es un modelo de aprendizaje profundo que adopta el mecanismo de atención , sopesando la influencia de diferentes partes de los datos de entrada. Se utiliza principalmente en el campo del procesamiento del lenguaje natural (PNL). [1] También tiene aplicaciones en tareas como la comprensión de videos . [2]
Al igual que las redes neuronales recurrentes (RNN), los transformadores están diseñados para manejar datos de entrada secuenciales, como el lenguaje natural, para tareas como la traducción y el resumen de texto . Sin embargo, a diferencia de los RNN, los transformadores no requieren que los datos secuenciales se procesen en orden. Más bien, la operación de atención proporciona contexto para cualquier posición en la secuencia de entrada. Por ejemplo, si los datos de entrada son una oración en lenguaje natural, el transformador no necesita procesar el comienzo de la oración antes del final. Más bien, identifica el contexto que confiere significado a una palabra en la oración. Debido a esta característica, el transformador permite mucha más paralelización que los RNN y, por lo tanto, reduce los tiempos de entrenamiento. [1]
Los transformadores se han convertido rápidamente en el modelo de elección para los problemas de PNL, [3] reemplazando a los modelos RNN más antiguos, como la memoria larga a corto plazo (LSTM). Dado que el modelo de transformador facilita una mayor paralelización durante el entrenamiento, ha permitido el entrenamiento en conjuntos de datos más grandes de lo que antes era posible. Esto llevó al desarrollo de sistemas previamente entrenados como BERT (Representaciones de codificador bidireccional de transformadores) y GPT (Transformador preentrenado generativo), que han sido entrenados con grandes conjuntos de datos de lenguaje, como Wikipedia Corpus y Common Crawl , y pueden ser precisos. sintonizado con tareas específicas. [4] [5]
Fondo
Antes de los transformadores, la mayoría de los sistemas de PNL de última generación se basaban en redes neuronales recurrentes compuestas (RNN), como LSTM y unidades recurrentes compuestas (GRU), con mecanismos de atención adicionales . Los transformadores se basaron en estas tecnologías de atención sin utilizar una estructura RNN, destacando el hecho de que los mecanismos de atención por sí solos pueden igualar el rendimiento de los RNN con atención.
Los RNN cerrados procesan los tokens de forma secuencial, manteniendo un vector de estado que contiene una representación de los datos que se ven después de cada token. Para procesar eltoken, el modelo combina el estado que representa la oración hasta el token con la información del nuevo token para crear un nuevo estado, que representa la oración hasta el token . Teóricamente, la información de un token puede propagarse arbitrariamente hacia abajo en la secuencia, si en cada punto el estado continúa codificando información contextual sobre el token. En la práctica, este mecanismo es defectuoso: el problema del gradiente de desaparición deja el estado del modelo al final de una oración larga sin información precisa y extraíble sobre los tokens anteriores.
Este problema fue abordado por mecanismos de atención. Los mecanismos de atención permiten que un modelo se extraiga del estado en cualquier punto anterior a lo largo de la secuencia. La capa de atención puede acceder a todos los estados anteriores y los pesa de acuerdo con una medida de relevancia aprendida, proporcionando información relevante sobre los tokens lejanos.
Un claro ejemplo de la utilidad de la atención es la traducción de idiomas , donde el contexto es fundamental para asignar el significado de una palabra en una oración. En un sistema de traducción del inglés al francés, la primera palabra de la salida en francés probablemente dependa en gran medida del comienzo de la entrada en inglés. Sin embargo, en un modelo clásico de codificador-decodificador LSTM, para producir la primera palabra de la salida francesa, al modelo se le da solo el vector de estado de la palabra inglesa anterior. Teóricamente, este vector puede codificar información sobre toda la oración en inglés, lo que le da al modelo todos los conocimientos necesarios, pero en la práctica, esta información a menudo se conserva mal. Un mecanismo de atención permite que el modelo aprenda a prestar atención a los estados de los primeros tokens en inglés al producir el comienzo de la salida en francés, lo que le permite comprender mucho mejor lo que está traduciendo.
Cuando se agregan a los RNN, los mecanismos de atención aumentan el rendimiento. Transformers reveló 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 rendimiento de los RNN con atención. Los transformadores utilizan un mecanismo de atención sin un RNN, procesando todos los tokens al mismo tiempo y calculando los pesos de atención entre ellos. El hecho de que los transformadores se presten a la paralelización permite entrenar a los transformadores en conjuntos de datos más grandes.
Arquitectura
Como los modelos anteriores, el transformador adopta una arquitectura de codificador-decodificador. El codificador consta de capas de codificación que procesan la entrada de forma iterativa una capa tras otra, mientras que el decodificador consta de capas de decodificación que hacen lo mismo con la salida del codificador.
La función de cada capa de codificador es generar codificaciones que contienen información sobre qué partes de las entradas son relevantes entre sí. Pasa sus codificaciones a la siguiente capa de codificador como entradas. Cada capa de decodificador hace lo contrario, tomando todas las codificaciones y usando su información contextual incorporada para generar una secuencia de salida. [6] Para lograr esto, cada capa de codificador y decodificador hace uso de un mecanismo de atención.
Para cada entrada, la atención sopesa la relevancia de todas las demás entradas y se basa en ellas para producir la salida. [7] Cada capa de decodificador tiene un mecanismo de atención adicional que extrae información de las salidas de decodificadores anteriores, antes de que la capa de decodificador extraiga información de las codificaciones.
Tanto la capa del codificador como la del decodificador tienen una red neuronal de retroalimentación para el procesamiento adicional de las salidas y contienen conexiones residuales y pasos de normalización de la capa. [7]
Atención escalada del producto escalado
Los bloques de construcción del transformador son unidades de atención de productos escalados. Cuando se pasa una oración a un modelo de transformador, los pesos de atención se calculan entre cada token simultáneamente. La unidad de atención produce incrustaciones para cada token en el contexto que contienen información sobre el token en sí junto con una combinación ponderada de otros tokens relevantes, cada uno ponderado por su peso de atención.
Para cada unidad de atención, el modelo de transformador aprende tres matrices de peso; los pesos de la consulta, los pesos clave y las ponderaciones de valor . Por cada ficha, la palabra de entrada incrustada se multiplica con 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 la consulta y los vectores clave: el peso de atención de token 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 pendientes durante el entrenamiento, y pasa por un softmax que normaliza los pesos. El hecho de que y son matrices diferentes permite que la atención no sea simétrica: si token atiende token (es decir es grande), esto no significa necesariamente que el token atenderá a token (es decir es 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 ficha.
El cálculo de atención para todos los tokens se puede expresar como un cálculo de matriz grande, que es útil para el entrenamiento debido a las optimizaciones de operaciones de la matriz computacional que calculan rápidamente las operaciones de la matriz. Las matrices, y se definen como las matrices donde el las filas son vectores , , y respectivamente.
Atención multicabezal
Un juego de A las matrices se le llama 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, con varios cabezales de atención, el modelo puede hacer 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, los jefes de atención pueden prestar atención principalmente a la siguiente palabra, mientras que otros prestan atención principalmente a los verbos a sus objetos directos. [8] Los cálculos para cada cabezal 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 alimentación hacia adelante.
Codificador
Cada codificador consta de dos componentes principales: un mecanismo de auto atención y una red neuronal de retroalimentación. El mecanismo de auto-atención acepta codificaciones de entrada del codificador anterior y sopesa su relevancia entre sí para generar codificaciones de salida. La red neuronal de avance procesa además cada codificación de salida de forma individual. Estas codificaciones de salida se pasan luego al siguiente codificador como su entrada, así como a los decodificadores.
El primer codificador toma información de posición e incrustaciones de la secuencia de entrada como 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]
Descifrador
Cada decodificador consta de tres componentes principales: un mecanismo de auto atenció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. [1] [7]
Al igual que el primer codificador, el primer decodificador toma información de posición e incrustaciones de la secuencia de salida como entrada, 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] El último decodificador es seguido por una transformación lineal final y una capa softmax , para producir las probabilidades de salida sobre el vocabulario.
Pseudocódigo
A continuación se muestra el pseudocódigo para una implementación de la variante del transformador conocida como el transformador "vainilla":
def vanilla_transformer ( enc_inp , dec_inp ): "" "Variante de transformador conocida como el transformador" vanilla "." "" x = incrustación ( enc_inp ) * sqrt ( d_m ) x = x + pos_encoding ( x ) x = abandono ( x ) para _ en rango ( n_enc_layers ): attn = multi_head_attention ( x , x , x , None ) attn = dropout ( attn ) attn = layer_normalization ( x + attn ) x = pointwise_ff ( atención ) # relu activación (mapa afín (a la atención)) x = layer_normalization ( x + A la atención ) # x es en este punto la salida del codificador enc_out = x x = incrustación ( dec_inp ) * sqrt ( d_m ) x = x + pos_encoding ( x ) x = deserción ( x ) mask = causal_mask ( x ) para _ en el rango ( n_dec_layers ): attn1 = multi_head_attention ( x , x , x , mask ) attn1 = layer_normalization ( attn1 + x ) attn2 = multi_head_attention ( attn1 , enc_out , enc_out , None ) attn2 = dropout ( attn2 ) attn2 = layer_normalization ( attn1 + attn2 ) x = pointwise_ff ( attn2 ) x = layer_normalization ( attn2 + x ) de retorno densa ( x )
Alternativas
La formación de arquitecturas basadas en transformadores puede resultar costosa, especialmente para sentencias largas. [9] Las arquitecturas alternativas incluyen el Reformer (que reduce la carga computacional de a ), o modelos como ETC / BigBird (que pueden reducirlo a ) [10] dondees la longitud de la secuencia. Esto se hace usando hash sensibles a la localidad y capas reversibles. [11] [12]
A finales de 2020 se introdujo un punto de referencia para comparar arquitecturas de transformadores [13].
Capacitación
Los transformadores generalmente se someten a un aprendizaje semi-supervisado 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 para la capacitación previa y el ajuste fino generalmente incluyen:
- modelado de lenguaje [4]
- predicción de la siguiente oración [4]
- respuesta a la pregunta [5]
- comprensión lectora
- análisis de sentimiento [14]
- parafraseando [14]
Aplicaciones
El transformador ha tenido un gran éxito en el procesamiento del lenguaje natural (PNL), por ejemplo, las tareas de traducción automática y predicción de series de tiempo . [15] Muchos modelos previamente entrenados como GPT-2 , GPT-3 , BERT , XLNet y RoBERTa demuestran la capacidad de los transformadores para realizar una amplia variedad de tareas relacionadas con la PNL y tienen el potencial de encontrar aplicaciones del mundo real. [4] [5] [16] Estos pueden incluir:
- máquina traductora
- resumen de documentos
- generación de documentos
- reconocimiento de entidad nombrada (NER) [17]
- análisis de secuencia biológica [18] [19] [20]
En 2020, se demostró que la arquitectura del transformador, más específicamente GPT-2, podría ajustarse para jugar al ajedrez. [21] Se han aplicado transformadores al procesamiento de imágenes con resultados competitivos con las redes neuronales convolucionales . [22] [23]
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. [3]
Referencias
- ^ a b c d e Polosukhin, Illia; Kaiser, Lukasz; Gómez, Aidan N .; Jones, Llion; Uszkoreit, Jakob; Parmar, Niki; Shazeer, Noam; Vaswani, Ashish (12 de junio de 2017). "La atención es todo lo que necesita". arXiv : 1706.03762 [ cs.CL ].
- ^ ¿Es la atención espacio-temporal todo lo que necesita para comprender el video? [1] Bertasias, Wang y Torresani
- ^ a b Wolf, Thomas; Debut, Lysandre; Sanh, Víctor; 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 . S2CID 208117506 .
- ^ a b c d "Open Sourcing BERT: Pre-formación de vanguardia para el procesamiento del lenguaje natural" . Blog de IA de Google . Consultado el 25 de agosto de 2019 .
- ^ a b c "Mejores modelos de lenguaje y sus implicaciones" . OpenAI . 2019-02-14 . Consultado el 25 de agosto de 2019 .
- ^ "Modelado de secuencia con redes neuronales (parte 2): modelos de atención" . Indico . 2016-04-18 . Consultado el 15 de octubre de 2019 .
- ^ a b c Alammar, Jay. "El transformador ilustrado" . jalammar.github.io . 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 de ACL 2019 BlackboxNLP: Análisis e interpretación de redes neuronales para PNL . Florencia, Italia: Asociación de Lingüística Computacional: 276–286. doi : 10.18653 / v1 / W19-4828 .
- ^ Kitaev, Nikita; Kaiser, Łukasz; Levskaya, Anselm (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 . Consultado el 28 de mayo de 2021 .
- ^ "Tareas con secuencias largas - Chatbot" . Coursera .
- ^ "Reformador: el transformador eficiente" . Blog de IA de Google . Consultado el 22 de octubre de 2020 .
- ^ 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 ].
- ^ a b Wang, Alex; Singh, Amanpreet; Michael, Julian; Hill, Felix; Levy, Omer; Bowman, Samuel (2018). "GLUE: una plataforma de análisis y referencia multitarea para la comprensión del lenguaje natural". Actas del taller EMNLP 2018 BlackboxNLP: análisis e interpretación de redes neuronales para PNL . Stroudsburg, PA, EE.UU .: Asociación de Lingüística Computacional: 353–355. arXiv : 1804.07461 . doi : 10.18653 / v1 / w18-5446 . S2CID 5034059 .
- ^ Allard, Maxime (1 de julio de 2019). "¿Qué es un transformador?" . Medio . Consultado el 21 de octubre de 2019 .
- ^ Yang, Zhilin Dai, Zihang Yang, Yiming Carbonell, Jaime Salakhutdinov, Ruslan Le, Quoc V. (19 de junio de 2019). XLNet: preentrenamiento autorregresivo generalizado para la comprensión del lenguaje . OCLC 1106350082 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Monstruos, datos (26 de septiembre de 2017). "10 aplicaciones de las redes neuronales artificiales en el procesamiento del lenguaje natural" . Medio . Consultado el 21 de octubre de 2019 .
- ^ Rives, Alexander; Goyal, Siddharth; Meier, Joshua; Guo, Demi; Ott, Myle; Zitnick, C. Lawrence; Ma, Jerry; Fergus, Rob (2019). "La estructura y función biológicas surgen de escalar el aprendizaje no supervisado a 250 millones de secuencias de proteínas". bioRxiv 10.1101 / 622803 .
- ^ Nambiar, Ananthan; Heflin, Maeve; Liu, Simon; Maslov, Sergei; Hopkins, Mark; Ritz, Anna (2020). "Transformar el lenguaje de la vida: transformador de redes neuronales para tareas de predicción de proteínas" . doi : 10.1145 / 3388440.3412467 . S2CID 226283020 . Cite journal requiere
|journal=
( ayuda ) - ^ Rao, Roshan; Bhattacharya, Nicholas; Thomas, Neil; Duan, Yan; Chen, Xi; Canny, John; Abbeel, Pieter; Song, Yun S. (2019). "Evaluación del aprendizaje de transferencia de proteínas con TAPE". bioRxiv 10.1101 / 676825 .
- ^ Nunca, David; Ciolino, Matt; Kalin, Josh (21 de agosto de 2020). "El transformador de ajedrez: dominar el juego utilizando modelos de lenguaje generativo". arXiv : 2008.04057 [ cs.AI ].
- ^ "Una imagen vale palabras de 16 x 16: transformadores para el reconocimiento de imágenes a escala" (PDF) .
- ^ "Formación de transformadores de imagen eficientes en datos y destilación a través de la atención" (PDF) .
Otras lecturas
- Hubert Ramsauer et al (2020), "Hopfield Networks es todo lo que necesita" , preimpresión enviada para ICLR 2021. arXiv : 2008.02217 ; ver también el blog de los autores
- - Discusión del efecto de una capa de transformador como equivalente a una actualización de Hopfield, acercando la entrada a uno de los puntos fijos (patrones representables) de una red Hopfield de valor continuo.
enlaces externos
- Alexander Rush, The Annotated transformer , grupo de PNL de Harvard, 3 de abril de 2018