Articulo de referencia

Seq2seq

Animación de seq2seq con RNN y mecanismo de atención Seq2seq es una familia de enfoques de aprendizaje automático utilizados para el procesamiento del lenguaje natural . [ 1 ] D...

Animación de seq2seq con RNN y mecanismo de atención

Seq2seq es una familia de enfoques de aprendizaje automático utilizados para el procesamiento del lenguaje natural . [ 1 ] Desarrollado originalmente por Lê Viết Quốc , un científico informático vietnamita y pionero del aprendizaje automático en Google Brain , este marco se ha convertido en fundamental en muchos sistemas de IA modernos. Las aplicaciones incluyen traducción de idiomas , [ 2 ] subtitulado de imágenes , [ 3 ] modelos conversacionales, [ 4 ] reconocimiento de voz , [ 5 ] y resumen de texto . [ 6 ] Seq2seq utiliza la transformación de secuencias : convierte una secuencia en otra secuencia.

Historia

Uno se pregunta naturalmente si el problema de la traducción podría tratarse como un problema de criptografía. Cuando leo un artículo en ruso, digo: «En realidad está escrito en inglés, pero está codificado con símbolos extraños. Ahora procederé a descifrarlo».

Warren Weaver , Carta a Norbert Wiener , 4 de marzo de 1947

Diagrama de Shannon de un sistema de comunicaciones general , que muestra el proceso por el cual un mensaje enviado se convierte en el mensaje recibido (posiblemente corrompido por ruido).

seq2seq es un método de traducción automática (o, más generalmente, de transducción de secuencias ) con raíces en la teoría de la información, donde la comunicación se entiende como un proceso de codificación, transmisión y decodificación, y la traducción automática puede estudiarse como un caso particular de comunicación. Este punto de vista se desarrolló, por ejemplo, en el modelo de canal ruidoso de la traducción automática.

En la práctica, seq2seq transforma una secuencia de entrada en un vector numérico real mediante una red neuronal (el codificador ) y, a continuación, lo transforma de nuevo en una secuencia de salida mediante otra red neuronal (el decodificador ).

La idea de la transducción de secuencias codificador-decodificador se desarrolló a principios de la década de 2010. Los artículos más citados como los precursores de seq2seq son dos artículos de 2014. [ 2 ] [ 1 ]

En el método seq2seq propuesto por ellos, tanto el codificador como el decodificador eran redes LSTM . Esto presentaba el problema del "cuello de botella", ya que el vector de codificación tiene un tamaño fijo, por lo que para secuencias de entrada largas, la información tendía a perderse, al ser difícil ajustarlas al vector de codificación de longitud fija. El mecanismo de atención , propuesto en 2014, [ 7 ] resolvió el problema del cuello de botella. Llamaron a su modelo RNNsearch , ya que "emula la búsqueda en una oración de origen durante la decodificación de una traducción".

Un problema con los modelos seq2seq en este punto era que las redes neuronales recurrentes son difíciles de paralelizar. La publicación de Transformers en 2017 [ 8 ] resolvió el problema reemplazando la RNN de codificación con bloques Transformer de autoatención ("bloques codificadores") y la RNN de decodificación con bloques Transformer de atención cruzada con enmascaramiento causal ("bloques decodificadores").

Disputa de prioridad

Uno de los artículos citados como originario de seq2seq es (Sutskever et al 2014), [ 1 ] publicado en Google Brain mientras estaban en el proyecto de traducción automática de Google. La investigación permitió a Google renovar Google Translate en Google Neural Machine Translation en 2016. [ 1 ] [ 9 ] Tomáš Mikolov afirma haber desarrollado la idea (antes de unirse a Google Brain ) de usar un "modelo de lenguaje neuronal en pares de oraciones... y luego [generar] traducción después de ver la primera oración"—lo que él equipara con la traducción automática seq2seq, y haber mencionado la idea a Ilya Sutskever y Quoc Le (mientras estaba en Google Brain), quienes no lo reconocieron en su artículo. [ 10 ] Mikolov había trabajado en RNNLM (usando RNN para modelado de lenguaje) para su tesis doctoral, [ 11 ] y es más conocido por desarrollar word2vec .

Arquitectura

La referencia principal para esta sección es: [ 12 ]

Codificador

codificador RNN

El codificador se encarga de procesar la secuencia de entrada y capturar su información esencial, que se almacena como el estado oculto de la red y, en un modelo con mecanismo de atención, como un vector de contexto. El vector de contexto es la suma ponderada de los estados ocultos de entrada y se genera para cada instante de tiempo en las secuencias de salida.

Descifrador

