Attention Is All You Need/paper/es
| Research Paper | |
|---|---|
| Authors | Ashish Vaswani; Noam Shazeer; Niki Parmar; Jakob Uszkoreit; Llion Jones; Aidan N. Gomez; Lukasz Kaiser; Illia Polosukhin |
| Year | 2017 |
| Topic area | NLP |
| Difficulty | Research |
| arXiv | 1706.03762 |
| Download PDF | |
Siempre que se proporcione la atribución correspondiente, Google concede por la presente permiso para reproducir las tablas y figuras de este artículo únicamente para su uso en obras periodísticas o académicas.
<span id="Lua error: Internal error: The interpreter exited with status 1.-is-all-you-need">
Lua error: Internal error: The interpreter exited with status 1. es todo lo que necesitas
\ANDAshish Vaswani
Google Brain
avaswani@google.com &Noam Shazeer11footnotemark: 1
Google Brain
noam@google.com &Niki Parmar11footnotemark: 1
Google Research
nikip@google.com &Jakob Uszkoreit11footnotemark: 1
Google Research
usz@google.com &Llion Jones11footnotemark: 1
Google Research
llion@google.com &Aidan N. Gomez11footnotemark: 1
University of Toronto
aidan@cs.toronto.edu &Łukasz Kaiser11footnotemark: 1
Google Brain
lukaszkaiser@google.com &Illia Polosukhin11footnotemark: 1
illia.polosukhin@gmail.com Contribución equivalente. El orden de la lista es aleatorio. Jakob propuso reemplazar las RNN por self-Lua error: Internal error: The interpreter exited with status 1. e inició el esfuerzo para evaluar esta idea. Ashish, junto con Illia, diseñó e implementó los primeros modelos Lua error: Internal error: The interpreter exited with status 1. y ha estado fundamentalmente involucrado en cada aspecto de este trabajo. Noam propuso la Lua error: Internal error: The interpreter exited with status 1. de producto escalar escalado, la Lua error: Internal error: The interpreter exited with status 1. multi-cabeza y la representación de posición sin parámetros, y se convirtió en la otra persona involucrada en casi cada detalle. Niki diseñó, implementó, ajustó y evaluó innumerables variantes del modelo en nuestro código original y en tensor2tensor. Llion también experimentó con nuevas variantes de modelo, fue responsable de nuestro código inicial, así como de la inferencia eficiente y las visualizaciones. Lukasz y Aidan dedicaron incontables días largos al diseño de varias partes y a la implementación de tensor2tensor, reemplazando nuestro código anterior, mejorando enormemente los resultados y acelerando masivamente nuestra investigación. Trabajo realizado mientras estaba en Google Brain.Trabajo realizado mientras estaba en Google Research.
Resumen
Los modelos dominantes de transducción de secuencias se basan en redes neuronales recurrentes o convolucionales complejas que incluyen un codificador y un decodificador. Los modelos de mejor desempeño también conectan el codificador y el decodificador mediante un mecanismo de Lua error: Internal error: The interpreter exited with status 1.. Proponemos una nueva arquitectura de red simple, el Lua error: Internal error: The interpreter exited with status 1., basada únicamente en mecanismos de Lua error: Internal error: The interpreter exited with status 1., prescindiendo por completo de la recurrencia y las Lua error: Internal error: The interpreter exited with status 1.. Los experimentos en dos tareas de traducción automática muestran que estos modelos son superiores en calidad, a la vez que son más paralelizables y requieren significativamente menos tiempo de entrenamiento. Nuestro modelo alcanza 28.4 BLEU en la tarea de traducción inglés-alemán de WMT 2014, mejorando los mejores resultados existentes, incluidos ensembles, en más de 2 BLEU. En la tarea de traducción inglés-francés de WMT 2014, nuestro modelo establece un nuevo estado del arte de modelo único con una puntuación BLEU de 41.8 tras entrenar durante 3.5 días en ocho GPUs, una pequeña fracción del costo de entrenamiento de los mejores modelos de la literatura. Mostramos que el Lua error: Internal error: The interpreter exited with status 1. generaliza bien a otras tareas al aplicarlo con éxito al análisis sintáctico de constituyentes en inglés, tanto con datos de entrenamiento abundantes como limitados.
1 Introducción
Las redes neuronales recurrentes, en particular la Lua error: Internal error: The interpreter exited with status 1. [13] y las redes neuronales recurrentes con compuertas [7], se han establecido firmemente como los enfoques más avanzados en problemas de modelado de secuencias y transducción, como el modelado del lenguaje y la traducción automática [35, 2, 5]. Desde entonces, numerosos esfuerzos han continuado expandiendo los límites de los modelos recurrentes de lenguaje y de las arquitecturas codificador-decodificador [38, 24, 15].
Los modelos recurrentes suelen factorizar el cálculo a lo largo de las posiciones de los símbolos en las secuencias de entrada y salida. Al alinear las posiciones con pasos de tiempo de cómputo, generan una secuencia de estados ocultos $ {\textstyle h_{t}} $, en función del estado oculto previo $ {\textstyle h_{t - 1}} $ y de la entrada en la posición $ {\textstyle t} $. Esta naturaleza inherentemente secuencial impide la paralelización dentro de los ejemplos de entrenamiento, lo que se vuelve crítico con secuencias más largas, ya que las restricciones de memoria limitan el batching entre ejemplos. Trabajos recientes han logrado mejoras significativas en eficiencia computacional mediante trucos de factorización [21] y cómputo condicional [32], al tiempo que mejoran el rendimiento del modelo en el segundo caso. Sin embargo, la limitación fundamental del cómputo secuencial persiste.
Los mecanismos de Lua error: Internal error: The interpreter exited with status 1. se han convertido en parte integral de los modelos de modelado y transducción de secuencias más eficaces en diversas tareas, ya que permiten modelar dependencias sin importar su distancia en las secuencias de entrada o salida [2, 19]. Sin embargo, salvo en contadas excepciones [27], tales mecanismos de Lua error: Internal error: The interpreter exited with status 1. se utilizan junto con una red recurrente.
En este trabajo proponemos el Lua error: Internal error: The interpreter exited with status 1., una arquitectura de modelo que prescinde de la recurrencia y se basa enteramente en un mecanismo de Lua error: Internal error: The interpreter exited with status 1. para extraer dependencias globales entre la entrada y la salida. El Lua error: Internal error: The interpreter exited with status 1. permite una paralelización significativamente mayor y puede alcanzar un nuevo estado del arte en calidad de traducción tras entrenarse durante apenas doce horas en ocho GPUs P100.
2 Antecedentes
El objetivo de reducir el cómputo secuencial también constituye la base de Extended Neural GPU [16], ByteNet [18] y ConvS2S [9], todos los cuales utilizan redes neuronales convolucionales como bloque básico, computando representaciones ocultas en paralelo para todas las posiciones de entrada y salida. En estos modelos, el número de operaciones requeridas para relacionar señales entre 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 Lua error: Internal error: The interpreter exited with status 1. esto se reduce a un número constante de operaciones, aunque a costa de una resolución efectiva reducida debido al promediado de posiciones ponderadas por Lua error: Internal error: The interpreter exited with status 1., un efecto que contrarrestamos con Lua error: Internal error: The interpreter exited with status 1. multi-cabeza, como se describe en la sección 3.2.
La self-Lua error: Internal error: The interpreter exited with status 1., a veces llamada intra-Lua error: Internal error: The interpreter exited with status 1., es un mecanismo de Lua error: Internal error: The interpreter exited with status 1. que relaciona diferentes posiciones de una sola secuencia con el fin de calcular una representación de la secuencia. La self-Lua error: Internal error: The interpreter exited with status 1. se ha utilizado con éxito en una variedad de tareas, incluyendo comprensión lectora, resumen abstractivo, implicación textual y aprendizaje de representaciones de oraciones independientes de la tarea [4, 27, 28, 22].
Las redes de memoria de extremo a extremo se basan en un mecanismo de Lua error: Internal error: The interpreter exited with status 1. recurrente en lugar de la recurrencia alineada con la secuencia, y se ha demostrado que rinden bien en tareas sencillas de respuesta a preguntas en lenguaje natural y de modelado del lenguaje [34].
Sin embargo, hasta donde sabemos, el Lua error: Internal error: The interpreter exited with status 1. es el primer modelo de transducción que se basa enteramente en self-Lua error: Internal error: The interpreter exited with status 1. para calcular representaciones de su entrada y salida sin utilizar RNNs alineadas con la secuencia ni Lua error: Internal error: The interpreter exited with status 1.. En las siguientes secciones describiremos el Lua error: Internal error: The interpreter exited with status 1., motivaremos la self-Lua error: Internal error: The interpreter exited with status 1. y discutiremos sus ventajas frente a modelos como [17, 18] y [9].
3 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 simbólicas $ {\textstyle (x_{1},\ldots,x_{n})} $ a una secuencia de representaciones continuas $ {\textstyle \mathbf{z} = {(z_{1},\ldots,z_{n})}} $. Dada $ {\textstyle \mathbf{z}} $, el decodificador genera entonces una secuencia de salida $ {\textstyle (y_{1},\ldots,y_{m})} $ de símbolos un elemento a la vez. En cada paso el modelo es auto-regresivo [10], consumiendo los símbolos previamente generados como entrada adicional al generar el siguiente.
El Lua error: Internal error: The interpreter exited with status 1. sigue esta arquitectura general utilizando self-Lua error: Internal error: The interpreter exited with status 1. apilada y capas totalmente conectadas punto a punto, tanto para el codificador como para el decodificador, mostradas respectivamente en las mitades izquierda y derecha de la Figura 1.
3.1 Pilas de codificador y decodificador
Codificador:
El codificador está compuesto por una pila de $ {\textstyle N = 6} $ capas idénticas. Cada capa tiene dos sub-capas. La primera es un mecanismo de self-Lua error: Internal error: The interpreter exited with status 1. multi-cabeza, y la segunda es una red feed-forward simple, totalmente conectada y aplicada por posición. Empleamos una conexión residual [11] alrededor de cada una de las dos sub-capas, seguida de Lua error: Internal error: The interpreter exited with status 1. [1]. Es decir, la salida de cada sub-capa es $ {\textstyle {LayerNorm}\hspace{0pt}{({x + {{Sublayer}\hspace{0pt}{(x)}}})}} $, donde $ {\textstyle {Sublayer}\hspace{0pt}{(x)}} $ es la función implementada por la sub-capa misma. Para facilitar estas conexiones residuales, todas las sub-capas del modelo, así como las capas de Lua error: Internal error: The interpreter exited with status 1., producen salidas de dimensión $ {\textstyle d_{\text{model}} = 512} $.
Decodificador:
El decodificador también está compuesto por una pila de $ {\textstyle N = 6} $ capas idénticas. Además de las dos sub-capas presentes en cada capa del codificador, el decodificador inserta una tercera sub-capa, que aplica Lua error: Internal error: The interpreter exited with status 1. multi-cabeza sobre la salida de la pila del codificador. De forma similar al codificador, empleamos conexiones residuales alrededor de cada una de las sub-capas, seguidas de Lua error: Internal error: The interpreter exited with status 1.. También modificamos la sub-capa de self-Lua error: Internal error: The interpreter exited with status 1. en la pila del decodificador para impedir que las posiciones atiendan a posiciones posteriores. Este enmascaramiento, combinado con el hecho de que los Lua error: Internal error: The interpreter exited with status 1. de salida están desplazados una posición, garantiza que las predicciones para la posición $ {\textstyle i} $ solo puedan depender de las salidas conocidas en posiciones inferiores a $ {\textstyle i} $.
<span id="Lua error: Internal error: The interpreter exited with status 1.">
3.2 Lua error: Internal error: The interpreter exited with status 1.
Una función de Lua error: Internal error: The interpreter exited with status 1. 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 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.
<span id="scaled-dot-product-Lua error: Internal error: The interpreter exited with status 1.">
3.2.1 Lua error: Internal error: The interpreter exited with status 1. de producto escalar escalado
Llamamos a nuestra Lua error: Internal error: The interpreter exited with status 1. particular "Lua error: Internal error: The interpreter exited with status 1. de producto escalar escalado" (Figura 2). La entrada consiste en consultas y claves de dimensión $ {\textstyle d_{k}} $, y valores de dimensión $ {\textstyle d_{v}} $. Calculamos los productos punto de la consulta con todas las claves, dividimos cada uno por $ {\textstyle \sqrt{d_{k}}} $, y aplicamos una función Lua error: Internal error: The interpreter exited with status 1. para obtener los pesos sobre los valores.
En la práctica, calculamos la función de Lua error: Internal error: The interpreter exited with status 1. sobre un conjunto de consultas simultáneamente, empacadas juntas en una matriz $ {\textstyle Q} $. Las claves y los valores también se empacan juntos en matrices $ {\textstyle K} $ y $ {\textstyle V} $. Calculamos la matriz de salidas como:
| $ {\displaystyle {{Attention}\hspace{0pt}{(Q,K,V)}} = {{softmax}\hspace{0pt}{(\frac{Q\hspace{0pt}K^{T}}{\sqrt{d_{k}}})}\hspace{0pt}V}} $ | (1) |
Las dos funciones de Lua error: Internal error: The interpreter exited with status 1. más utilizadas son la Lua error: Internal error: The interpreter exited with status 1. aditiva [2] y la Lua error: Internal error: The interpreter exited with status 1. de producto escalar (multiplicativa). La Lua error: Internal error: The interpreter exited with status 1. de producto escalar es idéntica a nuestro algoritmo, salvo por el factor de escala $ {\textstyle \frac{1}{\sqrt{d_{k}}}} $. La Lua error: Internal error: The interpreter exited with status 1. aditiva calcula la función de compatibilidad mediante una red feed-forward con una sola capa oculta. Aunque ambas son similares en complejidad teórica, la Lua error: Internal error: The interpreter exited with status 1. de producto escalar es mucho más rápida y eficiente en espacio en la práctica, ya que puede implementarse mediante código de multiplicación de matrices altamente optimizado.
Si bien para valores pequeños de $ {\textstyle d_{k}} $ los dos mecanismos rinden de forma similar, la Lua error: Internal error: The interpreter exited with status 1. aditiva supera a la Lua error: Internal error: The interpreter exited with status 1. de producto escalar sin escalado para valores mayores de $ {\textstyle d_{k}} $ [3]. Sospechamos que para valores grandes de $ {\textstyle d_{k}} $, los productos punto crecen mucho en magnitud, llevando a la función Lua error: Internal error: The interpreter exited with status 1. a regiones donde tiene gradientes extremadamente pequeños 111Para ilustrar por qué los productos punto se vuelven grandes, supongamos que las componentes de $ {\textstyle q} $ y $ {\textstyle k} $ son variables aleatorias independientes con media $ {\textstyle 0} $ y varianza $ {\textstyle 1} $. Entonces su producto punto, $ {\textstyle {q \cdot k} = {\sum_{i = 1}^{d_{k}}{q_{i}\hspace{0pt}k_{i}}}} $, tiene media $ {\textstyle 0} $ y varianza $ {\textstyle d_{k}} $.. Para contrarrestar este efecto, escalamos los productos punto por $ {\textstyle \frac{1}{\sqrt{d_{k}}}} $.
<span id="multi-head-Lua error: Internal error: The interpreter exited with status 1.">
3.2.2 Lua error: Internal error: The interpreter exited with status 1. multi-cabeza
Lua error: Internal error: The interpreter exited with status 1. de producto escalar escalado
En lugar de aplicar una única función de Lua error: Internal error: The interpreter exited with status 1. con claves, valores y consultas de dimensión $ {\textstyle d_{\text{model}}} $, encontramos beneficioso proyectar linealmente las consultas, claves y valores $ {\textstyle h} $ veces con proyecciones lineales aprendidas y diferentes a las dimensiones $ {\textstyle d_{k}} $, $ {\textstyle d_{k}} $ y $ {\textstyle d_{v}} $, respectivamente. Sobre cada una de estas versiones proyectadas de consultas, claves y valores aplicamos la función de Lua error: Internal error: The interpreter exited with status 1. en paralelo, produciendo valores de salida de dimensión $ {\textstyle d_{v}} $. Estos se concatenan y se proyectan una vez más, produciendo los valores finales, como se muestra en la Figura 2.
La Lua error: Internal error: The interpreter exited with status 1. multi-cabeza permite al modelo atender conjuntamente a información de distintos subespacios de representación en distintas posiciones. Con una sola cabeza de Lua error: Internal error: The interpreter exited with status 1., el promediado inhibe esto.
| $ {\textstyle {MultiHead}\hspace{0pt}{(Q,K,V)}} $ | $ {\textstyle = {{Concat}\hspace{0pt}{({head}_{1},\ldots,{head}_{h})}\hspace{0pt}W^{O}}} $ | ||
| $ {\textstyle \text{where}\hspace{0pt}{head}_{i}} $ | $ {\textstyle = {{Attention}\hspace{0pt}{({Q\hspace{0pt}W_{i}^{Q}},{K\hspace{0pt}W_{i}^{K}},{V\hspace{0pt}W_{i}^{V}})}}} $ |
Donde las proyecciones son matrices de parámetros $ {\textstyle W_{i}^{Q} \in {\mathbb{R}}^{d_{\text{model}} \times d_{k}}} $, $ {\textstyle W_{i}^{K} \in {\mathbb{R}}^{d_{\text{model}} \times d_{k}}} $, $ {\textstyle W_{i}^{V} \in {\mathbb{R}}^{d_{\text{model}} \times d_{v}}} $ y $ {\textstyle W^{O} \in {\mathbb{R}}^{{h\hspace{0pt}d_{v}} \times d_{\text{model}}}} $.
En este trabajo empleamos $ {\textstyle h = 8} $ capas o cabezas de Lua error: Internal error: The interpreter exited with status 1. paralelas. Para cada una usamos $ {\textstyle d_{k} = d_{v} = {d_{\text{model}}/h} = 64} $. Debido a la dimensión reducida de cada cabeza, el costo computacional total es similar al de una Lua error: Internal error: The interpreter exited with status 1. de una sola cabeza con dimensionalidad completa.
<span id="applications-of-Lua error: Internal error: The interpreter exited with status 1.-in-our-model">
3.2.3 Aplicaciones de la Lua error: Internal error: The interpreter exited with status 1. en nuestro modelo
El Lua error: Internal error: The interpreter exited with status 1. utiliza Lua error: Internal error: The interpreter exited with status 1. multi-cabeza de tres formas diferentes:
•
En las capas de "Lua error: Internal error: The interpreter exited with status 1. codificador-decodificador", las consultas provienen de la capa decodificadora previa, y las claves y valores de memoria provienen de la salida del codificador. Esto permite que cada posición en el decodificador atienda a todas las posiciones de la secuencia de entrada. Esto imita los típicos mecanismos de Lua error: Internal error: The interpreter exited with status 1. codificador-decodificador en modelos Lua error: Internal error: The interpreter exited with status 1. como [38, 2, 9].
•
El codificador contiene capas de self-Lua error: Internal error: The interpreter exited with status 1.. En una capa de self-Lua error: Internal error: The interpreter exited with status 1. todas las claves, valores y consultas provienen del mismo lugar, en este caso, la salida de la capa anterior del codificador. Cada posición del codificador puede atender a todas las posiciones de la capa anterior del codificador.
•
De forma análoga, las capas de self-Lua error: Internal error: The interpreter exited with status 1. en el decodificador permiten que cada posición del decodificador atienda a todas las posiciones del decodificador hasta esa posición incluida. Necesitamos impedir el flujo de información hacia la izquierda en el decodificador para preservar la propiedad auto-regresiva. Implementamos esto dentro de la Lua error: Internal error: The interpreter exited with status 1. de producto escalar escalado enmascarando (asignando $ {\textstyle - \infty} $) todos los valores en la entrada del Lua error: Internal error: The interpreter exited with status 1. que correspondan a conexiones ilegales. Véase la Figura 2.
3.3 Redes feed-forward por posición
Además de las sub-capas de Lua error: Internal error: The interpreter exited with status 1., cada una de las capas de nuestro codificador y decodificador contiene una red feed-forward totalmente conectada, que se aplica a cada posición por separado e idénticamente. Esta consiste en dos transformaciones lineales con una Lua error: Internal error: The interpreter exited with status 1. ReLU intermedia.
| $ {\displaystyle {{FFN}\hspace{0pt}{(x)}} = {{{\max{(0,{{x\hspace{0pt}W_{1}} + b_{1}})}}\hspace{0pt}W_{2}} + b_{2}}} $ | (2) |
Aunque las transformaciones lineales son las mismas a lo largo de las distintas posiciones, utilizan parámetros diferentes de capa en capa. Otra forma de describir esto es como dos Lua error: Internal error: The interpreter exited with status 1. con tamaño de kernel 1. La dimensionalidad de la entrada y la salida es $ {\textstyle d_{\text{model}} = 512} $, y la capa interna tiene dimensionalidad $ {\textstyle d_{f\hspace{0pt}f} = 2048} $.
<span id="Lua error: Internal error: The interpreter exited with status 1.-and-Lua error: Internal error: The interpreter exited with status 1.">
3.4 Lua error: Internal error: The interpreter exited with status 1. y Lua error: Internal error: The interpreter exited with status 1.
De manera similar a otros modelos de transducción de secuencias, utilizamos Lua error: Internal error: The interpreter exited with status 1. aprendidos para convertir los tokens de entrada y salida en vectores de dimensión $ {\textstyle d_{\text{model}}} $. También usamos la habitual transformación lineal aprendida y la función Lua error: Internal error: The interpreter exited with status 1. para convertir la salida del decodificador en probabilidades del siguiente token. En nuestro modelo, compartimos la misma matriz de pesos entre las dos capas de Lua error: Internal error: The interpreter exited with status 1. y la transformación lineal pre-Lua error: Internal error: The interpreter exited with status 1., de manera similar a [30]. En las capas de Lua error: Internal error: The interpreter exited with status 1., multiplicamos esos pesos por $ {\textstyle \sqrt{d_{\text{model}}}} $.
3.5 Codificación posicional
Dado que nuestro modelo no contiene recurrencia ni Lua error: Internal error: The interpreter exited with status 1., para que el modelo aproveche el orden de la secuencia debemos inyectar alguna información sobre la posición relativa o absoluta de los tokens en la secuencia. Con este fin, añadimos "codificaciones posicionales" a los Lua error: Internal error: The interpreter exited with status 1. de entrada en la base de las pilas del codificador y el decodificador. Las codificaciones posicionales tienen la misma dimensión $ {\textstyle d_{\text{model}}} $ que los Lua error: Internal error: The interpreter exited with status 1., de modo que ambos pueden sumarse. Existen muchas opciones de codificaciones posicionales, aprendidas y fijas [9].
En este trabajo utilizamos funciones seno y coseno de distintas frecuencias:
| $ {\textstyle {P\hspace{0pt}E_{({p\hspace{0pt}o\hspace{0pt}s},{2\hspace{0pt}i})}} = {s\hspace{0pt}i\hspace{0pt}n\hspace{0pt}{({{p\hspace{0pt}o\hspace{0pt}s}/10000^{{2\hspace{0pt}i}/d_{\text{model}}}})}}} $ | ||
| $ {\textstyle {P\hspace{0pt}E_{({p\hspace{0pt}o\hspace{0pt}s},{{2\hspace{0pt}i} + 1})}} = {c\hspace{0pt}o\hspace{0pt}s\hspace{0pt}{({{p\hspace{0pt}o\hspace{0pt}s}/10000^{{2\hspace{0pt}i}/d_{\text{model}}}})}}} $ |
donde $ {\textstyle p\hspace{0pt}o\hspace{0pt}s} $ es la posición e $ {\textstyle 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 desde $ {\textstyle 2\hspace{0pt}\pi} $ hasta $ {\textstyle {10000 \cdot 2}\hspace{0pt}\pi} $. Elegimos esta función porque planteamos la hipótesis de que permitiría al modelo aprender fácilmente a atender por posiciones relativas, ya que para cualquier desplazamiento fijo $ {\textstyle k} $, $ {\textstyle P\hspace{0pt}E_{{p\hspace{0pt}o\hspace{0pt}s} + k}} $ puede representarse como una función lineal de $ {\textstyle P\hspace{0pt}E_{p\hspace{0pt}o\hspace{0pt}s}} $.
También experimentamos con el uso de Lua error: Internal error: The interpreter exited with status 1. posicionales aprendidos [9] en su lugar, y encontramos que las dos versiones produjeron resultados casi idénticos (véase la fila (E) de la Tabla 3). Elegimos la versión sinusoidal porque puede permitir al modelo extrapolar a longitudes de secuencia mayores que las encontradas durante el entrenamiento.
<span id="why-self-Lua error: Internal error: The interpreter exited with status 1.">
4 Por qué la self-Lua error: Internal error: The interpreter exited with status 1.
En esta sección comparamos varios aspectos de las capas de self-Lua error: Internal error: The interpreter exited with status 1. con las Lua error: Internal error: The interpreter exited with status 1. y recurrentes que se usan habitualmente para mapear una secuencia de longitud variable de representaciones simbólicas $ {\textstyle (x_{1},\ldots,x_{n})} $ a otra secuencia de igual longitud $ {\textstyle (z_{1},\ldots,z_{n})} $, con $ {\textstyle {x_{i},z_{i}} \in {\mathbb{R}}^{d}} $, como por ejemplo una capa oculta en un codificador o decodificador típico de transducción de secuencias. Para motivar nuestro uso de la self-Lua error: Internal error: The interpreter exited with status 1. consideramos tres deseos.
Uno es la complejidad computacional total por capa. Otro es la cantidad de cómputo que puede paralelizarse, medida por el número mínimo de operaciones secuenciales requeridas.
El tercero es la longitud del camino entre dependencias de largo alcance en la red. Aprender dependencias de largo alcance es un desafío clave en muchas tareas de transducción de secuencias. Un factor clave que afecta la capacidad de aprender tales dependencias es la longitud de los caminos que las señales hacia adelante y hacia atrás deben 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]. Por ello, también comparamos la longitud máxima del camino entre dos posiciones cualesquiera de entrada y salida en redes compuestas por los diferentes tipos de capas.
| Tipo de capa | Complejidad por capa | Operaciones | Longitud máxima del camino |
|---|---|---|---|
| secuenciales | |||
| Self-Lua error: Internal error: The interpreter exited with status 1. | $ {\textstyle O\hspace{0pt}{({n^{2} \cdot d})}} $ | $ {\textstyle O\hspace{0pt}{(1)}} $ | $ {\textstyle O\hspace{0pt}{(1)}} $ |
| Recurrente | $ {\textstyle O\hspace{0pt}{({n \cdot d^{2}})}} $ | $ {\textstyle O\hspace{0pt}{(n)}} $ | $ {\textstyle O\hspace{0pt}{(n)}} $ |
| Convolucional | $ {\textstyle O\hspace{0pt}{({k \cdot n \cdot d^{2}})}} $ | $ {\textstyle O\hspace{0pt}{(1)}} $ | $ {\textstyle O\hspace{0pt}{({l\hspace{0pt}o\hspace{0pt}g_{k}\hspace{0pt}{(n)}})}} $ |
| Self-Lua error: Internal error: The interpreter exited with status 1. (restringida) | $ {\textstyle O\hspace{0pt}{({r \cdot n \cdot d})}} $ | $ {\textstyle O\hspace{0pt}{(1)}} $ | $ {\textstyle O\hspace{0pt}{({n/r})}} $ |
Como se observa en la Tabla 1, una capa de self-Lua error: Internal error: The interpreter exited with status 1. conecta todas las posiciones con un número constante de operaciones ejecutadas secuencialmente, mientras que una capa recurrente requiere $ {\textstyle O\hspace{0pt}{(n)}} $ operaciones secuenciales. En términos de complejidad computacional, las capas de self-Lua error: Internal error: The interpreter exited with status 1. son más rápidas que las capas recurrentes cuando la longitud de la secuencia $ {\textstyle n} $ es menor que la dimensionalidad de la representación $ {\textstyle d} $, lo cual ocurre con mayor frecuencia con las representaciones de oraciones utilizadas por los modelos de última generación en traducción automática, como las representaciones word-piece [38] y byte-pair [31]. Para mejorar el rendimiento computacional en tareas que involucran secuencias muy largas, la self-Lua error: Internal error: The interpreter exited with status 1. podría restringirse a considerar solo un vecindario de tamaño $ {\textstyle r} $ en la secuencia de entrada centrado alrededor de la posición de salida correspondiente. Esto aumentaría la longitud máxima del camino a $ {\textstyle O\hspace{0pt}{({n/r})}} $. Planeamos investigar más a fondo este enfoque en trabajos futuros.
Una sola Lua error: Internal error: The interpreter exited with status 1. con ancho de kernel $ {\textstyle k < n} $ no conecta todos los pares de posiciones de entrada y salida. Hacerlo requiere una pila de $ {\textstyle O\hspace{0pt}{({n/k})}} $ Lua error: Internal error: The interpreter exited with status 1. en el caso de kernels contiguos, o $ {\textstyle O\hspace{0pt}{({l\hspace{0pt}o\hspace{0pt}g_{k}\hspace{0pt}{(n)}})}} $ en el caso de Lua error: Internal error: The interpreter exited with status 1. dilatadas [18], aumentando la longitud de los caminos más largos entre dos posiciones cualesquiera de la red. Las Lua error: Internal error: The interpreter exited with status 1. suelen ser más costosas que las capas recurrentes, por un factor de $ {\textstyle k} $. Sin embargo, las Lua error: Internal error: The interpreter exited with status 1. separables [6] reducen considerablemente la complejidad a $ {\textstyle O\hspace{0pt}{({{k \cdot n \cdot d} + {n \cdot d^{2}}})}} $. Incluso con $ {\textstyle k = n} $, sin embargo, la complejidad de una Lua error: Internal error: The interpreter exited with status 1. separable es igual a la combinación de una capa de self-Lua error: Internal error: The interpreter exited with status 1. y una capa feed-forward punto a punto, el enfoque que adoptamos en nuestro modelo.
Como beneficio adicional, la self-Lua error: Internal error: The interpreter exited with status 1. podría producir modelos más interpretables. Inspeccionamos las distribuciones de Lua error: Internal error: The interpreter exited with status 1. de nuestros modelos y presentamos y discutimos ejemplos en el apéndice. No solo las cabezas individuales de Lua error: Internal error: The interpreter exited with status 1. aprenden claramente a realizar diferentes tareas, sino que muchas parecen exhibir comportamientos relacionados con la estructura sintáctica y semántica de las oraciones.
5 Entrenamiento
Esta sección describe el régimen de entrenamiento para nuestros modelos.
5.1 Datos de entrenamiento y batching
Entrenamos con el conjunto estándar WMT 2014 inglés-alemán, que consta de aproximadamente 4.5 millones de pares de oraciones. Las oraciones se codificaron mediante codificación byte-pair [3], que dispone de un vocabulario fuente-destino compartido de aproximadamente 37000 tokens. Para inglés-francés utilizamos el conjunto WMT 2014 inglés-francés, significativamente más grande, con 36M de oraciones, y dividimos los tokens en un vocabulario word-piece de 32000 [38]. Los pares de oraciones se agruparon por longitud de secuencia aproximada. Cada batch de entrenamiento contenía un conjunto de pares de oraciones con aproximadamente 25000 tokens fuente y 25000 tokens objetivo.
5.2 Hardware y planificación
Entrenamos nuestros modelos en una máquina con 8 GPUs NVIDIA P100. Para nuestros modelos base con los Lua error: Internal error: The interpreter exited with status 1. descritos a lo largo del artículo, cada paso de entrenamiento tomó aproximadamente 0.4 segundos. Entrenamos los modelos base por un total de 100 000 pasos o 12 horas. Para nuestros modelos grandes (descritos en la última fila de la tabla 3), el tiempo por paso fue de 1.0 segundos. Los modelos grandes se entrenaron durante 300 000 pasos (3.5 días).
5.3 Optimizador
Utilizamos el optimizador Lua error: Internal error: The interpreter exited with status 1. [20] con $ {\textstyle \beta_{1} = 0.9} $, $ {\textstyle \beta_{2} = 0.98} $ y $ {\textstyle \epsilon = 10^{- 9}} $. Variamos la Lua error: Internal error: The interpreter exited with status 1. a lo largo del entrenamiento, según la fórmula:
| $ {\displaystyle {l\hspace{0pt}r\hspace{0pt}a\hspace{0pt}t\hspace{0pt}e} = {d_{\text{model}}^{- 0.5} \cdot {\min{({s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}n\hspace{0pt}u\hspace{0pt}m^{- 0.5}},{{{s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}n\hspace{0pt}u\hspace{0pt}m} \cdot w}\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s^{- 1.5}})}}}} $ | (3) |
Esto corresponde a aumentar la Lua error: Internal error: The interpreter exited with status 1. linealmente durante los primeros $ {\textstyle w\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s} $ pasos de entrenamiento, y disminuirla a partir de entonces de forma proporcional al inverso de la raíz cuadrada del número de paso. Usamos $ {\textstyle {w\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s} = 4000} $.
<span id="Lua error: Internal error: The interpreter exited with status 1.">
5.4 Lua error: Internal error: The interpreter exited with status 1.
Empleamos tres tipos de Lua error: Internal error: The interpreter exited with status 1. durante el entrenamiento:
<span id="residual-Lua error: Internal error: The interpreter exited with status 1.">
Lua error: Internal error: The interpreter exited with status 1. residual
Aplicamos Lua error: Internal error: The interpreter exited with status 1. [33] a la salida de cada sub-capa, antes de añadirla a la entrada de la sub-capa y normalizar. Además, aplicamos Lua error: Internal error: The interpreter exited with status 1. a las sumas de los Lua error: Internal error: The interpreter exited with status 1. y las codificaciones posicionales tanto en las pilas del codificador como del decodificador. Para el modelo base utilizamos una tasa de $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p} = 0.1} $.
Suavizado de etiquetas
Durante el entrenamiento, empleamos suavizado de etiquetas con valor $ {\textstyle \epsilon_{l\hspace{0pt}s} = 0.1} $ [36]. Esto perjudica la perplejidad, ya que el modelo aprende a estar más inseguro, pero mejora la exactitud y la puntuación BLEU.
6 Resultados
6.1 Traducción automática
| Modelo | BLEU | Costo de entrenamiento (FLOPs) | |||
|---|---|---|---|---|---|
| EN-DE | EN-FR | EN-DE | EN-FR | ||
| ByteNet [18] | 23.75 | ||||
| Deep-Att + PosUnk [39] | 39.2 | $ {\textstyle 1.0 \cdot 10^{20}} $ | |||
| GNMT + RL [38] | 24.6 | 39.92 | $ {\textstyle 2.3 \cdot 10^{19}} $ | $ {\textstyle 1.4 \cdot 10^{20}} $ | |
| ConvS2S [9] | 25.16 | 40.46 | $ {\textstyle 9.6 \cdot 10^{18}} $ | $ {\textstyle 1.5 \cdot 10^{20}} $ | |
| Lua error: Internal error: The interpreter exited with status 1. [32] | 26.03 | 40.56 | $ {\textstyle 2.0 \cdot 10^{19}} $ | $ {\textstyle 1.2 \cdot 10^{20}} $ | |
| Deep-Att + PosUnk Ensemble [39] | 40.4 | $ {\textstyle 8.0 \cdot 10^{20}} $ | |||
| GNMT + RL Ensemble [38] | 26.30 | 41.16 | $ {\textstyle 1.8 \cdot 10^{20}} $ | $ {\textstyle 1.1 \cdot 10^{21}} $ | |
| ConvS2S Ensemble [9] | 26.36 | 41.29 | $ {\textstyle 7.7 \cdot 10^{19}} $ | $ {\textstyle 1.2 \cdot 10^{21}} $ | |
| Lua error: Internal error: The interpreter exited with status 1. (modelo base) | 27.3 | 38.1 | $ {\textstyle 3.3 \cdot \mathbf{1}\mathbf{0}^{\mathbf{1}\mathbf{8}}} $ | ||
| Lua error: Internal error: The interpreter exited with status 1. (grande) | 28.4 | 41.8 | $ {\textstyle 2.3 \cdot 10^{19}} $ | ||
En la tarea de traducción inglés-alemán de WMT 2014, el modelo grande Lua error: Internal error: The interpreter exited with status 1. (Lua error: Internal error: The interpreter exited with status 1. (grande) en la Tabla 2) supera a los mejores modelos previamente reportados (incluidos ensembles) en más de $ {\textstyle 2.0} $ BLEU, estableciendo una nueva puntuación BLEU de última generación de $ {\textstyle 28.4} $. La configuración de este modelo aparece en la última fila de la Tabla 3. El entrenamiento tomó $ {\textstyle 3.5} $ días en $ {\textstyle 8} $ GPUs P100. Incluso nuestro modelo base supera todos los modelos y ensembles publicados previamente, a una fracción del costo de entrenamiento de cualquiera de los modelos competitivos.
En la tarea de traducción inglés-francés de WMT 2014, nuestro modelo grande alcanza una puntuación BLEU de $ {\textstyle 41.0} $, superando a todos los modelos individuales publicados previamente, a menos de $ {\textstyle 1/4} $ del costo de entrenamiento del modelo de última generación previo. El modelo Lua error: Internal error: The interpreter exited with status 1. (grande) entrenado para inglés-francés utilizó una tasa de Lua error: Internal error: The interpreter exited with status 1. $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p} = 0.1} $, en lugar de $ {\textstyle 0.3} $.
Para los modelos base utilizamos un único modelo obtenido promediando los últimos 5 checkpoints, que se escribieron a intervalos de 10 minutos. Para los modelos grandes promediamos los últimos 20 checkpoints. Usamos búsqueda por haz (beam search) con un tamaño de haz de $ {\textstyle 4} $ y una penalización de longitud $ {\textstyle \alpha = 0.6} $ [38]. Estos Lua error: Internal error: The interpreter exited with status 1. se eligieron tras experimentar con el conjunto de desarrollo. Fijamos la longitud máxima de salida durante la inferencia en la longitud de entrada + $ {\textstyle 50} $, pero terminamos antes cuando es posible [38].
La Tabla 2 resume nuestros resultados y compara nuestra calidad de traducción y costos de entrenamiento con otras arquitecturas de modelos de la literatura. Estimamos el número de operaciones de punto flotante usadas para entrenar un modelo multiplicando el tiempo de entrenamiento, el número de GPUs utilizadas y una estimación de la capacidad sostenida en punto flotante de precisión simple de cada GPU 222Usamos valores de 2.8, 3.7, 6.0 y 9.5 TFLOPS para K80, K40, M40 y P100, respectivamente..
6.2 Variaciones del modelo
| $ {\textstyle N} $ | $ {\textstyle d_{\text{model}}} $ | $ {\textstyle d_{\text{ff}}} $ | $ {\textstyle h} $ | $ {\textstyle d_{k}} $ | $ {\textstyle d_{v}} $ | $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p}} $ | $ {\textstyle \epsilon_{l\hspace{0pt}s}} $ | pasos | PPL | BLEU | params | |
| de entrenamiento | (dev) | (dev) | $ {\textstyle \times 10^{6}} $ | |||||||||
| base | 6 | 512 | 2048 | 8 | 64 | 64 | 0.1 | 0.1 | 100K | 4.92 | 25.8 | 65 |
| (A) | 1 | 512 | 512 | 5.29 | 24.9 | |||||||
| 4 | 128 | 128 | 5.00 | 25.5 | ||||||||
| 16 | 32 | 32 | 4.91 | 25.8 | ||||||||
| 32 | 16 | 16 | 5.01 | 25.4 | ||||||||
| (B) | 16 | 5.16 | 25.1 | 58 | ||||||||
| 32 | 5.01 | 25.4 | 60 | |||||||||
| (C) | 2 | 6.11 | 23.7 | 36 | ||||||||
| 4 | 5.19 | 25.3 | 50 | |||||||||
| 8 | 4.88 | 25.5 | 80 | |||||||||
| 256 | 32 | 32 | 5.75 | 24.5 | 28 | |||||||
| 1024 | 128 | 128 | 4.66 | 26.0 | 168 | |||||||
| 1024 | 5.12 | 25.4 | 53 | |||||||||
| 4096 | 4.75 | 26.2 | 90 | |||||||||
| (D) | 0.0 | 5.77 | 24.6 | |||||||||
| 0.2 | 4.95 | 25.5 | ||||||||||
| 0.0 | 4.67 | 25.3 | ||||||||||
| 0.2 | 5.47 | 25.7 | ||||||||||
| (E) | Lua error: Internal error: The interpreter exited with status 1. posicional en lugar de sinusoides | 4.92 | 25.7 | |||||||||
| grande | 6 | 1024 | 4096 | 16 | 0.3 | 300K | 4.33 | 26.4 | 213 | |||
Para evaluar la importancia de los distintos componentes del Lua error: Internal error: The interpreter exited with status 1., variamos nuestro modelo base de diferentes maneras, midiendo el cambio en el rendimiento de la traducción inglés-alemán en el conjunto de desarrollo, newstest2013. Usamos beam search como se describió en la sección anterior, pero sin promediado de checkpoints. Presentamos estos resultados en la Tabla 3.
En las filas (A) de la Tabla 3, variamos el número de cabezas de Lua error: Internal error: The interpreter exited with status 1. y las dimensiones de clave y valor de Lua error: Internal error: The interpreter exited with status 1., manteniendo constante la cantidad de cómputo, como se describe en la Sección 3.2.2. Si bien la Lua error: Internal error: The interpreter exited with status 1. de una sola cabeza es 0.9 BLEU peor que el mejor ajuste, la calidad también se reduce con demasiadas cabezas.
En las filas (B) de la Tabla 3 observamos que reducir el tamaño de la clave de Lua error: Internal error: The interpreter exited with status 1. $ {\textstyle d_{k}} $ perjudica la calidad del modelo. Esto sugiere que determinar la compatibilidad no es sencillo y que una función de compatibilidad más sofisticada que el producto punto podría ser beneficiosa. Observamos además en las filas (C) y (D) que, como se esperaba, los modelos más grandes son mejores, y que el Lua error: Internal error: The interpreter exited with status 1. es muy útil para evitar el sobreajuste. En la fila (E) reemplazamos nuestra codificación posicional sinusoidal por Lua error: Internal error: The interpreter exited with status 1. posicionales aprendidos [9] y observamos resultados casi idénticos a los del modelo base.
6.3 Análisis sintáctico de constituyentes en inglés
| Parser | Entrenamiento | WSJ 23 F1 |
| Vinyals & Kaiser el al. (2014) [37] | solo WSJ, discriminativo | 88.3 |
| Petrov et al. (2006) [29] | solo WSJ, discriminativo | 90.4 |
| Zhu et al. (2013) [40] | solo WSJ, discriminativo | 90.4 |
| Dyer et al. (2016) [8] | solo WSJ, discriminativo | 91.7 |
| Lua error: Internal error: The interpreter exited with status 1. (4 capas) | solo WSJ, discriminativo | 91.3 |
| Zhu et al. (2013) [40] | semi-supervisado | 91.3 |
| Huang & Harper (2009) [14] | semi-supervisado | 91.3 |
| McClosky et al. (2006) [26] | semi-supervisado | 92.1 |
| Vinyals & Kaiser el al. (2014) [37] | semi-supervisado | 92.1 |
| Lua error: Internal error: The interpreter exited with status 1. (4 capas) | semi-supervisado | 92.7 |
| Luong et al. (2015) [23] | multitarea | 93.0 |
| Dyer et al. (2016) [8] | generativo | 93.3 |
Para evaluar si el Lua error: Internal error: The interpreter exited with status 1. puede generalizar a otras tareas realizamos experimentos en análisis sintáctico de constituyentes en inglés. Esta tarea presenta desafíos específicos: la salida está sujeta a fuertes restricciones estructurales y es significativamente más larga que la entrada. Además, los modelos Lua error: Internal error: The interpreter exited with status 1. basados en RNN no han logrado alcanzar resultados de última generación en regímenes de pocos datos [37].
Entrenamos un Lua error: Internal error: The interpreter exited with status 1. de 4 capas con $ {\textstyle d_{m\hspace{0pt}o\hspace{0pt}d\hspace{0pt}e\hspace{0pt}l} = 1024} $ en la porción del Wall Street Journal (WSJ) del Penn Treebank [25], aproximadamente 40K oraciones de entrenamiento. También lo entrenamos en un escenario semi-supervisado, utilizando los corpus más grandes de alta confianza y de BerkeleyParser, con aproximadamente 17M de oraciones [37]. Usamos un vocabulario de 16K tokens para el escenario solo WSJ y un vocabulario de 32K tokens para el escenario semi-supervisado.
Realizamos solo un pequeño número de experimentos para seleccionar el Lua error: Internal error: The interpreter exited with status 1. (tanto el de Lua error: Internal error: The interpreter exited with status 1. como el residual, sección 5.4), las Lua error: Internal error: The interpreter exited with status 1. 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 base de traducción inglés-alemán. Durante la inferencia, aumentamos la longitud máxima de salida a la longitud de entrada + $ {\textstyle 300} $. Usamos un tamaño de haz de $ {\textstyle 21} $ y $ {\textstyle \alpha = 0.3} $ tanto para el escenario solo WSJ como para el semi-supervisado.
Nuestros resultados en la Tabla 4 muestran que, a pesar de la falta de ajuste específico para la tarea, nuestro modelo se desempeña sorprendentemente bien, produciendo mejores resultados que todos los modelos previamente reportados, con la excepción de la Recurrent Neural Network Grammar [8].
En contraste con los modelos Lua error: Internal error: The interpreter exited with status 1. basados en RNN [37], el Lua error: Internal error: The interpreter exited with status 1. supera a BerkeleyParser [29] incluso entrenando solo con el conjunto de entrenamiento WSJ de 40K oraciones.
7 Conclusión
En este trabajo presentamos el Lua error: Internal error: The interpreter exited with status 1., el primer modelo de transducción de secuencias basado completamente en Lua error: Internal error: The interpreter exited with status 1., reemplazando las capas recurrentes más comúnmente usadas en arquitecturas codificador-decodificador por self-Lua error: Internal error: The interpreter exited with status 1. multi-cabeza.
Para tareas de traducción, el Lua error: Internal error: The interpreter exited with status 1. puede entrenarse significativamente más rápido que las arquitecturas basadas en capas recurrentes o Lua error: Internal error: The interpreter exited with status 1.. En las tareas de traducción WMT 2014 inglés-alemán y WMT 2014 inglés-francés alcanzamos un nuevo estado del arte. En la primera tarea, nuestro mejor modelo supera incluso a todos los ensembles previamente reportados.
Estamos entusiasmados con el futuro de los modelos basados en Lua error: Internal error: The interpreter exited with status 1. y planeamos aplicarlos a otras tareas. Planeamos extender el Lua error: Internal error: The interpreter exited with status 1. a problemas que involucren modalidades de entrada y salida distintas del texto e investigar mecanismos de Lua error: Internal error: The interpreter exited with status 1. locales y restringidos para manejar eficientemente entradas y salidas grandes, como imágenes, audio y video. Hacer la generación menos secuencial es otro de nuestros objetivos de investigación.
El código que utilizamos para entrenar y evaluar nuestros modelos está disponible en https://github.com/tensorflow/tensor2tensor.
Agradecimientos
Agradecemos a Nal Kalchbrenner y Stephan Gouws por sus comentarios fructíferos, correcciones e inspiración.
Referencias
- [1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Lua error: Internal error: The interpreter exited with status 1.. arXiv preprint arXiv:1607.06450, 2016.
- [2] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014.
- [3] Denny Britz, Anna Goldie, Minh-Thang Luong, and Quoc V. Le. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906, 2017.
- [4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Lua error: Internal error: The interpreter exited with status 1.-networks for machine reading. arXiv preprint arXiv:1601.06733, 2016.
- [5] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using rnn encoder-decoder for statistical machine translation. CoRR, abs/1406.1078, 2014.
- [6] Francois Chollet. Xception: Lua error: Internal error: The interpreter exited with status 1. with depthwise separable Lua error: Internal error: The interpreter exited with status 1.. arXiv preprint arXiv:1610.02357, 2016.
- [7] Junyoung Chung, Çaglar Gülçehre, Kyunghyun Cho, and Yoshua Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.
- [8] Chris Dyer, Adhiguna Kuncoro, Miguel Ballesteros, and Noah A. Smith. Recurrent neural network grammars. In Proc. of NAACL, 2016.
- [9] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolutional Lua error: Internal error: The interpreter exited with status 1. learning. arXiv preprint arXiv:1705.03122v2, 2017.
- [10] Alex Graves. Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850, 2013.
- [11] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 770–778, 2016.
- [12] Sepp Hochreiter, Yoshua Bengio, Paolo Frasconi, and Jürgen Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, 2001.
- [13] Sepp Hochreiter and Jürgen Schmidhuber. Lua error: Internal error: The interpreter exited with status 1.. Neural computation, 9(8):1735–1780, 1997.
- [14] Zhongqiang Huang and Mary Harper. Self-training PCFG grammars with latent annotations across languages. In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing, pages 832–841. ACL, August 2009.
- [15] Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.
- [16] Łukasz Kaiser and Samy Bengio. Can active memory replace Lua error: Internal error: The interpreter exited with status 1.? In Advances in Neural Information Processing Systems, (NIPS), 2016.
- [17] Łukasz Kaiser and Ilya Sutskever. Neural GPUs learn algorithms. In International Conference on Learning Representations (ICLR), 2016.
- [18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Koray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2, 2017.
- [19] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured Lua error: Internal error: The interpreter exited with status 1. networks. In International Conference on Learning Representations, 2017.
- [20] Diederik Kingma and Jimmy Ba. Lua error: Internal error: The interpreter exited with status 1.: A method for stochastic optimization. In ICLR, 2015.
- [21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for Lua error: Internal error: The interpreter exited with status 1. networks. arXiv preprint arXiv:1703.10722, 2017.
- [22] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured self-attentive sentence Lua error: Internal error: The interpreter exited with status 1.. arXiv preprint arXiv:1703.03130, 2017.
- [23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task Lua error: Internal error: The interpreter exited with status 1. learning. arXiv preprint arXiv:1511.06114, 2015.
- [24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to Lua error: Internal error: The interpreter exited with status 1.-based neural machine translation. arXiv preprint arXiv:1508.04025, 2015.
- [25] Mitchell P Marcus, Mary Ann Marcinkiewicz, and Beatrice Santorini. Building a large annotated corpus of english: The penn treebank. Computational linguistics, 19(2):313–330, 1993.
- [26] David McClosky, Eugene Charniak, and Mark Johnson. Effective self-training for parsing. In Proceedings of the Human Language Technology Conference of the NAACL, Main Conference, pages 152–159. ACL, June 2006.
- [27] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable Lua error: Internal error: The interpreter exited with status 1. model. In Empirical Methods in Natural Language Processing, 2016.
- [28] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304, 2017.
- [29] Slav Petrov, Leon Barrett, Romain Thibaux, and Dan Klein. Learning accurate, compact, and interpretable tree annotation. In Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the ACL, pages 433–440. ACL, July 2006.
- [30] Ofir Press and Lior Wolf. Using the output Lua error: Internal error: The interpreter exited with status 1. to improve language models. arXiv preprint arXiv:1608.05859, 2016.
- [31] Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural machine translation of rare words with subword units. arXiv preprint arXiv:1508.07909, 2015.
- [32] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. Outrageously large neural networks: The sparsely-gated Lua error: Internal error: The interpreter exited with status 1. layer. arXiv preprint arXiv:1701.06538, 2017.
- [33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. Lua error: Internal error: The interpreter exited with status 1.: a simple way to prevent neural networks from Lua error: Internal error: The interpreter exited with status 1.. Journal of Machine Learning Research, 15(1):1929–1958, 2014.
- [34] Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, and Rob Fergus. End-to-end memory networks. In C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, and R. Garnett, editors, Advances in Neural Information Processing Systems 28, pages 2440–2448. Curran Associates, Inc., 2015.
- [35] Ilya Sutskever, Oriol Vinyals, and Quoc VV Le. Lua error: Internal error: The interpreter exited with status 1. learning with neural networks. In Advances in Neural Information Processing Systems, pages 3104–3112, 2014.
- [36] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.
- [37] Vinyals & Kaiser, Koo, Petrov, Sutskever, and Hinton. Grammar as a foreign language. In Advances in Neural Information Processing Systems, 2015.
- [38] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.
- [39] Jie Zhou, Ying Cao, Xuguang Wang, Peng Li, and Wei Xu. Deep recurrent models with fast-forward connections for neural machine translation. CoRR, abs/1606.04199, 2016.
- [40] Muhua Zhu, Yue Zhang, Wenliang Chen, Min Zhang, and Jingbo Zhu. Fast and accurate shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the ACL (Volume 1: Long Papers), pages 434–443. ACL, August 2013.