Attention is All You Need
Atención es todo lo que necesitas
Autores: Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
Publicado en: arXiv preprint arXiv:1706.03762
Año: 2017
Citado por: 10,000+ (hasta 2024)
Resumen:
Los modelos dominantes de transducción de secuencias se basan en complejas redes neuronales recurrentes o convolucionales que incluyen un codificador y un decodificador. Los modelos más eficaces también conectan el codificador y el decodificador mediante un mecanismo de atención. Proponemos una nueva arquitectura de red sencilla, el Transformador, basada únicamente en mecanismos de atención, prescindiendo por completo de la recurrencia y las convoluciones. Los experimentos realizados en dos tareas de traducción automática demuestran que estos modelos son superiores en calidad, al tiempo que son más paralelizables y requieren mucho menos tiempo de entrenamiento. Nuestro modelo alcanza 28,4 BLEU en la tarea de traducción inglés-alemán del WMT 2014, mejorando en más de 2 BLEU los mejores resultados existentes, incluidos los conjuntos. En la tarea de traducción inglés-francés del WMT 2014, nuestro modelo establece una nueva puntuación BLEU de 41,8 tras un entrenamiento de 3,5 días en ocho GPU, una pequeña fracción de los costes de entrenamiento de los mejores modelos de la bibliografía. Demostramos que el Transformador se generaliza bien a otras tareas aplicándolo con éxito al análisis sintáctico de constituyentes en inglés, tanto con datos de entrenamiento grandes como limitados.
Keywords: Atención, Transformador, Redes Neuronales, Deep Learning, NLP.
Introducción
Las redes neuronales recurrentes, en particular las redes neuronales de memoria a corto plazo [13] y las redes neuronales gated recurrentes [7], se han establecido firmemente como enfoques de vanguardia en el modelado de secuencias y problemas de transducción como el modelado del lenguaje y la traducción automática [35, 2, 5]. Desde entonces, numerosos esfuerzos han continuado ampliando los límites de los modelos recurrentes de lenguaje y las arquitecturas codificador-decodificador [38, 24, 15].
Los modelos recurrentes suelen factorizar el cómputo a lo largo de las posiciones de los símbolos de las secuencias de entrada y salida. Alineando las posiciones con los pasos en el tiempo de computación, generan una secuencia de estados ocultos ht, como una función del estado oculto previo ht-1 y la entrada para la posición t. Esta naturaleza inherentemente secuencial impide la paralelización dentro de los ejemplos de entrenamiento, que se vuelve crítica en secuencias de mayor longitud, ya que las restricciones de memoria limitan el procesamiento por lotes a través de los ejemplos. Trabajos recientes han logrado mejoras significativas en la eficiencia computacional mediante trucos de factorización [21] y cálculo condicional [32], mejorando también el rendimiento del modelo en el caso de este último. Sin embargo, sigue existiendo la limitación fundamental del cálculo secuencial.
Los mecanismos de atención se han convertido en una parte integral de los modelos de transducción y modelado de secuencias en varias tareas, permitiendo el modelado de dependencias sin tener en cuenta su distancia en las secuencias de entrada o salida [2, 19]. Sin embargo, salvo en unos pocos casos [27], estos mecanismos de atención se utilizan junto con una red recurrente.
En este trabajo proponemos el Transformer, un modelo de arquitectura que evita la recurrencia y en su lugar confía enteramente en un mecanismo de atención para dibujar dependencias globales entre la entrada y la salida. Transformer permite una paralelización significativamente mayor y puede alcanzar un nuevo estado del arte en calidad de traducción tras un entrenamiento de tan sólo doce horas en ocho GPUs P100.
Antecedentes
El objetivo de reducir el cómputo secuencial también constituye la base de la GPU Neuronal Extendida [16], ByteNet [18] y ConvS2S [9], todas las cuales utilizan redes neuronales convolucionales como bloque de construcción básico, computando representaciones ocultas en paralelo para todas las posiciones de entrada y salida. En estos modelos, el número de operaciones necesarias para relacionar señales de dos posiciones arbitrarias de entrada o salida crece con la distancia entre posiciones, linealmente para ConvS2S y logarítmicamente para ByteNet. Esto dificulta el aprendizaje de dependencias entre posiciones distantes [12]. En el Transformer esto se reduce a un número constante de operaciones, aunque a costa de reducir la resolución efectiva debido a que se promedian las posiciones ponderadas por la atención, un efecto que contrarrestamos con la Atención Multicabezal descrita en la sección 3.2.
La autoatención, a veces denominada intraatención, es un mecanismo de atención que relaciona distintas posiciones de una misma secuencia para calcular una representación de la secuencia. La autoatención se ha utilizado con éxito en diversas tareas, como la comprensión lectora, el resumen abstracto, la vinculación textual y el aprendizaje de representaciones de frases independientes de la tarea [4, 27, 28, 22].
Las redes de memoria de extremo a extremo se basan en un mecanismo de atención recurrente en lugar de recurrencia alineada con la secuencia y han demostrado un buen rendimiento en tareas de respuesta a preguntas de lenguaje simple y de modelado del lenguaje [34].
Sin embargo, hasta donde sabemos, el Transformer es el primer modelo de transducción que se basa completamente en la autoatención para calcular representaciones de su entrada y salida sin utilizar RNNs alineadas con la secuencia o convolución. En las siguientes secciones, describiremos el Transformer, motivaremos la autoatención y discutiremos sus ventajas sobre modelos como [17, 18] y [9].
Arquitectura del modelo
La mayoría de los modelos competitivos de transducción de secuencias neuronales tienen una estructura codificador-decodificador [5, 2, 35]. Aquí, el codificador mapea una secuencia de entrada de representaciones de símbolos (x1, ..., xn) a una secuencia de representaciones continuas z = (z1, ..., zn). Dado z, el descodificador genera una secuencia de símbolos de salida (y1, ..., ym) de un elemento cada vez. En cada paso el modelo es autorregresivo [10], consumiendo los símbolos generados previamente como entrada adicional al generar el siguiente.
<img src=«attention_images/image_2_0.png» alt=«Imagen 0» width=«300px»>
Figura 1: El Transformer - arquitectura del modelo.
El Transformer sigue esta arquitectura general utilizando capas apiladas de autoatención y punto a punto, totalmente conectadas, tanto para el codificador como para el decodificador, que se muestran en las mitades izquierda y derecha de la Figura 1, respectivamente.
Pilas de codificador y decodificador
Codificador: El codificador está compuesto por una pila de N = 6 capas idénticas. Cada capa tiene dos subcapas. La primera es un mecanismo de autoatención multicabezal, y la segunda es una red simple, totalmente conectada en función de la posición. Empleamos una conexión residual [11] alrededor de cada una de las dos subcapas, seguida de una normalización de capas [1]. Es decir, la salida de cada subcapa es LayerNorm(x + Sublayer(x)), donde Sublayer(x) es la función implementada por la propia subcapa. Para facilitar estas conexiones residuales, todas las subcapas del modelo, así como las capas de incrustación, producen salidas de dimensión dmodel = 512.
Decodificador: El decodificador también se compone de una pila de N = 6 capas idénticas. Además de las dos subcapas de cada capa del codificador, el decodificador inserta una tercera subcapa, que realiza la atención multicabezal sobre la salida de la pila del codificador. De forma similar al codificador, empleamos conexiones residuales alrededor de cada una de las subcapas, seguidas de una normalización de capas. También modificamos la subcapa de autoatención en la pila del decodificador para evitar que las posiciones atiendan a las posiciones posteriores. Este enmascaramiento, combinado con el hecho de que las incrustaciones de salida están desplazadas una posición, garantiza que las predicciones para la posición i sólo pueden depender de las salidas conocidas en posiciones inferiores a i.
Atención
Una función de atención puede describirse como la asignación de una consulta y un conjunto de pares clave-valor a una salida, donde la consulta, las claves, los valores y la salida son todos vectores. La salida se calcula como una suma ponderada del producto de punto escalado
Atención de producto escalar escalada
<img src=«attention_images/image_3_0.png» alt=«Imagen 1» width=«300px»>
Atención Multicabezal
<img src=«attention_images/image_3_1.png» alt=«Imagen 2» width=«300px»>
Figura 2: (izquierda) Atención de producto escalar escalada. (Derecha) La atención multicabezal consta de varias capas de atención que funcionan en paralelo.
de los valores, donde el peso asignado a cada valor se calcula mediante una función de compatibilidad de la consulta con la clave correspondiente.
Atención de producto escalar escalada
Llamamos a nuestra atención particular «Atención escalada punto-producto» (Figura 2). La entrada consiste en consultas y claves de dimensión dk, y valores de dimensión dv. Calculamos los productos escalares de la consulta con todas las claves, dividimos cada uno por √dk y aplicamos una función softmax para obtener los pesos de los valores.
En la práctica, calculamos la función de atención sobre un conjunto de consultas simultáneamente, empaquetadas juntas en una matriz Q. Las claves y los valores también se empaquetan juntos en matrices K y V . Calculamos la matriz de resultados como
###Atención(Q, K, V ) = softmax(QKT √dk )V (1) ###
Las dos funciones de atención más utilizadas son la atención aditiva [2] y la atención punto-producto (multiplicativa). La atención punto-producto es idéntica a nuestro algoritmo, excepto por el factor de escala de ### 1/√dk ### . La atención aditiva calcula la función de compatibilidad utilizando una red feed-forward con una única capa oculta. Aunque ambos tienen una complejidad teórica similar, la atención aditiva es mucho más rápida y eficiente en términos de espacio en la práctica, ya que puede implementarse utilizando un código de multiplicación de matrices altamente optimizado.
Aunque para valores pequeños de dk los dos mecanismos funcionan de forma similar, la atención aditiva supera a la atención de producto de punto sin escalar para valores mayores de dk [3]. Sospechamos que para valores grandes de dk, los productos de puntos crecen en magnitud, empujando la función softmax hacia regiones donde tiene gradientes extremadamente pequeños @@@4@@@. Para contrarrestar este efecto, escalamos los productos de punto en ### 1/√dk ### .
Atención multicabezal
En lugar de realizar una única función de atención con claves, valores y consultas ddimensionales, nos pareció beneficioso proyectar linealmente las consultas, claves y valores h veces con diferentes proyecciones lineales aprendidas a dk, dk y dv dimensiones, respectivamente. En cada una de estas versiones proyectadas de consultas, claves y valores realizamos la función de atención en paralelo, obteniendo dv-dimensiones
@@@4 Para ilustrar por qué los productos escalares son tan grandes, supongamos que los componentes de q y k son variables aleatorias independientes con media 0 y varianza 1. Entonces su producto escalar, ### q - k ###, es una variable aleatoria independiente. Entonces su producto escalar, ### q - k = �dk i=1 qiki ###, tiene media 0 y varianza dk. @@@
valores de salida. Éstos se concatenan y se proyectan de nuevo, obteniéndose los valores finales, como se muestra en la Figura 2.
La atención multicabezal permite al modelo atender conjuntamente a información de distintos subespacios de representación en distintas posiciones. Con una sola cabeza de atención, el promedio inhibe este proceso.
###MultiHead(Q, K, V ) = Concat(head1, ..., headh)W O donde headi = Attention(QW Q i , KW K i , V W V i ) ###
Donde las proyecciones son matrices de parámetros ### W Q i ∈ Rdmodel×dk, W K i ∈ Rdmodel×dk, W V i ∈ Rdmodel×dv y W O ∈ Rhdv×dmodel ###.
En este trabajo empleamos h = 8 capas de atención paralelas, o cabezas. Para cada una de ellas utilizamos dk = dv = dmodel/h = 64. Debido a la dimensión reducida de cada cabeza, el coste computacional total es similar al de la atención de una sola cabeza con dimensionalidad completa.
Aplicaciones de la atención en nuestro modelo
El Transformer utiliza la atención multicabezal de tres formas diferentes:
- En las capas de «atención codificador-decodificador», las consultas provienen de la capa decodificadora anterior, y las claves y valores de memoria provienen de la salida del codificador. Esto permite que cada posición del decodificador atienda a todas las posiciones de la secuencia de entrada. Esto imita los mecanismos típicos de atención codificador-decodificador en modelos secuencia-a-secuencia como [38, 2, 9].
- El codificador contiene capas de autoatención. En una capa de autoatención todas las claves, valores y consultas provienen del mismo lugar, en este caso, la salida de la capa anterior en el codificador. Cada posición del codificador puede atender a todas las posiciones de la capa anterior del codificador.
- Del mismo modo, las capas de autoatención del descodificador permiten que cada posición del descodificador atienda a todas las posiciones del descodificador hasta esa posición inclusive. Tenemos que evitar el flujo de información hacia la izquierda en el descodificador para preservar la propiedad autorregresiva. Implementamos esto dentro de la atención de producto de punto escalado enmascarando (ajustando a -∞) todos los valores en la entrada del softmax que corresponden a conexiones ilegales. Véase la figura 2.
Redes Feed-Forward por posición
Además de las subcapas de atención, cada una de las capas de nuestro codificador y decodificador contiene una red de avance totalmente conectada, que se aplica a cada posición por separado y de forma idéntica. Consiste en dos transformaciones lineales con una activación ReLU intermedia.
###FFN(x) = max(0, xW1 + b1)W2 + b2 (2) ###
Aunque las transformaciones lineales son las mismas en las distintas posiciones, utilizan distintos parámetros de una capa a otra. Otra forma de describir esto es como dos convoluciones con tamaño de núcleo 1. La dimensionalidad de la entrada y la salida es dmodel = 512, y la capa interna tiene una dimensionalidad dff = 2048.
Incrustaciones y Softmax
De forma similar a otros modelos de transducción de secuencias, utilizamos embebimientos aprendidos para convertir los tokens de entrada y los tokens de salida en vectores de dimensión dmodel. También utilizamos la transformación lineal aprendida habitual y la función softmax para convertir la salida del descodificador en probabilidades predichas del siguiente token. En nuestro modelo, compartimos la misma matriz de pesos entre las dos capas de incrustación y la transformación lineal pre-softmax, de forma similar a [30]. En las capas de incrustación, multiplicamos esos pesos por ### √dmodelo ###.
Tabla 1: Longitudes máximas de camino, complejidad por capa y número mínimo de operaciones secuenciales para distintos tipos de capa. n es la longitud de secuencia, d es la dimensión de representación, k es el tamaño del núcleo de convoluciones y r el tamaño del vecindario en autoatención restringida.
$$$ Tipo de capa Complejidad por capa Secuencial Longitud máxima del camino Operaciones $$$
Codificación posicional
Dado que nuestro modelo no contiene ninguna recurrencia ni convolución, para que el modelo pueda hacer uso del orden de la secuencia, debemos inyectar alguna información sobre la posición relativa o absoluta de los tokens en la secuencia. Para ello, añadimos «codificaciones posicionales» a las incrustaciones de entrada en la parte inferior de las pilas de codificador y decodificador. Las codificaciones posicionales tienen la misma dimensión dmodel que las incrustaciones, por lo que ambas pueden sumarse. Hay muchas opciones de codificaciones posicionales, aprendidas y fijas [9].
En este trabajo, utilizamos funciones seno y coseno de diferentes frecuencias:
###PE(pos,2i) = sen(pos/100002i/modelo) PE(pos,2i+1) = cos(pos/100002i/modelo) ###
donde pos es la posición e i es la dimensión. Es decir, cada dimensión de la codificación posicional corresponde a una sinusoide. Las longitudes de onda forman una progresión geométrica de ### 2π a 10000 - 2π ###. Elegimos esta función porque pensamos que permitiría al modelo aprender fácilmente a atender por posiciones relativas, ya que para cualquier desplazamiento fijo ### k, PEpos+k ### puede representarse como una función lineal de ### PEpos ###.
También experimentamos con el uso de incrustaciones posicionales aprendidas [9] en su lugar, y descubrimos que las dos versiones producían resultados casi idénticos (véase la Tabla 3, fila (E)). Elegimos la versión sinusoidal porque puede permitir al modelo extrapolar secuencias más largas que las encontradas durante el entrenamiento.
Por qué autoatención
En esta sección comparamos varios aspectos de las capas de autoatención con las capas recurrentes y convolucionales comúnmente utilizadas para mapear una secuencia de longitud variable de representaciones de símbolos (x1, ..., xn) a otra secuencia de igual longitud (z1, ..., zn), con ### xi, zi ∈ Rd ###, como una capa oculta en un típico codificador o decodificador de transducción de secuencias. Para motivar nuestro uso de la autoatención consideramos tres desideratas.
Uno es la complejidad computacional total por capa. Otro es la cantidad de cálculo que puede paralelizarse, medida por el número mínimo de operaciones secuenciales necesarias.
El tercero es la longitud del camino entre las dependencias de largo alcance de la red. El aprendizaje de las dependencias de largo alcance es un reto clave en muchas tareas de transducción de secuencias. Un factor clave que afecta a la capacidad de aprender dichas dependencias es la longitud de los caminos que las señales de avance y retroceso tienen que recorrer en la red. Cuanto más cortos sean estos caminos entre cualquier combinación de posiciones en las secuencias de entrada y salida, más fácil será aprender dependencias de largo alcance [12]. De ahí que también comparemos la longitud máxima del camino entre dos posiciones cualesquiera de entrada y salida en redes compuestas por los distintos tipos de capas.
Como se observa en la Tabla 1, una capa de autoatención conecta todas las posiciones con un número constante de operaciones ejecutadas secuencialmente, mientras que una capa recurrente requiere O(n) operaciones secuenciales. En términos de complejidad computacional, las capas de autoatención son más rápidas que las capas recurrentes cuando la longitud de la secuencia n es menor que la dimensionalidad de la representación d, que es el caso más frecuente de las representaciones de frases utilizadas por los modelos más avanzados en traducción automática, como las representaciones palabra-pieza [38] y byte-par [31]. Para mejorar el rendimiento computacional en tareas que implican secuencias muy largas, la autoatención podría limitarse a considerar sólo un vecindario de tamaño r en la secuencia de entrada centrado alrededor de la posición de salida respectiva. Esto aumentaría la longitud máxima del camino a O(n/r). Tenemos previsto seguir investigando este enfoque en futuros trabajos.
Una sola capa convolucional con una anchura de núcleo k < n no conecta todos los pares de posiciones de entrada y salida. Para ello se necesita una pila de O(n/k) capas convolucionales en el caso de núcleos contiguos, u ### O(logk(n)) ### en el caso de convoluciones dilatadas [18], lo que aumenta la longitud de los caminos más largos entre dos posiciones cualesquiera de la red. Las capas convolucionales suelen ser más caras que las recurrentes, por un factor de k. Sin embargo, las convoluciones separables [6] reducen la complejidad considerablemente, a ### O(k - n - d + n - d2) ###. Sin embargo, incluso con k = n, la complejidad de una convolución separable es igual a la combinación de una capa de autoatención y una capa de avance puntual, el enfoque que adoptamos en nuestro modelo.
Como beneficio secundario, la autoatención podría producir modelos más interpretables. Inspeccionamos las distribuciones de atención de nuestros modelos y presentamos y discutimos ejemplos en el apéndice. No sólo las cabezas de atención individuales aprenden claramente a realizar diferentes tareas, sino que muchas parecen mostrar un comportamiento relacionado con la estructura sintáctica y semántica de las frases.
Entrenamiento
Esta sección describe el régimen de entrenamiento de nuestros modelos.
Datos de entrenamiento y procesamiento por lotes
Nos entrenamos con el conjunto de datos estándar WMT 2014 inglés-alemán, que consta de unos 4,5 millones de pares de frases. Las frases se codificaron utilizando la codificación de pares de bytes [3], que tiene un vocabulario fuente-destino compartido de unos 37000 tokens. Para el inglés-francés, utilizamos el conjunto de datos inglés-francés de WMT 2014, significativamente mayor, que consta de 36 millones de frases y divide los tokens en un vocabulario de 32.000 palabras [38]. Los pares de frases se agruparon según la longitud aproximada de la secuencia. Cada lote de entrenamiento contenía un conjunto de pares de frases con aproximadamente 25.000 tokens de origen y 25.000 tokens de destino.
Hardware y programación
Entrenamos nuestros modelos en una máquina con 8 GPUs NVIDIA P100. Con los hiperparámetros descritos a lo largo del artículo, cada paso de entrenamiento tardó unos 0,4 segundos. Entrenamos los modelos básicos durante un total de 100.000 pasos o 12 horas. Para nuestros modelos grandes (descritos en la línea inferior de la tabla 3), el tiempo de paso fue de 1,0 segundos. Los modelos grandes se entrenaron durante 300.000 pasos (3,5 días).
Optimizador
Utilizamos el optimizador Adam [20] con β1 = 0,9, β2 = 0,98 y ϵ = 10-9. Variamos la tasa de aprendizaje a lo largo del entrenamiento, según la fórmula:
###lrate = d-0,5 model - min(step_num-0,5, step_num - warmup_steps-1,5) (3) ###
Esto corresponde a aumentar la tasa de aprendizaje linealmente para los primeros pasos de entrenamiento warmup_steps, y disminuirla a partir de entonces proporcionalmente a la raíz cuadrada inversa del número de pasos. Hemos utilizado warmup_steps = 4000.
Regularización
Empleamos tres tipos de regularización durante el entrenamiento:
Tabla 2: El Transformer obtiene mejores puntuaciones BLEU que los modelos más avanzados en las pruebas inglés-alemán e inglés-francés de newstest2014 con un coste de formación muy inferior.
$$$ Modelo BLEU Coste de entrenamiento (FLOPs) EN-DE EN-FR EN-DE EN-FR ByteNet [18] 23,75 Deep-Att + PosUnk [39] 39,2 1,0 - 1020 Deep-Att + PosUnk Ensemble [39] 40,4 8,0 - 1020 Transformer (modelo base) 27,3 38,1 3,3 - 1018 $$$
Dropout residual Aplicamos dropout [33] a la salida de cada subcapa, antes de añadirla a la entrada de la subcapa y normalizarla. Además, aplicamos dropout a las sumas de las incrustaciones y las codificaciones posicionales tanto en la pila del codificador como en la del decodificador. Para el modelo base, utilizamos una tasa de ### Pdrop = 0,1 ###.
Suavizado de etiquetas Durante el entrenamiento, empleamos un suavizado de etiquetas de valor ϵls = 0,1 [36]. Esto perjudica la perplejidad, ya que el modelo aprende a ser más inseguro, pero mejora la precisión y la puntuación BLEU.
Resultados
Traducción automática
En la tarea de traducción inglés-alemán del WMT 2014, el modelo de transformador grande (Transformer (big) en la Tabla 2) supera en más de 2,0 BLEU a los mejores modelos reportados anteriormente (incluidos los conjuntos), estableciendo una nueva puntuación BLEU del estado del arte de 28,4. La configuración de este modelo figura en la línea inferior de la Tabla 3. El entrenamiento duró 3,5 días en 8 GPUs P100. Incluso nuestro modelo base supera a todos los modelos y conjuntos publicados anteriormente, a una fracción del coste de entrenamiento de cualquiera de los modelos de la competencia.
En la tarea de traducción inglés-francés del WMT 2014, nuestro modelo grande alcanza una puntuación BLEU de 41,0, superando a todos los modelos individuales publicados anteriormente, con menos de 1/4 del coste de formación del modelo anterior más avanzado. El modelo Transformer (grande) entrenado para el inglés-francés utilizó una tasa de abandono ### Pdrop = 0,1 ###, en lugar de 0,3.
Para los modelos base, utilizamos un único modelo obtenido promediando los últimos 5 puntos de control, que se escribieron a intervalos de 10 minutos. Para los modelos grandes, se promediaron los 20 últimos puntos de control. Utilizamos la búsqueda por haz con un tamaño de haz de 4 y una penalización de longitud α = 0,6 [38]. Estos hiperparámetros se eligieron tras experimentar con el conjunto de desarrollo. Fijamos la longitud máxima de salida durante la inferencia en la longitud de entrada + 50, pero terminamos antes cuando fue posible [38].
La Tabla 2 resume nuestros resultados y compara nuestra calidad de traducción y costes de formación con otras arquitecturas de modelos de la literatura. Estimamos el número de operaciones en coma flotante utilizadas para entrenar un modelo multiplicando el tiempo de entrenamiento, el número de GPU utilizadas y una estimación de la capacidad sostenida de coma flotante de precisión simple de cada GPU @@@5@@@.
Variaciones del modelo
Para evaluar la importancia de los distintos componentes del Transformer, variamos nuestro modelo base de distintas formas, midiendo el cambio en el rendimiento de la traducción inglés-alemán en el
@@@ 5 Utilizamos valores de 2,8, 3,7, 6,0 y 9,5 TFLOPS para K80, K40, M40 y P100, respectivamente. @@@
Tabla 3: Variaciones de la arquitectura Transformer. Los valores no enumerados son idénticos a los del modelo base. Todas las métricas se refieren al conjunto de desarrollo de traducción del inglés al alemán, newstest2013. Las perplejidades indicadas son por palabra, según nuestra codificación de pares de bytes, y no deben compararse con las perplejidades por palabra.
$$$ pasos (dev) (dev) ×106 (A) (C) (D) (E) incrustación posicional en lugar de sinusoides 4,92 25,7 $$$
conjunto de desarrollo, newstest2013. Utilizamos la búsqueda de haces descrita en la sección anterior, pero sin promediado de puntos de control. Presentamos estos resultados en la Tabla 3.
En las filas (A) de la Tabla 3, variamos el número de cabezas de atención y las dimensiones de clave y valor de la atención, manteniendo constante la cantidad de cómputo, como se describe en la Sección 3.2.2. Aunque la atención de una sola cabeza es 0,9 BLEU peor que la mejor configuración, la calidad también disminuye con demasiadas cabezas.
En las filas (B) de la Tabla 3, observamos que reducir el tamaño de la clave de atención dk perjudica la calidad del modelo. Esto sugiere que determinar la compatibilidad no es fácil y que una función de compatibilidad más sofisticada que el producto punto puede ser beneficiosa. En las filas (C) y (D) observamos además que, como era de esperar, los modelos más grandes son mejores, y que el abandono es muy útil para evitar el sobreajuste. En la fila (E) sustituimos nuestra codificación posicional sinusoidal por incrustaciones posicionales aprendidas [9], y observamos resultados casi idénticos a los del modelo base.
Análisis sintáctico de constituyentes en inglés
Para evaluar si el Transformer puede generalizarse a otras tareas, realizamos experimentos con el análisis sintáctico de constituyentes en inglés. Esta tarea presenta retos específicos: el resultado está sujeto a fuertes restricciones estructurales y es significativamente más largo que la entrada. Además, los modelos secuencia-secuencia de RNN no han sido capaces de alcanzar resultados punteros en regímenes de datos pequeños [37].
Entrenamos un transformador de 4 capas con dmodel = 1024 en la parte del Wall Street Journal (WSJ) del Penn Treebank [25], unas 40.000 frases de entrenamiento. También lo entrenamos en un entorno semisupervisado, utilizando los corpus más grandes de alta confianza y BerkleyParser de con aproximadamente 17M de frases [37]. Utilizamos un vocabulario de 16.000 tokens para la configuración sólo WSJ y un vocabulario de 32.000 tokens para la configuración semisupervisada.
Realizamos sólo un pequeño número de experimentos para seleccionar el abandono, tanto la atención como el residuo (sección 5.4), las tasas de aprendizaje y el tamaño del haz en el conjunto de desarrollo de la Sección 22; todos los demás parámetros se mantuvieron sin cambios respecto al modelo de traducción base inglés-alemán. Durante la inferencia,
Tabla 4: El Transformer se generaliza bien al análisis sintáctico de constituyentes en inglés (los resultados son sobre la Sección 23 de WSJ)
$$$ Parser Entrenamiento WSJ 23 F1 Transformer (4 capas) solo WSJ, discriminativo 91,3 Transformer (4 capas) semisupervisado 92,7 Luong et al. (2015) [23] multitarea 93,0 Dyer et al. (2016) [8] generativo 93,3 $$$
aumentamos la longitud máxima de salida a la longitud de entrada + 300. Utilizamos un tamaño de haz de 21 y α = 0,3 tanto para WSJ solo como para el ajuste semisupervisado.
Nuestros resultados en la Tabla 4 muestran que, a pesar de la falta de ajuste específico de la tarea, nuestro modelo funciona sorprendentemente bien, obteniendo mejores resultados que todos los modelos descritos anteriormente, con la excepción de la Gramática de Redes Neuronales Recurrentes [8].
A diferencia de los modelos secuencia a secuencia de RNN [37], el Transformer supera al BerkeleyParser [29] incluso cuando se entrena sólo con el conjunto de 40.000 frases del WSJ.
Conclusión
En este trabajo hemos presentado el Transformer, el primer modelo de transducción de secuencias basado enteramente en la atención, sustituyendo las capas recurrentes más comúnmente utilizadas en arquitecturas codificador-decodificador por la autoatención multicabezal.
Para tareas de traducción, el Transformer puede entrenarse significativamente más rápido que las arquitecturas basadas en capas recurrentes o convolucionales. En las tareas de traducción de inglés a alemán y de inglés a francés de WMT 2014, alcanzamos un nuevo estado del arte. En la primera tarea, nuestro mejor modelo supera incluso a todos los conjuntos anteriores.
Estamos entusiasmados con el futuro de los modelos basados en la atención y planeamos aplicarlos a otras tareas. Tenemos previsto ampliar el Transformer a problemas que impliquen modalidades de entrada y salida distintas del texto e investigar mecanismos de atención local y restringida para manejar con eficacia entradas y salidas de gran tamaño, como imágenes, audio y vídeo. Otro de nuestros objetivos de investigación es hacer que la generación sea menos secuencial.
El código que hemos utilizado para entrenar y evaluar nuestros modelos está disponible en https://github.com/ tensorflow/tensor2tensor.
Agradecimientos Agradecemos a Nal Kalchbrenner y Stephan Gouws sus fructíferos comentarios, correcciones e inspiración.