decodificador RNN

El decodificador toma el vector de contexto y los estados ocultos del codificador y genera la secuencia de salida final. El decodificador opera de forma autorregresiva, produciendo un elemento de la secuencia de salida a la vez. En cada paso, considera los elementos generados previamente, el vector de contexto y la información de la secuencia de entrada para realizar predicciones sobre el siguiente elemento de la secuencia de salida. Específicamente, en un modelo con mecanismo de atención, el vector de contexto y el estado oculto se concatenan para formar un vector oculto de atención, que se utiliza como entrada para el decodificador.

El método seq2seq, desarrollado a principios de la década de 2010, utiliza dos redes neuronales: una red codificadora que convierte una oración de entrada en vectores numéricos, y una red decodificadora que convierte esos vectores en oraciones en el idioma de destino. El mecanismo de atención se incorporó a esta estructura en 2014 y se muestra a continuación. Posteriormente, se perfeccionó hasta convertirse en la arquitectura Transformer codificador-decodificador de 2017.

Entrenamiento frente a predicción

Entrenamiento de un modelo seq2seq mediante forzado de profesor
Predicción de una secuencia mediante un modelo seq2seq

Existe una sutil diferencia entre entrenamiento y predicción. Durante el entrenamiento, se conocen tanto la secuencia de entrada como la de salida. Durante la predicción, solo se conoce la secuencia de entrada, y la red neuronal debe decodificar la secuencia de salida.

En concreto, consideremos una secuencia de entrada.incógnita1:norte{\displaystyle x_{1:n}}y secuencia de saliday1:metro{\displaystyle y_{1:m}}El codificador procesaría la entrada.incógnita1:norte{\displaystyle x_{1:n}}paso a paso. Después de eso, el decodificador tomaría la salida del codificador, así como el <bos> como entrada, y produciría una predicción.y^1{\displaystyle {\hat {y}}_{1}}Ahora bien, la pregunta es: ¿qué se debe introducir en el decodificador en el siguiente paso?

Un método estándar para el entrenamiento es el "forzado del profesor". En el forzado del profesor, sin importar lo que emita el decodificador, la siguiente entrada al decodificador siempre es la referencia. Es decir, incluso siy^1y1{\displaystyle {\sombrero {y}}_{1}\neq y_{1}}, la siguiente entrada al decodificador sigue siendoy1{\displaystyle y_{1}}, etcétera.

Durante el tiempo de predicción, el "maestro"y1:metro{\displaystyle y_{1:m}}no estaría disponible. Por lo tanto, la entrada al decodificador debe sery^1{\displaystyle {\hat {y}}_{1}}, entoncesy^2{\displaystyle {\hat {y}}_{2}}, etcétera.

Se ha descubierto que si un modelo se entrena únicamente mediante la imposición del modelo maestro, su rendimiento se degrada durante el tiempo de predicción, ya que la generación basada en la salida del propio modelo es diferente de la generación basada en la salida del maestro. Esto se denomina sesgo de exposición o cambio en la distribución de entrenamiento/prueba . Un artículo de 2015 recomienda que, durante el entrenamiento, se alterne aleatoriamente entre la imposición del modelo maestro y la ausencia de imposición del modelo maestro. [ 13 ]

Atención a seq2seq

El mecanismo de atención es una mejora introducida por Bahdanau et al. en 2014 para abordar las limitaciones de la arquitectura básica Seq2Seq, donde una secuencia de entrada más larga provoca que la salida del estado oculto del codificador sea irrelevante para el decodificador. Permite que el modelo se centre selectivamente en diferentes partes de la secuencia de entrada durante el proceso de decodificación. En cada paso del decodificador, un modelo de alineación calcula la puntuación de atención utilizando el estado actual del decodificador y todos los vectores ocultos de atención como entrada. Un modelo de alineación es otro modelo de red neuronal que se entrena conjuntamente con el modelo Seq2Seq y se utiliza para calcular qué tan bien coincide una entrada, representada por el estado oculto, con la salida anterior, representada por el estado oculto de atención. Luego se aplica una función softmax a la puntuación de atención para obtener el peso de atención.

Codificador-decodificador RNN Seq2seq con mecanismo de atención, donde se expone la construcción detallada de dicho mecanismo. Consulte la página del mecanismo de atención para obtener más información.

En algunos modelos, los estados del codificador se introducen directamente en una función de activación , eliminando la necesidad de un modelo de alineación. Una función de activación recibe un estado del decodificador y un estado del codificador, y devuelve un valor escalar que indica su relevancia.

Animación de seq2seq con RNN y mecanismo de atención

Consideremos la tarea de traducción del inglés al francés en el lenguaje seq2seq. Concretamente, analicemos la traducción de "the zone of international control <end>", que debería traducirse como "la zone de contrôle international <end>". Aquí, utilizamos el token especial <end> como carácter de control para delimitar el final de la entrada tanto para el codificador como para el decodificador.

Una secuencia de entrada de textoincógnita0,incógnita1,{\displaystyle x_{0},x_{1},\dots }es procesado por una red neuronal (que puede ser una LSTM, un codificador Transformer u otra red) en una secuencia de vectores de valor real.h0,h1,{\displaystyle h_{0},h_{1},\dots }, dóndeh{\displaystyle h}significa "vector oculto".

Una vez que el codificador ha terminado de procesar, el decodificador comienza a operar sobre los vectores ocultos para producir una secuencia de salida.y0,y1,{\ Displaystyle y_ {0}, y_ {1}, \ puntos}, de forma autorregresiva. Es decir, siempre toma como entrada tanto los vectores ocultos producidos por el codificador como lo que el propio decodificador ha producido anteriormente, para producir la siguiente palabra de salida:

  1. (h0,h1,{\displaystyle h_{0},h_{1},\dots }, "<start>") → "la"
  2. (h0,h1,{\displaystyle h_{0},h_{1},\dots }, "<start> la") → "la zona"
  3. (h0,h1,{\displaystyle h_{0},h_{1},\dots }, "<inicio> la zona") → "la zona de"
  4. ...
  5. (h0,h1,{\displaystyle h_{0},h_{1},\dots }, "<inicio> la zona de control internacional") → "la zona de control internacional <fin>"

Aquí, usamos el token especial <start> como carácter de control para delimitar el inicio de la entrada para el decodificador. La decodificación finaliza tan pronto como aparece "<end>" en la salida del decodificador.

Pesos de atención

Mecanismo de atención con ponderaciones de atención: descripción general

Dado que la creación manual de pesos contradice el propósito del aprendizaje automático, el modelo debe calcular los pesos de atención por sí mismo. Tomando como analogía el lenguaje de las consultas de bases de datos , hacemos que el modelo construya una tripleta de vectores: clave, consulta y valor. La idea general es que tenemos una "base de datos" en forma de una lista de pares clave-valor. El decodificador envía una consulta y obtiene una respuesta en forma de una suma ponderada de los valores , donde el peso es proporcional a qué tan similar es la consulta a cada clave .

El decodificador primero procesa parcialmente la entrada "<start>" para obtener un vector intermedio.h0d{\displaystyle h_{0}^{d}}, el vector oculto 0 del decodificador. Luego, el vector intermedio se transforma mediante un mapeo lineal.WQ{\displaystyle W^{Q}}en un vector de consultaq0=h0dWQ{\displaystyle q_{0}=h_{0}^{d}W^{Q}}Mientras tanto, los vectores ocultos generados por el codificador se transforman mediante otro mapeo lineal.WK{\displaystyle W^{K}}en vectores clavek0=h0WK,k1=h1WK,{\displaystyle k_{0}=h_{0}W^{K},k_{1}=h_{1}W^{K},\dots }Los mapas lineales son útiles para proporcionar al modelo suficiente libertad para encontrar la mejor manera de representar los datos.

Ahora, la consulta y las claves se comparan calculando el producto escalar:q0k0T,q0k1T,{\displaystyle q_{0}k_{0}^{T},q_{0}k_{1}^{T},\dots }Idealmente, el modelo debería haber aprendido a calcular las claves y los valores, de tal manera queq0k0T{\displaystyle q_{0}k_{0}^{T}}es grande,q0k1T{\displaystyle q_{0}k_{1}^{T}}es pequeño, y el resto son muy pequeños. Esto puede interpretarse como que el peso de atención debe aplicarse principalmente al vector oculto 0 del codificador, un poco al 1 y prácticamente nada al resto.

Para realizar una suma ponderada correctamente, necesitamos transformar esta lista de productos escalares en una distribución de probabilidad sobre0,1,{\displaystyle 0,1,\dots }Esto se puede lograr mediante la función softmax , lo que nos da los pesos de atención:(w00,w01,)=soFtmetroaincógnita(q0k0T,q0k1T,){\displaystyle (w_{00},w_{01},\dots )=\mathrm {softmax} (q_{0}k_{0}^{T},q_{0}k_{1}^{T},\dots )}Esto se utiliza a continuación para calcular el vector de contexto :do0=w00v0+w01v1+{\displaystyle c_{0}=w_{00}v_{0}+w_{01}v_{1}+\cdots }

dóndev0=h0WV,v1=h1WV,{\displaystyle v_{0}=h_{0}W^{V},v_{1}=h_{1}W^{V},\dots }son los vectores de valor , transformados linealmente por otra matriz para proporcionar al modelo la libertad de encontrar la mejor manera de representar los valores. Sin las matricesWQ,WK,WV{\displaystyle W^{Q},W^{K},W^{V}}El modelo se vería obligado a utilizar el mismo vector oculto tanto para la clave como para el valor, lo cual podría no ser apropiado, ya que estas dos tareas no son lo mismo.

Cálculo de los pesos de atención mediante el producto escalar. Esto es la "atención cruzada del decodificador".

Este es el mecanismo de atención de puntos. La versión particular descrita en esta sección es la "atención cruzada del decodificador", ya que el vector de contexto de salida es utilizado por el decodificador, y las claves y valores de entrada provienen del codificador, pero la consulta proviene del decodificador, de ahí el término "atención cruzada".

De forma más concisa, podemos escribirlo comodo0=Attminortetionorte(h0dWQ,HWK,HWV)=soFtmetroaincógnita((h0dWQ)(HWK)T)(HWV){\displaystyle c_{0}=\mathrm {Atención} (h_{0}^{d}W^{Q},HW^{K},HW^{V})=\mathrm {softmax} ((h_{0}^{d}W^{Q})\;(HW^{K})^{T})(HW^{V})}donde la matrizH{\displaystyle H}es la matriz cuyas filas sonh0,h1,{\displaystyle h_{0},h_{1},\dots }. Tenga en cuenta que el vector de consulta,h0d{\displaystyle h_{0}^{d}}no es necesariamente lo mismo que el vector clave-valorh0{\displaystyle h_{0}}De hecho, teóricamente es posible que los vectores de consulta, clave y valor sean todos diferentes, aunque rara vez se hace en la práctica.

Codificador-decodificador RNN Seq2seq con mecanismo de atención, entrenamiento
Codificador-decodificador RNN Seq2seq con mecanismo de atención, entrenamiento e inferencia.

Otras aplicaciones

En 2019, Facebook anunció su uso en la integración simbólica y la resolución de ecuaciones diferenciales . La compañía afirmó que podía resolver ecuaciones complejas con mayor rapidez y precisión que soluciones comerciales como Mathematica , MATLAB y Maple . Primero, la ecuación se analiza en una estructura de árbol para evitar peculiaridades notacionales. Luego, una red neuronal LSTM aplica sus funciones estándar de reconocimiento de patrones para procesar el árbol. [ 14 ] [ 15 ]

En 2020, Google lanzó Meena, un chatbot basado en seq2seq con 2.600 millones de parámetros , entrenado con un conjunto de datos de 341 GB. Google afirmó que el chatbot tiene una capacidad de modelo 1,7 veces mayor que la de GPT-2 de OpenAI . [ 4 ]

En 2022, Amazon presentó Alexa™ 20B, un modelo de lenguaje seq2seq de tamaño moderado (20 mil millones de parámetros) . Utiliza un codificador-decodificador para lograr el aprendizaje con pocos ejemplos. El codificador genera una representación de la entrada que el decodificador utiliza para realizar una tarea específica, como traducirla a otro idioma. El modelo supera al mucho más grande GPT-3 en traducción y resumen de idiomas. El entrenamiento combina la eliminación de ruido (inserción adecuada del texto faltante en las cadenas) y el modelado causal del lenguaje (extensión significativa de un texto de entrada). Permite agregar características en diferentes idiomas sin flujos de trabajo de entrenamiento masivos. Alexa™ 20B logró un rendimiento de vanguardia en tareas de aprendizaje con pocos ejemplos en todos los pares de idiomas Flores-101, superando a GPT-3 en varias tareas. [ 16 ]

Véase también

Referencias

  1. 1 2 3 4 Sutskever, Ilya; Vinyals, Oriol; Le, Quoc Viet (2014). "Aprendizaje secuencia a secuencia con redes neuronales". arXiv : 1409.3215 [ cs.CL ].
  2. 1 2 Cho, Kyunghyun; van Merrienboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougares, Fethi; Schwenk, Holger; Bengio, Yoshua (2014-06-03). "Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation". arXiv : 1406.1078 [ cs.CL ].
  3. Xu, Kelvin; Ba, Jimmy; Kiros, Ryan; Cho, Kyunghyun; Courville, Aaron; Salakhudinov, Ruslan; Zemel, Rich; Bengio, Yoshua (1 de junio de 2015). "Mostrar, prestar atención y contar: Generación neuronal de subtítulos de imágenes con atención visual" . Actas de la 32.ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 2048–2057 .
  4. ^ Adiwardana , Daniel; Luong, Minh-Thang; Entonces, David R.; Salón, Jamie; Fiedel, Noé; Thoppilan, Romal; Yang, Zi; Kulshreshtha, Apoorv; Nemade, Gaurav; Lu, Yifeng; Le, Quoc V. (31 de enero de 2020). "Hacia un chatbot de dominio abierto similar al humano". arXiv : 2001.09977 [ cs.CL ].
  5. Chan, William; Jaitly, Navdeep; Le, Quoc; Vinyals, Oriol (marzo de 2016). «Escuchar, prestar atención y deletrear: una red neuronal para el reconocimiento de voz conversacional con vocabulario extenso». 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) . IEEE. págs. 4960–4964 . doi : 10.1109/ICASSP.2016.7472621 . ISBN  978-1-4799-9988-0.
  6. Rush, Alexander M.; Chopra, Sumit; Weston, Jason (septiembre de 2015). "Un modelo de atención neuronal para la síntesis abstracta de oraciones" . En Màrquez, Lluís; Callison-Burch, Chris; Su, Jian (eds.). Actas de la Conferencia de 2015 sobre Métodos Empíricos en Procesamiento del Lenguaje Natural . Lisboa, Portugal: Asociación de Lingüística Computacional. pp. 379–389 . doi : 10.18653/v1/D15-1044 . 
  7. Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (2014). "Traducción automática neuronal mediante el aprendizaje conjunto de alineación y traducción". arXiv : 1409.0473 [ cs.CL ].
  8. ^ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, León; Gómez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (2017). "La atención es todo lo que necesitas" . Avances en los sistemas de procesamiento de información neuronal . 30 . Curran asociados, Inc.
  9. Wu, Yonghui; Schuster, Mike; Chen, Zhifeng; Le, Quoc V.; Norouzi, Mohammad; Macherey, Wolfgang; Krikun, Maxim; Cao, Yuan; Gao, Qin; Macherey, Klaus; Klingner, Jeff; Shah, Apurva; Johnson, Melvin; Liu, Xiaobing; Kaiser, Łukasz (2016). "Sistema de traducción automática neuronal de Google: Cerrando la brecha entre la traducción humana y la automática". arXiv : 1609.08144 [ cs.CL ].
  10. Mikolov, Tomáš (13 de diciembre de 2023). "Ayer recibimos un premio Test of Time en NeurIPS por el artículo word2vec de hace diez años" . Facebook .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  11. Mikolov, Tomáš. " Modelos estadísticos del lenguaje basados ​​en redes neuronales ." (2012).
  12. Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "10.7. Aprendizaje secuencia a secuencia para la traducción automática" . Sumérgete en el aprendizaje profundo . Cambridge, Nueva York, Puerto Rico, Melbourne, Nueva Delhi, Singapur: Cambridge University Press. ISBN 978-1-009-38943-3.
  13. Bengio, Samy; Vinyals, Oriol; Jaitly, Navdeep; Shazeer, Noam (2015). "Muestreo programado para la predicción de secuencias con redes neuronales recurrentes" . Avances en sistemas de procesamiento de información neuronal . 28. Curran Associates, Inc.
  14. "Facebook tiene una red neuronal que puede realizar operaciones matemáticas avanzadas" . MIT Technology Review . 17 de diciembre de 2019. Consultado el 17 de diciembre de 2019 .
  15. Lample, Guillaume; Charton, François (2019). "Aprendizaje profundo para matemáticas simbólicas". arXiv : 1912.01412 [ cs.SC ].
  16. ^ Soltán, Saleh; Ananthakrishnan, Shankar; FitzGerald, Jack; Gupta, Rahul; Hamza, Wael; Khan, Haidar; Peris, Charith; Rawls, Esteban; Rosenbaum, Andy; Rumshisky, Anna; Chandana Satya Prakash; Sridhar, Mukund; Triefenbach, Fabián; Verma, Apurv; Tur, Gokhan; Natarajan, Prem (2022). "AlexaTM 20B: aprendizaje en pocas ocasiones utilizando un modelo Seq2Seq multilingüe a gran escala". arXiv : 2208.01448 [ cs.CL ].
  • Voita, Lena. "Secuencia a secuencia (seq2seq) y atención" . Recuperado el 20 de diciembre de 2023 .
  • "Una introducción de diez minutos al aprendizaje secuencia a secuencia en Keras" . blog.keras.io . Consultado el 19 de diciembre de 2019 .